Magellan Linux

Diff of /trunk/grubby/grubby.c

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

revision 2977 by niro, Thu Jun 30 10:24:27 2016 UTC revision 2986 by niro, Thu Jun 30 10:30:31 2016 UTC
# Line 222  struct configFileInfo grubConfigType = { Line 222  struct configFileInfo grubConfigType = {
222      .mbHyperFirst = 1,      .mbHyperFirst = 1,
223      .mbInitRdIsModule = 1,      .mbInitRdIsModule = 1,
224      .mbAllowExtraInitRds = 1,      .mbAllowExtraInitRds = 1,
225        .titlePosition = 1,
226  };  };
227    
228  struct keywordTypes grub2Keywords[] = {  struct keywordTypes grub2Keywords[] = {
# Line 594  struct configFileInfo eliloConfigType = Line 595  struct configFileInfo eliloConfigType =
595      .needsBootPrefix = 1,      .needsBootPrefix = 1,
596      .argsInQuotes = 1,      .argsInQuotes = 1,
597      .mbConcatArgs = 1,      .mbConcatArgs = 1,
598        .titlePosition = 1,
599  };  };
600    
601  struct configFileInfo liloConfigType = {  struct configFileInfo liloConfigType = {
# Line 602  struct configFileInfo liloConfigType = { Line 604  struct configFileInfo liloConfigType = {
604      .entryStart = LT_KERNEL,      .entryStart = LT_KERNEL,
605      .argsInQuotes = 1,      .argsInQuotes = 1,
606      .maxTitleLength = 15,      .maxTitleLength = 15,
607        .titlePosition = 1,
608  };  };
609    
610  struct configFileInfo yabootConfigType = {  struct configFileInfo yabootConfigType = {
# Line 612  struct configFileInfo yabootConfigType = Line 615  struct configFileInfo yabootConfigType =
615      .argsInQuotes = 1,      .argsInQuotes = 1,
616      .maxTitleLength = 15,      .maxTitleLength = 15,
617      .mbAllowExtraInitRds = 1,      .mbAllowExtraInitRds = 1,
618        .titlePosition = 1,
619  };  };
620    
621  struct configFileInfo siloConfigType = {  struct configFileInfo siloConfigType = {
# Line 621  struct configFileInfo siloConfigType = { Line 625  struct configFileInfo siloConfigType = {
625      .needsBootPrefix = 1,      .needsBootPrefix = 1,
626      .argsInQuotes = 1,      .argsInQuotes = 1,
627      .maxTitleLength = 15,      .maxTitleLength = 15,
628        .titlePosition = 1,
629  };  };
630    
631  struct configFileInfo ziplConfigType = {  struct configFileInfo ziplConfigType = {
# Line 640  struct configFileInfo extlinuxConfigType Line 645  struct configFileInfo extlinuxConfigType
645      .maxTitleLength = 255,      .maxTitleLength = 255,
646      .mbAllowExtraInitRds = 1,      .mbAllowExtraInitRds = 1,
647      .defaultIsUnquoted = 1,      .defaultIsUnquoted = 1,
648        .titlePosition = 1,
649  };  };
650    
651  struct grubConfig {  struct grubConfig {
# Line 828  static int isEntryStart(struct singleLin Line 834  static int isEntryStart(struct singleLin
834  }  }
835    
836  /* extract the title from within brackets (for zipl) */  /* extract the title from within brackets (for zipl) */
837  static char * extractTitle(struct singleLine * line) {  static char * extractTitle(struct grubConfig *cfg, struct singleLine * line) {
838      /* bracketed title... let's extract it */      /* bracketed title... let's extract it */
839      char * title = NULL;      char * title = NULL;
840      if (line->type == LT_TITLE) {      if (line->type == LT_TITLE) {
841   title = strdup(line->elements[0].item + 1);   char *tmp = line->elements[cfg->cfi->titlePosition].item;
842   *(title + strlen(title) - 1) = '\0';   if (cfg->cfi->titleBracketed) {
843        tmp++;
844        title = strdup(tmp);
845        *(title + strlen(title) - 1) = '\0';
846     } else {
847        title = strdup(tmp);
848     }
849      } else if (line->type == LT_MENUENTRY)      } else if (line->type == LT_MENUENTRY)
850   title = strdup(line->elements[1].item);   title = strdup(line->elements[1].item);
851      else      else
# Line 1441  static struct grubConfig * readConfig(co Line 1453  static struct grubConfig * readConfig(co
1453                                  line->elements[1].item)) break;                                  line->elements[1].item)) break;
1454                  } else if (line) {                  } else if (line) {
1455                      if (!strcmp(defaultLine->elements[1].item,                      if (!strcmp(defaultLine->elements[1].item,
1456                                  extractTitle(line))) break;                                  extractTitle(cfg, line))) break;
1457                  }                  }
1458   i++;   i++;
1459   entry = NULL;   entry = NULL;
# Line 1492  static void writeDefault(FILE * out, cha Line 1504  static void writeDefault(FILE * out, cha
1504      if (!line)      if (!line)
1505   line = getLineByType(LT_TITLE, entry->lines);   line = getLineByType(LT_TITLE, entry->lines);
1506      if (line) {      if (line) {
1507   title = extractTitle(line);   title = extractTitle(cfg, line);
1508   if (title)   if (title)
1509      cfg->cfi->setEnv(cfg->cfi, "saved_entry", title);      cfg->cfi->setEnv(cfg->cfi, "saved_entry", title);
1510      }      }
# Line 1530  static void writeDefault(FILE * out, cha Line 1542  static void writeDefault(FILE * out, cha
1542              else if (line && (line->numElements == 1) &&              else if (line && (line->numElements == 1) &&
1543                       cfg->cfi->titleBracketed) {                       cfg->cfi->titleBracketed) {
1544   fprintf(out, "%sdefault%s%s\n", indent, separator,   fprintf(out, "%sdefault%s%s\n", indent, separator,
1545                          extractTitle(line));                          extractTitle(cfg, line));
1546              }              }
1547   }   }
1548      }      }
# Line 3332  int addMBInitrd(struct grubConfig * cfg, Line 3344  int addMBInitrd(struct grubConfig * cfg,
3344      if (!line)      if (!line)
3345   continue;   continue;
3346    
3347      linetitle = extractTitle(line);      linetitle = extractTitle(cfg, line);
3348      if (!linetitle)      if (!linetitle)
3349   continue;   continue;
3350      if (strcmp(title, linetitle)) {      if (strcmp(title, linetitle)) {
# Line 3386  int updateInitrd(struct grubConfig * cfg Line 3398  int updateInitrd(struct grubConfig * cfg
3398      if (!line)      if (!line)
3399   continue;   continue;
3400    
3401      linetitle = extractTitle(line);      linetitle = extractTitle(cfg, line);
3402      if (!linetitle)      if (!linetitle)
3403   continue;   continue;
3404      if (strcmp(title, linetitle)) {      if (strcmp(title, linetitle)) {
# Line 4412  int main(int argc, const char ** argv) { Line 4424  int main(int argc, const char ** argv) {
4424      }      }
4425    
4426      if (!cfi) {      if (!cfi) {
4427          if (grub2FindConfig(&grub2ConfigType))          if (grub2FindConfig(&grub2ConfigType)) {
4428      cfi = &grub2ConfigType;      cfi = &grub2ConfigType;
4429   else      if (envPath)
4430     cfi->envFile = envPath;
4431            } else
4432        #ifdef __ia64__        #ifdef __ia64__
4433      cfi = &eliloConfigType;      cfi = &eliloConfigType;
4434        #elif __powerpc__        #elif __powerpc__

Legend:
Removed from v.2977  
changed lines
  Added in v.2986