| version 1.18, 2002/04/09 21:16:45 |
version 1.19, 2002/04/11 00:04:27 |
| Line 44 static CFG_CONTEXT process_context = NUL |
|
| Line 44 static CFG_CONTEXT process_context = NUL |
|
| */ |
*/ |
| |
|
| static struct cfg_option global_options[] = { |
static struct cfg_option global_options[] = { |
| |
{"help", 'h', NULL, CFG_BOOLEAN + CFG_MULTI, (void *) &(global_cfg.help), 0}, |
| {"silent", 's', "silent", CFG_BOOLEAN, (void *) &(global_cfg.silent), 0}, |
{"silent", 's', "silent", CFG_BOOLEAN, (void *) &(global_cfg.silent), 0}, |
| {"verbose", 'v', "verbose", CFG_BOOLEAN + CFG_MULTI, (void *) &(global_cfg.verbose), 0}, |
{"verbose", 'v', "verbose", CFG_BOOLEAN + CFG_MULTI, (void *) &(global_cfg.verbose), 0}, |
| {NULL, 'f', NULL, CFG_STRING + CFG_MULTI, (void *) &(global_cfg.config_file), 0}, |
{NULL, 'f', NULL, CFG_STRING + CFG_MULTI, (void *) &(global_cfg.config_file), 0}, |
| Line 71 static struct cfg_option process_options |
|
| Line 72 static struct cfg_option process_options |
|
| * Static function declarations |
* Static function declarations |
| */ |
*/ |
| |
|
| |
static void print_cfg_error(const CFG_CONTEXT con, int errorcode); |
| static char *get_user_config_filename(void); |
static char *get_user_config_filename(void); |
| static void clear_global_cfg(void); |
static void clear_global_cfg(void); |
| static void clear_process_cfg(void); |
static void clear_process_cfg(void); |
| Line 159 conf_parse_all(argc, argv) |
|
| Line 161 conf_parse_all(argc, argv) |
|
| ret = conf_cmdline_parse(argc - 1, argv + 1, &global, &processes); |
ret = conf_cmdline_parse(argc - 1, argv + 1, &global, &processes); |
| |
|
| if (ret != CFG_OK) { |
if (ret != CFG_OK) { |
| /* TODO: better error informations */ |
/* TODO: better error information */ |
| msg_error_print("command line parsing error %d\n", ret); |
/* print_cfg_error(con, ret); */ |
| |
if (ret == CFG_ERR_NOMEM) |
| |
msg_error_print("not enough memory for command line parsing\n"); |
| /* XXX: free structures */ |
/* XXX: free structures */ |
| free_global(&global); |
free_global(&global); |
| free_processes(&processes); |
free_processes(&processes); |
| return NULL; |
return NULL; |
| } |
} |
| |
|
| |
if (global->help) { |
| |
msg_usage_print(); |
| |
free_global(&global); |
| |
free_processes(&processes); |
| |
return NULL; |
| |
} |
| |
|
| for (start_idx_size = 0; global->config_file != NULL |
for (start_idx_size = 0; global->config_file != NULL |
| && global->config_file[start_idx_size] != NULL; |
&& global->config_file[start_idx_size] != NULL; |
| start_idx_size++) |
start_idx_size++) |
| Line 219 conf_parse_all(argc, argv) |
|
| Line 230 conf_parse_all(argc, argv) |
|
| |
|
| if (ret != CFG_OK |
if (ret != CFG_OK |
| && (i >= 2 || (i < 2 && ret != CFG_ERR_FILE_NOT_FOUND))) { |
&& (i >= 2 || (i < 2 && ret != CFG_ERR_FILE_NOT_FOUND))) { |
| msg_error_print("config file '%s' parsing error %d\n", |
/* TODO: better error information */ |
| filename, ret); |
/* print_cfg_error(con, ret); */ |
| |
if (ret == CFG_ERR_NOMEM) |
| |
msg_error_print("not enough memory for config file parsing\n"); |
| |
if (ret == CFG_ERR_FILE_NOT_FOUND) |
| |
msg_error_print("file '%s' not found\n", filename); |
| |
/* msg_error_print("config file '%s' parsing error %d\n", |
| |
filename, ret); */ |
| /* XXX: free structures */ |
/* XXX: free structures */ |
| if (i == 1) |
if (i == 1) |
| free(filename); |
free(filename); |
| Line 311 conf_parse_all(argc, argv) |
|
| Line 328 conf_parse_all(argc, argv) |
|
| |
|
| if (add_processes_to_proctable(&ptbl, processes, |
if (add_processes_to_proctable(&ptbl, processes, |
| start_idx_size, start_idx) < 0) { |
start_idx_size, start_idx) < 0) { |
| |
msg_error_print("not enough memory\n"); |
| /* XXX: free structures */ |
/* XXX: free structures */ |
| proctable_destroy(&ptbl); |
proctable_destroy(&ptbl); |
| free(start_idx); |
free(start_idx); |
| Line 406 conf_cfgfile_parse(filename, global, pro |
|
| Line 424 conf_cfgfile_parse(filename, global, pro |
|
| if (! add_global_cfg_to_global(global)) |
if (! add_global_cfg_to_global(global)) |
| return CFG_ERR_NOMEM; |
return CFG_ERR_NOMEM; |
| |
|
| |
if (ret != CFG_OK && ret != CFG_ERR_NOMEM && ret != CFG_ERR_FILE_NOT_FOUND) |
| |
print_cfg_error(cur_context, ret); |
| |
|
| return ret; |
return ret; |
| } |
} |
| |
|
| Line 444 conf_cmdline_parse(argc, argv, global, p |
|
| Line 465 conf_cmdline_parse(argc, argv, global, p |
|
| if (ret < 0 && ret != CFG_ERR_STOP_STR_FOUND) { |
if (ret < 0 && ret != CFG_ERR_STOP_STR_FOUND) { |
| if (! first_loop) { |
if (! first_loop) { |
| /* TODO: better specification about error on command line */ |
/* TODO: better specification about error on command line */ |
| msg_error_print("error on command line (error %d at %s)\n", |
/* print_cfg_error(cur_context, ret); */ |
| ret, argv[index + cfg_get_cur_idx(cur_context)]); |
/* msg_error_print("error on command line (error %d at %s)\n", |
| |
ret, argv[index + cfg_get_cur_idx(cur_context)]); */ |
| |
|
| break; |
break; |
| } |
} |
| Line 458 conf_cmdline_parse(argc, argv, global, p |
|
| Line 480 conf_cmdline_parse(argc, argv, global, p |
|
| if (cfg_get_cur_idx(cur_context) < 1) { |
if (cfg_get_cur_idx(cur_context) < 1) { |
| if (! first_loop) { |
if (! first_loop) { |
| msg_error_print("misplaced process separator '--'" |
msg_error_print("misplaced process separator '--'" |
| " on command line"); |
" on command line\n"); |
| break; |
break; |
| } |
} |
| } |
} |
| Line 489 conf_cmdline_parse(argc, argv, global, p |
|
| Line 511 conf_cmdline_parse(argc, argv, global, p |
|
| if (! add_global_cfg_to_global(global)) |
if (! add_global_cfg_to_global(global)) |
| return CFG_ERR_NOMEM; |
return CFG_ERR_NOMEM; |
| |
|
| |
if (ret != CFG_OK && ret != CFG_ERR_NOMEM) |
| |
print_cfg_error(cur_context, ret); |
| |
|
| return ret; |
return ret; |
| } |
} |
| |
|
| Line 496 conf_cmdline_parse(argc, argv, global, p |
|
| Line 521 conf_cmdline_parse(argc, argv, global, p |
|
| * Static function definitions |
* Static function definitions |
| */ |
*/ |
| |
|
| |
static void |
| |
print_cfg_error(con, errorcode) |
| |
const CFG_CONTEXT con; |
| |
int errorcode; |
| |
{ |
| |
register char *s; |
| |
|
| |
if ((s = cfg_get_error_str(con, errorcode)) == NULL) { |
| |
msg_error_print("not enough memory for error message creating\n"); |
| |
return; |
| |
} |
| |
|
| |
msg_error_print("%s\n", s); |
| |
free(s); |
| |
|
| |
return; |
| |
} |
| |
|
| static char * |
static char * |
| get_user_config_filename(void) |
get_user_config_filename(void) |
| { |
{ |
| Line 778 add_processes_to_proctable(p_ptbl, proce |
|
| Line 821 add_processes_to_proctable(p_ptbl, proce |
|
| } |
} |
| |
|
| new_ptbl[i]->pid = 0; |
new_ptbl[i]->pid = 0; |
| |
new_ptbl[i]->nice = processes[i]->nice; |
| new_ptbl[i]->name = strdyn_safe_duplicate(processes[i]->name); |
new_ptbl[i]->name = strdyn_safe_duplicate(processes[i]->name); |
| new_ptbl[i]->argv = strdyn_safe_duplicate(processes[i]->argv); |
new_ptbl[i]->argv = strdyn_safe_duplicate(processes[i]->argv); |
| |
|
| Line 803 add_processes_to_proctable(p_ptbl, proce |
|
| Line 847 add_processes_to_proctable(p_ptbl, proce |
|
| |
|
| if (ar == NULL) { |
if (ar == NULL) { |
| msg_error_print("not enough memory" |
msg_error_print("not enough memory" |
| " for link argument exploding"); |
" for link argument exploding\n"); |
| proctable_destroy(&new_ptbl); |
proctable_destroy(&new_ptbl); |
| return -1; |
return -1; |
| } |
} |