]> git.ozlabs.org Git - yaboot.git/blobdiff - second/cfg.c
Fix incorrect comparision in get_params
[yaboot.git] / second / cfg.c
index d7f4084abb6b8e0d2e716873fda7510760f82ed2..4277fdd219d9923e6f52659d10bff1fdc3f948c8 100644 (file)
@@ -41,7 +41,7 @@ typedef struct {
      void *data;
 } CONFIG;
 
-#define MAX_TOKEN 200
+#define MAX_TOKEN 511
 #define MAX_VAR_NAME MAX_TOKEN
 #define EOF -1
 
@@ -92,7 +92,6 @@ CONFIG cf_image[] =
      {cft_flag, "pause-after", NULL},
      {cft_strg, "pause-message", NULL},
      {cft_flag, "novideo", NULL},
-     {cft_strg, "sysmap", NULL},
      {cft_end, NULL, NULL}};
 
 static char flag_set;
@@ -103,7 +102,6 @@ static char *currp = NULL;
 static char *endp = NULL;
 static char *file_name = NULL;
 static CONFIG *curr_table = cf_options;
-static int ignore_entry;
 static jmp_buf env;
 
 static struct IMAGES {
@@ -585,6 +583,43 @@ char *cfg_get_default (void)
      return ret;
 }
 
+/*
+ * cfg_set_default_by_mac ()
+ * return 1 if the default cf_option was changed to label with the MAC addr
+ * return 0 if not changed
+ */
+int cfg_set_default_by_mac (char *mac_addr)
+{
+     CONFIG *walk;
+     struct IMAGES *tmp;
+     char * label = NULL;
+     int haslabel = 0;
+
+     /* check if there is an image label equal to mac_addr */
+     for (tmp = images; tmp; tmp = tmp->next) {
+        label = cfg_get_strg_i (tmp->table, "label");
+        if (!strcmp(label,mac_addr)){
+            haslabel = 1;
+        }
+     }
+
+     if (!haslabel)
+         return 0;
+     else {
+         /*
+          * if there is an image label equal to mac_addr, change the default
+          * cf_options to this image label
+          */
+         for (walk = cf_options; walk->type != cft_end; walk++) {
+             if (!strcasecmp(walk->name,"default")) {
+                 walk->data = mac_addr;
+                 return 1;
+             }
+         }
+         return 0;
+     }
+}
+
 /*
  * Local variables:
  * c-file-style: "k&r"