Fixed segfault with 'cut -f 1 -d:' and added 'cut -s' suport.
[oweals/busybox.git] / update.c
index bb77c5f1f060d1b00d8d9d0cc4b25ce5a152d8f3..b86d84e06680087f0db50ae6eb5689812a4fd4fc 100644 (file)
--- a/update.c
+++ b/update.c
 #include <sys/param.h>
 #include <sys/syslog.h>
 
+
 #if defined(__GLIBC__)
 #include <sys/kdaemon.h>
 #else
-_syscall2(int, bdflush, int, func, int, data);
+static _syscall2(int, bdflush, int, func, int, data);
 #endif                                                 /* __GLIBC__ */
 
+
 static char update_usage[] =
        "update [options]\n"
-       "  -S\tforce use of sync(2) instead of flushing\n"
-       "  -s SECS\tcall sync this often (default 30)\n"
-       "  -f SECS\tflush some buffers this often (default 5)\n";
+#ifndef BB_FEATURE_TRIVIAL_HELP
+       "\nPeriodically flushes filesystem buffers.\n\n"
+       "Options:\n"
+       "\t-S\tforce use of sync(2) instead of flushing\n"
+       "\t-s SECS\tcall sync this often (default 30)\n"
+       "\t-f SECS\tflush some buffers this often (default 5)\n"
+#endif
+       ;
 
 static unsigned int sync_duration = 30;
 static unsigned int flush_duration = 5;
@@ -48,7 +55,9 @@ extern int update_main(int argc, char **argv)
 {
        int pid;
 
-       while (**argv == '-') {
+       argc--;
+       argv++;
+       while (argc>0 && **argv == '-') {
                while (*++(*argv)) {
                        switch (**argv) {
                        case 'S':
@@ -62,6 +71,8 @@ extern int update_main(int argc, char **argv)
                                if (--argc < 1) usage(update_usage);
                                flush_duration = atoi(*(++argv));
                                break;
+                       default:
+                               usage(update_usage);
                        }
                }
                argc--;
@@ -100,7 +111,7 @@ extern int update_main(int argc, char **argv)
                        }
                }
        }
-       return TRUE;
+       return( TRUE);
 }
 
 /*