Magellan Linux

Diff of /trunk/grubby/grubby.c

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

revision 1747 by niro, Sat Feb 18 01:06:48 2012 UTC revision 1748 by niro, Sat Feb 18 01:07:15 2012 UTC
# Line 114  struct singleEntry { Line 114  struct singleEntry {
114    
115  #define MAIN_DEFAULT    (1 << 0)  #define MAIN_DEFAULT    (1 << 0)
116  #define DEFAULT_SAVED       -2  #define DEFAULT_SAVED       -2
117    #define DEFAULT_SAVED_GRUB2 -3
118    
119  struct keywordTypes {  struct keywordTypes {
120      char * key;      char * key;
# Line 328  struct configFileInfo grub2ConfigType = Line 329  struct configFileInfo grub2ConfigType =
329      .findConfig = grub2FindConfig,      .findConfig = grub2FindConfig,
330      .keywords = grub2Keywords,      .keywords = grub2Keywords,
331      .defaultIsIndex = 1,      .defaultIsIndex = 1,
332      .defaultSupportSaved = 0,      .defaultSupportSaved = 1,
333      .defaultIsVariable = 1,      .defaultIsVariable = 1,
334      .entryStart = LT_MENUENTRY,      .entryStart = LT_MENUENTRY,
335      .entryEnd = LT_ENTRY_END,      .entryEnd = LT_ENTRY_END,
# Line 1123  static struct grubConfig * readConfig(co Line 1124  static struct grubConfig * readConfig(co
1124    
1125      dbgPrintf("defaultLine is %s\n", defaultLine ? "set" : "unset");      dbgPrintf("defaultLine is %s\n", defaultLine ? "set" : "unset");
1126      if (defaultLine) {      if (defaultLine) {
1127   if (cfi->defaultIsVariable) {          if (defaultLine->numElements > 2 &&
1128        cfi->defaultSupportSaved &&
1129        !strncmp(defaultLine->elements[2].item,"\"${saved_entry}\"", 16)) {
1130        cfg->defaultImage = DEFAULT_SAVED_GRUB2;
1131     } else if (cfi->defaultIsVariable) {
1132      char *value = defaultLine->elements[2].item;      char *value = defaultLine->elements[2].item;
1133      while (*value && (*value == '"' || *value == '\'' ||      while (*value && (*value == '"' || *value == '\'' ||
1134      *value == ' ' || *value == '\t'))      *value == ' ' || *value == '\t'))
# Line 1180  static void writeDefault(FILE * out, cha Line 1185  static void writeDefault(FILE * out, cha
1185    
1186      if (cfg->defaultImage == DEFAULT_SAVED)      if (cfg->defaultImage == DEFAULT_SAVED)
1187   fprintf(out, "%sdefault%ssaved\n", indent, separator);   fprintf(out, "%sdefault%ssaved\n", indent, separator);
1188        else if (cfg->defaultImage == DEFAULT_SAVED_GRUB2)
1189     fprintf(out, "%sset default=\"${saved_entry}\"\n", indent);
1190      else if (cfg->defaultImage > -1) {      else if (cfg->defaultImage > -1) {
1191   if (cfg->cfi->defaultIsIndex) {   if (cfg->cfi->defaultIsIndex) {
1192      if (cfg->cfi->defaultIsVariable) {      if (cfg->cfi->defaultIsVariable) {
# Line 1787  void setDefaultImage(struct grubConfig * Line 1794  void setDefaultImage(struct grubConfig *
1794    
1795      /* defaultImage now points to what we'd like to use, but before any order      /* defaultImage now points to what we'd like to use, but before any order
1796         changes */         changes */
1797      if (config->defaultImage == DEFAULT_SAVED)      if ((config->defaultImage == DEFAULT_SAVED) ||
1798     (config->defaultImage == DEFAULT_SAVED_GRUB2))
1799        /* default is set to saved, we don't want to change it */        /* default is set to saved, we don't want to change it */
1800        return;        return;
1801    

Legend:
Removed from v.1747  
changed lines
  Added in v.1748