summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/modules.c
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.com>2007-08-27 13:18:22 +0000
committerOlivier Blin <oblin@mandriva.com>2007-08-27 13:18:22 +0000
commitf82916359be360c46950fc37cd04e73288ebe918 (patch)
tree9464dcb5e0144dd817398da530dc5815aa2544e2 /mdk-stage1/modules.c
parent14817fd460bd1ec65c69a64fc4300d0ba8ac67c2 (diff)
downloaddrakx-f82916359be360c46950fc37cd04e73288ebe918.tar
drakx-f82916359be360c46950fc37cd04e73288ebe918.tar.gz
drakx-f82916359be360c46950fc37cd04e73288ebe918.tar.bz2
drakx-f82916359be360c46950fc37cd04e73288ebe918.tar.xz
drakx-f82916359be360c46950fc37cd04e73288ebe918.zip
move some code in new cat_file and line_counts functions
Diffstat (limited to 'mdk-stage1/modules.c')
-rw-r--r--mdk-stage1/modules.c29
1 files changed, 6 insertions, 23 deletions
diff --git a/mdk-stage1/modules.c b/mdk-stage1/modules.c
index 4d4771314..92cae21ba 100644
--- a/mdk-stage1/modules.c
+++ b/mdk-stage1/modules.c
@@ -91,32 +91,13 @@ static int load_modules_dependencies(void)
char * deps_file = "/modules/modules.dep";
char * buf, * ptr, * start, * end;
struct stat s;
- int fd, line, i;
+ int line, i;
log_message("loading modules dependencies");
-
- fd = open(deps_file, O_RDONLY);
- if (fd == -1) {
- log_perror(deps_file);
+ buf = cat_file(deps_file, &s);
+ if (!buf)
return -1;
- }
-
- fstat(fd, &s);
- buf = alloca(s.st_size + 1);
- if (read(fd, buf, s.st_size) != (ssize_t)s.st_size) {
- log_perror(deps_file);
- return -1;
- }
- buf[s.st_size] = '\0';
- close(fd);
-
- ptr = buf;
- line = 0;
- while (ptr) {
- line++;
- ptr = strchr(ptr + 1, '\n');
- }
-
+ line = line_counts(buf);
modules_deps = malloc(sizeof(*modules_deps) * (line+1));
start = buf;
@@ -171,6 +152,8 @@ static int load_modules_dependencies(void)
}
modules_deps[line].modname = NULL;
+ free(buf);
+
return 0;
}