X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=74e8745e4a1d768531f00fc0b693b1834e9198f3;hb=369b595ca0a618ba8188d92ae26c4219625caa3d;hp=57660edf54e808c16d6fbebd099faa060c028305;hpb=3a6db27dec6fee245708074c301b42e1cbedd716;p=src%2Fapp-framework-binder.git diff --git a/src/main.c b/src/main.c index 57660edf..74e8745e 100644 --- a/src/main.c +++ b/src/main.c @@ -80,6 +80,7 @@ static sigjmp_buf exitPoint; // context save for set/longjmp #define DISPLAY_HELP 151 #define SET_MODE 160 +#define SET_READYFD 161 // Supported option @@ -115,6 +116,7 @@ static AFB_options cliOptions [] = { {DISPLAY_HELP ,0,"help" , "Display this help"}, {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} }; @@ -242,6 +244,12 @@ static void listenLoop (AFB_session *session) { err = httpdStart (session); if (err != AFB_SUCCESS) return; + if (session->readyfd != 0) { + static const char readystr[] = "READY=1"; + write(session->readyfd, readystr, sizeof(readystr) - 1); + close(session->readyfd); + } + // infinite loop httpdLoop(session); @@ -337,10 +345,14 @@ 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); } @@ -425,6 +437,11 @@ int main(int argc, char *argv[]) { else goto badMode; break; + case SET_READYFD: + if (optarg == 0) goto needValueForOption; + if (!sscanf (optarg, "%u", &session->readyfd)) goto notAnInteger; + break; + case DISPLAY_VERSION: if (optarg != 0) goto noValueForOption; printVersion();