diff options
author | Denis Vlasenko | 2008-07-21 23:05:26 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-07-21 23:05:26 +0000 |
commit | 5415c856eaccd1bc5d064022770a288f43b2e94f (patch) | |
tree | 5973db4e6f81b5e311e8944700ded5db1083d440 /loginutils | |
parent | b74a2dba571d1c5a6127c683fb50923336d9c59f (diff) | |
download | busybox-5415c856eaccd1bc5d064022770a288f43b2e94f.zip busybox-5415c856eaccd1bc5d064022770a288f43b2e94f.tar.gz |
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
Diffstat (limited to 'loginutils')
-rw-r--r-- | loginutils/getty.c | 2 | ||||
-rw-r--r-- | loginutils/login.c | 34 |
2 files changed, 13 insertions, 23 deletions
diff --git a/loginutils/getty.c b/loginutils/getty.c index 7d4fe4d..358a45c 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 9c7941e..5a75ed2 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; } |