/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

merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
132
132
  }
133
133
  new_plugin->argv[0] = copy_name;
134
134
  new_plugin->argv[1] = NULL;
135
 
 
 
135
  
136
136
  new_plugin->environ = malloc(sizeof(char *));
137
137
  if(new_plugin->environ == NULL){
138
138
    free(copy_name);
141
141
    return NULL;
142
142
  }
143
143
  new_plugin->environ[0] = NULL;
144
 
 
 
144
  
145
145
  /* Append the new plugin to the list */
146
146
  plugin_list = new_plugin;
147
147
  return new_plugin;
183
183
  if(p == NULL){
184
184
    return false;
185
185
  }
 
186
  /* namelen = length of name of environment variable */
 
187
  size_t namelen = (size_t)(strchrnul(def, '=') - def);
 
188
  /* Search for this environment variable */
 
189
  for(char **e = p->environ; *e != NULL; e++){
 
190
    if(strncmp(*e, def, namelen+1) == 0){
 
191
      /* Refuse to add an existing variable */
 
192
      return true;
 
193
    }
 
194
  }
186
195
  return add_to_char_array(def, &(p->environ), &(p->envc));
187
196
}
188
197
 
327
336
    { .name = "global-options", .key = 'g',
328
337
      .arg = "OPTION[,OPTION[,...]]",
329
338
      .doc = "Options passed to all plugins" },
330
 
    { .name = "global-envs", .key = 'e',
 
339
    { .name = "global-env", .key = 'e',
331
340
      .arg = "VAR=value",
332
341
      .doc = "Environment variable passed to all plugins" },
333
342
    { .name = "options-for", .key = 'o',
334
343
      .arg = "PLUGIN:OPTION[,OPTION[,...]]",
335
344
      .doc = "Options passed only to specified plugin" },
336
 
    { .name = "envs-for", .key = 'f',
 
345
    { .name = "env-for", .key = 'f',
337
346
      .arg = "PLUGIN:ENV=value",
338
347
      .doc = "Environment variable passed to specified plugin" },
339
348
    { .name = "disable", .key = 'd',
356
365
    { .name = NULL }
357
366
  };
358
367
  
359
 
  error_t parse_opt (int key, char *arg, __attribute__((unused)) struct argp_state *state) {
 
368
  error_t parse_opt (int key, char *arg, __attribute__((unused))
 
369
                     struct argp_state *state) {
360
370
    /* Get the INPUT argument from `argp_parse', which we know is a
361
371
       pointer to our plugin list pointer. */
362
372
    switch (key) {
374
384
        }
375
385
      }
376
386
      break;
377
 
    case 'e':                   /* --global-envs */
 
387
    case 'e':                   /* --global-env */
378
388
      if(arg == NULL){
379
389
        break;
380
390
      }
412
422
        }
413
423
      }
414
424
      break;
415
 
    case 'f':                   /* --envs-for */
 
425
    case 'f':                   /* --env-for */
416
426
      if(arg == NULL){
417
427
        break;
418
428
      }
507
517
    custom_argv[0] = argv[0];
508
518
    custom_argv[1] = NULL;
509
519
 
510
 
    /* for each line in the config file, strip whitespace and ignore commented text */
 
520
    /* for each line in the config file, strip whitespace and ignore
 
521
       commented text */
511
522
    while(true){
512
523
      sret = getline(&org_line, &size, conffp);
513
524
      if(sret == -1){