Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalwareutils.git;a=commitdiff;h=7454a3b9dd11b1b087f586e9bb792a9b9b9a3b7f

commit 7454a3b9dd11b1b087f586e9bb792a9b9b9a3b7f
Author: Miklos Vajna <vmik...@frugalware.org>
Date:   Sat Sep 17 11:22:31 2011 +0200

grubconfig: support detecting root device when it's not available in /etc/mtab

This fixes a segfault of grubconfig when it's not invoked from the setup
nor using initrd.

diff --git a/libfwgrubconfig/libfwgrubconfig.c 
b/libfwgrubconfig/libfwgrubconfig.c
index 2263ae6..874d47f 100644
--- a/libfwgrubconfig/libfwgrubconfig.c
+++ b/libfwgrubconfig/libfwgrubconfig.c
@@ -447,7 +447,17 @@ static char *mount_dev(char *path)
if(mnt)
return(strdup(mnt->mnt_fsname));
}
-       return(NULL);
+       // not found? then it must be a pre-initrd root device, look it up from 
/proc/cmdline
+       fp = fopen("/proc/cmdline", "r");
+       char line[PATH_MAX];
+       if (fp)
+               fgets(line, 512, fp);
+       // skip everything before root= and after a space
+       char *ptr = strstr(line, "root=") + 5;
+       if (strchr(ptr, ' '))
+               *(strchr(ptr, ' ')) = '\0';
+       fclose(fp);
+       return(strdup(ptr));
}

static int write_entry(struct fwgrub_entry_t *entry)
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to