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