static int test_service(rtems_bsd_rc_conf* rc_conf) { rtems_bsd_rc_conf_argc_argv* aa; int r; test_service_last_num = 1; assert((aa = rtems_bsd_rc_conf_argc_argv_create()) != NULL); r = rtems_bsd_rc_conf_find(rc_conf, "test_regex_.*", aa); assert(r == 0 || (r < 0 && errno == ENOENT)); if (r < 0 && errno == ENOENT) return -1; while (r == 0) { int num; int arg; rtems_bsd_rc_conf_print_cmd(rc_conf, "test_service", aa->argc, aa->argv); assert(strncasecmp(aa->argv[0], "test_regex_", strlen("test_regex_")) == 0); num = atoi(aa->argv[0] + strlen("test_regex_")); assert(num == (test_regex_last_num + 1)); assert((num - 1) < NUM_OF_TEST_REGEX_); for (arg = 0; arg < aa->argc; ++arg) { const char* a = aa->argv[arg]; size_t l = strlen(a); if (l > 0) { assert(!isspace(a[0])); assert(!isspace(a[l - 1])); assert(a[0] != '"'); assert(a[l - 1] != '"'); } } test_regex_results[num - 1] = true; ++test_regex_last_num; r = rtems_bsd_rc_conf_find_next(rc_conf, aa); assert(r == 0 || (r < 0 && errno == ENOENT)); } rtems_bsd_rc_conf_argc_argv_destroy(aa); puts("test_service done"); return 0; }
static void rc_conf_syslog(rtems_bsd_rc_conf* rc_conf) { rtems_bsd_rc_conf_argc_argv* aa; int r = 0; aa = rtems_bsd_rc_conf_argc_argv_create(); if (aa != NULL) { r = rtems_bsd_rc_conf_find(rc_conf, "syslog_priority", aa); if (r == 0) { if (aa->argc == 2) { r = rtems_bsd_setlogpriority(aa->argv[1]); if (r < 0) fprintf(stderr, "error: syslog: invalid priority: %s\n", aa->argv[1]); } else { fprintf(stderr, "error: syslog: invalid priority\n"); } } rtems_bsd_rc_conf_argc_argv_destroy(aa); } }