X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/6961095b797229842e1465ff3670625d11e95167..05b3f1f69c02a260bb8315dcedd60d35daf1875c:/clients/disorder.c?ds=sidebyside diff --git a/clients/disorder.c b/clients/disorder.c index b401c62..949eacf 100644 --- a/clients/disorder.c +++ b/clients/disorder.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder. - * Copyright (C) 2004-2009 Richard Kettlewell + * Copyright (C) 2004-2013 Richard Kettlewell * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,17 +23,29 @@ #include #include -#include -#include +#if HAVE_SYS_SOCKET_H +# include +#endif +#if HAVE_SYS_UN_H +# include +#endif #include #include #include #include -#include -#include +#if HAVE_UNISTD_H +# include +#endif +#if HAVE_PCRE_H +# include +#endif #include -#include -#include +#if HAVE_GCRYPT_H +# include +#endif +#if HAVE_LANGINFO_H +# include +#endif #include "configuration.h" #include "syscalls.h" @@ -52,7 +64,6 @@ #include "vector.h" #include "version.h" #include "dateparse.h" -#include "trackdb.h" #include "inputline.h" static disorder_client *client; @@ -67,7 +78,6 @@ static const struct option options[] = { { "help-commands", no_argument, 0, 'H' }, { "user", required_argument, 0, 'u' }, { "password", required_argument, 0, 'p' }, - { "wait-for-root", no_argument, 0, 'W' }, { 0, 0, 0, 0 } }; @@ -309,9 +319,10 @@ static void cf_random_enable(char attribute((unused)) **argv) { static void cf_stats(char attribute((unused)) **argv) { char **vec; int nvec; + int n; if(disorder_stats(getclient(), &vec, &nvec)) exit(EXIT_FAILURE); - for(int n = 0; n < nvec; ++n) + for(n = 0; n < nvec; ++n) xprintf("%s\n", nullcheck(utf82mb(vec[n]))); free_strings(nvec, vec); } @@ -619,10 +630,11 @@ static void cf_adopt(char **argv) { static void cf_playlists(char attribute((unused)) **argv) { char **vec; int nvec; + int n; if(disorder_playlists(getclient(), &vec, &nvec)) exit(EXIT_FAILURE); - for(int n = 0; n < nvec; ++n) + for(n = 0; n < nvec; ++n) xprintf("%s\n", nullcheck(utf82mb(vec[n]))); free_strings(nvec, vec); } @@ -635,10 +647,11 @@ static void cf_playlist_del(char **argv) { static void cf_playlist_get(char **argv) { char **vec; int nvec; + int n; if(disorder_playlist_get(getclient(), argv[0], &vec, &nvec)) exit(EXIT_FAILURE); - for(int n = 0; n < nvec; ++n) + for(n = 0; n < nvec; ++n) xprintf("%s\n", nullcheck(utf82mb(vec[n]))); free_strings(nvec, vec); } @@ -844,39 +857,21 @@ static void help_commands(void) { exit(0); } -static void wait_for_root(void) { - const char *password; - - while(!trackdb_readable()) { - disorder_info("waiting for trackdb..."); - sleep(1); - } - trackdb_init(TRACKDB_NO_RECOVER|TRACKDB_NO_UPGRADE); - for(;;) { - trackdb_open(TRACKDB_READ_ONLY); - password = trackdb_get_password("root"); - trackdb_close(); - if(password) - break; - disorder_info("waiting for root user to be created..."); - sleep(1); - } - trackdb_deinit(NULL); -} - int main(int argc, char **argv) { - int n, i, j, local = 0, wfr = 0; + int n, i, j, local = 0; int status = 0; struct vector args; const char *user = 0, *password = 0; mem_init(); +#if HAVE_PCRE_H /* garbage-collect PCRE's memory */ pcre_malloc = xmalloc; pcre_free = xfree; +#endif 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:W", options, 0)) >= 0) { + while((n = getopt_long(argc, argv, "+hVc:dHlNu:p:", options, 0)) >= 0) { switch(n) { case 'h': help(); case 'H': help_commands(); @@ -887,7 +882,6 @@ int main(int argc, char **argv) { case 'N': config_per_user = 0; break; case 'u': user = optarg; break; case 'p': password = optarg; break; - case 'W': wfr = 1; break; default: disorder_fatal(0, "invalid option"); } } @@ -903,15 +897,15 @@ int main(int argc, char **argv) { } if(local) config->connect.af = -1; - if(wfr) - wait_for_root(); n = optind; optind = 1; /* for subsequent getopt calls */ +#if HAVE_GCRYPT_H /* gcrypt initialization */ if(!gcry_check_version(NULL)) disorder_fatal(0, "gcry_check_version failed"); gcry_control(GCRYCTL_INIT_SECMEM, 0); gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); +#endif /* accumulate command args */ while(n < argc) { if((i = TABLE_FIND(commands, name, argv[n])) < 0)