summaryrefslogtreecommitdiff
path: root/libcons/opts-std-startup.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcons/opts-std-startup.c')
-rw-r--r--libcons/opts-std-startup.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/libcons/opts-std-startup.c b/libcons/opts-std-startup.c
new file mode 100644
index 00000000..c4a7d7bd
--- /dev/null
+++ b/libcons/opts-std-startup.c
@@ -0,0 +1,91 @@
+/* opts-std-startup.c - Standard startup-time command line parser.
+ Copyright (C) 1995,96,97,98,99,2001,02 Free Software Foundation, Inc.
+ Written by Miles Bader <miles@gnu.org> and Marcus Brinkmann.
+
+ This file is part of the GNU Hurd.
+
+ The GNU Hurd is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ The GNU Hurd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#include <stdio.h>
+#include <argp.h>
+
+#include "priv.h"
+
+
+/* Option keys for long-only options in diskfs_common_options. */
+#define OPT_SLACK 600 /* --slack */
+
+/* Common value for diskfs_common_options and diskfs_default_sync_interval. */
+#define DEFAULT_SLACK 100
+#define DEFAULT_SLACK_STRING STRINGIFY(DEFAULT_SLACK)
+#define STRINGIFY(x) STRINGIFY_1(x)
+#define STRINGIFY_1(x) #x
+
+/* Number of records the client is allowed to lag behind the
+ server. */
+int _cons_slack = DEFAULT_SLACK;
+
+/* The filename of the console server. */
+char *_cons_file;
+
+static const struct argp_option
+startup_options[] =
+{
+ { "slack", OPT_SLACK, "RECORDS", 0, "Max number of records the client is"
+ " allowed to lag behind the server (default " DEFAULT_SLACK_STRING ")" },
+ { 0, 0 }
+};
+
+static const char args_doc[] = "CONSOLE";
+static const char doc[] = "A console client.";
+
+
+static error_t
+parse_startup_opt (int opt, char *arg, struct argp_state *state)
+{
+ switch (opt)
+ {
+ case OPT_SLACK:
+ _cons_slack = atoi (arg);
+ break;
+
+ case ARGP_KEY_ARG:
+ if (state->arg_num > 0)
+ /* Too many arguments. */
+ argp_usage (state);
+
+ _cons_file = arg;
+ break;
+
+ case ARGP_KEY_END:
+ if (state->arg_num != 1)
+ /* Not enough arguments. */
+ argp_usage (state);
+ break;
+
+ default:
+ return ARGP_ERR_UNKNOWN;
+ }
+
+ return 0;
+}
+
+/* An argp structure for the standard console client command line
+ arguments. */
+const struct argp
+cons_startup_argp =
+{
+ startup_options, parse_startup_opt, args_doc, doc
+};