chiark / gitweb /
clients/, disobedience/: Add `-u' option to override user config file.
[disorder] / clients / disorder.c
index dc86a650d53c742bbcdb6f924c284d4fbb21e452..6aa12c42bedff1becb634d147f3c32887fd3a546 100644 (file)
@@ -75,22 +75,24 @@ static const struct option options[] = {
   { "config", required_argument, 0, 'c' },
   { "debug", no_argument, 0, 'd' },
   { "local", no_argument, 0, 'l' },
+  { "user-config", required_argument, 0, 'u' },
   { "no-per-user-config", no_argument, 0, 'N' },
   { "help-commands", no_argument, 0, 'H' },
-  { "user", required_argument, 0, 'u' },
-  { "password", required_argument, 0, 'p' },
+  { "user", required_argument, 0, 'U' },
+  { "password", required_argument, 0, 'P' },
   { 0, 0, 0, 0 }
 };
 
 /* display usage message and terminate */
-static void help(void) {
+static void attribute((noreturn)) help(void) {
   xprintf("Usage:\n"
          "  disorder [OPTIONS] COMMAND ...\n"
          "Options:\n"
          "  --help, -h              Display usage message\n"
          "  --help-commands, -H     List commands\n"
          "  --version, -V           Display version number\n"
-         "  --config PATH, -c PATH  Set configuration file\n"
+         "  --config PATH, -c PATH  Set system configuration file\n"
+         "  --user-config PATH, -u PATH  Set user configuration file\n"
          "  --local, -l             Force connection to local server\n"
          "  --debug, -d             Turn on debugging\n");
   xfclose(stdout);
@@ -348,6 +350,7 @@ static void cf_set_volume(char **argv) {
 }
 
 static void cf_log(char attribute((unused)) **argv) {
+  setvbuf(stdout, 0, _IOLBF, BUFSIZ);
   if(disorder_log(getclient(), sink_stdio("stdout", stdout))) exit(EXIT_FAILURE);
 }
 
@@ -497,7 +500,7 @@ static const struct option setup_guest_options[] = {
   { 0, 0, 0, 0 }
 };
 
-static void help_setup_guest(void) {
+static void attribute((noreturn)) help_setup_guest(void) {
   xprintf("Usage:\n"
          "  disorder setup-guest [OPTIONS]\n"
          "Options:\n"
@@ -843,7 +846,7 @@ static const struct client_command {
                       "Display the server version" },
 };
 
-static void help_commands(void) {
+static void attribute((noreturn)) help_commands(void) {
   unsigned n, max = 0, l;
 
   xprintf("Command summary:\n");
@@ -882,17 +885,18 @@ int main(int argc, char **argv) {
   regexp_setup();
   if(!setlocale(LC_CTYPE, "")) disorder_fatal(errno, "error calling setlocale");
   if(!setlocale(LC_TIME, "")) disorder_fatal(errno, "error calling setlocale");
-  while((n = getopt_long(argc, argv, "+hVc:dHlNu:p:", options, 0)) >= 0) {
+  while((n = getopt_long(argc, argv, "+hVc:dHlu:", options, 0)) >= 0) {
     switch(n) {
     case 'h': help();
     case 'H': help_commands();
     case 'V': version("disorder");
     case 'c': configfile = optarg; break;
+    case 'u': userconfigfile = optarg; break;
     case 'd': debugging = 1; break;
     case 'l': local = 1; break;
     case 'N': config_per_user = 0; break;
-    case 'u': user = optarg; break;
-    case 'p': password = optarg; break;
+    case 'U': user = optarg; break;
+    case 'P': password = optarg; break;
     default: disorder_fatal(0, "invalid option");
     }
   }