diff options
Diffstat (limited to 'cmd/pxe_utils.c')
-rw-r--r-- | cmd/pxe_utils.c | 93 |
1 files changed, 46 insertions, 47 deletions
diff --git a/cmd/pxe_utils.c b/cmd/pxe_utils.c index 9ec7e3bc2b..42b584ead3 100644 --- a/cmd/pxe_utils.c +++ b/cmd/pxe_utils.c @@ -78,14 +78,14 @@ static int get_bootfile_path(const char *file_path, char *bootfile_path, last_slash = strrchr(bootfile, '/'); - if (last_slash == NULL ) + if (!last_slash) goto ret; path_len = (last_slash - bootfile) + 1; if (bootfile_path_size < path_len) { printf("bootfile_path too small. (%zd < %zd)\n", - bootfile_path_size, path_len); + bootfile_path_size, path_len); return -1; } @@ -109,10 +109,10 @@ int (*do_getfile)(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr); * Returns 1 for success, or < 0 on error. */ static int get_relfile(cmd_tbl_t *cmdtp, const char *file_path, - unsigned long file_addr) + unsigned long file_addr) { size_t path_len; - char relfile[MAX_TFTP_PATH_LEN+1]; + char relfile[MAX_TFTP_PATH_LEN + 1]; char addr_buf[18]; int err; @@ -125,9 +125,7 @@ static int get_relfile(cmd_tbl_t *cmdtp, const char *file_path, path_len += strlen(relfile); if (path_len > MAX_TFTP_PATH_LEN) { - printf("Base path too long (%s%s)\n", - relfile, - file_path); + printf("Base path too long (%s%s)\n", relfile, file_path); return -ENAMETOOLONG; } @@ -149,7 +147,7 @@ static int get_relfile(cmd_tbl_t *cmdtp, const char *file_path, * Returns 1 on success, or < 0 for error. */ int get_pxe_file(cmd_tbl_t *cmdtp, const char *file_path, - unsigned long file_addr) + unsigned long file_addr) { unsigned long config_file_size; char *tftp_filesize; @@ -182,7 +180,6 @@ int get_pxe_file(cmd_tbl_t *cmdtp, const char *file_path, #define PXELINUX_DIR "pxelinux.cfg/" - /* * Retrieves a file in the 'pxelinux.cfg' folder. Since this uses get_pxe_file * to do the hard work, the location of the 'pxelinux.cfg' folder is generated @@ -191,14 +188,14 @@ int get_pxe_file(cmd_tbl_t *cmdtp, const char *file_path, * Returns 1 on success or < 0 on error. */ int get_pxelinux_path(cmd_tbl_t *cmdtp, const char *file, - unsigned long pxefile_addr_r) + unsigned long pxefile_addr_r) { size_t base_len = strlen(PXELINUX_DIR); - char path[MAX_TFTP_PATH_LEN+1]; + char path[MAX_TFTP_PATH_LEN + 1]; if (base_len + strlen(file) > MAX_TFTP_PATH_LEN) { printf("path (%s%s) too long, skipping\n", - PXELINUX_DIR, file); + PXELINUX_DIR, file); return -ENAMETOOLONG; } @@ -214,7 +211,8 @@ int get_pxelinux_path(cmd_tbl_t *cmdtp, const char *file, * * Returns 1 on success or < 0 on error. */ -static int get_relfile_envaddr(cmd_tbl_t *cmdtp, const char *file_path, const char *envaddr_name) +static int get_relfile_envaddr(cmd_tbl_t *cmdtp, const char *file_path, + const char *envaddr_name) { unsigned long file_addr; char *envaddr; @@ -365,16 +363,16 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label) return 0; } - if (label->kernel == NULL) { + if (!label->kernel) { printf("No kernel given, skipping %s\n", - label->name); + label->name); return 1; } if (label->initrd) { if (get_relfile_envaddr(cmdtp, label->initrd, "ramdisk_addr_r") < 0) { printf("Skipping %s for failure retrieving initrd\n", - label->name); + label->name); return 1; } @@ -387,7 +385,7 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label) if (get_relfile_envaddr(cmdtp, label->kernel, "kernel_addr_r") < 0) { printf("Skipping %s for failure retrieving kernel\n", - label->name); + label->name); return 1; } @@ -400,6 +398,7 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label) #ifdef CONFIG_CMD_NET if (label->ipappend & 0x2) { int err; + strcpy(mac_str, " BOOTIF="); err = format_mac_pxe(mac_str + 8, sizeof(mac_str) - 8); if (err < 0) @@ -418,17 +417,17 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label) strlen(ip_str), strlen(mac_str), sizeof(bootargs)); return 1; - } else { - if (label->append) - strncpy(bootargs, label->append, - sizeof(bootargs)); - strcat(bootargs, ip_str); - strcat(bootargs, mac_str); - - cli_simple_process_macros(bootargs, finalbootargs); - env_set("bootargs", finalbootargs); - printf("append: %s\n", finalbootargs); } + + if (label->append) + strncpy(bootargs, label->append, sizeof(bootargs)); + + strcat(bootargs, ip_str); + strcat(bootargs, mac_str); + + cli_simple_process_macros(bootargs, finalbootargs); + env_set("bootargs", finalbootargs); + printf("append: %s\n", finalbootargs); } bootm_argv[1] = env_get("kernel_addr_r"); @@ -512,11 +511,13 @@ static int label_boot(cmd_tbl_t *cmdtp, struct pxe_label *label) } if (fdtfile) { - int err = get_relfile_envaddr(cmdtp, fdtfile, "fdt_addr_r"); + int err = get_relfile_envaddr(cmdtp, fdtfile, + "fdt_addr_r"); + free(fdtfilefree); if (err < 0) { printf("Skipping %s for failure retrieving fdt\n", - label->name); + label->name); goto cleanup; } } else { @@ -659,7 +660,8 @@ static char *get_string(char **p, struct token *t, char delim, int lower) * e is incremented until we find the ending delimiter, or a NUL byte * is reached. Then, we take e - b to find the length of the token. */ - b = e = *p; + b = *p; + e = *p; while (*e) { if ((delim == ' ' && isspace(*e)) || delim == *e) @@ -819,7 +821,7 @@ static int parse_integer(char **c, int *dst) } static int parse_pxefile_top(cmd_tbl_t *cmdtp, char *p, unsigned long base, - struct pxe_menu *cfg, int nest_level); + struct pxe_menu *cfg, int nest_level); /* * Parse an include statement, and retrieve and parse the file it mentions. @@ -830,7 +832,7 @@ static int parse_pxefile_top(cmd_tbl_t *cmdtp, char *p, unsigned long base, * incremented here. */ static int handle_include(cmd_tbl_t *cmdtp, char **c, unsigned long base, - struct pxe_menu *cfg, int nest_level) + struct pxe_menu *cfg, int nest_level) { char *include_path; char *s = *c; @@ -841,8 +843,7 @@ static int handle_include(cmd_tbl_t *cmdtp, char **c, unsigned long base, err = parse_sliteral(c, &include_path); if (err < 0) { - printf("Expected include path: %.*s\n", - (int)(*c - s), s); + printf("Expected include path: %.*s\n", (int)(*c - s), s); return err; } @@ -871,7 +872,7 @@ static int handle_include(cmd_tbl_t *cmdtp, char **c, unsigned long base, * a file it includes, 3 when parsing a file included by that file, and so on. */ static int parse_menu(cmd_tbl_t *cmdtp, char **c, struct pxe_menu *cfg, - unsigned long base, int nest_level) + unsigned long base, int nest_level) { struct token t; char *s = *c; @@ -886,8 +887,7 @@ static int parse_menu(cmd_tbl_t *cmdtp, char **c, struct pxe_menu *cfg, break; case T_INCLUDE: - err = handle_include(cmdtp, c, base, cfg, - nest_level + 1); + err = handle_include(cmdtp, c, base, cfg, nest_level + 1); break; case T_BACKGROUND: @@ -896,7 +896,7 @@ static int parse_menu(cmd_tbl_t *cmdtp, char **c, struct pxe_menu *cfg, default: printf("Ignoring malformed menu command: %.*s\n", - (int)(*c - s), s); + (int)(*c - s), s); } if (err < 0) @@ -911,7 +911,7 @@ static int parse_menu(cmd_tbl_t *cmdtp, char **c, struct pxe_menu *cfg, * Handles parsing a 'menu line' when we're parsing a label. */ static int parse_label_menu(char **c, struct pxe_menu *cfg, - struct pxe_label *label) + struct pxe_label *label) { struct token t; char *s; @@ -934,7 +934,7 @@ static int parse_label_menu(char **c, struct pxe_menu *cfg, break; default: printf("Ignoring malformed menu command: %.*s\n", - (int)(*c - s), s); + (int)(*c - s), s); } eol_or_eof(c); @@ -1085,7 +1085,7 @@ static int parse_label(char **c, struct pxe_menu *cfg) * Returns 1 on success, < 0 on error. */ static int parse_pxefile_top(cmd_tbl_t *cmdtp, char *p, unsigned long base, - struct pxe_menu *cfg, int nest_level) + struct pxe_menu *cfg, int nest_level) { struct token t; char *s, *b, *label_name; @@ -1108,8 +1108,8 @@ static int parse_pxefile_top(cmd_tbl_t *cmdtp, char *p, unsigned long base, case T_MENU: cfg->prompt = 1; err = parse_menu(cmdtp, &p, cfg, - base + ALIGN(strlen(b) + 1, 4), - nest_level); + base + ALIGN(strlen(b) + 1, 4), + nest_level); break; case T_TIMEOUT: @@ -1135,8 +1135,8 @@ static int parse_pxefile_top(cmd_tbl_t *cmdtp, char *p, unsigned long base, case T_INCLUDE: err = handle_include(cmdtp, &p, - base + ALIGN(strlen(b), 4), cfg, - nest_level + 1); + base + ALIGN(strlen(b), 4), cfg, + nest_level + 1); break; case T_PROMPT: @@ -1151,7 +1151,7 @@ static int parse_pxefile_top(cmd_tbl_t *cmdtp, char *p, unsigned long base, default: printf("Ignoring unknown command: %.*s\n", - (int)(p - s), s); + (int)(p - s), s); eol_or_eof(&p); } @@ -1252,7 +1252,6 @@ static struct menu *pxe_menu_to_menu(struct pxe_menu *cfg) if (cfg->default_label && (strcmp(label->name, cfg->default_label) == 0)) default_num = label->num; - } /* |