/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to plugin-runner.c

  • Committer: Teddy Hogeborn
  • Date: 2009-02-12 06:09:24 UTC
  • Revision ID: teddy@fukt.bsnet.se-20090212060924-vwxgitxnwr14w9e4
* mandos (Client.start_checker): Bug fix: Add extra check in case the
                                 checker process completed quickly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
62
62
#include <signal.h>             /* struct sigaction, sigemptyset(),
63
63
                                   sigaddset(), sigaction(),
64
64
                                   sigprocmask(), SIG_BLOCK, SIGCHLD,
65
 
                                   SIG_UNBLOCK, kill() */
 
65
                                   SIG_UNBLOCK, kill(), sig_atomic_t
 
66
                                */
66
67
#include <errno.h>              /* errno, EBADF */
67
68
#include <inttypes.h>           /* intmax_t, SCNdMAX, PRIdMAX,  */
68
69
 
382
383
    switch(key){
383
384
    case 'g':                   /* --global-options */
384
385
      if(arg != NULL){
385
 
        char *p;
386
 
        while((p = strsep(&arg, ",")) != NULL){
387
 
          if(p[0] == '\0'){
 
386
        char *plugin_option;
 
387
        while((plugin_option = strsep(&arg, ",")) != NULL){
 
388
          if(plugin_option[0] == '\0'){
388
389
            continue;
389
390
          }
390
 
          if(not add_argument(getplugin(NULL), p)){
 
391
          if(not add_argument(getplugin(NULL), plugin_option)){
391
392
            perror("add_argument");
392
393
            return ARGP_ERR_UNKNOWN;
393
394
          }
404
405
      break;
405
406
    case 'o':                   /* --options-for */
406
407
      if(arg != NULL){
407
 
        char *p_name = strsep(&arg, ":");
408
 
        if(p_name[0] == '\0' or arg == NULL){
409
 
          break;
410
 
        }
411
 
        char *opt = strsep(&arg, ":");
412
 
        if(opt[0] == '\0' or opt == NULL){
413
 
          break;
414
 
        }
415
 
        char *p;
416
 
        while((p = strsep(&opt, ",")) != NULL){
417
 
          if(p[0] == '\0'){
418
 
            continue;
419
 
          }
420
 
          if(not add_argument(getplugin(p_name), p)){
 
408
        char *plugin_name = strsep(&arg, ":");
 
409
        if(plugin_name[0] == '\0'){
 
410
          break;
 
411
        }
 
412
        char *plugin_option;
 
413
        while((plugin_option = strsep(&arg, ",")) != NULL){
 
414
          if(not add_argument(getplugin(plugin_name), plugin_option)){
421
415
            perror("add_argument");
422
416
            return ARGP_ERR_UNKNOWN;
423
417
          }
936
930
  
937
931
  closedir(dir);
938
932
  dir = NULL;
 
933
  free_plugin(getplugin(NULL));
939
934
  
940
935
  for(plugin *p = plugin_list; p != NULL; p = p->next){
941
936
    if(p->pid != 0){