summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-01-18 10:57:11 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2013-01-18 11:06:53 -0500
commitb9893505636b77878035b342026e391e10cfbb91 (patch)
tree5ffc451467899a3abce08cc7442d86955cf8cb4e /src/shared
parent565d91fdf198b88f7c2d72c67cfc6c30341a3596 (diff)
util: modernization and test for load_env_file
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/util.c63
1 files changed, 22 insertions, 41 deletions
diff --git a/src/shared/util.c b/src/shared/util.c
index 08c0c2be13..37e383f2ef 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -775,20 +775,19 @@ fail:
return r;
}
-int load_env_file(
- const char *fname,
- char ***rl) {
+int load_env_file(const char *fname,
+ char ***rl) {
- FILE *f;
+ FILE _cleanup_fclose_ *f;
char *b;
- char *c = NULL;
- char **m = NULL;
- int r;
+ char _cleanup_free_ *c = NULL;
+ char _cleanup_strv_free_ **m = NULL;
assert(fname);
assert(rl);
- if (!(f = fopen(fname, "re")))
+ f = fopen(fname, "re");
+ if (!f)
return -errno;
while (!feof(f)) {
@@ -796,24 +795,19 @@ int load_env_file(
char **t;
if (!fgets(l, sizeof(l), f)) {
- if(!feof(f)) {
- r = -errno;
- goto finish;
- }
+ if (!feof(f))
+ return -errno;
else if (!c)
break;
-
}
cs = endswith(l, "\\\n");
if (cs) {
-
*cs = '\0';
b = strappend(c, l);
- if (!b) {
- r = log_oom();
- goto finish;
- }
+ if (!b)
+ return log_oom();
+
free(c);
c = b;
*l = '\0';
@@ -822,10 +816,9 @@ int load_env_file(
if (c) {
b = strappend(c, l);
- if (!b) {
- r = log_oom();
- goto finish;
- }
+ if (!b)
+ return log_oom();
+
free(c);
c = b;
}
@@ -838,39 +831,27 @@ int load_env_file(
if (strchr(COMMENTS, *p))
continue;
- if (!(u = normalize_env_assignment(p))) {
- r = log_oom();
- goto finish;
- }
+ u = normalize_env_assignment(p);
+ if (!u)
+ return log_oom();
+
free(c);
c = NULL;
t = strv_append(m, u);
free(u);
- if (!t) {
- r = log_oom();
- goto finish;
- }
+ if (!t)
+ return log_oom();
strv_free(m);
m = t;
}
- r = 0;
-
*rl = m;
m = NULL;
-finish:
- if (f)
- fclose(f);
-
- free(c);
-
- strv_free(m);
-
- return r;
+ return 0;
}
int write_env_file(const char *fname, char **l) {