diff options
author | Dan McGee <dan@archlinux.org> | 2012-02-06 21:24:47 -0600 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2012-02-06 22:18:26 -0600 |
commit | 9fddef5b02fa2633d178614426c4564ca44cc6f7 (patch) | |
tree | d0de4217892aa790d1cccd92ca0959494dfbcb25 | |
parent | 437f40eac4280188f66b6ba51d682ae85bdcec13 (diff) | |
download | kmod-working.tar.gz kmod-working.zip |
WIP: use fopen in libkmod-configworking
-rw-r--r-- | libkmod/libkmod-config.c | 24 |
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) { |