summaryrefslogtreecommitdiffhomepage
path: root/modutils/modprobe.c
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2008-08-04 21:16:46 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2008-08-04 21:16:46 +0000
commit855ff6f503ee50fad3eb6fa30e2b02f53f32d63d (patch)
tree7cc63f646f0c9c5bcacefe2a8e453a3796902af0 /modutils/modprobe.c
parent5db861a9eb93c4562798654f53022088784f35eb (diff)
modprobe: use buffering line reads (fgets) instead of reads().
libbb: remove reads() function old new delta include_conf_file_act 961 980 +19 localcmd 282 284 +2 already_loaded 155 151 -4 in_cksum 58 53 -5 modprobe_main 1630 1624 -6 reads 129 - -129 ------------------------------------------------------------------------------ (add/remove: 0/1 grow/shrink: 2/3 up/down: 21/-144) Total: -123 bytes
Diffstat (limited to 'modutils/modprobe.c')
-rw-r--r--modutils/modprobe.c39
1 files changed, 20 insertions, 19 deletions
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index 3a2d893ee..01f8bb89b 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -280,18 +280,18 @@ static int FAST_FUNC include_conf_file_act(const char *filename,
struct dep_t **first = &conf->first;
struct dep_t **current = &conf->current;
int continuation_line = 0;
- int fd;
+ FILE *f;
if (bb_basename(filename)[0] == '.')
return TRUE;
- fd = open(filename, O_RDONLY);
- if (fd < 0)
+ f = fopen_for_read(filename);
+ if (f == NULL)
return FALSE;
// alias parsing is not 100% correct (no correct handling of continuation lines within an alias)!
- while (reads(fd, line_buffer, sizeof(line_buffer))) {
+ while (fgets(line_buffer, sizeof(line_buffer), f)) {
int l;
*strchrnul(line_buffer, '#') = '\0';
@@ -376,9 +376,9 @@ static int FAST_FUNC include_conf_file_act(const char *filename,
if (dt)
dt->m_isblacklisted = 1;
}
- } /* while (reads(...)) */
+ } /* while (fgets(...)) */
- close(fd);
+ fclose(f);
return TRUE;
}
@@ -403,7 +403,7 @@ static int include_conf_file2(struct include_conf_t *conf,
*/
static struct dep_t *build_dep(void)
{
- int fd;
+ FILE *f;
struct utsname un;
struct include_conf_t conf = { NULL, NULL };
char *filename;
@@ -419,18 +419,18 @@ static struct dep_t *build_dep(void)
}
filename = xasprintf(CONFIG_DEFAULT_MODULES_DIR"/%s/"CONFIG_DEFAULT_DEPMOD_FILE, un.release);
- fd = open(filename, O_RDONLY);
+ f = fopen_for_read(filename);
if (ENABLE_FEATURE_CLEAN_UP)
free(filename);
- if (fd < 0) {
+ if (f == NULL) {
/* Ok, that didn't work. Fall back to looking in /lib/modules */
- fd = open(CONFIG_DEFAULT_MODULES_DIR"/"CONFIG_DEFAULT_DEPMOD_FILE, O_RDONLY);
- if (fd < 0) {
+ f = fopen_for_read(CONFIG_DEFAULT_MODULES_DIR"/"CONFIG_DEFAULT_DEPMOD_FILE);
+ if (f == NULL) {
bb_error_msg_and_die("cannot parse " CONFIG_DEFAULT_DEPMOD_FILE);
}
}
- while (reads(fd, line_buffer, sizeof(line_buffer))) {
+ while (fgets(line_buffer, sizeof(line_buffer), f)) {
int l = strlen(line_buffer);
char *p = 0;
@@ -545,8 +545,8 @@ static struct dep_t *build_dep(void)
/* is there other dependable module(s) ? */
continuation_line = (line_buffer[l-1] == '\\');
- } /* while (reads(...)) */
- close(fd);
+ } /* while (fgets(...)) */
+ fclose(f);
/*
* First parse system-specific options and aliases
@@ -594,13 +594,14 @@ static struct dep_t *build_dep(void)
/* return 1 = loaded, 0 = not loaded, -1 = can't tell */
static int already_loaded(const char *name)
{
- int fd, ret = 0;
+ FILE *f;
+ int ret = 0;
- fd = open("/proc/modules", O_RDONLY);
- if (fd < 0)
+ f = fopen_for_read("/proc/modules");
+ if (f == NULL)
return -1;
- while (reads(fd, line_buffer, sizeof(line_buffer))) {
+ while (fgets(line_buffer, sizeof(line_buffer), f)) {
char *p;
p = strchr(line_buffer, ' ');
@@ -627,7 +628,7 @@ static int already_loaded(const char *name)
}
}
done:
- close(fd);
+ fclose(f);
return ret;
}