@@ -517,6 +517,7 @@ static void usage()
517517#ifdef HAVE_SYSTEMD
518518 printf (" -s, --systemd\t\tRun in systemd operation mode (implies -z and -f).\n" );
519519#endif
520+ printf (" -C, --config-dir PATH\tSpecify different configuration directory.\n" );
520521 printf (" -S, --socket ADDR:PORT | PATH Specify source ADDR and PORT or a UNIX\n" );
521522 printf (" \t\tsocket PATH to use for the listening socket.\n" );
522523 printf (" \t\tDefault: %s\n" , socket_path );
@@ -549,6 +550,7 @@ static void parse_opts(int argc, char **argv)
549550#ifdef HAVE_SYSTEMD
550551 {"systemd" , no_argument , NULL , 's' },
551552#endif
553+ {"config-dir" , required_argument , NULL , 'C' },
552554 {"socket" , required_argument , NULL , 'S' },
553555 {"pidfile" , required_argument , NULL , 'P' },
554556 {"exit" , no_argument , NULL , 'x' },
@@ -560,11 +562,11 @@ static void parse_opts(int argc, char **argv)
560562 int c ;
561563
562564#ifdef HAVE_SYSTEMD
563- const char * opts_spec = "hfvVuU:xXsnzl:pS :P:" ;
565+ const char * opts_spec = "hfvVuU:xXsnzl:pC:S :P:" ;
564566#elif HAVE_UDEV
565- const char * opts_spec = "hfvVuU:xXnzl:pS :P:" ;
567+ const char * opts_spec = "hfvVuU:xXnzl:pC:S :P:" ;
566568#else
567- const char * opts_spec = "hfvVU:xXnzl:pS :P:" ;
569+ const char * opts_spec = "hfvVU:xXnzl:pC:S :P:" ;
568570#endif
569571
570572 while (1 ) {
@@ -611,6 +613,14 @@ static void parse_opts(int argc, char **argv)
611613 case 'z' :
612614 opt_enable_exit = 1 ;
613615 break ;
616+ case 'C' :
617+ if (!* optarg ) {
618+ usbmuxd_log (LL_FATAL , "ERROR: --config-dir requires an argument" );
619+ usage ();
620+ exit (2 );
621+ }
622+ config_set_config_dir (optarg );
623+ break ;
614624 case 'S' :
615625 if (!* optarg || * optarg == '-' ) {
616626 usbmuxd_log (LL_FATAL , "ERROR: --socket requires an argument" );
@@ -796,11 +806,12 @@ int main(int argc, char *argv[])
796806
797807#ifdef HAVE_LIBIMOBILEDEVICE
798808 const char * userprefdir = config_get_config_dir ();
809+ usbmuxd_log (LL_NOTICE , "Configuration directory: %s" , userprefdir );
799810 struct stat fst ;
800811 memset (& fst , '\0' , sizeof (struct stat ));
801812 if (stat (userprefdir , & fst ) < 0 ) {
802813 if (mkdir (userprefdir , 0775 ) < 0 ) {
803- usbmuxd_log (LL_FATAL , "Failed to create required directory '%s': %s" , userprefdir , strerror (errno ));
814+ usbmuxd_log (LL_FATAL , "Failed to create configuration directory '%s': %s" , userprefdir , strerror (errno ));
804815 res = -1 ;
805816 goto terminate ;
806817 }
0 commit comments