Forgot to check in loopfiles_rw changes needed by truncate.
authorRob Landley <rob@landley.net>
Mon, 12 Dec 2011 21:19:52 +0000 (15:19 -0600)
committerRob Landley <rob@landley.net>
Mon, 12 Dec 2011 21:19:52 +0000 (15:19 -0600)
lib/lib.c
lib/lib.h

index 0cef3af..8e557a8 100644 (file)
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -488,6 +488,7 @@ long atolx(char *c)
                end = strchr(suffixes, tolower(*c));
                if (end) val *= 1024L<<((end-suffixes)*10);
        }
+
        return val;
 }
 
@@ -624,7 +625,8 @@ void xpidfile(char *name)
 //
 // Note: read only filehandles are automatically closed when function()
 // returns, but writeable filehandles must be close by function()
-void loopfiles_rw(char **argv, int flags, void (*function)(int fd, char *name))
+void loopfiles_rw(char **argv, int flags, int permissions, int failok,
+       void (*function)(int fd, char *name))
 {
        int fd;
 
@@ -635,7 +637,7 @@ void loopfiles_rw(char **argv, int flags, void (*function)(int fd, char *name))
                // Inability to open a file prints a warning, but doesn't exit.
 
                if (!strcmp(*argv,"-")) fd=0;
-               else if (0>(fd = open(*argv, flags, 0666))) {
+               else if (0>(fd = open(*argv, flags, permissions)) && !failok) {
                        perror_msg("%s", *argv);
                        toys.exitval = 1;
                        continue;
@@ -645,10 +647,10 @@ void loopfiles_rw(char **argv, int flags, void (*function)(int fd, char *name))
        } while (*++argv);
 }
 
-// Call loopfiles_rw with O_RDONLY (common case).
+// Call loopfiles_rw with O_RDONLY and !failok (common case).
 void loopfiles(char **argv, void (*function)(int fd, char *name))
 {
-       loopfiles_rw(argv, O_RDONLY, function);
+       loopfiles_rw(argv, O_RDONLY, 0, 0, function);
 }
 
 // Slow, but small.
index fb2215c..61df58b 100644 (file)
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -90,7 +90,8 @@ char *itoa(int n);
 long atolx(char *c);
 off_t fdlength(int fd);
 char *xreadlink(char *name);
-void loopfiles_rw(char **argv, int flags, void (*function)(int fd, char *name));
+void loopfiles_rw(char **argv, int flags, int permissions, int failok,
+       void (*function)(int fd, char *name));
 void loopfiles(char **argv, void (*function)(int fd, char *name));
 char *get_rawline(int fd, long *plen, char end);
 char *get_line(int fd);