Magellan Linux

Diff of /trunk/grubby/grubby.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3003 by niro, Tue Jun 27 14:14:00 2017 UTC revision 3014 by niro, Tue Jun 27 14:34:11 2017 UTC
# Line 4210  int addNewKernel(struct grubConfig *conf Line 4210  int addNewKernel(struct grubConfig *conf
4210   const char *newKernelArgs, const char *newKernelInitrd,   const char *newKernelArgs, const char *newKernelInitrd,
4211   const char **extraInitrds, int extraInitrdCount,   const char **extraInitrds, int extraInitrdCount,
4212   const char *newMBKernel, const char *newMBKernelArgs,   const char *newMBKernel, const char *newMBKernelArgs,
4213   const char *newDevTreePath)   const char *newDevTreePath, int newIndex)
4214  {  {
4215   struct singleEntry *new;   struct singleEntry *new, *entry, *prev = NULL;
4216   struct singleLine *newLine = NULL, *tmplLine = NULL, *masterLine = NULL;   struct singleLine *newLine = NULL, *tmplLine = NULL, *masterLine = NULL;
4217   int needs;   int needs;
4218     char *indexs;
4219   char *chptr;   char *chptr;
4220     int rc;
4221    
4222   if (!newKernelPath)   if (!newKernelPath)
4223   return 0;   return 0;
4224    
4225     rc = asprintf(&indexs, "%d", newIndex);
4226     if (rc < 0)
4227     return 1;
4228    
4229   /* if the newKernelTitle is too long silently munge it into something   /* if the newKernelTitle is too long silently munge it into something
4230   * we can live with. truncating is first check, then we'll just mess with   * we can live with. truncating is first check, then we'll just mess with
4231   * it until it looks better */   * it until it looks better */
# Line 4242  int addNewKernel(struct grubConfig *conf Line 4248  int addNewKernel(struct grubConfig *conf
4248   new = malloc(sizeof(*new));   new = malloc(sizeof(*new));
4249   new->skip = 0;   new->skip = 0;
4250   new->multiboot = 0;   new->multiboot = 0;
  new->next = config->entries;  
4251   new->lines = NULL;   new->lines = NULL;
4252   config->entries = new;   entry = config->entries;
4253     for (unsigned int i = 0; i < newIndex; i++) {
4254     if (!entry)
4255     break;
4256     prev = entry;
4257     entry = entry->next;
4258     }
4259     new->next = entry;
4260    
4261     if (prev)
4262     prev->next = new;
4263     else
4264     config->entries = new;
4265    
4266   /* copy/update from the template */   /* copy/update from the template */
4267   needs = NEED_KERNEL | NEED_TITLE;   needs = NEED_KERNEL | NEED_TITLE;
# Line 4707  int addNewKernel(struct grubConfig *conf Line 4724  int addNewKernel(struct grubConfig *conf
4724   abort();   abort();
4725   }   }
4726    
4727   if (updateImage(config, "0", prefix, newKernelArgs, NULL,   if (updateImage(config, indexs, prefix, newKernelArgs, NULL,
4728   newMBKernelArgs, NULL))   newMBKernelArgs, NULL))
4729   return 1;   return 1;
4730    
# Line 4737  int main(int argc, const char **argv) Line 4754  int main(int argc, const char **argv)
4754   char *newDevTreePath = NULL;   char *newDevTreePath = NULL;
4755   char *newMBKernel = NULL;   char *newMBKernel = NULL;
4756   char *newMBKernelArgs = NULL;   char *newMBKernelArgs = NULL;
4757     int newIndex = 0;
4758   char *removeMBKernelArgs = NULL;   char *removeMBKernelArgs = NULL;
4759   char *removeMBKernel = NULL;   char *removeMBKernel = NULL;
4760   char *bootPrefix = NULL;   char *bootPrefix = NULL;
# Line 4771  int main(int argc, const char **argv) Line 4789  int main(int argc, const char **argv)
4789   NULL},   NULL},
4790   {"boot-filesystem", 0, POPT_ARG_STRING, &bootPrefix, 0,   {"boot-filesystem", 0, POPT_ARG_STRING, &bootPrefix, 0,
4791   _   _
4792   ("filestystem which contains /boot directory (for testing only)"),   ("filesystem which contains /boot directory (for testing only)"),
4793   _("bootfs")},   _("bootfs")},
4794  #if defined(__i386__) || defined(__x86_64__) || defined (__powerpc64__) || defined (__ia64__)  #if defined(__i386__) || defined(__x86_64__) || defined (__powerpc64__) || defined (__ia64__)
4795   {"bootloader-probe", 0, POPT_ARG_NONE, &bootloaderProbe, 0,   {"bootloader-probe", 0, POPT_ARG_NONE, &bootloaderProbe, 0,
# Line 4843  int main(int argc, const char **argv) Line 4861  int main(int argc, const char **argv)
4861   {"set-default-index", 0, POPT_ARG_INT, &defaultIndex, 0,   {"set-default-index", 0, POPT_ARG_INT, &defaultIndex, 0,
4862   _("make the given entry index the default entry"),   _("make the given entry index the default entry"),
4863   _("entry-index")},   _("entry-index")},
4864     {"set-index", 0, POPT_ARG_INT, &newIndex, 0,
4865     _("use the given index when creating a new entry"),
4866     _("entry-index")},
4867   {"silo", 0, POPT_ARG_NONE, &configureSilo, 0,   {"silo", 0, POPT_ARG_NONE, &configureSilo, 0,
4868   _("configure silo bootloader")},   _("configure silo bootloader")},
4869   {"title", 0, POPT_ARG_STRING, &newKernelTitle, 0,   {"title", 0, POPT_ARG_STRING, &newKernelTitle, 0,
# Line 5258  int main(int argc, const char **argv) Line 5279  int main(int argc, const char **argv)
5279   if (addNewKernel(config, template, bootPrefix, newKernelPath,   if (addNewKernel(config, template, bootPrefix, newKernelPath,
5280   newKernelTitle, newKernelArgs, newKernelInitrd,   newKernelTitle, newKernelArgs, newKernelInitrd,
5281   (const char **)extraInitrds, extraInitrdCount,   (const char **)extraInitrds, extraInitrdCount,
5282   newMBKernel, newMBKernelArgs, newDevTreePath))   newMBKernel, newMBKernelArgs, newDevTreePath,
5283     newIndex))
5284   return 1;   return 1;
5285    
5286   if (numEntries(config) == 0) {   if (numEntries(config) == 0) {

Legend:
Removed from v.3003  
changed lines
  Added in v.3014