Magellan Linux

Diff of /tags/grubby-8_32/grubby.c

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

revision 1177 by niro, Wed Dec 15 21:16:32 2010 UTC revision 1304 by niro, Fri May 27 16:19:11 2011 UTC
# Line 1979  int updateActualImage(struct grubConfig Line 1979  int updateActualImage(struct grubConfig
1979      const char ** arg;      const char ** arg;
1980      int useKernelArgs, useRoot;      int useKernelArgs, useRoot;
1981      int firstElement;      int firstElement;
1982      int *usedElements, *usedArgs;      int *usedElements;
1983      int doreplace;      int doreplace;
1984    
1985      if (!image) return 0;      if (!image) return 0;
# Line 2014  int updateActualImage(struct grubConfig Line 2014  int updateActualImage(struct grubConfig
2014      useRoot = (getKeywordByType(LT_ROOT, cfg->cfi)      useRoot = (getKeywordByType(LT_ROOT, cfg->cfi)
2015         && !multibootArgs);         && !multibootArgs);
2016    
     for (k = 0, arg = newArgs; *arg; arg++, k++) ;  
     usedArgs = calloc(k, sizeof(*usedArgs));  
   
2017      for (; (entry = findEntryByPath(cfg, image, prefix, &index)); index++) {      for (; (entry = findEntryByPath(cfg, image, prefix, &index)); index++) {
2018    
2019   if (multibootArgs && !entry->multiboot)   if (multibootArgs && !entry->multiboot)
# Line 2092  int updateActualImage(struct grubConfig Line 2089  int updateActualImage(struct grubConfig
2089          usedElements = calloc(line->numElements, sizeof(*usedElements));          usedElements = calloc(line->numElements, sizeof(*usedElements));
2090    
2091   for (k = 0, arg = newArgs; *arg; arg++, k++) {   for (k = 0, arg = newArgs; *arg; arg++, k++) {
             if (usedArgs[k]) continue;  
2092    
2093      doreplace = 1;      doreplace = 1;
2094      for (i = firstElement; i < line->numElements; i++) {      for (i = firstElement; i < line->numElements; i++) {
# Line 2107  int updateActualImage(struct grubConfig Line 2103  int updateActualImage(struct grubConfig
2103                      continue;                      continue;
2104   if (!argMatch(line->elements[i].item, *arg)) {   if (!argMatch(line->elements[i].item, *arg)) {
2105                      usedElements[i]=1;                      usedElements[i]=1;
                     usedArgs[k]=1;  
2106      break;      break;
2107                  }                  }
2108              }              }
# Line 2177  int updateActualImage(struct grubConfig Line 2172  int updateActualImage(struct grubConfig
2172   }   }
2173      }      }
2174    
     free(usedArgs);  
2175      free(newArgs);      free(newArgs);
2176      free(oldArgs);      free(oldArgs);
2177    

Legend:
Removed from v.1177  
changed lines
  Added in v.1304