summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--miscutils/man.c39
1 files changed, 16 insertions, 23 deletions
diff --git a/miscutils/man.c b/miscutils/man.c
index b1bb1530a..75af3d775 100644
--- a/miscutils/man.c
+++ b/miscutils/man.c
@@ -75,12 +75,11 @@ static int show_manpage(const char *pager, char *man_filename, int man)
int man_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int man_main(int argc UNUSED_PARAM, char **argv)
{
- FILE *cf;
+ parser_t *parser;
const char *pager;
char **man_path_list;
char *sec_list;
char *cur_path, *cur_sect;
- char *line, *value;
int count_mp, cur_mp;
int opt, not_found;
@@ -103,30 +102,24 @@ int man_main(int argc UNUSED_PARAM, char **argv)
}
/* Parse man.conf */
- cf = fopen_or_warn("/etc/man.conf", "r");
- if (cf) {
+ parser = config_open("/etc/man.conf");
+ if (parser) {
/* go through man configuration file and search relevant paths, sections */
- while ((line = xmalloc_fgetline(cf)) != NULL) {
- trim(line); /* remove whitespace at the beginning/end */
- if (isspace(line[7])) {
- line[7] = '\0';
- value = skip_whitespace(&line[8]);
- *skip_non_whitespace(value) = '\0';
- if (strcmp("MANPATH", line) == 0) {
- man_path_list[count_mp] = xstrdup(value);
- count_mp++;
- /* man_path_list is NULL terminated */
- man_path_list[count_mp] = NULL;
- man_path_list = xrealloc_vector(man_path_list, 4, count_mp);
- }
- if (strcmp("MANSECT", line) == 0) {
- free(sec_list);
- sec_list = xstrdup(value);
- }
+ char *token[2];
+ while (config_read(parser, token, 2, 2, "# \t", PARSE_LAST_IS_GREEDY)) {
+ if (strcmp("MANPATH", token[0]) == 0) {
+ man_path_list = xrealloc_vector(man_path_list, 4, count_mp);
+ man_path_list[count_mp] = xstrdup(token[1]);
+ count_mp++;
+ /* man_path_list is NULL terminated */
+ man_path_list[count_mp] = NULL;
+ }
+ if (strcmp("MANSECT", token[0]) == 0) {
+ free(sec_list);
+ sec_list = xstrdup(token[1]);
}
- free(line);
}
- fclose(cf);
+ config_close(parser);
}
// TODO: my man3/getpwuid.3.gz contains just one line: