summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2012-02-06 21:24:47 -0600
committerDan McGee <dan@archlinux.org>2012-02-06 22:18:26 -0600
commit9fddef5b02fa2633d178614426c4564ca44cc6f7 (patch)
treed0de4217892aa790d1cccd92ca0959494dfbcb25
parent437f40eac4280188f66b6ba51d682ae85bdcec13 (diff)
downloadkmod-working.tar.gz
kmod-working.zip
WIP: use fopen in libkmod-configworking
-rw-r--r--libkmod/libkmod-config.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/libkmod/libkmod-config.c b/libkmod/libkmod-config.c
index ac9c888..6ea93c7 100644
--- a/libkmod/libkmod-config.c
+++ b/libkmod/libkmod-config.c
@@ -509,23 +509,23 @@ static void kcmdline_parse_result(struct kmod_config *config, char *modname,
static int kmod_config_parse_kcmdline(struct kmod_config *config)
{
char buf[KCMD_LINE_SIZE];
- int fd, err;
- char *p, *modname, *param = NULL, *value = NULL;
+ FILE *file;
+ size_t len;
+ char *p, *modname, *param = NULL, *value = NULL;
- fd = open("/proc/cmdline", O_RDONLY|O_CLOEXEC);
- if (fd < 0) {
- err = -errno;
+ file = fopen("/proc/cmdline", "r");
+ if (file == NULL) {
DBG(config->ctx, "could not open '/proc/cmdline' for reading: %m\n");
- return err;
+ return -errno;
}
- err = read_str_safe(fd, buf, sizeof(buf));
- close(fd);
- if (err < 0) {
- ERR(config->ctx, "could not read from '/proc/cmdline': %s\n",
- strerror(-err));
- return err;
+ len = fread(buf, 1, sizeof(buf), file);
+ if (len == 0 || ferror(file)) {
+ fclose(file);
+ ERR(config->ctx, "could not read from '/proc/cmdline': %m\n");
+ return -errno;
}
+ fclose(file);
for (p = buf, modname = buf; *p != '\0' && *p != '\n'; p++) {
switch (*p) {