local-def: dispatch some definitions
[src/app-framework-binder.git] / src / main.c
index 78d7f79..9769f52 100644 (file)
@@ -31,6 +31,8 @@
 #include <getopt.h>
 #include <pwd.h>
 
+#define AFB_VERSION    "0.1"
+
 static sigjmp_buf exitPoint; // context save for set/longjmp
 
 /*----------------------------------------------------------
@@ -40,7 +42,7 @@ static sigjmp_buf exitPoint; // context save for set/longjmp
  static void printVersion (void) {
 
    fprintf (stderr,"\n----------------------------------------- \n");
-   fprintf (stderr,"|  AFB [Application Framework Binder] version=%s |\n", AJQ_VERSION);
+   fprintf (stderr,"|  AFB [Application Framework Binder] version=%s |\n", AFB_VERSION);
    fprintf (stderr,"----------------------------------------- \n");
    fprintf (stderr,"|  Copyright(C) 2015 Fulup Ar Foll /IoT.bzh [fulup -at- iot.bzh]\n");
    fprintf (stderr,"|  AFB comes with ABSOLUTELY NO WARRANTY.\n");
@@ -117,7 +119,7 @@ static  AFB_options cliOptions [] = {
 
   {SET_MODE         ,1,"mode"            , "set the mode: either local, remote or global"},
   {SET_READYFD      ,1,"readyfd"         , "set the #fd to signal when ready"},
-  {0, 0, 0}
+  {0, 0, NULL, NULL}
  };
 
 static AFB_aliasdir aliasdir[MAX_ALIAS];
@@ -290,7 +292,7 @@ int main(int argc, char *argv[])  {
 
   // build GNU getopt info from cliOptions
   nbcmd = sizeof (cliOptions) / sizeof (AFB_options);
-  gnuOptions = malloc (sizeof (ggcOption) * nbcmd);
+  gnuOptions = malloc (sizeof (ggcOption) * (unsigned)nbcmd);
   for (ind=0; ind < nbcmd;ind++) {
     gnuOptions [ind].name    = cliOptions[ind].name;
     gnuOptions [ind].has_arg = cliOptions[ind].has_arg;
@@ -345,12 +347,16 @@ int main(int argc, char *argv[])  {
        if (optarg == 0) goto needValueForOption;
        if (aliascount < MAX_ALIAS) {
             aliasdir[aliascount].url  = strsep(&optarg,":");
-            aliasdir[aliascount].path = strsep(&optarg,":");
-            aliasdir[aliascount].len  = strlen(aliasdir[aliascount].url);
-            if (verbose) fprintf(stderr, "Alias url=%s path=%s\n", aliasdir[aliascount].url, aliasdir[aliascount].path);
-            aliascount++;
+            if (optarg == NULL) {
+              fprintf(stderr, "missing ':' in alias %s, ignored\n", aliasdir[aliascount].url);
+            } else {
+              aliasdir[aliascount].path = optarg;
+              aliasdir[aliascount].len  = strlen(aliasdir[aliascount].url);
+              if (verbose) fprintf(stderr, "Alias url=%s path=%s\n", aliasdir[aliascount].url, aliasdir[aliascount].path);
+              aliascount++;
+            }
        } else {
-           fprintf(stderr, "Too many aliases [max:%s] %s ignored\n", optarg, MAX_ALIAS-1);
+           fprintf(stderr, "Too many aliases [max:%d] %s ignored\n", MAX_ALIAS, optarg);
        }     
        break;
        
@@ -397,7 +403,7 @@ int main(int argc, char *argv[])  {
 
     case SET_USERID:
        if (optarg == 0) goto needValueForOption;
-       if (!sscanf (optarg, "%s", &cliconfig.setuid)) goto notAnInteger;
+       cliconfig.setuid = optarg;
        break;
 
     case SET_FAKE_MOD:
@@ -658,14 +664,10 @@ errSessiondir:
   fprintf (stderr,"\nERR:AFB-daemon cannot read/write session dir\n\n");
   exit (-1);
 
-errSoundCard:
-  fprintf (stderr,"\nERR:AFB-daemon fail to probe sound cards\n\n");
-  exit (-1);
-
 exitInitLoop:
   // try to unlink pid file if any
   if (session->background && session->config->pidfile != NULL)  unlink (session->config->pidfile);
   exit (-1);
 
-}; /* END AFB-daemon() */
+} /* END AFB-daemon() */