summaryrefslogtreecommitdiff
path: root/miscutils
diff options
context:
space:
mode:
Diffstat (limited to 'miscutils')
-rw-r--r--miscutils/update.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/miscutils/update.c b/miscutils/update.c
index 0bdc90e..3f3d68b 100644
--- a/miscutils/update.c
+++ b/miscutils/update.c
@@ -23,16 +23,22 @@
*
*/
+/*
+ * Note: This program is only necessary if you are running a 2.0.x (or
+ * earlier) kernel. 2.2.x and higher flush filesystem buffers automatically.
+ */
+
#include "internal.h"
#include <sys/param.h>
#include <sys/syslog.h>
+#include <unistd.h> /* for getopt() */
#if defined(__GLIBC__)
#include <sys/kdaemon.h>
#else
static _syscall2(int, bdflush, int, func, int, data);
-#endif /* __GLIBC__ */
+#endif /* __GLIBC__ */
static unsigned int sync_duration = 30;
static unsigned int flush_duration = 5;
@@ -41,29 +47,22 @@ static int use_sync = 0;
extern int update_main(int argc, char **argv)
{
int pid;
+ int opt;
- argc--;
- argv++;
- while (argc>0 && **argv == '-') {
- while (*++(*argv)) {
- switch (**argv) {
+ while ((opt = getopt(argc, argv, "Ss:f:")) > 0) {
+ switch (opt) {
case 'S':
use_sync = 1;
break;
case 's':
- if (--argc < 1) usage(update_usage);
- sync_duration = atoi(*(++argv));
+ sync_duration = atoi(optarg);
break;
case 'f':
- if (--argc < 1) usage(update_usage);
- flush_duration = atoi(*(++argv));
+ flush_duration = atoi(optarg);
break;
default:
usage(update_usage);
- }
}
- argc--;
- argv++;
}
pid = fork();
@@ -79,6 +78,8 @@ extern int update_main(int argc, char **argv)
* This is no longer necessary since 1.3.5x, but it will harmlessly
* exit if that is the case.
*/
+
+ /* set the program name that will show up in a 'ps' listing */
argv[0] = "bdflush (update)";
argv[1] = NULL;
argv[2] = NULL;