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

commit 0db06c5b093cd331d4cc0d8e23f9f236b1ce8dbb
Author: James Buren <r...@frugalware.org>
Date:   Fri Sep 16 05:12:45 2011 -0500

grubconfig: add support for writing our initrd

diff --git a/libfwgrubconfig/libfwgrubconfig.c 
b/libfwgrubconfig/libfwgrubconfig.c
index e80a3bb..2263ae6 100644
--- a/libfwgrubconfig/libfwgrubconfig.c
+++ b/libfwgrubconfig/libfwgrubconfig.c
@@ -50,6 +50,7 @@ typedef struct mdu_version_s {
struct fwgrub_entry_t {
FILE *fp;
char *title;
+       char *initrd;
char *grubbootdev;
char *bootstr;
char *kernel;
@@ -462,18 +463,22 @@ static int write_entry(struct fwgrub_entry_t *entry)
if(entry->opts)
{
if(entry->rootdev && strlen(entry->rootdev))
-                               fprintf(entry->fp, "\tkernel %s%s%s root=%s 
%s\n\n",
+                               fprintf(entry->fp, "\tkernel %s%s%s root=%s 
%s\n",
entry->grubbootdev, entry->bootstr, entry->kernel, entry->rootdev, entry->opts);
else
// probably rootdev is already included in ->opts
-                               fprintf(entry->fp, "\tkernel %s%s%s %s\n\n",
+                               fprintf(entry->fp, "\tkernel %s%s%s %s\n",
entry->grubbootdev, entry->bootstr, entry->kernel, entry->opts);
}
else
{
-                       fprintf(entry->fp, "\tkernel %s%s%s\n\n",
+                       fprintf(entry->fp, "\tkernel %s%s%s\n",
entry->grubbootdev, entry->bootstr, entry->kernel);
}
+               if(entry->initrd)
+                       fprintf(entry->fp,"\tinitrd %s%s%s\n",
+                               entry->grubbootdev, entry->bootstr, 
entry->initrd);
+               putc('\n',entry->fp);
}
else if(!strcmp(entry->type, "chain"))
{
@@ -513,6 +518,8 @@ static void entry_free(struct fwgrub_entry_t *entry)
free(entry->bootstr);
if(entry->kernel)
free(entry->kernel);
+       if(entry->initrd)
+               free(entry->initrd);
if(entry->rootdev)
free(entry->rootdev);
if(entry->opts)
@@ -617,6 +624,7 @@ static int os_prober(FILE *fp)
break;
*ptr='\0';
// initrd, maybe useful later
+                               entry->initrd = NULL;
while(*++ptr)
if(*ptr==':')
break;
@@ -688,6 +696,7 @@ void fwgrub_create_menu(FILE *fp)
if(!stat(path, &buf))
fprintf(fp, "gfxmenu %s%s/grub/message\n\n", entry.grubbootdev, entry.bootstr);
entry.kernel = strdup("/vmlinuz");
+       entry.initrd = strdup("/initrd.img.xz");
swapdev = get_swap_dev();
if (swapdev)
entry.opts = g_strdup_printf("ro quiet splash resume=%s", swapdev);
@@ -705,6 +714,8 @@ void fwgrub_create_menu(FILE *fp)
entry.rootdev=NULL;
free(entry.opts);
entry.opts=NULL;
+               free(entry.initrd);
+               entry.initrd=NULL;
write_entry(&entry);
}
entry_free(&entry);
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to