From 5415c856eaccd1bc5d064022770a288f43b2e94f Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Mon, 21 Jul 2008 23:05:26 +0000 Subject: libbb: [x]fopen_for_{read,write} introduced and used. (by Valdimir) function old new delta config_open2 - 41 +41 config_read 507 542 +35 find_pair 169 187 +18 fopen_for_write - 14 +14 fopen_for_read - 14 +14 find_main 406 418 +12 xfopen_for_write - 10 +10 xfopen_for_read - 10 +10 popstring 134 140 +6 parse_inittab 396 401 +5 next_token 923 928 +5 pack_gzip 1659 1661 +2 bb__parsespent 117 119 +2 fallbackSort 1719 1717 -2 evalvar 1376 1374 -2 qrealloc 36 33 -3 ... ... ... ... singlemount 4579 4569 -10 process_stdin 443 433 -10 patch_main 1111 1101 -10 ifupdown_main 2175 2165 -10 file_action_grep 90 80 -10 uuidcache_init 649 637 -12 hush_main 797 785 -12 read_config 230 217 -13 dpkg_main 3835 3820 -15 read_line_input 3134 3110 -24 sysctl_main 232 203 -29 config_open 40 10 -30 WARN_BAD_LINE 44 - -44 login_main 1714 1575 -139 ------------------------------------------------------------------------------ (add/remove: 5/1 grow/shrink: 8/74 up/down: 174/-737) Total: -563 bytes --- loginutils/getty.c | 2 +- loginutils/login.c | 34 ++++++++++++---------------------- 2 files changed, 13 insertions(+), 23 deletions(-) (limited to 'loginutils') diff --git a/loginutils/getty.c b/loginutils/getty.c index 7d4fe4df9..358a45c7c 100644 --- a/loginutils/getty.c +++ b/loginutils/getty.c @@ -668,7 +668,7 @@ int getty_main(int argc UNUSED_PARAM, char **argv) logmode = LOGMODE_BOTH; #ifdef DEBUGGING - dbf = xfopen(DEBUGTERM, "w"); + dbf = xfopen_for_write(DEBUGTERM); for (n = 1; argv[n]; n++) { debug(argv[n]); debug("\n"); diff --git a/loginutils/login.c b/loginutils/login.c index 9c7941e0d..5a75ed218 100644 --- a/loginutils/login.c +++ b/loginutils/login.c @@ -122,7 +122,7 @@ static void die_if_nologin(void) if (access("/etc/nologin", F_OK)) return; - fp = fopen("/etc/nologin", "r"); + fp = fopen_for_read("/etc/nologin"); if (fp) { while ((c = getc(fp)) != EOF) bb_putchar((c=='\n') ? '\r' : c); @@ -139,30 +139,20 @@ static ALWAYS_INLINE void die_if_nologin(void) {} #if ENABLE_FEATURE_SECURETTY && !ENABLE_PAM static int check_securetty(void) { - FILE *fp; - int i; - char buf[256]; - - fp = fopen("/etc/securetty", "r"); - if (!fp) { - /* A missing securetty file is not an error. */ - return 1; - } - while (fgets(buf, sizeof(buf)-1, fp)) { - for (i = strlen(buf)-1; i >= 0; --i) { - if (!isspace(buf[i])) + char *buf; + int ret = 1; + parser_t *parser = config_open2("/etc/securetty", fopen_for_read); + /* N.B. A missing securetty file is not an error. */ + if (parser) { + while (config_read(parser, &buf, 1, 1, "# \t", 0)) { + if (strcmp(buf, short_tty) == 0) break; } - buf[++i] = '\0'; - if (!buf[0] || (buf[0] == '#')) - continue; - if (strcmp(buf, short_tty) == 0) { - fclose(fp); - return 1; - } + config_close(parser); + // buf != NULL here iff config file was empty (OK) or buf equals short_tty (OK) + ret = buf != NULL; } - fclose(fp); - return 0; + return ret; } #else static ALWAYS_INLINE int check_securetty(void) { return 1; } -- cgit v1.2.3