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

diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index 3a2d893..01f8bb8 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -280,18 +280,18 @@
 	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 @@
 			if (dt)
 				dt->m_isblacklisted = 1;
 		}
-	} /* while (reads(...)) */
+	} /* while (fgets(...)) */
 
-	close(fd);
+	fclose(f);
 	return TRUE;
 }
 
@@ -403,7 +403,7 @@
  */
 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 @@
 	}
 
 	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 @@
 
 		/* 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 @@
 /* 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 @@
 		}
 	}
  done:
-	close(fd);
+	fclose(f);
 	return ret;
 }