summaryrefslogtreecommitdiff
path: root/src/mount.c
diff options
context:
space:
mode:
authorFabiano FidĂȘncio <fabianofidencio@gmail.com>2010-10-05 08:41:06 -0700
committerLennart Poettering <lennart@poettering.net>2010-10-05 22:26:28 +0200
commit1ddff895f3ad85ec79c4923ba8c882a283826f42 (patch)
treeecd1794ba74215a931623adf3971e04195032dbb /src/mount.c
parent1bc5d57ae3bd2c49aca3bba10c4ed87c62213e39 (diff)
mount: Don't stop the mountinfo parser if one line can't be read
The current behavior of the /proc/self/mountinfo parser is to stop the parser on parse failures I'm only changing this behavior to try the next line and adding a warning if occurs a fail.
Diffstat (limited to 'src/mount.c')
-rw-r--r--src/mount.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/mount.c b/src/mount.c
index b17fe2a7d3..dcf0a43474 100644
--- a/src/mount.c
+++ b/src/mount.c
@@ -1408,13 +1408,14 @@ finish:
static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
int r;
+ unsigned i;
char *device, *path, *options, *options2, *fstype, *d, *p, *o;
assert(m);
rewind(m->proc_self_mountinfo);
- for (;;) {
+ for (i = 1;; i++) {
int k;
device = path = options = options2 = fstype = d = p = o = NULL;
@@ -1441,8 +1442,8 @@ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
if (k == EOF)
break;
- r = -EBADMSG;
- goto finish;
+ log_warning("Failed to parse /proc/self/mountinfo:%u.", i);
+ goto clean_up;
}
if (asprintf(&o, "%s,%s", options, options2) < 0) {
@@ -1459,6 +1460,7 @@ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
if ((r = mount_add_one(m, d, p, o, fstype, true, set_flags)) < 0)
goto finish;
+clean_up:
free(device);
free(path);
free(options);