63 regmatch_t matches[2];
67 fp = fopen(file,
"r");
69 fprintf(stderr,
"failed to open %s\n", file);
72 len = fread(buffer, 1,
sizeof(buffer) - 1, fp);
76 fprintf(stderr,
"failed to read from %s\n", file);
81 i = calloc(1,
sizeof(
struct initd));
83 fprintf(stderr,
"failed to alloc initd struct\n");
88 i->
name = strndup(buffer + matches[1].rm_so, (
size_t)matches[1].rm_eo - matches[1].rm_so);
89 if (!regexec(&
pat_exec, buffer, 2, matches, 0))
90 i->
exec = strndup(buffer + matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so);
91 if (!regexec(&
pat_desc, buffer, 2, matches, 0))
92 i->
desc = strndup(buffer + matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so);
93 if (!regexec(&
pat_tpl, buffer, 2, matches, 0))
94 i->
tpl = strndup(buffer + matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so);
95 if (!regexec(&
pat_start, buffer, 2, matches, 0))
96 i->
start += atoi(buffer + matches[1].rm_so);
97 if (!regexec(&
pat_stop, buffer, 2, matches, 0))
98 i->
stop += atoi(buffer + matches[1].rm_so);
101 list_add(&i->
list, &initds);
static void initd_free(struct initd *i)