aboutsummaryrefslogtreecommitdiffstats
path: root/pc
diff options
context:
space:
mode:
Diffstat (limited to 'pc')
-rw-r--r--pc/ChangeLog4
-rw-r--r--pc/gawkmisc.pc25
2 files changed, 29 insertions, 0 deletions
diff --git a/pc/ChangeLog b/pc/ChangeLog
index 1eb51812..43221928 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,7 @@
+2012-07-26 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkmisc.pc (os_isreadable): New function.
+
2012-05-06 Eli Zaretskii <eliz@gnu.org>
* config.sed: Update DJGPP -> __DJGPP__.
diff --git a/pc/gawkmisc.pc b/pc/gawkmisc.pc
index b368e81f..999167ca 100644
--- a/pc/gawkmisc.pc
+++ b/pc/gawkmisc.pc
@@ -232,6 +232,31 @@ int fd;
return (fstat(fd, &sbuf) == 0 && S_ISDIR(sbuf.st_mode));
}
+/* os_isreadable --- fd can be read from */
+
+int
+os_isreadable(int fd)
+{
+ struct stat sbuf;
+
+ if (fstat(fd, &sbuf) != 0)
+ return false;
+
+ switch (sbuf.st_mode & S_IFMT) {
+ case S_IFREG:
+ case S_IFCHR: /* ttys, /dev/null, .. */
+#ifdef S_IFSOCK
+ case S_IFSOCK:
+#endif
+#ifdef S_IFIFO
+ case S_IFIFO:
+#endif
+ return true;
+ default:
+ return false;
+ }
+}
+
/* os_is_setuid --- true if running setuid root */
int