diff options
Diffstat (limited to 'usr/src/cmd/boot/bootadm/bootadm.c')
| -rw-r--r-- | usr/src/cmd/boot/bootadm/bootadm.c | 1851 |
1 files changed, 1109 insertions, 742 deletions
diff --git a/usr/src/cmd/boot/bootadm/bootadm.c b/usr/src/cmd/boot/bootadm/bootadm.c index a5a1490a72..58c1a825ec 100644 --- a/usr/src/cmd/boot/bootadm/bootadm.c +++ b/usr/src/cmd/boot/bootadm/bootadm.c @@ -70,6 +70,7 @@ #include <sys/lockfs.h> #include <sys/filio.h> #include <libbe.h> +#include <deflt.h> #ifdef i386 #include <libfdisk.h> #endif @@ -87,7 +88,6 @@ #include <locale.h> #include <sys/mkdev.h> -#include "message.h" #include "bootadm.h" #ifndef TEXT_DOMAIN @@ -103,19 +103,6 @@ typedef enum { BAM_INSTALL } subcmd_t; -typedef enum { - OPT_ABSENT = 0, /* No option */ - OPT_REQ, /* option required */ - OPT_OPTIONAL /* option may or may not be present */ -} option_t; - -typedef struct { - char *subcmd; - option_t option; - error_t (*handler)(); - int unpriv; /* is this an unprivileged command */ -} subcmd_defn_t; - #define LINE_INIT 0 /* lineNum initial value */ #define ENTRY_INIT -1 /* entryNum initial value */ #define ALL_ENTRIES -2 /* selects all boot entries */ @@ -139,6 +126,10 @@ typedef struct { #define UFS_SIGNATURE_LIST "/var/run/grub_ufs_signatures" #define ZFS_LEGACY_MNTPT "/tmp/bootadm_mnt_zfs_legacy" +/* BE defaults */ +#define BE_DEFAULTS "/etc/default/be" +#define BE_DFLT_BE_HAS_GRUB "BE_HAS_GRUB=" + #define BOOTADM_RDONLY_TEST "BOOTADM_RDONLY_TEST" /* lock related */ @@ -165,14 +156,6 @@ typedef struct { #define STAGE1 "/boot/grub/stage1" #define STAGE2 "/boot/grub/stage2" -typedef enum zfs_mnted { - ZFS_MNT_ERROR = -1, - LEGACY_MOUNTED = 1, - LEGACY_ALREADY, - ZFS_MOUNTED, - ZFS_ALREADY -} zfs_mnted_t; - /* * Default file attributes */ @@ -228,10 +211,10 @@ int bam_force; int bam_debug; static char *prog; static subcmd_t bam_cmd; -static char *bam_root; -static int bam_rootlen; +char *bam_root; +int bam_rootlen; static int bam_root_readonly; -static int bam_alt_root; +int bam_alt_root; static int bam_extend = 0; static int bam_purge = 0; static char *bam_subcmd; @@ -245,7 +228,7 @@ static int bam_smf_check; static int bam_lock_fd = -1; static int bam_zfs; static int bam_mbr; -static char rootbuf[PATH_MAX] = "/"; +char rootbuf[PATH_MAX] = "/"; static int bam_update_all; static int bam_alt_platform; static char *bam_platform; @@ -289,14 +272,10 @@ static char *expand_path(const char *); static long s_strtol(char *); static int s_fputs(char *, FILE *); -static int is_zfs(char *root); static int is_ufs(char *root); -static int is_pcfs(char *root); static int is_amd64(void); static char *get_machine(void); static void append_to_flist(filelist_t *, char *); -static char *mount_top_dataset(char *pool, zfs_mnted_t *mnted); -static int umount_top_dataset(char *pool, zfs_mnted_t mnted, char *mntpt); static int ufs_add_to_sign_list(char *sign); static error_t synchronize_BE_menu(void); @@ -556,7 +535,13 @@ main(int argc, char *argv[]) switch (bam_cmd) { case BAM_MENU: - ret = bam_menu(bam_subcmd, bam_opt, bam_argc, bam_argv); + if (is_grub(bam_alt_root ? bam_root : "/")) { + ret = bam_menu(bam_subcmd, bam_opt, + bam_argc, bam_argv); + } else { + ret = bam_loader_menu(bam_subcmd, bam_opt, + bam_argc, bam_argv); + } break; case BAM_ARCHIVE: ret = bam_archive(bam_subcmd, bam_opt); @@ -672,7 +657,8 @@ parse_args_internal(int argc, char *argv[]) case 'a': if (bam_cmd) { error = 1; - bam_error(MULT_CMDS, c); + bam_error( + _("multiple commands specified: -%c\n"), c); } bam_cmd = BAM_ARCHIVE; bam_subcmd = optarg; @@ -680,7 +666,8 @@ parse_args_internal(int argc, char *argv[]) case 'd': if (bam_debug) { error = 1; - bam_error(DUP_OPT, c); + bam_error( + _("duplicate options specified: -%c\n"), c); } bam_debug = s_strtol(optarg); break; @@ -693,7 +680,8 @@ parse_args_internal(int argc, char *argv[]) case 'i': if (bam_cmd) { error = 1; - bam_error(MULT_CMDS, c); + bam_error( + _("multiple commands specified: -%c\n"), c); } bam_cmd = BAM_INSTALL; bam_subcmd = optarg; @@ -701,7 +689,8 @@ parse_args_internal(int argc, char *argv[]) case 'm': if (bam_cmd) { error = 1; - bam_error(MULT_CMDS, c); + bam_error( + _("multiple commands specified: -%c\n"), c); } bam_cmd = BAM_MENU; bam_subcmd = optarg; @@ -728,7 +717,8 @@ parse_args_internal(int argc, char *argv[]) case 'o': if (bam_opt) { error = 1; - bam_error(DUP_OPT, c); + bam_error( + _("duplicate options specified: -%c\n"), c); } bam_opt = optarg; break; @@ -741,19 +731,21 @@ parse_args_internal(int argc, char *argv[]) case 'P': if (bam_pool != NULL) { error = 1; - bam_error(DUP_OPT, c); + bam_error( + _("duplicate options specified: -%c\n"), c); } bam_pool = optarg; break; case 'R': if (bam_root) { error = 1; - bam_error(DUP_OPT, c); + bam_error( + _("duplicate options specified: -%c\n"), c); break; } else if (realpath(optarg, rootbuf) == NULL) { error = 1; - bam_error(CANT_RESOLVE, optarg, - strerror(errno)); + bam_error(_("cannot resolve path %s: %s\n"), + optarg, strerror(errno)); break; } bam_alt_root = 1; @@ -767,7 +759,9 @@ parse_args_internal(int argc, char *argv[]) (strcmp(bam_platform, "sun4u") != 0) && (strcmp(bam_platform, "sun4v") != 0)) { error = 1; - bam_error(INVALID_PLAT, bam_platform); + bam_error(_("invalid platform %s - must be " + "one of sun4u, sun4v or i86pc\n"), + bam_platform); } break; case 'X': @@ -781,11 +775,13 @@ parse_args_internal(int argc, char *argv[]) break; case '?': error = 1; - bam_error(BAD_OPT, optopt); + bam_error(_("invalid option or missing option " + "argument: -%c\n"), optopt); break; default : error = 1; - bam_error(BAD_OPT, c); + bam_error(_("invalid option or missing option " + "argument: -%c\n"), c); break; } } @@ -806,7 +802,7 @@ parse_args_internal(int argc, char *argv[]) usage(); bam_exit(0); } - bam_error(NEED_CMD); + bam_error(_("a command option must be specified\n")); error = 1; } @@ -816,7 +812,7 @@ parse_args_internal(int argc, char *argv[]) } if (optind > argc) { - bam_error(INT_ERROR, "parse_args"); + bam_error(_("Internal error: %s\n"), "parse_args"); bam_exit(1); } else if (optind < argc) { bam_argv = &argv[optind]; @@ -838,7 +834,7 @@ parse_args_internal(int argc, char *argv[]) bam_verbose = 1; } -static error_t +error_t check_subcmd_and_options( char *subcmd, char *opt, @@ -848,17 +844,17 @@ check_subcmd_and_options( int i; if (subcmd == NULL) { - bam_error(NEED_SUBCMD); + bam_error(_("this command requires a sub-command\n")); return (BAM_ERROR); } if (strcmp(subcmd, "set_option") == 0) { if (bam_argc == 0 || bam_argv == NULL || bam_argv[0] == NULL) { - bam_error(MISSING_ARG); + bam_error(_("missing argument for sub-command\n")); usage(); return (BAM_ERROR); } else if (bam_argc > 1 || bam_argv[1] != NULL) { - bam_error(TRAILING_ARGS); + bam_error(_("invalid trailing arguments\n")); usage(); return (BAM_ERROR); } @@ -869,7 +865,7 @@ check_subcmd_and_options( */ if (bam_argc > 1 || (bam_argc == 1 && strcmp(bam_argv[0], "fastboot") != 0)) { - bam_error(TRAILING_ARGS); + bam_error(_("invalid trailing arguments\n")); usage(); return (BAM_ERROR); } @@ -881,7 +877,7 @@ check_subcmd_and_options( * Of the remaining subcommands, only "enable_hypervisor" and * "list_setting" take trailing arguments. */ - bam_error(TRAILING_ARGS); + bam_error(_("invalid trailing arguments\n")); usage(); return (BAM_ERROR); } @@ -898,12 +894,12 @@ check_subcmd_and_options( } if (table[i].subcmd == NULL) { - bam_error(INVALID_SUBCMD, subcmd); + bam_error(_("invalid sub-command specified: %s\n"), subcmd); return (BAM_ERROR); } if (table[i].unpriv == 0 && geteuid() != 0) { - bam_error(MUST_BE_ROOT); + bam_error(_("you must be root to run this command\n")); return (BAM_ERROR); } @@ -917,9 +913,11 @@ check_subcmd_and_options( if (table[i].option != OPT_OPTIONAL) { if ((table[i].option == OPT_REQ) ^ (opt != NULL)) { if (opt) - bam_error(NO_OPT_REQ, subcmd); + bam_error(_("this sub-command (%s) does not " + "take options\n"), subcmd); else - bam_error(MISS_OPT, subcmd); + bam_error(_("an option is required for this " + "sub-command: %s\n"), subcmd); return (BAM_ERROR); } } @@ -933,7 +931,7 @@ check_subcmd_and_options( * NOTE: A single "/" is also considered a trailing slash and will * be deleted. */ -static void +void elide_trailing_slash(const char *src, char *dst, size_t dstsize) { size_t dstlen; @@ -955,22 +953,25 @@ is_safe_exec(char *path) struct stat sb; if (lstat(path, &sb) != 0) { - bam_error(STAT_FAIL, path, strerror(errno)); + bam_error(_("stat of file failed: %s: %s\n"), path, + strerror(errno)); return (BAM_ERROR); } if (!S_ISREG(sb.st_mode)) { - bam_error(PATH_EXEC_LINK, path); + bam_error(_("%s is not a regular file, skipping\n"), path); return (BAM_ERROR); } if (sb.st_uid != getuid()) { - bam_error(PATH_EXEC_OWNER, path, getuid()); + bam_error(_("%s is not owned by %d, skipping\n"), + path, getuid()); return (BAM_ERROR); } if (sb.st_mode & S_IWOTH || sb.st_mode & S_IWGRP) { - bam_error(PATH_EXEC_PERMS, path); + bam_error(_("%s is others or group writable, skipping\n"), + path); return (BAM_ERROR); } @@ -1014,7 +1015,7 @@ list_setting(menu_t *mp, char *which, char *setting) ; if (!ent) { - bam_error(NO_MATCH_ENTRY); + bam_error(_("no matching entry found\n")); return (BAM_ERROR); } @@ -1022,9 +1023,9 @@ list_setting(menu_t *mp, char *which, char *setting) for (lp = ent->start; lp != NULL; lp = lp->next) { if ((*setting == NULL) && (lp->flags != BAM_COMMENT)) - bam_print(PRINT, lp->line); + bam_print("%s\n", lp->line); else if (lp->cmd != NULL && strcmp(setting, lp->cmd) == 0) { - bam_print(PRINT, lp->arg); + bam_print("%s\n", lp->arg); found = 1; } @@ -1033,7 +1034,7 @@ list_setting(menu_t *mp, char *which, char *setting) } if (!found) { - bam_error(NO_MATCH_ENTRY); + bam_error(_("no matching entry found\n")); return (BAM_ERROR); } @@ -1069,11 +1070,13 @@ install_bootloader(void) if (bam_alt_root) { if (stat(bam_root, &statbuf) != 0) { - bam_error(STAT_FAIL, bam_root, strerror(errno)); + bam_error(_("stat of file failed: %s: %s\n"), bam_root, + strerror(errno)); goto done; } if ((fp = fopen(MNTTAB, "r")) == NULL) { - bam_error(OPEN_FAIL, MNTTAB, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + MNTTAB, strerror(errno)); goto done; } resetmnttab(fp); @@ -1088,7 +1091,8 @@ install_bootloader(void) (void) fclose(fp); if (found == 0) { - bam_error(NOT_IN_MNTTAB, bam_root); + bam_error(_("alternate root %s not in mnttab\n"), + bam_root); goto done; } if (root_ds == NULL) { @@ -1197,7 +1201,8 @@ install_bootloader(void) * get dataset for "/" and fill up the args. */ if ((fp = fopen(MNTTAB, "r")) == NULL) { - bam_error(OPEN_FAIL, MNTTAB, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + MNTTAB, strerror(errno)); ret = BAM_ERROR; be_free_list(be_nodes); goto done; @@ -1214,7 +1219,7 @@ install_bootloader(void) (void) fclose(fp); if (found == 0) { - bam_error(NOT_IN_MNTTAB, "/"); + bam_error(_("alternate root %s not in mnttab\n"), "/"); ret = BAM_ERROR; be_free_list(be_nodes); goto done; @@ -1293,7 +1298,8 @@ bam_menu(char *subcmd, char *opt, int largc, char *largv[]) * Menu sub-command only applies to GRUB (i.e. x86) */ if (!is_grub(bam_alt_root ? bam_root : "/")) { - bam_error(NOT_GRUB_BOOT); + bam_error(_("not a GRUB 0.97 based Illumos instance. " + "Operation not supported\n")); return (BAM_ERROR); } @@ -1319,8 +1325,8 @@ bam_menu(char *subcmd, char *opt, int largc, char *largv[]) if (osroot) { /* fixup bam_root so that it points at osroot */ if (realpath(osroot, rootbuf) == NULL) { - bam_error(CANT_RESOLVE, osroot, - strerror(errno)); + bam_error(_("cannot resolve path %s: %s\n"), + osroot, strerror(errno)); return (BAM_ERROR); } bam_alt_root = 1; @@ -1334,16 +1340,16 @@ bam_menu(char *subcmd, char *opt, int largc, char *largv[]) * not the OS root */ if (is_pcfs(bam_root)) { - bam_error(PCFS_ROOT_NOTSUP, bam_root); + bam_error(_("root <%s> on PCFS is not supported\n"), bam_root); return (BAM_ERROR); } if (stat(menu_root, &sb) == -1) { - bam_error(CANNOT_LOCATE_GRUB_MENU); + bam_error(_("cannot find GRUB menu\n")); return (BAM_ERROR); } - BAM_DPRINTF((D_MENU_ROOT, fcn, menu_root)); + BAM_DPRINTF(("%s: menu root is %s\n", fcn, menu_root)); /* * We no longer use the GRUB slice file. If it exists, then @@ -1360,56 +1366,61 @@ bam_menu(char *subcmd, char *opt, int largc, char *largv[]) } if (bam_verbose && stat(path, &sb) == 0) - bam_error(GRUB_SLICE_FILE_EXISTS, path); + bam_error(_("unsupported GRUB slice file (%s) exists - " + "ignoring.\n"), path); if (is_zfs(menu_root)) { assert(strcmp(menu_root, bam_root) == 0); special = get_special(menu_root); INJECT_ERROR1("Z_MENU_GET_SPECIAL", special = NULL); if (special == NULL) { - bam_error(CANT_FIND_SPECIAL, menu_root); + bam_error(_("cant find special file for " + "mount-point %s\n"), menu_root); return (BAM_ERROR); } pool = strtok(special, "/"); INJECT_ERROR1("Z_MENU_GET_POOL", pool = NULL); if (pool == NULL) { free(special); - bam_error(CANT_FIND_POOL, menu_root); + bam_error(_("cant find pool for mount-point %s\n"), + menu_root); return (BAM_ERROR); } - BAM_DPRINTF((D_Z_MENU_GET_POOL_FROM_SPECIAL, fcn, pool)); + BAM_DPRINTF(("%s: derived pool=%s from special\n", fcn, pool)); zmntpt = mount_top_dataset(pool, &zmnted); INJECT_ERROR1("Z_MENU_MOUNT_TOP_DATASET", zmntpt = NULL); if (zmntpt == NULL) { - bam_error(CANT_MOUNT_POOL_DATASET, pool); + bam_error(_("cannot mount pool dataset for pool: %s\n"), + pool); free(special); return (BAM_ERROR); } - BAM_DPRINTF((D_Z_GET_MENU_MOUNT_TOP_DATASET, fcn, zmntpt)); + BAM_DPRINTF(("%s: top dataset mountpoint=%s\n", fcn, zmntpt)); (void) strlcpy(menu_root, zmntpt, sizeof (menu_root)); - BAM_DPRINTF((D_Z_GET_MENU_MENU_ROOT, fcn, menu_root)); + BAM_DPRINTF(("%s: zfs menu_root=%s\n", fcn, menu_root)); } elide_trailing_slash(menu_root, clean_menu_root, sizeof (clean_menu_root)); - BAM_DPRINTF((D_CLEAN_MENU_ROOT, fcn, clean_menu_root)); + BAM_DPRINTF(("%s: cleaned menu root is <%s>\n", fcn, clean_menu_root)); (void) strlcpy(menu_path, clean_menu_root, sizeof (menu_path)); (void) strlcat(menu_path, GRUB_MENU, sizeof (menu_path)); - BAM_DPRINTF((D_MENU_PATH, fcn, menu_path)); + BAM_DPRINTF(("%s: menu path is: %s\n", fcn, menu_path)); /* * If listing the menu, display the menu location */ if (strcmp(subcmd, "list_entry") == 0) - bam_print(GRUB_MENU_PATH, menu_path); + bam_print(_("the location for the active GRUB menu is: %s\n"), + menu_path); if ((menu = menu_read(menu_path)) == NULL) { - bam_error(CANNOT_LOCATE_GRUB_MENU_FILE, menu_path); + bam_error(_("cannot find GRUB menu file: %s\n"), menu_path); free(special); return (BAM_ERROR); @@ -1430,7 +1441,7 @@ bam_menu(char *subcmd, char *opt, int largc, char *largv[]) ret = get_boot_cap(bam_root); if (ret != BAM_SUCCESS) { - BAM_DPRINTF((D_BOOT_GET_CAP_FAILED, fcn)); + BAM_DPRINTF(("%s: Failed to get boot capability\n", fcn)); goto out; } @@ -1449,14 +1460,16 @@ bam_menu(char *subcmd, char *opt, int largc, char *largv[]) ((largc > 1) ? largv[1] : "")); } else if (strcmp(subcmd, "disable_hypervisor") == 0) { if (is_sparc()) { - bam_error(NO_SPARC, subcmd); + bam_error(_("%s operation unsupported on SPARC " + "machines\n"), subcmd); ret = BAM_ERROR; } else { ret = f(menu, bam_root, NULL); } } else if (strcmp(subcmd, "enable_hypervisor") == 0) { if (is_sparc()) { - bam_error(NO_SPARC, subcmd); + bam_error(_("%s operation unsupported on SPARC " + "machines\n"), subcmd); ret = BAM_ERROR; } else { char *extra_args = NULL; @@ -1503,7 +1516,8 @@ bam_menu(char *subcmd, char *opt, int largc, char *largv[]) ret = f(menu, NULL, opt); if (ret == BAM_WRITE) { - BAM_DPRINTF((D_WRITING_MENU_ROOT, fcn, clean_menu_root)); + BAM_DPRINTF(("%s: writing menu to clean-menu-root: <%s>\n", + fcn, clean_menu_root)); ret = menu_write(clean_menu_root, menu); } @@ -1545,7 +1559,7 @@ bam_archive( ret = get_boot_cap(rootbuf); if (ret != BAM_SUCCESS) { - BAM_DPRINTF((D_BOOT_GET_CAP_FAILED, fcn)); + BAM_DPRINTF(("%s: Failed to get boot capability\n", fcn)); return (ret); } @@ -1555,7 +1569,8 @@ bam_archive( * information for each BE. */ if (bam_check && strcmp(subcmd, "update_all") == 0) { - bam_error(CHECK_NOT_SUPPORTED, subcmd); + bam_error(_("the check option is not supported with " + "subcmd: %s\n"), subcmd); return (BAM_ERROR); } @@ -1647,7 +1662,8 @@ bam_lock(void) return; } - bam_error(OPEN_FAIL, BAM_LOCK_FILE, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + BAM_LOCK_FILE, strerror(errno)); bam_exit(1); } @@ -1658,21 +1674,25 @@ bam_lock(void) if (fcntl(bam_lock_fd, F_SETLK, &lock) == -1) { if (errno != EACCES && errno != EAGAIN) { - bam_error(LOCK_FAIL, BAM_LOCK_FILE, strerror(errno)); + bam_error(_("failed to lock file: %s: %s\n"), + BAM_LOCK_FILE, strerror(errno)); (void) close(bam_lock_fd); bam_lock_fd = -1; bam_exit(1); } pid = 0; (void) pread(bam_lock_fd, &pid, sizeof (pid_t), 0); - bam_print(FILE_LOCKED, pid); + bam_print( + _("another instance of bootadm (pid %lu) is running\n"), + pid); lock.l_type = F_WRLCK; lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 0; if (fcntl(bam_lock_fd, F_SETLKW, &lock) == -1) { - bam_error(LOCK_FAIL, BAM_LOCK_FILE, strerror(errno)); + bam_error(_("failed to lock file: %s: %s\n"), + BAM_LOCK_FILE, strerror(errno)); (void) close(bam_lock_fd); bam_lock_fd = -1; bam_exit(1); @@ -1702,11 +1722,13 @@ bam_unlock(void) unlock.l_len = 0; if (fcntl(bam_lock_fd, F_SETLK, &unlock) == -1) { - bam_error(UNLOCK_FAIL, BAM_LOCK_FILE, strerror(errno)); + bam_error(_("failed to unlock file: %s: %s\n"), + BAM_LOCK_FILE, strerror(errno)); } if (close(bam_lock_fd) == -1) { - bam_error(CLOSE_FAIL, BAM_LOCK_FILE, strerror(errno)); + bam_error(_("failed to close file: %s: %s\n"), + BAM_LOCK_FILE, strerror(errno)); } bam_lock_fd = -1; } @@ -1728,7 +1750,7 @@ list_archive(char *root, char *opt) assert(flistp->head && flistp->tail); for (lp = flistp->head; lp; lp = lp->next) { - bam_print(PRINT, lp->line); + bam_print(_("%s\n"), lp->line); } filelist_free(flistp); @@ -1760,9 +1782,11 @@ list2file(char *root, char *tmp, char *final, line_t *start) if (start == NULL) { /* Empty GRUB menu */ if (stat(path, &sb) != -1) { - bam_print(UNLINK_EMPTY, path); + bam_print(_("file is empty, deleting file: %s\n"), + path); if (unlink(path) != 0) { - bam_error(UNLINK_FAIL, path, strerror(errno)); + bam_error(_("failed to unlink file: %s: %s\n"), + path, strerror(errno)); return (BAM_ERROR); } else { return (BAM_SUCCESS); @@ -1785,14 +1809,16 @@ list2file(char *root, char *tmp, char *final, line_t *start) if ((pw = getpwnam(DEFAULT_DEV_USER)) != NULL) { root_uid = pw->pw_uid; } else { - bam_error(CANT_FIND_USER, + bam_error(_("getpwnam: uid for %s failed, " + "defaulting to %d\n"), DEFAULT_DEV_USER, DEFAULT_DEV_UID); root_uid = (uid_t)DEFAULT_DEV_UID; } if ((gp = getgrnam(DEFAULT_DEV_GROUP)) != NULL) { sys_gid = gp->gr_gid; } else { - bam_error(CANT_FIND_GROUP, + bam_error(_("getgrnam: gid for %s failed, " + "defaulting to %d\n"), DEFAULT_DEV_GROUP, DEFAULT_DEV_GID); sys_gid = (gid_t)DEFAULT_DEV_GID; } @@ -1803,20 +1829,23 @@ list2file(char *root, char *tmp, char *final, line_t *start) /* Truncate tmpfile first */ fp = fopen(tmpfile, "w"); if (fp == NULL) { - bam_error(OPEN_FAIL, tmpfile, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), tmpfile, + strerror(errno)); return (BAM_ERROR); } ret = fclose(fp); INJECT_ERROR1("LIST2FILE_TRUNC_FCLOSE", ret = EOF); if (ret == EOF) { - bam_error(CLOSE_FAIL, tmpfile, strerror(errno)); + bam_error(_("failed to close file: %s: %s\n"), + tmpfile, strerror(errno)); return (BAM_ERROR); } /* Now open it in append mode */ fp = fopen(tmpfile, "a"); if (fp == NULL) { - bam_error(OPEN_FAIL, tmpfile, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), tmpfile, + strerror(errno)); return (BAM_ERROR); } @@ -1824,7 +1853,8 @@ list2file(char *root, char *tmp, char *final, line_t *start) ret = s_fputs(start->line, fp); INJECT_ERROR1("LIST2FILE_FPUTS", ret = EOF); if (ret == EOF) { - bam_error(WRITE_FAIL, tmpfile, strerror(errno)); + bam_error(_("write to file failed: %s: %s\n"), + tmpfile, strerror(errno)); (void) fclose(fp); return (BAM_ERROR); } @@ -1833,7 +1863,8 @@ list2file(char *root, char *tmp, char *final, line_t *start) ret = fclose(fp); INJECT_ERROR1("LIST2FILE_APPEND_FCLOSE", ret = EOF); if (ret == EOF) { - bam_error(CLOSE_FAIL, tmpfile, strerror(errno)); + bam_error(_("failed to close file: %s: %s\n"), + tmpfile, strerror(errno)); return (BAM_ERROR); } @@ -1845,14 +1876,16 @@ list2file(char *root, char *tmp, char *final, line_t *start) ret = chmod(tmpfile, mode); if (ret == -1 && errno != EINVAL && errno != ENOTSUP) { - bam_error(CHMOD_FAIL, tmpfile, strerror(errno)); + bam_error(_("chmod operation on %s failed - %s\n"), + tmpfile, strerror(errno)); return (BAM_ERROR); } ret = chown(tmpfile, root_uid, sys_gid); if (ret == -1 && errno != EINVAL && errno != ENOTSUP) { - bam_error(CHOWN_FAIL, tmpfile, strerror(errno)); + bam_error(_("chgrp operation on %s failed - %s\n"), + tmpfile, strerror(errno)); return (BAM_ERROR); } @@ -1862,11 +1895,12 @@ list2file(char *root, char *tmp, char *final, line_t *start) ret = rename(tmpfile, path); INJECT_ERROR1("LIST2FILE_RENAME", ret = -1); if (ret != 0) { - bam_error(RENAME_FAIL, path, strerror(errno)); + bam_error(_("rename to file failed: %s: %s\n"), path, + strerror(errno)); return (BAM_ERROR); } - BAM_DPRINTF((D_WROTE_FILE, fcn, path)); + BAM_DPRINTF(("%s: wrote file successfully: %s\n", fcn, path)); return (BAM_SUCCESS); } @@ -1889,10 +1923,12 @@ setup_path(char *path) /* best effort attempt, mkdirp will catch the error */ (void) unlink(path); if (bam_verbose) - bam_print(NEED_DIRPATH, path); + bam_print(_("need to create directory " + "path for %s\n"), path); ret = mkdirp(path, DIR_PERMS); if (ret == -1) { - bam_error(MKDIR_FAILED, path, strerror(errno)); + bam_error(_("mkdir of %s failed: %s\n"), + path, strerror(errno)); *p = '/'; return (BAM_ERROR); } @@ -1930,7 +1966,8 @@ setup_file(char *base, const char *path, cachefile *cf) ret = snprintf(cf->path, sizeof (cf->path), "%s/%s", base, strip); if (ret >= sizeof (cf->path)) { - bam_error(PATH_TOO_LONG, rootbuf); + bam_error(_("unable to create path on mountpoint %s, " + "path too long\n"), rootbuf); return (BAM_ERROR); } @@ -1940,7 +1977,8 @@ setup_file(char *base, const char *path, cachefile *cf) if (bam_direct == BAM_DIRECT_DBOOT) { if ((cf->out.gzfile = gzopen(cf->path, "wb")) == NULL) { - bam_error(OPEN_FAIL, cf->path, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + cf->path, strerror(errno)); return (BAM_ERROR); } (void) gzsetparams(cf->out.gzfile, Z_BEST_SPEED, @@ -1948,7 +1986,8 @@ setup_file(char *base, const char *path, cachefile *cf) } else { if ((cf->out.fdfile = open(cf->path, O_WRONLY | O_CREAT, 0644)) == -1) { - bam_error(OPEN_FAIL, cf->path, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + cf->path, strerror(errno)); return (BAM_ERROR); } } @@ -1963,15 +2002,18 @@ cache_write(cachefile cf, char *buf, int size) if (bam_direct == BAM_DIRECT_DBOOT) { if (gzwrite(cf.out.gzfile, buf, size) < 1) { - bam_error(GZ_WRITE_FAIL, gzerror(cf.out.gzfile, &err)); + bam_error(_("failed to write to %s\n"), + gzerror(cf.out.gzfile, &err)); if (err == Z_ERRNO && bam_verbose) { - bam_error(WRITE_FAIL, cf.path, strerror(errno)); + bam_error(_("write to file failed: %s: %s\n"), + cf.path, strerror(errno)); } return (BAM_ERROR); } } else { if (write(cf.out.fdfile, buf, size) < 1) { - bam_error(WRITE_FAIL, cf.path, strerror(errno)); + bam_error(_("write to file failed: %s: %s\n"), + cf.path, strerror(errno)); return (BAM_ERROR); } } @@ -1987,7 +2029,8 @@ cache_close(cachefile cf) if (cf.out.gzfile) { ret = gzclose(cf.out.gzfile); if (ret != Z_OK) { - bam_error(CLOSE_FAIL, cf.path, strerror(errno)); + bam_error(_("failed to close file: %s: %s\n"), + cf.path, strerror(errno)); return (BAM_ERROR); } } @@ -1995,7 +2038,8 @@ cache_close(cachefile cf) if (cf.out.fdfile != -1) { ret = close(cf.out.fdfile); if (ret != 0) { - bam_error(CLOSE_FAIL, cf.path, strerror(errno)); + bam_error(_("failed to close file: %s: %s\n"), + cf.path, strerror(errno)); return (BAM_ERROR); } } @@ -2021,7 +2065,8 @@ dircache_updatefile(const char *path, int what) return (BAM_SUCCESS); if ((infile = fopen(path, "rb")) == NULL) { - bam_error(OPEN_FAIL, path, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), path, + strerror(errno)); return (BAM_ERROR); } @@ -2077,7 +2122,8 @@ dircache_updatedir(const char *path, int what, int updt) get_updatedir(what) : get_cachedir(what), strip); if (ret >= sizeof (dpath)) { - bam_error(PATH_TOO_LONG, rootbuf); + bam_error(_("unable to create path on mountpoint %s, " + "path too long\n"), rootbuf); set_flag(UPDATE_ERROR); return (BAM_ERROR); } @@ -2124,7 +2170,8 @@ update_dircache(const char *path, int flags) _elfhdr elf; if ((fd = open(path, O_RDONLY)) < 0) { - bam_error(OPEN_FAIL, path, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + path, strerror(errno)); set_flag(UPDATE_ERROR); rc = BAM_ERROR; break; @@ -2136,7 +2183,8 @@ update_dircache(const char *path, int flags) * _FILE_OFFSET_BITS is != 32 ... */ if (read(fd, (void *)&elf, sizeof (_elfhdr)) < 0) { - bam_error(READ_FAIL, path, strerror(errno)); + bam_error(_("read failed for file: %s: %s\n"), + path, strerror(errno)); set_flag(UPDATE_ERROR); (void) close(fd); rc = BAM_ERROR; @@ -2167,7 +2215,8 @@ update_dircache(const char *path, int flags) } else if (elf.e_ident[EI_CLASS] == ELFCLASS64) { rc = dircache_updatefile(path, FILE64); } else { - bam_print(NO3264ELF, path); + bam_print(_("WARNING: file %s is neither a " + "32-bit nor a 64-bit ELF\n"), path); /* paranoid */ rc = dircache_updatefile(path, FILE32); if (rc == BAM_SUCCESS) @@ -2241,7 +2290,8 @@ cmpstat( error = nvlist_add_uint64_array(walk_arg.new_nvlp, file + bam_rootlen, filestat, 2); if (error) - bam_error(NVADD_FAIL, file, strerror(error)); + bam_error(_("failed to update stat data for: %s: %s\n"), + file, strerror(error)); } /* @@ -2296,7 +2346,7 @@ cmpstat( */ if (is_flag_on(NEED_CACHE_DIR)) { if (bam_verbose) - bam_print(PARSEABLE_NEW_FILE, file); + bam_print(_(" new %s\n"), file); if (is_flag_on(IS_SPARC_TARGET)) { set_dir_flag(FILE64, NEED_UPDATE); @@ -2305,7 +2355,8 @@ cmpstat( ret = update_dircache(file, flags); if (ret == BAM_ERROR) { - bam_error(UPDT_CACHE_FAIL, file); + bam_error(_("directory cache update failed for %s\n"), + file); return (-1); } @@ -2326,13 +2377,14 @@ cmpstat( } else { ret = update_dircache(file, flags); if (ret == BAM_ERROR) { - bam_error(UPDT_CACHE_FAIL, file); + bam_error(_("directory cache update " + "failed for %s\n"), file); return (-1); } } if (bam_verbose) - bam_print(PARSEABLE_NEW_FILE, file); + bam_print(_(" new %s\n"), file); return (0); } @@ -2376,7 +2428,8 @@ cmpstat( } else { ret = update_dircache(file, flags); if (ret == BAM_ERROR) { - bam_error(UPDT_CACHE_FAIL, file); + bam_error(_("directory cache update failed " + "for %s\n"), file); return (-1); } } @@ -2385,7 +2438,7 @@ cmpstat( if (bam_smf_check) bam_print(" %s\n", file); else - bam_print(PARSEABLE_OUT_DATE, file); + bam_print(_(" changed %s\n"), file); } } @@ -2439,7 +2492,8 @@ set_cache_dir(char *root, int what) "/amd64" : "", CACHEDIR_SUFFIX); if (ret >= sizeof (get_cachedir(what))) { - bam_error(PATH_TOO_LONG, rootbuf); + bam_error(_("unable to create path on mountpoint %s, " + "path too long\n"), rootbuf); return (BAM_ERROR); } @@ -2451,11 +2505,12 @@ set_cache_dir(char *root, int what) (void) unlink(get_cachedir(what)); if (bam_verbose) - bam_print(UPDATE_CDIR_MISS, get_cachedir(what)); + bam_print(_("archive cache directory not found: %s\n"), + get_cachedir(what)); ret = mkdir(get_cachedir(what), DIR_PERMS); if (ret < 0) { - bam_error(MKDIR_FAILED, get_cachedir(what), - strerror(errno)); + bam_error(_("mkdir of %s failed: %s\n"), + get_cachedir(what), strerror(errno)); get_cachedir(what)[0] = '\0'; return (ret); } @@ -2490,7 +2545,8 @@ set_update_dir(char *root, int what) ARCHIVE_PREFIX, get_machine(), UPDATEDIR_SUFFIX); if (ret >= sizeof (get_updatedir(what))) { - bam_error(PATH_TOO_LONG, rootbuf); + bam_error(_("unable to create path on mountpoint %s, " + "path too long\n"), rootbuf); return (BAM_ERROR); } @@ -2527,13 +2583,14 @@ is_valid_archive(char *root, int what) root, ARCHIVE_PREFIX, get_machine(), ARCHIVE_SUFFIX); if (ret >= sizeof (archive_path)) { - bam_error(PATH_TOO_LONG, rootbuf); + bam_error(_("unable to create path on mountpoint %s, " + "path too long\n"), rootbuf); return (BAM_ERROR); } if (stat(archive_path, &sb) != 0) { if (bam_verbose && !bam_check) - bam_print(UPDATE_ARCH_MISS, archive_path); + bam_print(_("archive not found: %s\n"), archive_path); set_dir_flag(what, NEED_UPDATE); set_dir_flag(what, NO_MULTI); return (BAM_SUCCESS); @@ -2554,14 +2611,16 @@ is_valid_archive(char *root, int what) FILE_STAT_TIMESTAMP); if (ret >= sizeof (timestamp_path)) { - bam_error(PATH_TOO_LONG, rootbuf); + bam_error(_("unable to create path on mountpoint %s, " + "path too long\n"), rootbuf); return (BAM_ERROR); } if (stat(timestamp_path, ×tamp) != 0 || sb.st_mtime > timestamp.st_mtime) { if (bam_verbose && !bam_check) - bam_print(UPDATE_CACHE_OLD); + bam_print( + _("archive cache is out of sync. Rebuilding.\n")); /* * Don't generate a false positive for the boot-archive service * but trigger an update of the archive cache in @@ -2583,7 +2642,8 @@ is_valid_archive(char *root, int what) if (bam_extend && sb.st_size > BA_SIZE_MAX) { if (bam_verbose && !bam_check) - bam_print(MULTI_SIZE, archive_path, BA_SIZE_MAX); + bam_print(_("archive %s is bigger than %d bytes and " + "will be rebuilt\n"), archive_path, BA_SIZE_MAX); set_dir_flag(what, NO_MULTI); } @@ -2635,7 +2695,8 @@ check_flags_and_files(char *root) ARCHIVE_PREFIX, get_machine(), CACHEDIR_SUFFIX); if (ret >= sizeof (get_cachedir(FILE64))) { - bam_error(PATH_TOO_LONG, rootbuf); + bam_error(_("unable to create path on mountpoint %s, " + "path too long\n"), rootbuf); return (BAM_ERROR); } @@ -2646,8 +2707,8 @@ check_flags_and_files(char *root) walk_arg.sparcfile = fopen(get_cachedir(FILE64), "w"); if (walk_arg.sparcfile == NULL) { - bam_error(OPEN_FAIL, get_cachedir(FILE64), - strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + get_cachedir(FILE64), strerror(errno)); return (BAM_ERROR); } @@ -2675,7 +2736,7 @@ check_flags_and_files(char *root) set_dir_flag(FILE32, NEED_UPDATE); set_dir_flag(FILE64, NEED_UPDATE); if (bam_verbose) - bam_print(UPDATE_FORCE); + bam_print(_("forced update of archive requested\n")); return (BAM_SUCCESS); } @@ -2694,7 +2755,8 @@ read_one_list(char *root, filelist_t *flistp, char *filelist) fp = fopen(path, "r"); if (fp == NULL) { - BAM_DPRINTF((D_FLIST_FAIL, fcn, path, strerror(errno))); + BAM_DPRINTF(("%s: failed to open archive filelist: %s: %s\n", + fcn, path, strerror(errno))); return (BAM_ERROR); } while (s_fgets(buf, sizeof (buf), fp) != NULL) { @@ -2704,7 +2766,8 @@ read_one_list(char *root, filelist_t *flistp, char *filelist) append_to_flist(flistp, buf); } if (fclose(fp) != 0) { - bam_error(CLOSE_FAIL, path, strerror(errno)); + bam_error(_("failed to close file: %s: %s\n"), + path, strerror(errno)); return (BAM_ERROR); } return (BAM_SUCCESS); @@ -2726,7 +2789,7 @@ read_list(char *root, filelist_t *flistp) */ n = snprintf(path, sizeof (path), "%s%s", root, EXTRACT_BOOT_FILELIST); if (n >= sizeof (path)) { - bam_error(NO_FLIST); + bam_error(_("archive filelist is empty\n")); return (BAM_ERROR); } @@ -2765,11 +2828,12 @@ read_list(char *root, filelist_t *flistp) free(platarg); free(rootarg); if (n >= sizeof (cmd)) { - bam_error(NO_FLIST); + bam_error(_("archive filelist is empty\n")); return (BAM_ERROR); } if (exec_cmd(cmd, flistp) != 0) { - BAM_DPRINTF((D_FLIST_FAIL, fcn, path, strerror(errno))); + BAM_DPRINTF(("%s: failed to open archive " + "filelist: %s: %s\n", fcn, path, strerror(errno))); return (BAM_ERROR); } } else { @@ -2783,7 +2847,7 @@ read_list(char *root, filelist_t *flistp) } if (flistp->head == NULL) { - bam_error(NO_FLIST); + bam_error(_("archive filelist is empty\n")); return (BAM_ERROR); } @@ -2802,19 +2866,22 @@ getoldstat(char *root) fd = open(path, O_RDONLY); if (fd == -1) { if (bam_verbose) - bam_print(OPEN_FAIL, path, strerror(errno)); + bam_print(_("failed to open file: %s: %s\n"), + path, strerror(errno)); goto out_err; } if (fstat(fd, &sb) != 0) { - bam_error(STAT_FAIL, path, strerror(errno)); + bam_error(_("stat of file failed: %s: %s\n"), path, + strerror(errno)); goto out_err; } ostat = s_calloc(1, sb.st_size); if (read(fd, ostat, sb.st_size) != sb.st_size) { - bam_error(READ_FAIL, path, strerror(errno)); + bam_error(_("read failed for file: %s: %s\n"), path, + strerror(errno)); free(ostat); goto out_err; } @@ -2828,7 +2895,8 @@ getoldstat(char *root) free(ostat); if (error) { - bam_error(UNPACK_FAIL, path, strerror(error)); + bam_error(_("failed to unpack stat data: %s: %s\n"), + path, strerror(error)); walk_arg.old_nvlp = NULL; goto out_err; } else { @@ -2903,7 +2971,7 @@ check4stale(char *root) int what; if (bam_verbose) - bam_print(PARSEABLE_STALE_FILE, path); + bam_print(_(" stale %s\n"), path); if (is_flag_on(IS_SPARC_TARGET)) { set_dir_flag(FILE64, NEED_UPDATE); @@ -2927,7 +2995,8 @@ create_newstat(void) * Not fatal - we can still create archive */ walk_arg.new_nvlp = NULL; - bam_error(NVALLOC_FAIL, strerror(error)); + bam_error(_("failed to create stat data: %s\n"), + strerror(error)); } } @@ -2954,7 +3023,8 @@ walk_list(char *root, filelist_t *flistp) * Emit verbose message only */ if (bam_verbose) - bam_print(NFTW_FAIL, path, strerror(errno)); + bam_print(_("cannot find: %s: %s\n"), + path, strerror(errno)); } } @@ -2979,8 +3049,10 @@ update_timestamp(char *root) * the user of the performance issue. */ if (creat(timestamp_path, FILE_STAT_MODE) < 0) { - bam_error(OPEN_FAIL, timestamp_path, strerror(errno)); - bam_error(TIMESTAMP_FAIL); + bam_error(_("failed to open file: %s: %s\n"), timestamp_path, + strerror(errno)); + bam_error(_("failed to update the timestamp file, next" + " archive update may experience reduced performance\n")); } } @@ -2999,20 +3071,23 @@ savenew(char *root) error = nvlist_pack(walk_arg.new_nvlp, &nstat, &sz, NV_ENCODE_XDR, 0); if (error) { - bam_error(PACK_FAIL, strerror(error)); + bam_error(_("failed to pack stat data: %s\n"), + strerror(error)); return; } (void) snprintf(path, sizeof (path), "%s%s", root, FILE_STAT_TMP); fd = open(path, O_RDWR|O_CREAT|O_TRUNC, FILE_STAT_MODE); if (fd == -1) { - bam_error(OPEN_FAIL, path, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), path, + strerror(errno)); free(nstat); return; } wrote = write(fd, nstat, sz); if (wrote != sz) { - bam_error(WRITE_FAIL, path, strerror(errno)); + bam_error(_("write to file failed: %s: %s\n"), path, + strerror(errno)); (void) close(fd); free(nstat); return; @@ -3022,7 +3097,8 @@ savenew(char *root) (void) snprintf(path2, sizeof (path2), "%s%s", root, FILE_STAT); if (rename(path, path2) != 0) { - bam_error(RENAME_FAIL, path2, strerror(errno)); + bam_error(_("rename to file failed: %s: %s\n"), path2, + strerror(errno)); } } @@ -3126,14 +3202,15 @@ update_required(char *root) /* something went wrong */ if (ret == BAM_ERROR) { - bam_error(CACHE_FAIL); + bam_error(_("Failed to gather cache files, archives " + "generation aborted\n")); return (BAM_ERROR); } if (walk_arg.new_nvlp == NULL) { if (walk_arg.sparcfile != NULL) (void) fclose(walk_arg.sparcfile); - bam_error(NO_NEW_STAT); + bam_error(_("cannot create new stat data\n")); } /* If nothing was updated, discard newstat. */ @@ -3211,7 +3288,7 @@ check_archive(char *dest) if (stat(dest, &sb) != 0 || !S_ISREG(sb.st_mode) || sb.st_size < 10000) { - bam_error(ARCHIVE_BAD, dest); + bam_error(_("archive file %s not generated correctly\n"), dest); (void) unlink(dest); return (BAM_ERROR); } @@ -3292,7 +3369,7 @@ create_sparc_archive(char *archive, char *tempname, char *bootblk, char *list) const char *func = "create_sparc_archive()"; if (access(bootblk, R_OK) == 1) { - bam_error(BOOTBLK_FAIL, bootblk); + bam_error(_("unable to access bootblk file : %s\n"), bootblk); return (BAM_ERROR); } @@ -3303,7 +3380,7 @@ create_sparc_archive(char *archive, char *tempname, char *bootblk, char *list) "-path-list \"%s\" 2>&1", MKISOFS_PATH, MKISO_PARAMS, bootblk, tempname, list); - BAM_DPRINTF((D_CMDLINE, func, cmdline)); + BAM_DPRINTF(("%s: executing: %s\n", func, cmdline)); ret = exec_cmd(cmdline, &flist); if (ret != 0 || check_cmdline(flist) == BAM_ERROR) { @@ -3321,7 +3398,7 @@ create_sparc_archive(char *archive, char *tempname, char *bootblk, char *list) " bs=1b oseek=1 count=15 conv=notrunc conv=sync 2>&1", DD_PATH_USR, bootblk, tempname); - BAM_DPRINTF((D_CMDLINE, func, cmdline)); + BAM_DPRINTF(("%s: executing: %s\n", func, cmdline)); ret = exec_cmd(cmdline, &flist); if (ret != 0 || check_cmdline(flist) == BAM_ERROR) @@ -3337,7 +3414,7 @@ create_sparc_archive(char *archive, char *tempname, char *bootblk, char *list) out_err: filelist_free(&flist); - bam_error(ARCHIVE_FAIL, cmdline); + bam_error(_("boot-archive creation FAILED, command: '%s'\n"), cmdline); (void) unlink(tempname); return (BAM_ERROR); } @@ -3413,7 +3490,8 @@ extend_iso_archive(char *archive, char *tempname, char *update_dir) fd = open(archive, O_RDWR); if (fd == -1) { if (bam_verbose) - bam_error(OPEN_FAIL, archive, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + archive, strerror(errno)); goto out_err; } @@ -3424,13 +3502,15 @@ extend_iso_archive(char *archive, char *tempname, char *update_dir) VOLDESC_OFF * CD_BLOCK); if (ret != sizeof (saved_desc)) { if (bam_verbose) - bam_error(READ_FAIL, archive, strerror(errno)); + bam_error(_("read failed for file: %s: %s\n"), + archive, strerror(errno)); goto out_err; } if (memcmp(saved_desc[0].type, "\1CD001", 6)) { if (bam_verbose) - bam_error(SIGN_FAIL, archive); + bam_error(_("iso descriptor signature for %s is " + "invalid\n"), archive); goto out_err; } @@ -3444,12 +3524,13 @@ extend_iso_archive(char *archive, char *tempname, char *update_dir) "%s\" \"%s\" 2>&1", MKISOFS_PATH, next_session, archive, MKISO_PARAMS, tempname, update_dir); - BAM_DPRINTF((D_CMDLINE, func, cmdline)); + BAM_DPRINTF(("%s: executing: %s\n", func, cmdline)); ret = exec_cmd(cmdline, &flist); if (ret != 0 || check_cmdline(flist) == BAM_ERROR) { if (bam_verbose) { - bam_error(MULTI_FAIL, cmdline); + bam_error(_("Command '%s' failed while generating " + "multisession archive\n"), cmdline); dump_errormsg(flist); } goto out_flist_err; @@ -3459,7 +3540,8 @@ extend_iso_archive(char *archive, char *tempname, char *update_dir) newfd = open(tempname, O_RDONLY); if (newfd == -1) { if (bam_verbose) - bam_error(OPEN_FAIL, archive, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + archive, strerror(errno)); goto out_err; } @@ -3467,13 +3549,15 @@ extend_iso_archive(char *archive, char *tempname, char *update_dir) VOLDESC_OFF * CD_BLOCK); if (ret != sizeof (saved_desc)) { if (bam_verbose) - bam_error(READ_FAIL, archive, strerror(errno)); + bam_error(_("read failed for file: %s: %s\n"), + archive, strerror(errno)); goto out_err; } if (memcmp(saved_desc[0].type, "\1CD001", 6)) { if (bam_verbose) - bam_error(SIGN_FAIL, archive); + bam_error(_("iso descriptor signature for %s is " + "invalid\n"), archive); goto out_err; } @@ -3496,7 +3580,8 @@ extend_iso_archive(char *archive, char *tempname, char *update_dir) ret = pwrite64(fd, saved_desc, DVD_BLOCK, VOLDESC_OFF*CD_BLOCK); if (ret != DVD_BLOCK) { if (bam_verbose) - bam_error(WRITE_FAIL, archive, strerror(errno)); + bam_error(_("write to file failed: %s: %s\n"), + archive, strerror(errno)); goto out_err; } (void) close(newfd); @@ -3509,7 +3594,8 @@ extend_iso_archive(char *archive, char *tempname, char *update_dir) ret = close(fd); if (ret != 0) { if (bam_verbose) - bam_error(CLOSE_FAIL, archive, strerror(errno)); + bam_error(_("failed to close file: %s: %s\n"), + archive, strerror(errno)); return (BAM_ERROR); } fd = -1; @@ -3518,12 +3604,13 @@ extend_iso_archive(char *archive, char *tempname, char *update_dir) "seek=%d conv=sync 2>&1", DD_PATH_USR, tempname, archive, (next_session/16)); - BAM_DPRINTF((D_CMDLINE, func, cmdline)); + BAM_DPRINTF(("%s: executing: %s\n", func, cmdline)); ret = exec_cmd(cmdline, &flist); if (ret != 0 || check_cmdline(flist) == BAM_ERROR) { if (bam_verbose) - bam_error(MULTI_FAIL, cmdline); + bam_error(_("Command '%s' failed while generating " + "multisession archive\n"), cmdline); goto out_flist_err; } filelist_free(&flist); @@ -3562,11 +3649,12 @@ create_x86_archive(char *archive, char *tempname, char *update_dir) (void) snprintf(cmdline, sizeof (cmdline), "%s %s -o \"%s\" \"%s\" " "2>&1", MKISOFS_PATH, MKISO_PARAMS, tempname, update_dir); - BAM_DPRINTF((D_CMDLINE, func, cmdline)); + BAM_DPRINTF(("%s: executing: %s\n", func, cmdline)); ret = exec_cmd(cmdline, &flist); if (ret != 0 || check_cmdline(flist) == BAM_ERROR) { - bam_error(ARCHIVE_FAIL, cmdline); + bam_error(_("boot-archive creation FAILED, command: '%s'\n"), + cmdline); dump_errormsg(flist); filelist_free(&flist); (void) unlink(tempname); @@ -3670,7 +3758,8 @@ mkisofs_archive(char *root, int what) return (ret); out_path_err: - bam_error(PATH_TOO_LONG, root); + bam_error(_("unable to create path on mountpoint %s, path too long\n"), + root); return (BAM_ERROR); } @@ -3704,7 +3793,8 @@ create_ramdisk(char *root) (void) snprintf(path, sizeof (path), "%s/%s", root, CREATE_RAMDISK); if (stat(path, &sb) != 0) { - bam_error(ARCH_EXEC_MISS, path, strerror(errno)); + bam_error(_("archive creation file not found: %s: %s\n"), + path, strerror(errno)); return (BAM_ERROR); } @@ -3730,7 +3820,8 @@ create_ramdisk(char *root) (void) snprintf(cmdline, len, "%s", path); if (exec_cmd(cmdline, NULL) != 0) { - bam_error(ARCHIVE_FAIL, cmdline); + bam_error(_("boot-archive creation FAILED, command: '%s'\n"), + cmdline); free(cmdline); return (BAM_ERROR); } @@ -3770,7 +3861,8 @@ is_ramdisk(char *root) */ fp = fopen(MNTTAB, "r"); if (fp == NULL) { - bam_error(OPEN_FAIL, MNTTAB, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + MNTTAB, strerror(errno)); return (0); } @@ -3795,7 +3887,8 @@ is_ramdisk(char *root) if (!found) { if (bam_verbose) - bam_error(NOT_IN_MNTTAB, mntpt); + bam_error(_("alternate root %s not in mnttab\n"), + mntpt); (void) fclose(fp); return (0); } @@ -3803,7 +3896,7 @@ is_ramdisk(char *root) if (strncmp(mnt.mnt_special, RAMDISK_SPECIAL, strlen(RAMDISK_SPECIAL)) == 0) { if (bam_verbose) - bam_error(IS_RAMDISK, bam_root); + bam_error(_("%s is on a ramdisk device\n"), bam_root); (void) fclose(fp); return (1); } @@ -3829,12 +3922,14 @@ is_boot_archive(char *root) INJECT_ERROR1("NOT_ARCHIVE_BASED", error = -1); if (error == -1) { if (bam_verbose) - bam_print(FILE_MISS, path); - BAM_DPRINTF((D_NOT_ARCHIVE_BOOT, fcn, root)); + bam_print(_("file not found: %s\n"), path); + BAM_DPRINTF(("%s: not a boot archive based Solaris " + "instance: %s\n", fcn, root)); return (0); } - BAM_DPRINTF((D_IS_ARCHIVE_BOOT, fcn, root)); + BAM_DPRINTF(("%s: *IS* a boot archive based Solaris instance: %s\n", + fcn, root)); return (1); } @@ -3852,18 +3947,37 @@ is_grub(const char *root) { char path[PATH_MAX]; struct stat sb; + void *defp; + boolean_t grub = B_FALSE; + const char *res = NULL; const char *fcn = "is_grub()"; - (void) snprintf(path, sizeof (path), "%s%s", root, GRUB_STAGE2); - if (stat(path, &sb) == -1) { - BAM_DPRINTF((D_NO_GRUB_DIR, fcn, path)); + /* grub is disabled by default */ + if ((defp = defopen_r(BE_DEFAULTS)) == NULL) { return (0); + } else { + res = defread_r(BE_DFLT_BE_HAS_GRUB, defp); + if (res != NULL && res[0] != '\0') { + if (strcasecmp(res, "true") == 0) + grub = B_TRUE; + } + defclose_r(defp); } - return (1); + if (grub == B_TRUE) { + (void) snprintf(path, sizeof (path), "%s%s", root, GRUB_STAGE2); + if (stat(path, &sb) == -1) { + BAM_DPRINTF(("%s: Missing GRUB directory: %s\n", + fcn, path)); + return (0); + } else + return (1); + } + + return (0); } -static int +int is_zfs(char *root) { struct statvfs vfs; @@ -3873,15 +3987,16 @@ is_zfs(char *root) ret = statvfs(root, &vfs); INJECT_ERROR1("STATVFS_ZFS", ret = 1); if (ret != 0) { - bam_error(STATVFS_FAIL, root, strerror(errno)); + bam_error(_("statvfs failed for %s: %s\n"), root, + strerror(errno)); return (0); } if (strncmp(vfs.f_basetype, "zfs", strlen("zfs")) == 0) { - BAM_DPRINTF((D_IS_ZFS, fcn, root)); + BAM_DPRINTF(("%s: is a ZFS filesystem: %s\n", fcn, root)); return (1); } else { - BAM_DPRINTF((D_IS_NOT_ZFS, fcn, root)); + BAM_DPRINTF(("%s: is *NOT* a ZFS filesystem: %s\n", fcn, root)); return (0); } } @@ -3896,20 +4011,21 @@ is_ufs(char *root) ret = statvfs(root, &vfs); INJECT_ERROR1("STATVFS_UFS", ret = 1); if (ret != 0) { - bam_error(STATVFS_FAIL, root, strerror(errno)); + bam_error(_("statvfs failed for %s: %s\n"), root, + strerror(errno)); return (0); } if (strncmp(vfs.f_basetype, "ufs", strlen("ufs")) == 0) { - BAM_DPRINTF((D_IS_UFS, fcn, root)); + BAM_DPRINTF(("%s: is a UFS filesystem: %s\n", fcn, root)); return (1); } else { - BAM_DPRINTF((D_IS_NOT_UFS, fcn, root)); + BAM_DPRINTF(("%s: is *NOT* a UFS filesystem: %s\n", fcn, root)); return (0); } } -static int +int is_pcfs(char *root) { struct statvfs vfs; @@ -3919,15 +4035,17 @@ is_pcfs(char *root) ret = statvfs(root, &vfs); INJECT_ERROR1("STATVFS_PCFS", ret = 1); if (ret != 0) { - bam_error(STATVFS_FAIL, root, strerror(errno)); + bam_error(_("statvfs failed for %s: %s\n"), root, + strerror(errno)); return (0); } if (strncmp(vfs.f_basetype, "pcfs", strlen("pcfs")) == 0) { - BAM_DPRINTF((D_IS_PCFS, fcn, root)); + BAM_DPRINTF(("%s: is a PCFS filesystem: %s\n", fcn, root)); return (1); } else { - BAM_DPRINTF((D_IS_NOT_PCFS, fcn, root)); + BAM_DPRINTF(("%s: is *NOT* a PCFS filesystem: %s\n", + fcn, root)); return (0); } } @@ -3955,16 +4073,17 @@ is_readonly(char *root) error = errno; INJECT_ERROR2("RDONLY_TEST_ERROR", fd = -1, error = EACCES); if (fd == -1 && error == EROFS) { - BAM_DPRINTF((D_RDONLY_FS, fcn, root)); + BAM_DPRINTF(("%s: is a READONLY filesystem: %s\n", fcn, root)); return (1); } else if (fd == -1) { - bam_error(RDONLY_TEST_ERROR, root, strerror(error)); + bam_error(_("error during read-only test on %s: %s\n"), + root, strerror(error)); } (void) close(fd); (void) unlink(testfile); - BAM_DPRINTF((D_RDWR_FS, fcn, root)); + BAM_DPRINTF(("%s: is a RDWR filesystem: %s\n", fcn, root)); return (0); } @@ -3993,7 +4112,8 @@ update_archive(char *root, char *opt) * If in update_all, emit only if verbose flag is set. */ if (!bam_update_all || bam_verbose) - bam_print(NOT_ARCHIVE_BOOT, root); + bam_print(_("%s: not a boot archive based Solaris " + "instance\n"), root); return (BAM_ERROR); } @@ -4036,7 +4156,8 @@ update_archive(char *root, char *opt) if (is_flag_on(RDONLY_FSCHK)) { bam_check = bam_saved_check; if (ret > 0) - bam_error(RDONLY_FS, root); + bam_error(_("%s filesystem is read-only, " + "skipping archives update\n"), root); if (bam_update_all) return ((ret != 0) ? BAM_ERROR : BAM_SUCCESS); } @@ -4104,38 +4225,41 @@ synchronize_BE_menu(void) int ret; const char *fcn = "synchronize_BE_menu()"; - BAM_DPRINTF((D_FUNC_ENTRY0, fcn)); + BAM_DPRINTF(("%s: entered. No args\n", fcn)); /* Check if findroot enabled LU BE */ if (stat(FINDROOT_INSTALLGRUB, &sb) != 0) { - BAM_DPRINTF((D_NOT_LU_BE, fcn)); + BAM_DPRINTF(("%s: not a Live Upgrade BE\n", fcn)); return (BAM_SUCCESS); } if (stat(LU_MENU_CKSUM, &sb) != 0) { - BAM_DPRINTF((D_NO_CKSUM_FILE, fcn, LU_MENU_CKSUM)); + BAM_DPRINTF(("%s: checksum file absent: %s\n", + fcn, LU_MENU_CKSUM)); goto menu_sync; } cfp = fopen(LU_MENU_CKSUM, "r"); INJECT_ERROR1("CKSUM_FILE_MISSING", cfp = NULL); if (cfp == NULL) { - bam_error(CANNOT_READ_LU_CKSUM, LU_MENU_CKSUM); + bam_error(_("failed to read GRUB menu checksum file: %s\n"), + LU_MENU_CKSUM); goto menu_sync; } - BAM_DPRINTF((D_CKSUM_FILE_OPENED, fcn, LU_MENU_CKSUM)); + BAM_DPRINTF(("%s: opened checksum file: %s\n", fcn, LU_MENU_CKSUM)); found = 0; while (s_fgets(cksum_line, sizeof (cksum_line), cfp) != NULL) { INJECT_ERROR1("MULTIPLE_CKSUM", found = 1); if (found) { - bam_error(MULTIPLE_LU_CKSUM, LU_MENU_CKSUM); + bam_error(_("multiple checksums for GRUB menu in " + "checksum file: %s\n"), LU_MENU_CKSUM); (void) fclose(cfp); goto menu_sync; } found = 1; } - BAM_DPRINTF((D_CKSUM_FILE_READ, fcn, LU_MENU_CKSUM)); + BAM_DPRINTF(("%s: read checksum file: %s\n", fcn, LU_MENU_CKSUM)); old_cksum_str = strtok(cksum_line, " \t"); @@ -4146,17 +4270,19 @@ synchronize_BE_menu(void) INJECT_ERROR1("OLD_SIZE_NULL", old_size_str = NULL); INJECT_ERROR1("OLD_FILE_NULL", old_file = NULL); if (old_cksum_str == NULL || old_size_str == NULL || old_file == NULL) { - bam_error(CANNOT_PARSE_LU_CKSUM, LU_MENU_CKSUM); + bam_error(_("error parsing GRUB menu checksum file: %s\n"), + LU_MENU_CKSUM); goto menu_sync; } - BAM_DPRINTF((D_CKSUM_FILE_PARSED, fcn, LU_MENU_CKSUM)); + BAM_DPRINTF(("%s: parsed checksum file: %s\n", fcn, LU_MENU_CKSUM)); /* Get checksum of current menu */ pool = find_root_pool(); if (pool) { mntpt = mount_top_dataset(pool, &mnted); if (mntpt == NULL) { - bam_error(FAIL_MNT_TOP_DATASET, pool); + bam_error(_("failed to mount top dataset for %s\n"), + pool); free(pool); return (BAM_ERROR); } @@ -4173,18 +4299,18 @@ synchronize_BE_menu(void) } INJECT_ERROR1("GET_CURR_CKSUM", ret = 1); if (ret != 0) { - bam_error(MENU_CKSUM_FAIL); + bam_error(_("error generating checksum of GRUB menu\n")); return (BAM_ERROR); } - BAM_DPRINTF((D_CKSUM_GEN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: successfully generated checksum\n", fcn)); INJECT_ERROR1("GET_CURR_CKSUM_OUTPUT", flist.head = NULL); if ((flist.head == NULL) || (flist.head != flist.tail)) { - bam_error(BAD_CKSUM); + bam_error(_("bad checksum generated for GRUB menu\n")); filelist_free(&flist); return (BAM_ERROR); } - BAM_DPRINTF((D_CKSUM_GEN_OUTPUT_VALID, fcn)); + BAM_DPRINTF(("%s: generated checksum output valid\n", fcn)); curr_cksum_str = strtok(flist.head->line, " \t"); curr_size_str = strtok(NULL, " \t"); @@ -4195,27 +4321,28 @@ synchronize_BE_menu(void) INJECT_ERROR1("CURR_FILE_NULL", curr_file = NULL); if (curr_cksum_str == NULL || curr_size_str == NULL || curr_file == NULL) { - bam_error(BAD_CKSUM_PARSE); + bam_error(_("error parsing checksum generated " + "for GRUB menu\n")); filelist_free(&flist); return (BAM_ERROR); } - BAM_DPRINTF((D_CKSUM_GEN_PARSED, fcn)); + BAM_DPRINTF(("%s: successfully parsed generated checksum\n", fcn)); if (strcmp(old_cksum_str, curr_cksum_str) == 0 && strcmp(old_size_str, curr_size_str) == 0 && strcmp(old_file, curr_file) == 0) { filelist_free(&flist); - BAM_DPRINTF((D_CKSUM_NO_CHANGE, fcn)); + BAM_DPRINTF(("%s: no change in checksum of GRUB menu\n", fcn)); return (BAM_SUCCESS); } filelist_free(&flist); /* cksum doesn't match - the menu has changed */ - BAM_DPRINTF((D_CKSUM_HAS_CHANGED, fcn)); + BAM_DPRINTF(("%s: checksum of GRUB menu has changed\n", fcn)); menu_sync: - bam_print(PROP_GRUB_MENU); + bam_print(_("propagating updated GRUB menu\n")); (void) snprintf(cmdline, sizeof (cmdline), "/bin/sh -c '. %s > /dev/null; %s %s yes > /dev/null'", @@ -4223,20 +4350,22 @@ menu_sync: ret = exec_cmd(cmdline, NULL); INJECT_ERROR1("PROPAGATE_MENU", ret = 1); if (ret != 0) { - bam_error(MENU_PROP_FAIL); + bam_error(_("error propagating updated GRUB menu\n")); return (BAM_ERROR); } - BAM_DPRINTF((D_PROPAGATED_MENU, fcn)); + BAM_DPRINTF(("%s: successfully propagated GRUB menu\n", fcn)); (void) snprintf(cmdline, sizeof (cmdline), "/bin/cp %s %s > /dev/null", GRUB_MENU, GRUB_BACKUP_MENU); ret = exec_cmd(cmdline, NULL); INJECT_ERROR1("CREATE_BACKUP", ret = 1); if (ret != 0) { - bam_error(MENU_BACKUP_FAIL, GRUB_BACKUP_MENU); + bam_error(_("failed to create backup for GRUB menu: %s\n"), + GRUB_BACKUP_MENU); return (BAM_ERROR); } - BAM_DPRINTF((D_CREATED_BACKUP, fcn, GRUB_BACKUP_MENU)); + BAM_DPRINTF(("%s: successfully created backup GRUB menu: %s\n", + fcn, GRUB_BACKUP_MENU)); (void) snprintf(cmdline, sizeof (cmdline), "/bin/sh -c '. %s > /dev/null; %s %s no > /dev/null'", @@ -4244,20 +4373,24 @@ menu_sync: ret = exec_cmd(cmdline, NULL); INJECT_ERROR1("PROPAGATE_BACKUP", ret = 1); if (ret != 0) { - bam_error(BACKUP_PROP_FAIL, GRUB_BACKUP_MENU); + bam_error(_("error propagating backup GRUB menu: %s\n"), + GRUB_BACKUP_MENU); return (BAM_ERROR); } - BAM_DPRINTF((D_PROPAGATED_BACKUP, fcn, GRUB_BACKUP_MENU)); + BAM_DPRINTF(("%s: successfully propagated backup GRUB menu: %s\n", + fcn, GRUB_BACKUP_MENU)); (void) snprintf(cmdline, sizeof (cmdline), "%s %s > %s", CKSUM, GRUB_MENU, LU_MENU_CKSUM); ret = exec_cmd(cmdline, NULL); INJECT_ERROR1("CREATE_CKSUM_FILE", ret = 1); if (ret != 0) { - bam_error(MENU_CKSUM_WRITE_FAIL, LU_MENU_CKSUM); + bam_error(_("failed to write GRUB menu checksum file: %s\n"), + LU_MENU_CKSUM); return (BAM_ERROR); } - BAM_DPRINTF((D_CREATED_CKSUM_FILE, fcn, LU_MENU_CKSUM)); + BAM_DPRINTF(("%s: successfully created checksum file: %s\n", + fcn, LU_MENU_CKSUM)); (void) snprintf(cmdline, sizeof (cmdline), "/bin/sh -c '. %s > /dev/null; %s %s no > /dev/null'", @@ -4265,10 +4398,12 @@ menu_sync: ret = exec_cmd(cmdline, NULL); INJECT_ERROR1("PROPAGATE_MENU_CKSUM_FILE", ret = 1); if (ret != 0) { - bam_error(MENU_CKSUM_PROP_FAIL, LU_MENU_CKSUM); + bam_error(_("error propagating GRUB menu checksum file: %s\n"), + LU_MENU_CKSUM); return (BAM_ERROR); } - BAM_DPRINTF((D_PROPAGATED_CKSUM_FILE, fcn, LU_MENU_CKSUM)); + BAM_DPRINTF(("%s: successfully propagated checksum file: %s\n", + fcn, LU_MENU_CKSUM)); return (BAM_SUCCESS); } @@ -4288,7 +4423,8 @@ update_all(char *root, char *opt) if (bam_rootlen != 1 || *root != '/') { elide_trailing_slash(root, multibt, sizeof (multibt)); - bam_error(ALT_ROOT_INVALID, multibt); + bam_error(_("an alternate root (%s) cannot be used with this " + "sub-command\n"), multibt); return (BAM_ERROR); } @@ -4307,7 +4443,8 @@ update_all(char *root, char *opt) */ fp = fopen(MNTTAB, "r"); if (fp == NULL) { - bam_error(OPEN_FAIL, MNTTAB, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), + MNTTAB, strerror(errno)); ret = BAM_ERROR; goto out; } @@ -4355,7 +4492,8 @@ out: * updates */ if (stat(GRUB_fdisk, &sb) == 0 || stat(GRUB_fdisk_target, &sb) == 0) { - bam_error(FDISK_FILES_FOUND, GRUB_fdisk, GRUB_fdisk_target); + bam_error(_("Deferred FDISK update file(s) found: %s, %s. " + "Not supported.\n"), GRUB_fdisk, GRUB_fdisk_target); } /* @@ -4405,13 +4543,13 @@ boot_entry_new(menu_t *mp, line_t *start, line_t *end) assert(end); ent = s_calloc(1, sizeof (entry_t)); - BAM_DPRINTF((D_ENTRY_NEW, fcn)); + BAM_DPRINTF(("%s: new boot entry alloced\n", fcn)); ent->start = start; ent->end = end; if (mp->entries == NULL) { mp->entries = ent; - BAM_DPRINTF((D_ENTRY_NEW_FIRST, fcn)); + BAM_DPRINTF(("%s: (first) new boot entry created\n", fcn)); return (ent); } @@ -4420,7 +4558,7 @@ boot_entry_new(menu_t *mp, line_t *start, line_t *end) prev = prev->next; prev->next = ent; ent->prev = prev; - BAM_DPRINTF((D_ENTRY_NEW_LINKED, fcn)); + BAM_DPRINTF(("%s: new boot entry linked in\n", fcn)); return (ent); } @@ -4443,12 +4581,12 @@ check_cmd(const char *cmd, const int which, const char *arg, const char *str) int ret; const char *fcn = "check_cmd()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, arg, str)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, arg, str)); if (cmd != NULL) { if ((strcmp(cmd, menu_cmds[which]) != 0) && (strcmp(cmd, menu_cmds[which + 1]) != 0)) { - BAM_DPRINTF((D_CHECK_CMD_CMD_NOMATCH, + BAM_DPRINTF(("%s: command %s does not match %s\n", fcn, cmd, menu_cmds[which])); return (0); } @@ -4457,9 +4595,9 @@ check_cmd(const char *cmd, const int which, const char *arg, const char *str) ret = 0; if (ret) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (ret); @@ -4476,47 +4614,53 @@ kernel_parser(entry_t *entry, char *cmd, char *arg, int linenum) if (strcmp(cmd, menu_cmds[KERNEL_CMD]) != 0 && strcmp(cmd, menu_cmds[KERNEL_DOLLAR_CMD]) != 0) { - BAM_DPRINTF((D_NOT_KERNEL_CMD, fcn, cmd)); + BAM_DPRINTF(("%s: not a kernel command: %s\n", fcn, cmd)); return (BAM_ERROR); } if (strncmp(arg, DIRECT_BOOT_32, sizeof (DIRECT_BOOT_32) - 1) == 0) { - BAM_DPRINTF((D_SET_DBOOT_32, fcn, arg)); + BAM_DPRINTF(("%s: setting DBOOT|DBOOT_32 flag: %s\n", + fcn, arg)); entry->flags |= BAM_ENTRY_DBOOT | BAM_ENTRY_32BIT; } else if (strncmp(arg, DIRECT_BOOT_KERNEL, sizeof (DIRECT_BOOT_KERNEL) - 1) == 0) { - BAM_DPRINTF((D_SET_DBOOT, fcn, arg)); + BAM_DPRINTF(("%s: setting DBOOT flag: %s\n", fcn, arg)); entry->flags |= BAM_ENTRY_DBOOT; } else if (strncmp(arg, DIRECT_BOOT_64, sizeof (DIRECT_BOOT_64) - 1) == 0) { - BAM_DPRINTF((D_SET_DBOOT_64, fcn, arg)); + BAM_DPRINTF(("%s: setting DBOOT|DBOOT_64 flag: %s\n", + fcn, arg)); entry->flags |= BAM_ENTRY_DBOOT | BAM_ENTRY_64BIT; } else if (strncmp(arg, DIRECT_BOOT_FAILSAFE_KERNEL, sizeof (DIRECT_BOOT_FAILSAFE_KERNEL) - 1) == 0) { - BAM_DPRINTF((D_SET_DBOOT_FAILSAFE, fcn, arg)); + BAM_DPRINTF(("%s: setting DBOOT|DBOOT_FAILSAFE flag: %s\n", + fcn, arg)); entry->flags |= BAM_ENTRY_DBOOT | BAM_ENTRY_FAILSAFE; } else if (strncmp(arg, DIRECT_BOOT_FAILSAFE_32, sizeof (DIRECT_BOOT_FAILSAFE_32) - 1) == 0) { - BAM_DPRINTF((D_SET_DBOOT_FAILSAFE_32, fcn, arg)); + BAM_DPRINTF(("%s: setting DBOOT|DBOOT_FAILSAFE|DBOOT_32 " + "flag: %s\n", fcn, arg)); entry->flags |= BAM_ENTRY_DBOOT | BAM_ENTRY_FAILSAFE | BAM_ENTRY_32BIT; } else if (strncmp(arg, DIRECT_BOOT_FAILSAFE_64, sizeof (DIRECT_BOOT_FAILSAFE_64) - 1) == 0) { - BAM_DPRINTF((D_SET_DBOOT_FAILSAFE_64, fcn, arg)); + BAM_DPRINTF(("%s: setting DBOOT|DBOOT_FAILSAFE|DBOOT_64 " + "flag: %s\n", fcn, arg)); entry->flags |= BAM_ENTRY_DBOOT | BAM_ENTRY_FAILSAFE | BAM_ENTRY_64BIT; } else if (strncmp(arg, MULTI_BOOT, sizeof (MULTI_BOOT) - 1) == 0) { - BAM_DPRINTF((D_SET_MULTIBOOT, fcn, arg)); + BAM_DPRINTF(("%s: setting MULTIBOOT flag: %s\n", fcn, arg)); entry->flags |= BAM_ENTRY_MULTIBOOT; } else if (strncmp(arg, MULTI_BOOT_FAILSAFE, sizeof (MULTI_BOOT_FAILSAFE) - 1) == 0) { - BAM_DPRINTF((D_SET_MULTIBOOT_FAILSAFE, fcn, arg)); + BAM_DPRINTF(("%s: setting MULTIBOOT|MULTIBOOT_FAILSAFE " + "flag: %s\n", fcn, arg)); entry->flags |= BAM_ENTRY_MULTIBOOT | BAM_ENTRY_FAILSAFE; } else if (strstr(arg, XEN_KERNEL_SUBSTR)) { - BAM_DPRINTF((D_SET_HV, fcn, arg)); + BAM_DPRINTF(("%s: setting XEN HV flag: %s\n", fcn, arg)); entry->flags |= BAM_ENTRY_HV; } else if (!(entry->flags & (BAM_ENTRY_BOOTADM|BAM_ENTRY_LU))) { - BAM_DPRINTF((D_SET_HAND_KERNEL, fcn, arg)); + BAM_DPRINTF(("%s: is HAND kernel flag: %s\n", fcn, arg)); return (BAM_ERROR); } else if (strncmp(arg, KERNEL_PREFIX, strlen(KERNEL_PREFIX)) == 0 && strstr(arg, UNIX_SPACE)) { @@ -4525,8 +4669,9 @@ kernel_parser(entry_t *entry, char *cmd, char *arg, int linenum) strstr(arg, AMD_UNIX_SPACE)) { entry->flags |= BAM_ENTRY_DBOOT | BAM_ENTRY_64BIT; } else { - BAM_DPRINTF((D_IS_UNKNOWN_KERNEL, fcn, arg)); - bam_error(UNKNOWN_KERNEL_LINE, linenum); + BAM_DPRINTF(("%s: is UNKNOWN kernel entry: %s\n", fcn, arg)); + bam_error(_("kernel command on line %d not recognized.\n"), + linenum); return (BAM_ERROR); } @@ -4544,7 +4689,7 @@ module_parser(entry_t *entry, char *cmd, char *arg, int linenum) if (strcmp(cmd, menu_cmds[MODULE_CMD]) != 0 && strcmp(cmd, menu_cmds[MODULE_DOLLAR_CMD]) != 0) { - BAM_DPRINTF((D_NOT_MODULE_CMD, fcn, cmd)); + BAM_DPRINTF(("%s: not module cmd: %s\n", fcn, cmd)); return (BAM_ERROR); } @@ -4557,16 +4702,17 @@ module_parser(entry_t *entry, char *cmd, char *arg, int linenum) strcmp(arg, FAILSAFE_ARCHIVE_64) == 0 || strcmp(arg, XEN_KERNEL_MODULE_LINE) == 0 || strcmp(arg, XEN_KERNEL_MODULE_LINE_ZFS) == 0) { - BAM_DPRINTF((D_BOOTADM_LU_MODULE, fcn, arg)); + BAM_DPRINTF(("%s: bootadm or LU module cmd: %s\n", fcn, arg)); return (BAM_SUCCESS); } else if (!(entry->flags & BAM_ENTRY_BOOTADM) && !(entry->flags & BAM_ENTRY_LU)) { /* don't emit warning for hand entries */ - BAM_DPRINTF((D_IS_HAND_MODULE, fcn, arg)); + BAM_DPRINTF(("%s: is HAND module: %s\n", fcn, arg)); return (BAM_ERROR); } else { - BAM_DPRINTF((D_IS_UNKNOWN_MODULE, fcn, arg)); - bam_error(UNKNOWN_MODULE_LINE, linenum); + BAM_DPRINTF(("%s: is UNKNOWN module: %s\n", fcn, arg)); + bam_error(_("module command on line %d not recognized.\n"), + linenum); return (BAM_ERROR); } } @@ -4677,12 +4823,14 @@ line_parser(menu_t *mp, char *str, int *lineNum, int *entryNum) prev->entryNum = lp->entryNum; curr_ent = boot_entry_new(mp, prev, lp); curr_ent->flags |= BAM_ENTRY_BOOTADM; - BAM_DPRINTF((D_IS_BOOTADM_ENTRY, fcn, arg)); + BAM_DPRINTF(("%s: is bootadm(1M) entry: %s\n", + fcn, arg)); } else { curr_ent = boot_entry_new(mp, lp, lp); if (in_liveupgrade) { curr_ent->flags |= BAM_ENTRY_LU; - BAM_DPRINTF((D_IS_LU_ENTRY, fcn, arg)); + BAM_DPRINTF(("%s: is LU entry: %s\n", + fcn, arg)); } } curr_ent->entryNum = *entryNum; @@ -4703,17 +4851,18 @@ line_parser(menu_t *mp, char *str, int *lineNum, int *entryNum) if (cmd && arg) { if (strcmp(cmd, menu_cmds[ROOT_CMD]) == 0) { - BAM_DPRINTF((D_IS_ROOT_CMD, fcn, arg)); + BAM_DPRINTF(("%s: setting ROOT: %s\n", + fcn, arg)); curr_ent->flags |= BAM_ENTRY_ROOT; } else if (strcmp(cmd, menu_cmds[FINDROOT_CMD]) == 0) { - BAM_DPRINTF((D_IS_FINDROOT_CMD, fcn, - arg)); + BAM_DPRINTF(("%s: setting " + "FINDROOT: %s\n", fcn, arg)); curr_ent->flags |= BAM_ENTRY_FINDROOT; } else if (strcmp(cmd, menu_cmds[CHAINLOADER_CMD]) == 0) { - BAM_DPRINTF((D_IS_CHAINLOADER_CMD, fcn, - arg)); + BAM_DPRINTF(("%s: setting " + "CHAINLOADER: %s\n", fcn, arg)); curr_ent->flags |= BAM_ENTRY_CHAINLOADER; } else if (kernel_parser(curr_ent, cmd, arg, @@ -4882,7 +5031,8 @@ menu_read(char *menu_path) } if (fclose(fp) == EOF) { - bam_error(CLOSE_FAIL, menu_path, strerror(errno)); + bam_error(_("failed to close file: %s: %s\n"), menu_path, + strerror(errno)); } return (mp); @@ -4908,7 +5058,7 @@ selector(menu_t *mp, char *opt, int *entry, char **title) eq = strchr(opt_dup, '='); if (eq == NULL) { - bam_error(INVALID_OPT, opt); + bam_error(_("invalid option: %s\n"), opt); free(opt_dup); return (BAM_ERROR); } @@ -4918,7 +5068,7 @@ selector(menu_t *mp, char *opt, int *entry, char **title) assert(mp->end); entryNum = s_strtol(eq + 1); if (entryNum < 0 || entryNum > mp->end->entryNum) { - bam_error(INVALID_ENTRY, eq + 1); + bam_error(_("invalid boot entry number: %s\n"), eq + 1); free(opt_dup); return (BAM_ERROR); } @@ -4926,7 +5076,7 @@ selector(menu_t *mp, char *opt, int *entry, char **title) } else if (title && strcmp(opt_dup, menu_cmds[TITLE_CMD]) == 0) { *title = opt + (eq - opt_dup) + 1; } else { - bam_error(INVALID_OPT, opt); + bam_error(_("invalid option: %s\n"), opt); free(opt_dup); return (BAM_ERROR); } @@ -4954,11 +5104,11 @@ list_entry(menu_t *mp, char *menu_path, char *opt) assert(menu_path); /* opt is optional */ - BAM_DPRINTF((D_FUNC_ENTRY2, "list_entry", menu_path, + BAM_DPRINTF(("%s: entered. args: %s %s\n", "list_entry", menu_path, opt ? opt : "<NULL>")); if (mp->start == NULL) { - bam_error(NO_MENU, menu_path); + bam_error(_("menu file not found: %s\n"), menu_path); return (BAM_ERROR); } @@ -4977,13 +5127,13 @@ list_entry(menu_t *mp, char *menu_path, char *opt) if (lp->flags == BAM_COMMENT || lp->flags == BAM_EMPTY) continue; if (opt == NULL && lp->flags == BAM_TITLE) { - bam_print(PRINT_TITLE, lp->entryNum, + bam_print(_("%d %s\n"), lp->entryNum, lp->arg); found = 1; continue; } if (entry != ENTRY_INIT && lp->entryNum == entry) { - bam_print(PRINT, lp->line); + bam_print(_("%s\n"), lp->line); found = 1; continue; } @@ -4996,7 +5146,7 @@ list_entry(menu_t *mp, char *menu_path, char *opt) */ if (title && lp->flags == BAM_TITLE && lp->arg && strncmp(title, lp->arg, strlen(title)) == 0) { - bam_print(PRINT, lp->line); + bam_print(_("%s\n"), lp->line); entry = lp->entryNum; found = 1; continue; @@ -5004,7 +5154,7 @@ list_entry(menu_t *mp, char *menu_path, char *opt) } if (!found) { - bam_error(NO_MATCH_ENTRY); + bam_error(_("no matching entry found\n")); return (BAM_ERROR); } @@ -5031,7 +5181,7 @@ add_boot_entry(menu_t *mp, INJECT_ERROR1("ADD_BOOT_ENTRY_FINDROOT_NULL", findroot = NULL); if (findroot == NULL) { - bam_error(NULL_FINDROOT); + bam_error(_("can't find argument for findroot command\n")); return (BAM_ERROR); } @@ -5039,12 +5189,13 @@ add_boot_entry(menu_t *mp, title = "Solaris"; /* default to Solaris */ } if (kernel == NULL) { - bam_error(SUBOPT_MISS, menu_cmds[KERNEL_CMD]); + bam_error(_("missing suboption: %s\n"), menu_cmds[KERNEL_CMD]); return (BAM_ERROR); } if (module == NULL) { if (bam_direct != BAM_DIRECT_DBOOT) { - bam_error(SUBOPT_MISS, menu_cmds[MODULE_CMD]); + bam_error(_("missing suboption: %s\n"), + menu_cmds[MODULE_CMD]); return (BAM_ERROR); } @@ -5084,7 +5235,8 @@ add_boot_entry(menu_t *mp, (void) snprintf(linebuf, sizeof (linebuf), "%s%s%s", menu_cmds[FINDROOT_CMD], menu_cmds[SEP_CMD], findroot); line_parser(mp, linebuf, &lineNum, &entryNum); - BAM_DPRINTF((D_ADD_FINDROOT_NUM, fcn, lineNum, entryNum)); + BAM_DPRINTF(("%s: findroot added: line#: %d: entry#: %d\n", + fcn, lineNum, entryNum)); if (bootfs != NULL) { (void) snprintf(linebuf, sizeof (linebuf), "%s%s%s", @@ -5150,7 +5302,8 @@ delete_boot_entry(menu_t *mp, int entryNum, int quiet) do { freed = lp; lp = lp->next; /* prev stays the same */ - BAM_DPRINTF((D_FREEING_LINE, fcn, freed->lineNum)); + BAM_DPRINTF(("%s: freeing line: %d\n", + fcn, freed->lineNum)); unlink_line(mp, freed); line_free(freed); } while (freed != ent->end); @@ -5165,7 +5318,7 @@ delete_boot_entry(menu_t *mp, int entryNum, int quiet) mp->entries = ent; if (ent) ent->prev = tmp->prev; - BAM_DPRINTF((D_FREEING_ENTRY, fcn, tmp->entryNum)); + BAM_DPRINTF(("%s: freeing entry: %d\n", fcn, tmp->entryNum)); free(tmp); tmp = NULL; deleted = 1; @@ -5175,7 +5328,7 @@ delete_boot_entry(menu_t *mp, int entryNum, int quiet) if (!deleted && entryNum != ALL_ENTRIES) { if (quiet == DBE_PRINTERR) - bam_error(NO_BOOTADM_MATCH); + bam_error(_("no matching bootadm entry found\n")); return (BAM_ERROR); } @@ -5195,10 +5348,10 @@ delete_all_entries(menu_t *mp, char *dummy, char *opt) assert(dummy == NULL); assert(opt == NULL); - BAM_DPRINTF((D_FUNC_ENTRY0, "delete_all_entries")); + BAM_DPRINTF(("%s: entered. No args\n", "delete_all_entries")); if (mp->start == NULL) { - bam_print(EMPTY_MENU); + bam_print(_("the GRUB menu is empty\n")); return (BAM_SUCCESS); } @@ -5225,7 +5378,8 @@ create_diskmap(char *osroot) ret = snprintf(path, sizeof (path), "%s/%s", osroot, CREATE_DISKMAP); if (ret >= sizeof (path)) { - bam_error(PATH_TOO_LONG, osroot); + bam_error(_("unable to create path on mountpoint %s, " + "path too long\n"), osroot); return (NULL); } if (is_safe_exec(path) == BAM_ERROR) @@ -5238,9 +5392,11 @@ create_diskmap(char *osroot) fp = fopen(GRUBDISK_MAP, "r"); INJECT_ERROR1("DISKMAP_CREATE_FAIL", fp = NULL); if (fp) { - BAM_DPRINTF((D_CREATED_DISKMAP, fcn, GRUBDISK_MAP)); + BAM_DPRINTF(("%s: created diskmap file: %s\n", + fcn, GRUBDISK_MAP)); } else { - BAM_DPRINTF((D_CREATE_DISKMAP_FAIL, fcn, GRUBDISK_MAP)); + BAM_DPRINTF(("%s: FAILED to create diskmap file: %s\n", + fcn, GRUBDISK_MAP)); } } return (fp); @@ -5365,13 +5521,14 @@ get_grubroot(char *osroot, char *osdev, char *menu_root) INJECT_ERROR1("GRUBROOT_INVALID_OSDEV", ctdname = NULL); if (ctdname == NULL) { - bam_error(INVALID_DEV_DSK, osdev); + bam_error(_("not a /dev/[r]dsk name: %s\n"), osdev); return (NULL); } if (menu_root && !menu_on_bootdisk(osroot, menu_root)) { /* menu bears no resemblance to our reality */ - bam_error(CANNOT_GRUBROOT_BOOTDISK, osdev); + bam_error(_("cannot get (hd?,?,?) for menu. menu not on " + "bootdisk: %s\n"), osdev); return (NULL); } @@ -5382,7 +5539,8 @@ get_grubroot(char *osroot, char *osdev, char *menu_root) fp = create_diskmap(osroot); if (fp == NULL) { - bam_error(DISKMAP_FAIL, osroot); + bam_error(_("create_diskmap command failed for OS root: %s.\n"), + osroot); return (NULL); } @@ -5407,14 +5565,16 @@ get_grubroot(char *osroot, char *osdev, char *menu_root) INJECT_ERROR1("GRUBROOT_BIOSDEV_FAIL", found = 0); if (found == 0) { - bam_error(BIOSDEV_SKIP, osdev); + bam_error(_("not using biosdev command for disk: %s.\n"), + osdev); return (NULL); } fdiskpart = get_partition(osdev); INJECT_ERROR1("GRUBROOT_FDISK_FAIL", fdiskpart = PARTNO_NOTFOUND); if (fdiskpart == PARTNO_NOTFOUND) { - bam_error(FDISKPART_FAIL, osdev); + bam_error(_("failed to determine fdisk partition: %s\n"), + osdev); return (NULL); } @@ -5453,14 +5613,15 @@ find_primary_common(char *mntpt, char *fstype) mntpt, GRUBSIGN_DIR); if (stat(signdir, &sb) == -1) { - BAM_DPRINTF((D_NO_SIGNDIR, fcn, signdir)); + BAM_DPRINTF(("%s: no sign dir: %s\n", fcn, signdir)); return (NULL); } dirp = opendir(signdir); INJECT_ERROR1("SIGNDIR_OPENDIR_FAIL", dirp = NULL); if (dirp == NULL) { - bam_error(OPENDIR_FAILED, signdir, strerror(errno)); + bam_error(_("opendir of %s failed: %s\n"), signdir, + strerror(errno)); return (NULL); } @@ -5492,7 +5653,7 @@ find_primary_common(char *mntpt, char *fstype) } } - BAM_DPRINTF((D_EXIST_PRIMARY_SIGNS, fcn, + BAM_DPRINTF(("%s: existing primary signs: zfs=%s ufs=%s lu=%s\n", fcn, zfs ? zfs : "NULL", ufs ? ufs : "NULL", lu ? lu : "NULL")); @@ -5503,11 +5664,13 @@ find_primary_common(char *mntpt, char *fstype) } if (strcmp(fstype, "ufs") == 0 && zfs) { - bam_error(SIGN_FSTYPE_MISMATCH, zfs, "ufs"); + bam_error(_("found mismatched boot signature %s for " + "filesystem type: %s.\n"), zfs, "ufs"); free(zfs); zfs = NULL; } else if (strcmp(fstype, "zfs") == 0 && ufs) { - bam_error(SIGN_FSTYPE_MISMATCH, ufs, "zfs"); + bam_error(_("found mismatched boot signature %s for " + "filesystem type: %s.\n"), ufs, "zfs"); free(ufs); ufs = NULL; } @@ -5516,7 +5679,7 @@ find_primary_common(char *mntpt, char *fstype) /* For now, we let Live Upgrade take care of its signature itself */ if (lu) { - BAM_DPRINTF((D_FREEING_LU_SIGNS, fcn, lu)); + BAM_DPRINTF(("%s: feeing LU sign: %s\n", fcn, lu)); free(lu); lu = NULL; } @@ -5547,9 +5710,11 @@ find_backup_common(char *mntpt, char *fstype) if (bfp == NULL) { error = errno; if (bam_verbose) { - bam_error(OPEN_FAIL, backup, strerror(error)); + bam_error(_("failed to open file: %s: %s\n"), + backup, strerror(error)); } - BAM_DPRINTF((D_OPEN_FAIL, fcn, backup, strerror(error))); + BAM_DPRINTF(("%s: failed to open %s: %s\n", + fcn, backup, strerror(error))); return (NULL); } @@ -5576,7 +5741,7 @@ find_backup_common(char *mntpt, char *fstype) } } - BAM_DPRINTF((D_EXIST_BACKUP_SIGNS, fcn, + BAM_DPRINTF(("%s: existing backup signs: zfs=%s ufs=%s lu=%s\n", fcn, zfs ? zfs : "NULL", ufs ? ufs : "NULL", lu ? lu : "NULL")); @@ -5587,11 +5752,13 @@ find_backup_common(char *mntpt, char *fstype) } if (strcmp(fstype, "ufs") == 0 && zfs) { - bam_error(SIGN_FSTYPE_MISMATCH, zfs, "ufs"); + bam_error(_("found mismatched boot signature %s for " + "filesystem type: %s.\n"), zfs, "ufs"); free(zfs); zfs = NULL; } else if (strcmp(fstype, "zfs") == 0 && ufs) { - bam_error(SIGN_FSTYPE_MISMATCH, ufs, "zfs"); + bam_error(_("found mismatched boot signature %s for " + "filesystem type: %s.\n"), ufs, "zfs"); free(ufs); ufs = NULL; } @@ -5600,7 +5767,7 @@ find_backup_common(char *mntpt, char *fstype) /* For now, we let Live Upgrade take care of its signature itself */ if (lu) { - BAM_DPRINTF((D_FREEING_LU_SIGNS, fcn, lu)); + BAM_DPRINTF(("%s: feeing LU sign: %s\n", fcn, lu)); free(lu); lu = NULL; } @@ -5617,9 +5784,10 @@ find_ufs_existing(char *osroot) sign = find_primary_common(osroot, "ufs"); if (sign == NULL) { sign = find_backup_common(osroot, "ufs"); - BAM_DPRINTF((D_EXIST_BACKUP_SIGN, fcn, sign ? sign : "NULL")); + BAM_DPRINTF(("%s: existing backup sign: %s\n", fcn, + sign ? sign : "NULL")); } else { - BAM_DPRINTF((D_EXIST_PRIMARY_SIGN, fcn, sign)); + BAM_DPRINTF(("%s: existing primary sign: %s\n", fcn, sign)); } return (sign); @@ -5635,13 +5803,14 @@ get_mountpoint(char *special, char *fstype) int ret; const char *fcn = "get_mountpoint()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, special, fstype)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, special, fstype)); mntfp = fopen(MNTTAB, "r"); error = errno; INJECT_ERROR1("MNTTAB_ERR_GET_MNTPT", mntfp = NULL); if (mntfp == NULL) { - bam_error(OPEN_FAIL, MNTTAB, strerror(error)); + bam_error(_("failed to open file: %s: %s\n"), + MNTTAB, strerror(error)); return (NULL); } @@ -5652,14 +5821,16 @@ get_mountpoint(char *special, char *fstype) INJECT_ERROR1("GET_MOUNTPOINT_MNTANY", ret = 1); if (ret != 0) { (void) fclose(mntfp); - BAM_DPRINTF((D_NO_MNTPT, fcn, special, fstype)); + BAM_DPRINTF(("%s: no mount-point for special=%s and " + "fstype=%s\n", fcn, special, fstype)); return (NULL); } (void) fclose(mntfp); assert(mp.mnt_mountp); - BAM_DPRINTF((D_GET_MOUNTPOINT_RET, fcn, special, mp.mnt_mountp)); + BAM_DPRINTF(("%s: returning mount-point for special %s: %s\n", + fcn, special, mp.mnt_mountp)); return (s_strdup(mp.mnt_mountp)); } @@ -5680,7 +5851,7 @@ mount_legacy_dataset(char *pool, zfs_mnted_t *mnted) int ret; const char *fcn = "mount_legacy_dataset()"; - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, pool)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, pool)); *mnted = ZFS_MNT_ERROR; @@ -5691,13 +5862,14 @@ mount_legacy_dataset(char *pool, zfs_mnted_t *mnted) ret = exec_cmd(cmd, &flist); INJECT_ERROR1("Z_MOUNT_LEG_GET_MOUNTED_CMD", ret = 1); if (ret != 0) { - bam_error(ZFS_MNTED_FAILED, pool); + bam_error(_("failed to determine mount status of ZFS " + "pool %s\n"), pool); return (NULL); } INJECT_ERROR1("Z_MOUNT_LEG_GET_MOUNTED_OUT", flist.head = NULL); if ((flist.head == NULL) || (flist.head != flist.tail)) { - bam_error(BAD_ZFS_MNTED, pool); + bam_error(_("ZFS pool %s has bad mount status\n"), pool); filelist_free(&flist); return (NULL); } @@ -5709,7 +5881,8 @@ mount_legacy_dataset(char *pool, zfs_mnted_t *mnted) filelist_free(&flist); *mnted = LEGACY_ALREADY; /* get_mountpoint returns a strdup'ed string */ - BAM_DPRINTF((D_Z_MOUNT_TOP_LEG_ALREADY, fcn, pool)); + BAM_DPRINTF(("%s: legacy pool %s already mounted\n", + fcn, pool)); return (get_mountpoint(pool, "zfs")); } @@ -5724,15 +5897,18 @@ mount_legacy_dataset(char *pool, zfs_mnted_t *mnted) ret = stat(tmpmnt, &sb); if (ret == -1) { - BAM_DPRINTF((D_Z_MOUNT_TOP_LEG_MNTPT_ABS, fcn, pool, tmpmnt)); + BAM_DPRINTF(("%s: legacy pool %s mount-point %s absent\n", + fcn, pool, tmpmnt)); ret = mkdirp(tmpmnt, DIR_PERMS); INJECT_ERROR1("Z_MOUNT_TOP_LEG_MNTPT_MKDIRP", ret = -1); if (ret == -1) { - bam_error(MKDIR_FAILED, tmpmnt, strerror(errno)); + bam_error(_("mkdir of %s failed: %s\n"), tmpmnt, + strerror(errno)); return (NULL); } } else { - BAM_DPRINTF((D_Z_MOUNT_TOP_LEG_MNTPT_PRES, fcn, pool, tmpmnt)); + BAM_DPRINTF(("%s: legacy pool %s mount-point %s is already " + "present\n", fcn, pool, tmpmnt)); } (void) snprintf(cmd, sizeof (cmd), @@ -5742,13 +5918,14 @@ mount_legacy_dataset(char *pool, zfs_mnted_t *mnted) ret = exec_cmd(cmd, NULL); INJECT_ERROR1("Z_MOUNT_TOP_LEG_MOUNT_CMD", ret = 1); if (ret != 0) { - bam_error(ZFS_MOUNT_FAILED, pool); + bam_error(_("mount of ZFS pool %s failed\n"), pool); (void) rmdir(tmpmnt); return (NULL); } *mnted = LEGACY_MOUNTED; - BAM_DPRINTF((D_Z_MOUNT_TOP_LEG_MOUNTED, fcn, pool, tmpmnt)); + BAM_DPRINTF(("%s: legacy pool %s successfully mounted at %s\n", + fcn, pool, tmpmnt)); return (s_strdup(tmpmnt)); } @@ -5757,7 +5934,7 @@ mount_legacy_dataset(char *pool, zfs_mnted_t *mnted) * Returns: The mountpoint of the top dataset or NULL on error * mnted returns one of the above values defined for zfs_mnted_t */ -static char * +char * mount_top_dataset(char *pool, zfs_mnted_t *mnted) { char cmd[PATH_MAX]; @@ -5770,7 +5947,7 @@ mount_top_dataset(char *pool, zfs_mnted_t *mnted) *mnted = ZFS_MNT_ERROR; - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, pool)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, pool)); /* * First check if the top dataset is a "legacy" dataset @@ -5781,7 +5958,8 @@ mount_top_dataset(char *pool, zfs_mnted_t *mnted) ret = exec_cmd(cmd, &flist); INJECT_ERROR1("Z_MOUNT_TOP_GET_MNTPT", ret = 1); if (ret != 0) { - bam_error(ZFS_MNTPT_FAILED, pool); + bam_error(_("failed to determine mount point of ZFS pool %s\n"), + pool); return (NULL); } @@ -5789,14 +5967,14 @@ mount_top_dataset(char *pool, zfs_mnted_t *mnted) char *legacy = strtok(flist.head->line, " \t\n"); if (legacy && strcmp(legacy, "legacy") == 0) { filelist_free(&flist); - BAM_DPRINTF((D_Z_IS_LEGACY, fcn, pool)); + BAM_DPRINTF(("%s: is legacy, pool=%s\n", fcn, pool)); return (mount_legacy_dataset(pool, mnted)); } } filelist_free(&flist); - BAM_DPRINTF((D_Z_IS_NOT_LEGACY, fcn, pool)); + BAM_DPRINTF(("%s: is *NOT* legacy, pool=%s\n", fcn, pool)); (void) snprintf(cmd, sizeof (cmd), "/sbin/zfs get -Ho value mounted %s", @@ -5805,13 +5983,14 @@ mount_top_dataset(char *pool, zfs_mnted_t *mnted) ret = exec_cmd(cmd, &flist); INJECT_ERROR1("Z_MOUNT_TOP_NONLEG_GET_MOUNTED", ret = 1); if (ret != 0) { - bam_error(ZFS_MNTED_FAILED, pool); + bam_error(_("failed to determine mount status of ZFS " + "pool %s\n"), pool); return (NULL); } INJECT_ERROR1("Z_MOUNT_TOP_NONLEG_GET_MOUNTED_VAL", flist.head = NULL); if ((flist.head == NULL) || (flist.head != flist.tail)) { - bam_error(BAD_ZFS_MNTED, pool); + bam_error(_("ZFS pool %s has bad mount status\n"), pool); filelist_free(&flist); return (NULL); } @@ -5822,12 +6001,14 @@ mount_top_dataset(char *pool, zfs_mnted_t *mnted) if (strcmp(is_mounted, "no") != 0) { filelist_free(&flist); *mnted = ZFS_ALREADY; - BAM_DPRINTF((D_Z_MOUNT_TOP_NONLEG_MOUNTED_ALREADY, fcn, pool)); + BAM_DPRINTF(("%s: non-legacy pool %s mounted already\n", + fcn, pool)); goto mounted; } filelist_free(&flist); - BAM_DPRINTF((D_Z_MOUNT_TOP_NONLEG_MOUNTED_NOT_ALREADY, fcn, pool)); + BAM_DPRINTF(("%s: non-legacy pool %s *NOT* already mounted\n", + fcn, pool)); /* top dataset is not mounted. Mount it now */ (void) snprintf(cmd, sizeof (cmd), @@ -5835,11 +6016,11 @@ mount_top_dataset(char *pool, zfs_mnted_t *mnted) ret = exec_cmd(cmd, NULL); INJECT_ERROR1("Z_MOUNT_TOP_NONLEG_MOUNT_CMD", ret = 1); if (ret != 0) { - bam_error(ZFS_MOUNT_FAILED, pool); + bam_error(_("mount of ZFS pool %s failed\n"), pool); return (NULL); } *mnted = ZFS_MOUNTED; - BAM_DPRINTF((D_Z_MOUNT_TOP_NONLEG_MOUNTED_NOW, fcn, pool)); + BAM_DPRINTF(("%s: non-legacy pool %s mounted now\n", fcn, pool)); /*FALLTHRU*/ mounted: /* @@ -5852,38 +6033,41 @@ mounted: ret = exec_cmd(cmd, &flist); INJECT_ERROR1("Z_MOUNT_TOP_NONLEG_GET_MNTPT_CMD", ret = 1); if (ret != 0) { - bam_error(ZFS_MNTPT_FAILED, pool); + bam_error(_("failed to determine mount point of ZFS pool %s\n"), + pool); goto error; } INJECT_ERROR1("Z_MOUNT_TOP_NONLEG_GET_MNTPT_OUT", flist.head = NULL); if ((flist.head == NULL) || (flist.head != flist.tail)) { - bam_error(NULL_ZFS_MNTPT, pool); + bam_error(_("ZFS pool %s has no mount-point\n"), pool); goto error; } mntpt = strtok(flist.head->line, " \t\n"); INJECT_ERROR1("Z_MOUNT_TOP_NONLEG_GET_MNTPT_STRTOK", mntpt = "foo"); if (*mntpt != '/') { - bam_error(BAD_ZFS_MNTPT, pool, mntpt); + bam_error(_("ZFS pool %s has bad mount-point %s\n"), + pool, mntpt); goto error; } zmntpt = s_strdup(mntpt); filelist_free(&flist); - BAM_DPRINTF((D_Z_MOUNT_TOP_NONLEG_MNTPT, fcn, pool, zmntpt)); + BAM_DPRINTF(("%s: non-legacy pool %s is mounted at %s\n", + fcn, pool, zmntpt)); return (zmntpt); error: filelist_free(&flist); (void) umount_top_dataset(pool, *mnted, NULL); - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); return (NULL); } -static int +int umount_top_dataset(char *pool, zfs_mnted_t mnted, char *mntpt) { char cmd[PATH_MAX]; @@ -5895,8 +6079,8 @@ umount_top_dataset(char *pool, zfs_mnted_t mnted, char *mntpt) case LEGACY_ALREADY: case ZFS_ALREADY: /* nothing to do */ - BAM_DPRINTF((D_Z_UMOUNT_TOP_ALREADY_NOP, fcn, pool, - mntpt ? mntpt : "NULL")); + BAM_DPRINTF(("%s: pool %s was already mounted at %s, Nothing " + "to umount\n", fcn, pool, mntpt ? mntpt : "NULL")); free(mntpt); return (BAM_SUCCESS); case LEGACY_MOUNTED: @@ -5905,14 +6089,15 @@ umount_top_dataset(char *pool, zfs_mnted_t mnted, char *mntpt) ret = exec_cmd(cmd, NULL); INJECT_ERROR1("Z_UMOUNT_TOP_LEGACY_UMOUNT_FAIL", ret = 1); if (ret != 0) { - bam_error(UMOUNT_FAILED, pool); + bam_error(_("umount of %s failed\n"), pool); free(mntpt); return (BAM_ERROR); } if (mntpt) (void) rmdir(mntpt); free(mntpt); - BAM_DPRINTF((D_Z_UMOUNT_TOP_LEGACY, fcn, pool)); + BAM_DPRINTF(("%s: legacy pool %s was mounted by us, " + "successfully unmounted\n", fcn, pool)); return (BAM_SUCCESS); case ZFS_MOUNTED: free(mntpt); @@ -5921,13 +6106,15 @@ umount_top_dataset(char *pool, zfs_mnted_t mnted, char *mntpt) ret = exec_cmd(cmd, NULL); INJECT_ERROR1("Z_UMOUNT_TOP_NONLEG_UMOUNT_FAIL", ret = 1); if (ret != 0) { - bam_error(UMOUNT_FAILED, pool); + bam_error(_("umount of %s failed\n"), pool); return (BAM_ERROR); } - BAM_DPRINTF((D_Z_UMOUNT_TOP_NONLEG, fcn, pool)); + BAM_DPRINTF(("%s: nonleg pool %s was mounted by us, " + "successfully unmounted\n", fcn, pool)); return (BAM_SUCCESS); default: - bam_error(INT_BAD_MNTSTATE, pool); + bam_error(_("Internal error: bad saved mount state for " + "pool %s\n"), pool); return (BAM_ERROR); } /*NOTREACHED*/ @@ -5952,11 +6139,11 @@ get_pool(char *osdev) INJECT_ERROR1("GET_POOL_OSDEV", osdev = NULL); if (osdev == NULL) { - bam_error(GET_POOL_OSDEV_NULL); + bam_error(_("NULL device: cannot determine pool name\n")); return (NULL); } - BAM_DPRINTF((D_GET_POOL_OSDEV, fcn, osdev)); + BAM_DPRINTF(("%s: osdev arg = %s\n", fcn, osdev)); if (osdev[0] != '/') { (void) strlcpy(buf, osdev, sizeof (buf)); @@ -5964,11 +6151,12 @@ get_pool(char *osdev) if (slash) *slash = '\0'; pool = s_strdup(buf); - BAM_DPRINTF((D_GET_POOL_RET, fcn, pool)); + BAM_DPRINTF(("%s: got pool. pool = %s\n", fcn, pool)); return (pool); } else if (strncmp(osdev, "/dev/dsk/", strlen("/dev/dsk/")) != 0 && strncmp(osdev, "/dev/rdsk/", strlen("/dev/rdsk/")) != 0) { - bam_error(GET_POOL_BAD_OSDEV, osdev); + bam_error(_("invalid device %s: cannot determine pool name\n"), + osdev); return (NULL); } @@ -5983,13 +6171,13 @@ get_pool(char *osdev) ret = exec_cmd(cmd, &flist); INJECT_ERROR1("GET_POOL_FSTYP", ret = 1); if (ret != 0) { - bam_error(FSTYP_A_FAILED, osdev); + bam_error(_("fstyp -a on device %s failed\n"), osdev); return (NULL); } INJECT_ERROR1("GET_POOL_FSTYP_OUT", flist.head = NULL); if ((flist.head == NULL) || (flist.head != flist.tail)) { - bam_error(NULL_FSTYP_A, osdev); + bam_error(_("NULL fstyp -a output for device %s\n"), osdev); filelist_free(&flist); return (NULL); } @@ -5998,7 +6186,7 @@ get_pool(char *osdev) cp = strtok(NULL, "'"); INJECT_ERROR1("GET_POOL_FSTYP_STRTOK", cp = NULL); if (cp == NULL) { - bam_error(BAD_FSTYP_A, osdev); + bam_error(_("bad fstyp -a output for device %s\n"), osdev); filelist_free(&flist); return (NULL); } @@ -6007,7 +6195,7 @@ get_pool(char *osdev) filelist_free(&flist); - BAM_DPRINTF((D_GET_POOL_RET, fcn, pool)); + BAM_DPRINTF(("%s: got pool. pool = %s\n", fcn, pool)); return (pool); } @@ -6024,14 +6212,15 @@ find_zfs_existing(char *osdev) pool = get_pool(osdev); INJECT_ERROR1("ZFS_FIND_EXIST_POOL", pool = NULL); if (pool == NULL) { - bam_error(ZFS_GET_POOL_FAILED, osdev); + bam_error(_("failed to get pool for device: %s\n"), osdev); return (NULL); } mntpt = mount_top_dataset(pool, &mnted); INJECT_ERROR1("ZFS_FIND_EXIST_MOUNT_TOP", mntpt = NULL); if (mntpt == NULL) { - bam_error(ZFS_MOUNT_TOP_DATASET_FAILED, pool); + bam_error(_("failed to mount top dataset for pool: %s\n"), + pool); free(pool); return (NULL); } @@ -6039,9 +6228,10 @@ find_zfs_existing(char *osdev) sign = find_primary_common(mntpt, "zfs"); if (sign == NULL) { sign = find_backup_common(mntpt, "zfs"); - BAM_DPRINTF((D_EXIST_BACKUP_SIGN, fcn, sign ? sign : "NULL")); + BAM_DPRINTF(("%s: existing backup sign: %s\n", fcn, + sign ? sign : "NULL")); } else { - BAM_DPRINTF((D_EXIST_PRIMARY_SIGN, fcn, sign)); + BAM_DPRINTF(("%s: existing primary sign: %s\n", fcn, sign)); } (void) umount_top_dataset(pool, mnted, mntpt); @@ -6058,13 +6248,14 @@ find_existing_sign(char *osroot, char *osdev, char *fstype) INJECT_ERROR1("FIND_EXIST_NOTSUP_FS", fstype = "foofs"); if (strcmp(fstype, "ufs") == 0) { - BAM_DPRINTF((D_CHECK_UFS_EXIST_SIGN, fcn)); + BAM_DPRINTF(("%s: checking for existing UFS sign\n", fcn)); return (find_ufs_existing(osroot)); } else if (strcmp(fstype, "zfs") == 0) { - BAM_DPRINTF((D_CHECK_ZFS_EXIST_SIGN, fcn)); + BAM_DPRINTF(("%s: checking for existing ZFS sign\n", fcn)); return (find_zfs_existing(osdev)); } else { - bam_error(GRUBSIGN_NOTSUP, fstype); + bam_error(_("boot signature not supported for fstype: %s\n"), + fstype); return (NULL); } } @@ -6122,7 +6313,8 @@ cache_mnttab(void) error = errno; INJECT_ERROR1("CACHE_MNTTAB_MNTTAB_ERR", mfp = NULL); if (mfp == NULL) { - bam_error(OPEN_FAIL, MNTTAB, strerror(error)); + bam_error(_("failed to open file: %s: %s\n"), MNTTAB, + strerror(error)); return (NULL); } @@ -6143,8 +6335,8 @@ cache_mnttab(void) mcp->mc_special = s_strdup(ctds); mcp->mc_mntpt = s_strdup(mnt.mnt_mountp); mcp->mc_fstype = s_strdup(mnt.mnt_fstype); - BAM_DPRINTF((D_CACHE_MNTS, fcn, ctds, - mnt.mnt_mountp, mnt.mnt_fstype)); + BAM_DPRINTF(("%s: caching mount: special=%s, mntpt=%s, " + "fstype=%s\n", fcn, ctds, mnt.mnt_mountp, mnt.mnt_fstype)); idx = mhash_fcn(ctds); mcp->mc_next = mhp->mh_hash[idx]; mhp->mh_hash[idx] = mcp; @@ -6191,7 +6383,7 @@ search_hash(mhash_t *mhp, char *special, char **mntpt) INJECT_ERROR1("SEARCH_HASH_FULL_PATH", special = "/foo"); if (strchr(special, '/')) { - bam_error(INVALID_MHASH_KEY, special); + bam_error(_("invalid key for mnttab hash: %s\n"), special); return (MH_ERROR); } @@ -6203,13 +6395,13 @@ search_hash(mhash_t *mhp, char *special, char **mntpt) } if (mcp == NULL) { - BAM_DPRINTF((D_MNTTAB_HASH_NOMATCH, fcn, special)); + BAM_DPRINTF(("%s: no match in cache for: %s\n", fcn, special)); return (MH_NOMATCH); } assert(strcmp(mcp->mc_fstype, "ufs") == 0); *mntpt = mcp->mc_mntpt; - BAM_DPRINTF((D_MNTTAB_HASH_MATCH, fcn, special)); + BAM_DPRINTF(("%s: *MATCH* in cache for: %s\n", fcn, special)); return (MH_MATCH); } @@ -6227,7 +6419,8 @@ check_add_ufs_sign_to_list(FILE *tfp, char *mntpt) sign = find_existing_sign(mntpt, NULL, "ufs"); if (sign == NULL) { /* No existing signature, nothing to add to list */ - BAM_DPRINTF((D_NO_SIGN_TO_LIST, fcn, mntpt)); + BAM_DPRINTF(("%s: no sign on %s to add to signlist\n", + fcn, mntpt)); return (0); } @@ -6237,7 +6430,7 @@ check_add_ufs_sign_to_list(FILE *tfp, char *mntpt) INJECT_ERROR1("UFS_MNTPT_SIGN_NOTUFS", signline = "pool_rpool10\n"); if (strncmp(signline, GRUBSIGN_UFS_PREFIX, strlen(GRUBSIGN_UFS_PREFIX))) { - bam_error(INVALID_UFS_SIGNATURE, sign); + bam_error(_("invalid UFS boot signature %s\n"), sign); free(sign); /* ignore invalid signatures */ return (0); @@ -6247,14 +6440,16 @@ check_add_ufs_sign_to_list(FILE *tfp, char *mntpt) error = errno; INJECT_ERROR1("SIGN_LIST_PUTS_ERROR", len = 0); if (len != strlen(signline)) { - bam_error(SIGN_LIST_FPUTS_ERR, sign, strerror(error)); + bam_error(_("failed to write signature %s to signature " + "list: %s\n"), sign, strerror(error)); free(sign); return (-1); } free(sign); - BAM_DPRINTF((D_SIGN_LIST_PUTS_DONE, fcn, mntpt)); + BAM_DPRINTF(("%s: successfully added sign on %s to signlist\n", + fcn, mntpt)); return (0); } @@ -6291,7 +6486,7 @@ process_slice_common(char *slice, FILE *tfp, mhash_t *mhp, char *tmpmnt) (void) snprintf(path, sizeof (path), "/dev/rdsk/%s", slice); if (stat(path, &sbuf) == -1) { - BAM_DPRINTF((D_SLICE_ENOENT, fcn, path)); + BAM_DPRINTF(("%s: slice does not exist: %s\n", fcn, path)); return (0); } @@ -6302,13 +6497,14 @@ process_slice_common(char *slice, FILE *tfp, mhash_t *mhp, char *tmpmnt) if (exec_cmd(cmd, &flist) != 0) { if (bam_verbose) - bam_print(FSTYP_FAILED, slice); + bam_print(_("fstyp failed for slice: %s\n"), slice); return (0); } if ((flist.head == NULL) || (flist.head != flist.tail)) { if (bam_verbose) - bam_print(FSTYP_BAD, slice); + bam_print(_("bad output from fstyp for slice: %s\n"), + slice); filelist_free(&flist); return (0); } @@ -6316,7 +6512,8 @@ process_slice_common(char *slice, FILE *tfp, mhash_t *mhp, char *tmpmnt) fstype = strtok(flist.head->line, " \t\n"); if (fstype == NULL || strcmp(fstype, "ufs") != 0) { if (bam_verbose) - bam_print(NOT_UFS_SLICE, slice, fstype); + bam_print(_("%s is not a ufs slice: %s\n"), + slice, fstype); filelist_free(&flist); return (0); } @@ -6338,7 +6535,8 @@ process_slice_common(char *slice, FILE *tfp, mhash_t *mhp, char *tmpmnt) if (exec_cmd(cmd, NULL) != 0) { if (bam_verbose) - bam_print(MOUNT_FAILED, blkslice, "ufs"); + bam_print(_("mount of %s (fstype %s) failed\n"), + blkslice, "ufs"); return (0); } @@ -6349,7 +6547,7 @@ process_slice_common(char *slice, FILE *tfp, mhash_t *mhp, char *tmpmnt) tmpmnt); if (exec_cmd(cmd, NULL) != 0) { - bam_print(UMOUNT_FAILED, slice); + bam_print(_("umount of %s failed\n"), slice); return (0); } @@ -6387,7 +6585,8 @@ process_vtoc_slices( (void) snprintf(cp, sizeof (slice) - (len - 1), "%u", idx); if (vtoc->v_part[idx].p_size == 0) { - BAM_DPRINTF((D_VTOC_SIZE_ZERO, fcn, slice)); + BAM_DPRINTF(("%s: VTOC: skipping 0-length slice: %s\n", + fcn, slice)); continue; } @@ -6399,10 +6598,12 @@ process_vtoc_slices( case V_VAR: case V_HOME: case V_ALTSCTR: - BAM_DPRINTF((D_VTOC_NOT_ROOT_TAG, fcn, slice)); + BAM_DPRINTF(("%s: VTOC: unsupported tag, " + "skipping: %s\n", fcn, slice)); continue; default: - BAM_DPRINTF((D_VTOC_ROOT_TAG, fcn, slice)); + BAM_DPRINTF(("%s: VTOC: supported tag, checking: %s\n", + fcn, slice)); break; } @@ -6410,10 +6611,12 @@ process_vtoc_slices( switch (vtoc->v_part[idx].p_flag) { case V_UNMNT: case V_RONLY: - BAM_DPRINTF((D_VTOC_NOT_RDWR_FLAG, fcn, slice)); + BAM_DPRINTF(("%s: VTOC: non-RDWR flag, skipping: %s\n", + fcn, slice)); continue; default: - BAM_DPRINTF((D_VTOC_RDWR_FLAG, fcn, slice)); + BAM_DPRINTF(("%s: VTOC: RDWR flag, checking: %s\n", + fcn, slice)); break; } @@ -6456,7 +6659,8 @@ process_efi_slices( (void) snprintf(cp, sizeof (slice) - (len - 1), "%u", idx); if (efi->efi_parts[idx].p_size == 0) { - BAM_DPRINTF((D_EFI_SIZE_ZERO, fcn, slice)); + BAM_DPRINTF(("%s: EFI: skipping 0-length slice: %s\n", + fcn, slice)); continue; } @@ -6468,10 +6672,12 @@ process_efi_slices( case V_VAR: case V_HOME: case V_ALTSCTR: - BAM_DPRINTF((D_EFI_NOT_ROOT_TAG, fcn, slice)); + BAM_DPRINTF(("%s: EFI: unsupported tag, skipping: %s\n", + fcn, slice)); continue; default: - BAM_DPRINTF((D_EFI_ROOT_TAG, fcn, slice)); + BAM_DPRINTF(("%s: EFI: supported tag, checking: %s\n", + fcn, slice)); break; } @@ -6479,10 +6685,12 @@ process_efi_slices( switch (efi->efi_parts[idx].p_flag) { case V_UNMNT: case V_RONLY: - BAM_DPRINTF((D_EFI_NOT_RDWR_FLAG, fcn, slice)); + BAM_DPRINTF(("%s: EFI: non-RDWR flag, skipping: %s\n", + fcn, slice)); continue; default: - BAM_DPRINTF((D_EFI_RDWR_FLAG, fcn, slice)); + BAM_DPRINTF(("%s: EFI: RDWR flag, checking: %s\n", + fcn, slice)); break; } @@ -6514,13 +6722,14 @@ process_slice0(char *s0, FILE *tfp, mhash_t *mhp, char *tmpmnt) (void) snprintf(s0path, sizeof (s0path), "/dev/rdsk/%s", s0); if (stat(s0path, &sbuf) == -1) { - BAM_DPRINTF((D_SLICE0_ENOENT, fcn, s0path)); + BAM_DPRINTF(("%s: slice 0 does not exist: %s\n", fcn, s0path)); return (0); } fd = open(s0path, O_NONBLOCK|O_RDONLY); if (fd == -1) { - bam_error(OPEN_FAIL, s0path, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), s0path, + strerror(errno)); return (0); } @@ -6528,24 +6737,30 @@ process_slice0(char *s0, FILE *tfp, mhash_t *mhp, char *tmpmnt) retval = ((err = read_vtoc(fd, &vtoc)) >= 0) ? 0 : err; switch (retval) { case VT_EIO: - BAM_DPRINTF((D_VTOC_READ_FAIL, fcn, s0path)); + BAM_DPRINTF(("%s: VTOC: failed to read: %s\n", + fcn, s0path)); break; case VT_EINVAL: - BAM_DPRINTF((D_VTOC_INVALID, fcn, s0path)); + BAM_DPRINTF(("%s: VTOC: is INVALID: %s\n", + fcn, s0path)); break; case VT_ERROR: - BAM_DPRINTF((D_VTOC_UNKNOWN_ERR, fcn, s0path)); + BAM_DPRINTF(("%s: VTOC: unknown error while " + "reading: %s\n", fcn, s0path)); break; case VT_ENOTSUP: e_flag = 1; - BAM_DPRINTF((D_VTOC_NOTSUP, fcn, s0path)); + BAM_DPRINTF(("%s: VTOC: not supported: %s\n", + fcn, s0path)); break; case 0: v_flag = 1; - BAM_DPRINTF((D_VTOC_READ_SUCCESS, fcn, s0path)); + BAM_DPRINTF(("%s: VTOC: SUCCESS reading: %s\n", + fcn, s0path)); break; default: - BAM_DPRINTF((D_VTOC_UNKNOWN_RETCODE, fcn, s0path)); + BAM_DPRINTF(("%s: VTOC: READ: unknown return " + "code: %s\n", fcn, s0path)); break; } @@ -6555,23 +6770,28 @@ process_slice0(char *s0, FILE *tfp, mhash_t *mhp, char *tmpmnt) retval = ((err = efi_alloc_and_read(fd, &efi)) >= 0) ? 0 : err; switch (retval) { case VT_EIO: - BAM_DPRINTF((D_EFI_READ_FAIL, fcn, s0path)); + BAM_DPRINTF(("%s: EFI: failed to read: %s\n", + fcn, s0path)); break; case VT_EINVAL: - BAM_DPRINTF((D_EFI_INVALID, fcn, s0path)); + BAM_DPRINTF(("%s: EFI: is INVALID: %s\n", fcn, s0path)); break; case VT_ERROR: - BAM_DPRINTF((D_EFI_UNKNOWN_ERR, fcn, s0path)); + BAM_DPRINTF(("%s: EFI: unknown error while " + "reading: %s\n", fcn, s0path)); break; case VT_ENOTSUP: - BAM_DPRINTF((D_EFI_NOTSUP, fcn, s0path)); + BAM_DPRINTF(("%s: EFI: not supported: %s\n", + fcn, s0path)); break; case 0: e_flag = 1; - BAM_DPRINTF((D_EFI_READ_SUCCESS, fcn, s0path)); + BAM_DPRINTF(("%s: EFI: SUCCESS reading: %s\n", + fcn, s0path)); break; default: - BAM_DPRINTF((D_EFI_UNKNOWN_RETCODE, fcn, s0path)); + BAM_DPRINTF(("%s: EFI: READ: unknown return code: %s\n", + fcn, s0path)); break; } } @@ -6585,7 +6805,8 @@ process_slice0(char *s0, FILE *tfp, mhash_t *mhp, char *tmpmnt) retval = process_efi_slices(s0, efi, tfp, mhp, tmpmnt); } else { - BAM_DPRINTF((D_NOT_VTOC_OR_EFI, fcn, s0path)); + BAM_DPRINTF(("%s: disk has neither VTOC nor EFI: %s\n", + fcn, s0path)); return (0); } @@ -6612,7 +6833,8 @@ FindAllUfsSignatures(void) const char *fcn = "FindAllUfsSignatures()"; if (stat(UFS_SIGNATURE_LIST, &sb) != -1) { - bam_print(SIGNATURE_LIST_EXISTS, UFS_SIGNATURE_LIST); + bam_print(_(" - signature list %s exists\n"), + UFS_SIGNATURE_LIST); return (0); } @@ -6621,7 +6843,8 @@ FindAllUfsSignatures(void) error = errno; INJECT_ERROR1("SIGN_LIST_TMP_TRUNC", fd = -1); if (fd == -1) { - bam_error(OPEN_FAIL, UFS_SIGNATURE_LIST".tmp", strerror(error)); + bam_error(_("failed to open file: %s: %s\n"), + UFS_SIGNATURE_LIST".tmp", strerror(error)); return (-1); } @@ -6629,8 +6852,8 @@ FindAllUfsSignatures(void) error = errno; INJECT_ERROR1("SIGN_LIST_TMP_CLOSE", ret = -1); if (ret == -1) { - bam_error(CLOSE_FAIL, UFS_SIGNATURE_LIST".tmp", - strerror(error)); + bam_error(_("failed to close file: %s: %s\n"), + UFS_SIGNATURE_LIST".tmp", strerror(error)); (void) unlink(UFS_SIGNATURE_LIST".tmp"); return (-1); } @@ -6639,7 +6862,8 @@ FindAllUfsSignatures(void) error = errno; INJECT_ERROR1("SIGN_LIST_APPEND_FOPEN", tfp = NULL); if (tfp == NULL) { - bam_error(OPEN_FAIL, UFS_SIGNATURE_LIST".tmp", strerror(error)); + bam_error(_("failed to open file: %s: %s\n"), + UFS_SIGNATURE_LIST".tmp", strerror(error)); (void) unlink(UFS_SIGNATURE_LIST".tmp"); return (-1); } @@ -6649,7 +6873,7 @@ FindAllUfsSignatures(void) if (mnttab_hash == NULL) { (void) fclose(tfp); (void) unlink(UFS_SIGNATURE_LIST".tmp"); - bam_error(CACHE_MNTTAB_FAIL, fcn); + bam_error(_("%s: failed to cache /etc/mnttab\n"), fcn); return (-1); } @@ -6661,7 +6885,8 @@ FindAllUfsSignatures(void) error = errno; INJECT_ERROR1("MKDIRP_SIGN_MNT", ret = -1); if (ret == -1) { - bam_error(MKDIR_FAILED, tmpmnt, strerror(error)); + bam_error(_("mkdir of %s failed: %s\n"), tmpmnt, + strerror(error)); free_mnttab(mnttab_hash); (void) fclose(tfp); (void) unlink(UFS_SIGNATURE_LIST".tmp"); @@ -6672,7 +6897,8 @@ FindAllUfsSignatures(void) error = errno; INJECT_ERROR1("OPENDIR_DEV_RDSK", dirp = NULL); if (dirp == NULL) { - bam_error(OPENDIR_FAILED, "/dev/rdsk", strerror(error)); + bam_error(_("opendir of %s failed: %s\n"), "/dev/rdsk", + strerror(error)); goto fail; } @@ -6687,7 +6913,8 @@ FindAllUfsSignatures(void) */ len = strlen(dp->d_name); if (dp->d_name[len - 2 ] != 's' || dp->d_name[len - 1] != '0') { - BAM_DPRINTF((D_SKIP_SLICE_NOTZERO, fcn, dp->d_name)); + BAM_DPRINTF(("%s: skipping non-s0 slice: %s\n", + fcn, dp->d_name)); continue; } @@ -6705,8 +6932,8 @@ FindAllUfsSignatures(void) error = errno; INJECT_ERROR1("FCLOSE_SIGNLIST_TMP", ret = EOF); if (ret == EOF) { - bam_error(CLOSE_FAIL, UFS_SIGNATURE_LIST".tmp", - strerror(error)); + bam_error(_("failed to close file: %s: %s\n"), + UFS_SIGNATURE_LIST".tmp", strerror(error)); (void) unlink(UFS_SIGNATURE_LIST".tmp"); return (-1); } @@ -6719,7 +6946,7 @@ FindAllUfsSignatures(void) ret = exec_cmd(cmd, NULL); INJECT_ERROR1("SORT_SIGN_LIST", ret = 1); if (ret != 0) { - bam_error(GRUBSIGN_SORT_FAILED); + bam_error(_("error sorting GRUB UFS boot signatures\n")); (void) unlink(UFS_SIGNATURE_LIST".sorted"); (void) unlink(UFS_SIGNATURE_LIST".tmp"); return (-1); @@ -6731,16 +6958,18 @@ FindAllUfsSignatures(void) error = errno; INJECT_ERROR1("RENAME_TMP_SIGNLIST", ret = -1); if (ret == -1) { - bam_error(RENAME_FAIL, UFS_SIGNATURE_LIST, strerror(error)); + bam_error(_("rename to file failed: %s: %s\n"), + UFS_SIGNATURE_LIST, strerror(error)); (void) unlink(UFS_SIGNATURE_LIST".sorted"); return (-1); } if (stat(UFS_SIGNATURE_LIST, &sb) == 0 && sb.st_size == 0) { - BAM_DPRINTF((D_ZERO_LEN_SIGNLIST, fcn, UFS_SIGNATURE_LIST)); + BAM_DPRINTF(("%s: generated zero length signlist: %s.\n", + fcn, UFS_SIGNATURE_LIST)); } - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (0); fail: @@ -6750,7 +6979,7 @@ fail: (void) rmdir(tmpmnt); (void) fclose(tfp); (void) unlink(UFS_SIGNATURE_LIST".tmp"); - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); return (-1); } @@ -6767,12 +6996,12 @@ create_ufs_sign(void) int error; const char *fcn = "create_ufs_sign()"; - bam_print(SEARCHING_UFS_SIGN); + bam_print(_(" - searching for UFS boot signatures\n")); ret = FindAllUfsSignatures(); INJECT_ERROR1("FIND_ALL_UFS", ret = -1); if (ret == -1) { - bam_error(ERR_FIND_UFS_SIGN); + bam_error(_("search for UFS boot signatures failed\n")); return (NULL); } @@ -6781,12 +7010,13 @@ create_ufs_sign(void) (void) unlink(UFS_SIGNATURE_LIST)); if (stat(UFS_SIGNATURE_LIST, &sb) == -1 || sb.st_uid != 0) { (void) unlink(UFS_SIGNATURE_LIST); - bam_error(UFS_SIGNATURE_LIST_MISS, UFS_SIGNATURE_LIST); + bam_error(_("missing UFS signature list file: %s\n"), + UFS_SIGNATURE_LIST); return (NULL); } if (sb.st_size == 0) { - bam_print(GRUBSIGN_UFS_NONE); + bam_print(_(" - no existing UFS boot signatures\n")); i = 0; goto found; } @@ -6796,8 +7026,8 @@ create_ufs_sign(void) error = errno; INJECT_ERROR1("FOPEN_SIGN_LIST", tfp = NULL); if (tfp == NULL) { - bam_error(UFS_SIGNATURE_LIST_OPENERR, - UFS_SIGNATURE_LIST, strerror(error)); + bam_error(_("error opening UFS boot signature list " + "file %s: %s\n"), UFS_SIGNATURE_LIST, strerror(error)); (void) unlink(UFS_SIGNATURE_LIST); return (NULL); } @@ -6808,7 +7038,7 @@ create_ufs_sign(void) strlen(GRUBSIGN_UFS_PREFIX)) != 0) { (void) fclose(tfp); (void) unlink(UFS_SIGNATURE_LIST); - bam_error(UFS_BADSIGN, tmpsign); + bam_error(_("bad UFS boot signature: %s\n"), tmpsign); return (NULL); } numstr = tmpsign + strlen(GRUBSIGN_UFS_PREFIX); @@ -6816,7 +7046,7 @@ create_ufs_sign(void) if (numstr[0] == '\0' || !isdigit(numstr[0])) { (void) fclose(tfp); (void) unlink(UFS_SIGNATURE_LIST); - bam_error(UFS_BADSIGN, tmpsign); + bam_error(_("bad UFS boot signature: %s\n"), tmpsign); return (NULL); } @@ -6825,12 +7055,13 @@ create_ufs_sign(void) if (signnum < 0) { (void) fclose(tfp); (void) unlink(UFS_SIGNATURE_LIST); - bam_error(UFS_BADSIGN, tmpsign); + bam_error(_("bad UFS boot signature: %s\n"), tmpsign); return (NULL); } if (i != signnum) { - BAM_DPRINTF((D_FOUND_HOLE_SIGNLIST, fcn, i)); + BAM_DPRINTF(("%s: found hole %d in sign list.\n", + fcn, i)); break; } } @@ -6845,11 +7076,11 @@ found: INJECT_ERROR1("UFS_ADD_TO_SIGN_LIST", ret = -1); if (ret == -1) { (void) unlink(UFS_SIGNATURE_LIST); - bam_error(FAILED_ADD_SIGNLIST, tmpsign); + bam_error(_("failed to add sign %s to signlist.\n"), tmpsign); return (NULL); } - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (s_strdup(tmpsign)); } @@ -6866,7 +7097,7 @@ get_fstype(char *osroot) INJECT_ERROR1("GET_FSTYPE_OSROOT", osroot = NULL); if (osroot == NULL) { - bam_error(GET_FSTYPE_ARGS); + bam_error(_("no OS mountpoint. Cannot determine fstype\n")); return (NULL); } @@ -6874,7 +7105,8 @@ get_fstype(char *osroot) error = errno; INJECT_ERROR1("GET_FSTYPE_FOPEN", mntfp = NULL); if (mntfp == NULL) { - bam_error(OPEN_FAIL, MNTTAB, strerror(error)); + bam_error(_("failed to open file: %s: %s\n"), MNTTAB, + strerror(error)); return (NULL); } @@ -6886,7 +7118,8 @@ get_fstype(char *osroot) ret = getmntany(mntfp, &mp, &mpref); INJECT_ERROR1("GET_FSTYPE_GETMNTANY", ret = 1); if (ret != 0) { - bam_error(MNTTAB_MNTPT_NOT_FOUND, osroot, MNTTAB); + bam_error(_("failed to find OS mountpoint %s in %s\n"), + osroot, MNTTAB); (void) fclose(mntfp); return (NULL); } @@ -6894,11 +7127,11 @@ get_fstype(char *osroot) INJECT_ERROR1("GET_FSTYPE_NULL", mp.mnt_fstype = NULL); if (mp.mnt_fstype == NULL) { - bam_error(MNTTAB_FSTYPE_NULL, osroot); + bam_error(_("NULL fstype found for OS root %s\n"), osroot); return (NULL); } - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (s_strdup(mp.mnt_fstype)); } @@ -6910,7 +7143,7 @@ create_zfs_sign(char *osdev) char *pool; const char *fcn = "create_zfs_sign()"; - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, osdev)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, osdev)); /* * First find the pool name @@ -6918,17 +7151,17 @@ create_zfs_sign(char *osdev) pool = get_pool(osdev); INJECT_ERROR1("CREATE_ZFS_SIGN_GET_POOL", pool = NULL); if (pool == NULL) { - bam_error(GET_POOL_FAILED, osdev); + bam_error(_("failed to get pool name from %s\n"), osdev); return (NULL); } (void) snprintf(tmpsign, sizeof (tmpsign), "pool_%s", pool); - BAM_DPRINTF((D_CREATED_ZFS_SIGN, fcn, tmpsign)); + BAM_DPRINTF(("%s: created ZFS sign: %s\n", fcn, tmpsign)); free(pool); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (s_strdup(tmpsign)); } @@ -6942,17 +7175,19 @@ create_new_sign(char *osdev, char *fstype) INJECT_ERROR1("NEW_SIGN_FSTYPE", fstype = "foofs"); if (strcmp(fstype, "zfs") == 0) { - BAM_DPRINTF((D_CREATE_NEW_ZFS, fcn)); + BAM_DPRINTF(("%s: created new ZFS sign\n", fcn)); sign = create_zfs_sign(osdev); } else if (strcmp(fstype, "ufs") == 0) { - BAM_DPRINTF((D_CREATE_NEW_UFS, fcn)); + BAM_DPRINTF(("%s: created new UFS sign\n", fcn)); sign = create_ufs_sign(); } else { - bam_error(GRUBSIGN_NOTSUP, fstype); + bam_error(_("boot signature not supported for fstype: %s\n"), + fstype); sign = NULL; } - BAM_DPRINTF((D_CREATED_NEW_SIGN, fcn, sign ? sign : "<NULL>")); + BAM_DPRINTF(("%s: created new sign: %s\n", fcn, + sign ? sign : "<NULL>")); return (sign); } @@ -6977,15 +7212,17 @@ set_backup_common(char *mntpt, char *sign) if (bfp != NULL) { while (s_fgets(tmpsign, sizeof (tmpsign), bfp)) { if (strcmp(tmpsign, sign) == 0) { - BAM_DPRINTF((D_FOUND_IN_BACKUP, fcn, sign)); + BAM_DPRINTF(("%s: found sign (%s) in backup.\n", + fcn, sign)); (void) fclose(bfp); return (0); } } (void) fclose(bfp); - BAM_DPRINTF((D_NOT_FOUND_IN_EXIST_BACKUP, fcn, sign)); + BAM_DPRINTF(("%s: backup exists but sign %s not found\n", + fcn, sign)); } else { - BAM_DPRINTF((D_BACKUP_NOT_EXIST, fcn, backup)); + BAM_DPRINTF(("%s: no backup file (%s) found.\n", fcn, backup)); } /* @@ -7001,12 +7238,13 @@ set_backup_common(char *mntpt, char *sign) ret = stat(bdir, &sb); INJECT_ERROR1("SET_BACKUP_STAT", ret = -1); if (ret == -1) { - BAM_DPRINTF((D_BACKUP_DIR_NOEXIST, fcn, bdir)); + BAM_DPRINTF(("%s: backup dir (%s) does not exist.\n", + fcn, bdir)); ret = mkdirp(bdir, DIR_PERMS); error = errno; INJECT_ERROR1("SET_BACKUP_MKDIRP", ret = -1); if (ret == -1) { - bam_error(GRUBSIGN_BACKUP_MKDIRERR, + bam_error(_("mkdirp() of backup dir failed: %s: %s\n"), GRUBSIGN_BACKUP, strerror(error)); free(backup_dup); return (-1); @@ -7022,8 +7260,8 @@ set_backup_common(char *mntpt, char *sign) error = errno; INJECT_ERROR1("SET_BACKUP_FOPEN_A", bfp = NULL); if (bfp == NULL) { - bam_error(GRUBSIGN_BACKUP_OPENERR, - GRUBSIGN_BACKUP, strerror(error)); + bam_error(_("error opening boot signature backup " + "file %s: %s\n"), GRUBSIGN_BACKUP, strerror(error)); return (-1); } @@ -7033,8 +7271,8 @@ set_backup_common(char *mntpt, char *sign) error = errno; INJECT_ERROR1("SET_BACKUP_FPUTS", ret = 0); if (ret != strlen(tmpsign)) { - bam_error(GRUBSIGN_BACKUP_WRITEERR, - GRUBSIGN_BACKUP, strerror(error)); + bam_error(_("error writing boot signature backup " + "file %s: %s\n"), GRUBSIGN_BACKUP, strerror(error)); (void) fclose(bfp); return (-1); } @@ -7042,9 +7280,10 @@ set_backup_common(char *mntpt, char *sign) (void) fclose(bfp); if (bam_verbose) - bam_print(GRUBSIGN_BACKUP_UPDATED, GRUBSIGN_BACKUP); + bam_print(_("updated boot signature backup file %s\n"), + GRUBSIGN_BACKUP); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (0); } @@ -7054,7 +7293,7 @@ set_backup_ufs(char *osroot, char *sign) { const char *fcn = "set_backup_ufs()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, osroot, sign)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, osroot, sign)); return (set_backup_common(osroot, sign)); } @@ -7067,19 +7306,19 @@ set_backup_zfs(char *osdev, char *sign) int ret; const char *fcn = "set_backup_zfs()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, osdev, sign)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, osdev, sign)); pool = get_pool(osdev); INJECT_ERROR1("SET_BACKUP_GET_POOL", pool = NULL); if (pool == NULL) { - bam_error(GET_POOL_FAILED, osdev); + bam_error(_("failed to get pool name from %s\n"), osdev); return (-1); } mntpt = mount_top_dataset(pool, &mnted); INJECT_ERROR1("SET_BACKUP_MOUNT_DATASET", mntpt = NULL); if (mntpt == NULL) { - bam_error(FAIL_MNT_TOP_DATASET, pool); + bam_error(_("failed to mount top dataset for %s\n"), pool); free(pool); return (-1); } @@ -7092,9 +7331,9 @@ set_backup_zfs(char *osdev, char *sign) INJECT_ERROR1("SET_BACKUP_ZFS_FAIL", ret = 1); if (ret == 0) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (ret); @@ -7109,20 +7348,21 @@ set_backup(char *osroot, char *osdev, char *sign, char *fstype) INJECT_ERROR1("SET_BACKUP_FSTYPE", fstype = "foofs"); if (strcmp(fstype, "ufs") == 0) { - BAM_DPRINTF((D_SET_BACKUP_UFS, fcn)); + BAM_DPRINTF(("%s: setting UFS backup sign\n", fcn)); ret = set_backup_ufs(osroot, sign); } else if (strcmp(fstype, "zfs") == 0) { - BAM_DPRINTF((D_SET_BACKUP_ZFS, fcn)); + BAM_DPRINTF(("%s: setting ZFS backup sign\n", fcn)); ret = set_backup_zfs(osdev, sign); } else { - bam_error(GRUBSIGN_NOTSUP, fstype); + bam_error(_("boot signature not supported for fstype: %s\n"), + fstype); ret = -1; } if (ret == 0) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (ret); @@ -7144,22 +7384,25 @@ set_primary_common(char *mntpt, char *sign) if (stat(signfile, &sb) != -1) { if (bam_verbose) - bam_print(PRIMARY_SIGN_EXISTS, sign); + bam_print(_("primary sign %s exists\n"), sign); return (0); } else { - BAM_DPRINTF((D_PRIMARY_NOT_EXIST, fcn, signfile)); + BAM_DPRINTF(("%s: primary sign (%s) does not exist\n", + fcn, signfile)); } (void) snprintf(signdir, sizeof (signdir), "%s/%s", mntpt, GRUBSIGN_DIR); if (stat(signdir, &sb) == -1) { - BAM_DPRINTF((D_PRIMARY_DIR_NOEXIST, fcn, signdir)); + BAM_DPRINTF(("%s: primary signdir (%s) does not exist\n", + fcn, signdir)); ret = mkdirp(signdir, DIR_PERMS); error = errno; INJECT_ERROR1("SET_PRIMARY_MKDIRP", ret = -1); if (ret == -1) { - bam_error(GRUBSIGN_MKDIR_ERR, signdir, strerror(errno)); + bam_error(_("error creating boot signature " + "directory %s: %s\n"), signdir, strerror(errno)); return (-1); } } @@ -7168,7 +7411,8 @@ set_primary_common(char *mntpt, char *sign) error = errno; INJECT_ERROR1("PRIMARY_SIGN_CREAT", fd = -1); if (fd == -1) { - bam_error(GRUBSIGN_PRIMARY_CREATERR, signfile, strerror(error)); + bam_error(_("error creating primary boot signature %s: %s\n"), + signfile, strerror(error)); return (-1); } @@ -7176,15 +7420,17 @@ set_primary_common(char *mntpt, char *sign) error = errno; INJECT_ERROR1("PRIMARY_FSYNC", ret = -1); if (ret != 0) { - bam_error(GRUBSIGN_PRIMARY_SYNCERR, signfile, strerror(error)); + bam_error(_("error syncing primary boot signature %s: %s\n"), + signfile, strerror(error)); } (void) close(fd); if (bam_verbose) - bam_print(GRUBSIGN_CREATED_PRIMARY, signfile); + bam_print(_("created primary GRUB boot signature: %s\n"), + signfile); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (0); } @@ -7194,7 +7440,7 @@ set_primary_ufs(char *osroot, char *sign) { const char *fcn = "set_primary_ufs()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, osroot, sign)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, osroot, sign)); return (set_primary_common(osroot, sign)); } @@ -7207,12 +7453,12 @@ set_primary_zfs(char *osdev, char *sign) int ret; const char *fcn = "set_primary_zfs()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, osdev, sign)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, osdev, sign)); pool = get_pool(osdev); INJECT_ERROR1("SET_PRIMARY_ZFS_GET_POOL", pool = NULL); if (pool == NULL) { - bam_error(GET_POOL_FAILED, osdev); + bam_error(_("failed to get pool name from %s\n"), osdev); return (-1); } @@ -7220,7 +7466,8 @@ set_primary_zfs(char *osdev, char *sign) ret = (strstr(sign, pool) != NULL); INJECT_ERROR1("SET_PRIMARY_ZFS_POOL_SIGN_INCOMPAT", ret = 0); if (ret == 0) { - bam_error(POOL_SIGN_INCOMPAT, pool, sign); + bam_error(_("pool name %s not present in signature %s\n"), + pool, sign); free(pool); return (-1); } @@ -7228,7 +7475,7 @@ set_primary_zfs(char *osdev, char *sign) mntpt = mount_top_dataset(pool, &mnted); INJECT_ERROR1("SET_PRIMARY_ZFS_MOUNT_DATASET", mntpt = NULL); if (mntpt == NULL) { - bam_error(FAIL_MNT_TOP_DATASET, pool); + bam_error(_("failed to mount top dataset for %s\n"), pool); free(pool); return (-1); } @@ -7241,9 +7488,9 @@ set_primary_zfs(char *osdev, char *sign) INJECT_ERROR1("SET_PRIMARY_ZFS_FAIL", ret = 1); if (ret == 0) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (ret); @@ -7257,20 +7504,21 @@ set_primary(char *osroot, char *osdev, char *sign, char *fstype) INJECT_ERROR1("SET_PRIMARY_FSTYPE", fstype = "foofs"); if (strcmp(fstype, "ufs") == 0) { - BAM_DPRINTF((D_SET_PRIMARY_UFS, fcn)); + BAM_DPRINTF(("%s: setting UFS primary sign\n", fcn)); ret = set_primary_ufs(osroot, sign); } else if (strcmp(fstype, "zfs") == 0) { - BAM_DPRINTF((D_SET_PRIMARY_ZFS, fcn)); + BAM_DPRINTF(("%s: setting ZFS primary sign\n", fcn)); ret = set_primary_zfs(osdev, sign); } else { - bam_error(GRUBSIGN_NOTSUP, fstype); + bam_error(_("boot signature not supported for fstype: %s\n"), + fstype); ret = -1; } if (ret == 0) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (ret); @@ -7289,7 +7537,7 @@ ufs_add_to_sign_list(char *sign) INJECT_ERROR1("ADD_TO_SIGN_LIST_NOT_UFS", sign = "pool_rpool5"); if (strncmp(sign, GRUBSIGN_UFS_PREFIX, strlen(GRUBSIGN_UFS_PREFIX)) != 0) { - bam_error(INVALID_UFS_SIGN, sign); + bam_error(_("invalid UFS boot signature %s\n"), sign); (void) unlink(UFS_SIGNATURE_LIST); return (-1); } @@ -7303,8 +7551,8 @@ ufs_add_to_sign_list(char *sign) error = errno; INJECT_ERROR1("ADD_TO_SIGN_LIST_RENAME", ret = -1); if (ret == -1) { - bam_error(RENAME_FAIL, UFS_SIGNATURE_LIST".tmp", - strerror(error)); + bam_error(_("rename to file failed: %s: %s\n"), + UFS_SIGNATURE_LIST".tmp", strerror(error)); (void) unlink(UFS_SIGNATURE_LIST); return (0); } @@ -7313,7 +7561,8 @@ ufs_add_to_sign_list(char *sign) error = errno; INJECT_ERROR1("ADD_TO_SIGN_LIST_FOPEN", tfp = NULL); if (tfp == NULL) { - bam_error(OPEN_FAIL, UFS_SIGNATURE_LIST".tmp", strerror(error)); + bam_error(_("failed to open file: %s: %s\n"), + UFS_SIGNATURE_LIST".tmp", strerror(error)); (void) unlink(UFS_SIGNATURE_LIST".tmp"); return (0); } @@ -7324,7 +7573,8 @@ ufs_add_to_sign_list(char *sign) error = errno; INJECT_ERROR1("ADD_TO_SIGN_LIST_FPUTS", ret = 0); if (ret != strlen(signline)) { - bam_error(SIGN_LIST_FPUTS_ERR, sign, strerror(error)); + bam_error(_("failed to write signature %s to signature " + "list: %s\n"), sign, strerror(error)); (void) fclose(tfp); (void) unlink(UFS_SIGNATURE_LIST".tmp"); return (0); @@ -7334,8 +7584,8 @@ ufs_add_to_sign_list(char *sign) error = errno; INJECT_ERROR1("ADD_TO_SIGN_LIST_FCLOSE", ret = EOF); if (ret == EOF) { - bam_error(CLOSE_FAIL, UFS_SIGNATURE_LIST".tmp", - strerror(error)); + bam_error(_("failed to close file: %s: %s\n"), + UFS_SIGNATURE_LIST".tmp", strerror(error)); (void) unlink(UFS_SIGNATURE_LIST".tmp"); return (0); } @@ -7348,7 +7598,7 @@ ufs_add_to_sign_list(char *sign) ret = exec_cmd(cmd, NULL); INJECT_ERROR1("ADD_TO_SIGN_LIST_SORT", ret = 1); if (ret != 0) { - bam_error(GRUBSIGN_SORT_FAILED); + bam_error(_("error sorting GRUB UFS boot signatures\n")); (void) unlink(UFS_SIGNATURE_LIST".sorted"); (void) unlink(UFS_SIGNATURE_LIST".tmp"); return (0); @@ -7360,12 +7610,13 @@ ufs_add_to_sign_list(char *sign) error = errno; INJECT_ERROR1("ADD_TO_SIGN_LIST_RENAME2", ret = -1); if (ret == -1) { - bam_error(RENAME_FAIL, UFS_SIGNATURE_LIST, strerror(error)); + bam_error(_("rename to file failed: %s: %s\n"), + UFS_SIGNATURE_LIST, strerror(error)); (void) unlink(UFS_SIGNATURE_LIST".sorted"); return (0); } - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (0); } @@ -7376,13 +7627,15 @@ set_signature(char *osroot, char *osdev, char *sign, char *fstype) int ret; const char *fcn = "set_signature()"; - BAM_DPRINTF((D_FUNC_ENTRY4, fcn, osroot, osdev, sign, fstype)); + BAM_DPRINTF(("%s: entered. args: %s %s %s %s\n", fcn, + osroot, osdev, sign, fstype)); ret = set_backup(osroot, osdev, sign, fstype); INJECT_ERROR1("SET_SIGNATURE_BACKUP", ret = -1); if (ret == -1) { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); - bam_error(SET_BACKUP_FAILED, sign, osroot, osdev); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); + bam_error(_("failed to set backup sign (%s) for %s: %s\n"), + sign, osroot, osdev); return (-1); } @@ -7390,10 +7643,11 @@ set_signature(char *osroot, char *osdev, char *sign, char *fstype) INJECT_ERROR1("SET_SIGNATURE_PRIMARY", ret = -1); if (ret == 0) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); - bam_error(SET_PRIMARY_FAILED, sign, osroot, osdev); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); + bam_error(_("failed to set primary sign (%s) for %s: %s\n"), + sign, osroot, osdev); } return (ret); @@ -7410,22 +7664,24 @@ get_grubsign(char *osroot, char *osdev) int ret; const char *fcn = "get_grubsign()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, osroot, osdev)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, osroot, osdev)); fstype = get_fstype(osroot); INJECT_ERROR1("GET_GRUBSIGN_FSTYPE", fstype = NULL); if (fstype == NULL) { - bam_error(GET_FSTYPE_FAILED, osroot); + bam_error(_("failed to get fstype for %s\n"), osroot); return (NULL); } sign = find_existing_sign(osroot, osdev, fstype); INJECT_ERROR1("FIND_EXISTING_SIGN", sign = NULL); if (sign == NULL) { - BAM_DPRINTF((D_GET_GRUBSIGN_NO_EXISTING, fcn, osroot, osdev)); + BAM_DPRINTF(("%s: no existing grubsign for %s: %s\n", + fcn, osroot, osdev)); sign = create_new_sign(osdev, fstype); INJECT_ERROR1("CREATE_NEW_SIGN", sign = NULL); if (sign == NULL) { - bam_error(GRUBSIGN_CREATE_FAIL, osdev); + bam_error(_("failed to create GRUB boot signature for " + "device: %s\n"), osdev); free(fstype); return (NULL); } @@ -7434,7 +7690,8 @@ get_grubsign(char *osroot, char *osdev) ret = set_signature(osroot, osdev, sign, fstype); INJECT_ERROR1("SET_SIGNATURE_FAIL", ret = -1); if (ret == -1) { - bam_error(GRUBSIGN_WRITE_FAIL, osdev); + bam_error(_("failed to write GRUB boot signature for " + "device: %s\n"), osdev); free(sign); free(fstype); (void) unlink(UFS_SIGNATURE_LIST); @@ -7444,12 +7701,14 @@ get_grubsign(char *osroot, char *osdev) free(fstype); if (bam_verbose) - bam_print(GRUBSIGN_FOUND_OR_CREATED, sign, osdev); + bam_print(_("found or created GRUB signature %s for %s\n"), + sign, osdev); fdiskpart = get_partition(osdev); INJECT_ERROR1("GET_GRUBSIGN_FDISK", fdiskpart = PARTNO_NOTFOUND); if (fdiskpart == PARTNO_NOTFOUND) { - bam_error(FDISKPART_FAIL, osdev); + bam_error(_("failed to determine fdisk partition: %s\n"), + osdev); free(sign); return (NULL); } @@ -7471,7 +7730,7 @@ get_grubsign(char *osroot, char *osdev) free(sign); - BAM_DPRINTF((D_GET_GRUBSIGN_SUCCESS, fcn, grubsign)); + BAM_DPRINTF(("%s: successfully created grubsign %s\n", fcn, grubsign)); return (grubsign); } @@ -7490,7 +7749,8 @@ get_title(char *rootdir) fp = fopen(release, "r"); if (fp == NULL) { - bam_error(OPEN_FAIL, release, strerror(errno)); + bam_error(_("failed to open file: %s: %s\n"), release, + strerror(errno)); cp = NULL; goto out; } @@ -7507,7 +7767,7 @@ get_title(char *rootdir) out: cp = cp ? cp : "Oracle Solaris"; - BAM_DPRINTF((D_GET_TITLE, fcn, cp)); + BAM_DPRINTF(("%s: got title: %s\n", fcn, cp)); return (cp); } @@ -7524,7 +7784,7 @@ get_special(char *mountp) INJECT_ERROR1("GET_SPECIAL_MNTPT", mountp = NULL); if (mountp == NULL) { - bam_error(GET_SPECIAL_NULL_MNTPT); + bam_error(_("cannot get special file: NULL mount-point\n")); return (NULL); } @@ -7532,7 +7792,8 @@ get_special(char *mountp) error = errno; INJECT_ERROR1("GET_SPECIAL_MNTTAB_OPEN", mntfp = NULL); if (mntfp == NULL) { - bam_error(OPEN_FAIL, MNTTAB, strerror(error)); + bam_error(_("failed to open file: %s: %s\n"), MNTTAB, + strerror(error)); return (NULL); } @@ -7545,12 +7806,13 @@ get_special(char *mountp) INJECT_ERROR1("GET_SPECIAL_MNTTAB_SEARCH", ret = 1); if (ret != 0) { (void) fclose(mntfp); - BAM_DPRINTF((D_GET_SPECIAL_NOT_IN_MNTTAB, fcn, mountp)); + BAM_DPRINTF(("%s: Cannot get special file: mount-point %s " + "not in mnttab\n", fcn, mountp)); return (NULL); } (void) fclose(mntfp); - BAM_DPRINTF((D_GET_SPECIAL, fcn, mp.mnt_special)); + BAM_DPRINTF(("%s: returning special: %s\n", fcn, mp.mnt_special)); return (s_strdup(mp.mnt_special)); } @@ -7564,14 +7826,14 @@ free_physarray(char **physarray, int n) assert(physarray); assert(n); - BAM_DPRINTF((D_FUNC_ENTRY_N1, fcn, n)); + BAM_DPRINTF(("%s: entering args: %d\n", fcn, n)); for (i = 0; i < n; i++) { free(physarray[i]); } free(physarray); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } static int @@ -7591,11 +7853,12 @@ zfs_get_physical(char *special, char ***physarray, int *n) assert(special); - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, special)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, special)); INJECT_ERROR1("INVALID_ZFS_SPECIAL", special = "/foo"); if (special[0] == '/') { - bam_error(INVALID_ZFS_SPECIAL, special); + bam_error(_("invalid device for ZFS filesystem: %s\n"), + special); return (-1); } @@ -7604,7 +7867,8 @@ zfs_get_physical(char *special, char ***physarray, int *n) pool = strtok(sdup, "/"); INJECT_ERROR1("ZFS_GET_PHYS_POOL", pool = NULL); if (pool == NULL) { - bam_error(CANT_FIND_POOL_FROM_SPECIAL, special); + bam_error(_("cannot derive ZFS pool from special: %s\n"), + special); return (-1); } @@ -7613,19 +7877,20 @@ zfs_get_physical(char *special, char ***physarray, int *n) ret = exec_cmd(cmd, &flist); INJECT_ERROR1("ZFS_GET_PHYS_STATUS", ret = 1); if (ret != 0) { - bam_error(ZFS_GET_POOL_STATUS, pool); + bam_error(_("cannot get zpool status for pool: %s\n"), pool); return (-1); } INJECT_ERROR1("ZFS_GET_PHYS_STATUS_OUT", flist.head = NULL); if (flist.head == NULL) { - bam_error(BAD_ZPOOL_STATUS, pool); + bam_error(_("bad zpool status for pool=%s\n"), pool); filelist_free(&flist); return (-1); } for (lp = flist.head; lp; lp = lp->next) { - BAM_DPRINTF((D_STRTOK_ZPOOL_STATUS, fcn, lp->line)); + BAM_DPRINTF(("%s: strtok() zpool status line=%s\n", + fcn, lp->line)); comp1 = strtok(lp->line, " \t"); if (comp1 == NULL) { free(lp->line); @@ -7641,13 +7906,14 @@ zfs_get_physical(char *special, char ***physarray, int *n) if (lp->line == NULL) continue; if (strcmp(lp->line, pool) == 0) { - BAM_DPRINTF((D_FOUND_POOL_IN_ZPOOL_STATUS, fcn, pool)); + BAM_DPRINTF(("%s: found pool name: %s in zpool " + "status\n", fcn, pool)); break; } } if (lp == NULL) { - bam_error(NO_POOL_IN_ZPOOL_STATUS, pool); + bam_error(_("no pool name %s in zpool status\n"), pool); filelist_free(&flist); return (-1); } @@ -7661,11 +7927,13 @@ zfs_get_physical(char *special, char ***physarray, int *n) if (lp->line[0] == '\0' || strcmp(lp->line, "errors:") == 0) break; i++; - BAM_DPRINTF((D_COUNTING_ZFS_PHYS, fcn, i)); + BAM_DPRINTF(("%s: counting phys slices in zpool status: %d\n", + fcn, i)); } if (i == 0) { - bam_error(NO_PHYS_IN_ZPOOL_STATUS, pool); + bam_error(_("no physical device in zpool status for pool=%s\n"), + pool); filelist_free(&flist); return (-1); } @@ -7687,7 +7955,8 @@ zfs_get_physical(char *special, char ***physarray, int *n) } else { (void) strlcpy(dsk, lp->line, sizeof (dsk)); } - BAM_DPRINTF((D_ADDING_ZFS_PHYS, fcn, dsk, pool)); + BAM_DPRINTF(("%s: adding phys slice=%s from pool %s status\n", + fcn, dsk, pool)); (*physarray)[i++] = s_strdup(dsk); } @@ -7695,7 +7964,7 @@ zfs_get_physical(char *special, char ***physarray, int *n) filelist_free(&flist); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (0); } @@ -7715,23 +7984,23 @@ is_svc_online(char *svc) char *state; const char *fcn = "is_svc_online()"; - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, svc)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, svc)); state = smf_get_state(svc); INJECT_ERROR2("GET_SVC_STATE", free(state), state = NULL); if (state == NULL) { - bam_error(GET_SVC_STATE_ERR, svc); + bam_error(_("failed to determine state of service: %s\n"), svc); return (-1); } - BAM_DPRINTF((D_GOT_SVC_STATUS, fcn, svc)); + BAM_DPRINTF(("%s: got status for service: %s\n", fcn, svc)); if (strcmp(state, SCF_STATE_STRING_ONLINE) == 0) { - BAM_DPRINTF((D_SVC_ONLINE, fcn, svc)); + BAM_DPRINTF(("%s: service is online: %s\n", fcn, svc)); free(state); return (1); } - BAM_DPRINTF((D_SVC_NOT_ONLINE, fcn, state, svc)); + BAM_DPRINTF(("%s: service is *NOT* online(%s): %s\n", fcn, state, svc)); free(state); @@ -7747,10 +8016,11 @@ enable_svc(char *svc) ret = is_svc_online(svc); if (ret == -1) { - bam_error(SVC_IS_ONLINE_FAILED, svc); + bam_error(_("failed to determine if service is online: %s\n"), + svc); return (-1); } else if (ret == 1) { - BAM_DPRINTF((D_SVC_ALREADY_ONLINE, fcn, svc)); + BAM_DPRINTF(("%s: service is already online: %s\n", fcn, svc)); return (0); } @@ -7758,11 +8028,11 @@ enable_svc(char *svc) ret = smf_enable_instance(svc, 0); INJECT_ERROR1("ENABLE_SVC_FAILED", ret = -1); if (ret != 0) { - bam_error(ENABLE_SVC_FAILED, svc); + bam_error(_("failed to online service: %s\n"), svc); return (-1); } - BAM_DPRINTF((D_SVC_ONLINE_INITIATED, fcn, svc)); + BAM_DPRINTF(("%s: initiated online of service: %s\n", fcn, svc)); sleeptime = 0; do { @@ -7771,16 +8041,18 @@ enable_svc(char *svc) INJECT_ERROR1("SVC_ONLINE_FAILURE", ret = -1); INJECT_ERROR1("SVC_ONLINE_NOTYET", ret = 0); if (ret == -1) { - bam_error(ERR_SVC_GET_ONLINE, svc); + bam_error(_("failed to get online status for " + "service: %s\n"), svc); return (-1); } else if (ret == 1) { - BAM_DPRINTF((D_SVC_NOW_ONLINE, fcn, svc)); + BAM_DPRINTF(("%s: service is NOW online: %s\n", + fcn, svc)); return (1); } (void) sleep(1); } while (++sleeptime < 60); - bam_error(TIMEOUT_ENABLE_SVC, svc); + bam_error(_("timed out waiting for service to online: %s\n"), svc); return (-1); } @@ -7805,10 +8077,11 @@ ufs_get_physical(char *special, char ***physarray, int *n) assert(special); - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, special)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, special)); if (strncmp(special, "/dev/md/", strlen("/dev/md/")) != 0) { - bam_error(UFS_GET_PHYS_NOT_SVM, special); + bam_error(_("not a SVM metadevice: %s. Cannot derive physical " + "device\n"), special); return (-1); } @@ -7818,15 +8091,18 @@ ufs_get_physical(char *special, char ***physarray, int *n) strlen("/dev/md/rdsk/")) == 0) { shortname = special + strlen("/dev/md/rdsk"); } else { - bam_error(UFS_GET_PHYS_INVALID_SVM, special); + bam_error(_("invalid SVM metadevice name: %s. Cannot derive " + "physical device\n"), special); return (-1); } - BAM_DPRINTF((D_UFS_SVM_SHORT, fcn, special, shortname)); + BAM_DPRINTF(("%s: short SVM name for special=%s is %s\n", + fcn, special, shortname)); svc = "network/rpc/meta:default"; if (enable_svc(svc) == -1) { - bam_error(UFS_SVM_METASTAT_SVC_ERR, svc); + bam_error(_("failed to start service %s for metastat " + "command\n"), svc); } (void) snprintf(cmd, sizeof (cmd), "/sbin/metastat -p %s", shortname); @@ -7834,13 +8110,15 @@ ufs_get_physical(char *special, char ***physarray, int *n) ret = exec_cmd(cmd, &flist); INJECT_ERROR1("UFS_SVM_METASTAT", ret = 1); if (ret != 0) { - bam_error(UFS_SVM_METASTAT_ERR, shortname); + bam_error(_("metastat command failed on SVM metadevice: %s\n"), + shortname); return (-1); } INJECT_ERROR1("UFS_SVM_METASTAT_OUT", flist.head = NULL); if (flist.head == NULL) { - bam_error(BAD_UFS_SVM_METASTAT, shortname); + bam_error(_("bad output from metastat command on SVM " + "metadevice: %s\n"), shortname); filelist_free(&flist); return (-1); } @@ -7852,7 +8130,8 @@ ufs_get_physical(char *special, char ***physarray, int *n) meta = strtok(flist.head->line, " \t"); type = strtok(NULL, " \t"); if (meta == NULL || type == NULL) { - bam_error(ERROR_PARSE_UFS_SVM_METASTAT, shortname); + bam_error(_("error parsing metastat output for SVM " + "metadevice: %s\n"), shortname); filelist_free(&flist); return (-1); } @@ -7860,11 +8139,13 @@ ufs_get_physical(char *special, char ***physarray, int *n) comp1 = strtok(NULL, " \t"); comp2 = strtok(NULL, " \t"); if (comp1 == NULL || comp2 != NULL) { - bam_error(INVALID_UFS_SVM_METASTAT, shortname); + bam_error(_("invalid fields in metastat output for " + "SVM metadevice: %s\n"), shortname); filelist_free(&flist); return (-1); } - BAM_DPRINTF((D_UFS_SVM_ONE_COMP, fcn, comp1, shortname)); + BAM_DPRINTF(("%s: single component %s for metadevice %s\n", + fcn, comp1, shortname)); *physarray = s_calloc(1, sizeof (char *)); (*physarray)[0] = s_strdup(comp1); *n = 1; @@ -7879,7 +8160,8 @@ ufs_get_physical(char *special, char ***physarray, int *n) for (i = 0, lp = flist.head->next; lp; lp = lp->next) { if (strstr(lp->line, "/dev/dsk/") == NULL && strstr(lp->line, "/dev/rdsk/") == NULL) { - bam_error(CANNOT_PARSE_UFS_SVM_METASTAT, shortname); + bam_error(_("cannot parse output of metastat command " + "for metadevice: %s\n"), shortname); filelist_free(&flist); return (-1); } @@ -7898,7 +8180,8 @@ ufs_get_physical(char *special, char ***physarray, int *n) if (comp3 == NULL || comp4 == NULL || (strncmp(comp4, "/dev/dsk/", strlen("/dev/dsk/")) != 0 && strncmp(comp4, "/dev/rdsk/", strlen("/dev/rdsk/")) != 0)) { - bam_error(CANNOT_PARSE_UFS_SVM_SUBMIRROR, shortname); + bam_error(_("cannot parse submirror line in metastat " + "output for metadevice: %s\n"), shortname); filelist_free(&flist); free_physarray(*physarray, *n); return (-1); @@ -7911,7 +8194,7 @@ ufs_get_physical(char *special, char ***physarray, int *n) filelist_free(&flist); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (0); } @@ -7929,21 +8212,23 @@ get_physical(char *menu_root, char ***physarray, int *n) *physarray = NULL; *n = 0; - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, menu_root)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, menu_root)); /* First get the device special file from /etc/mnttab */ special = get_special(menu_root); INJECT_ERROR1("GET_PHYSICAL_SPECIAL", special = NULL); if (special == NULL) { - bam_error(GET_SPECIAL_NULL, menu_root); + bam_error(_("cannot get special file for mount-point: %s\n"), + menu_root); return (-1); } /* If already a physical device nothing to do */ if (strncmp(special, "/dev/dsk/", strlen("/dev/dsk/")) == 0 || strncmp(special, "/dev/rdsk/", strlen("/dev/rdsk/")) == 0) { - BAM_DPRINTF((D_GET_PHYSICAL_ALREADY, fcn, menu_root, special)); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: got physical device already directly for " + "menu_root=%s special=%s\n", fcn, menu_root, special)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); *physarray = s_calloc(1, sizeof (char *)); (*physarray)[0] = special; *n = 1; @@ -7955,7 +8240,8 @@ get_physical(char *menu_root, char ***physarray, int *n) } else if (is_ufs(menu_root)) { ret = ufs_get_physical(special, physarray, n); } else { - bam_error(GET_PHYSICAL_NOTSUP_FSTYPE, menu_root, special); + bam_error(_("cannot derive physical device for %s (%s), " + "unsupported filesystem\n"), menu_root, special); ret = -1; } @@ -7963,12 +8249,13 @@ get_physical(char *menu_root, char ***physarray, int *n) INJECT_ERROR1("GET_PHYSICAL_RET", ret = -1); if (ret == -1) { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } else { int i; assert (*n > 0); for (i = 0; i < *n; i++) { - BAM_DPRINTF((D_GET_PHYSICAL_RET, fcn, (*physarray)[i])); + BAM_DPRINTF(("%s: returning physical=%s\n", + fcn, (*physarray)[i])); } } @@ -7986,7 +8273,7 @@ is_bootdisk(char *osroot, char *physical) assert(osroot); assert(physical); - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, osroot, physical)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, osroot, physical)); bootp = strstr(physical, "p0:boot"); if (bootp) @@ -8004,13 +8291,14 @@ is_bootdisk(char *osroot, char *physical) INJECT_ERROR1("IS_BOOTDISK_GRUBROOT", grubroot = NULL); if (grubroot == NULL) { if (bam_verbose) - bam_error(NO_GRUBROOT_FOR_DISK, physical); + bam_error(_("cannot determine BIOS disk ID 'hd?' for " + "disk: %s\n"), physical); return (0); } ret = grubroot[3] == '0'; free(grubroot); - BAM_DPRINTF((D_RETURN_RET, fcn, ret)); + BAM_DPRINTF(("%s: returning ret = %d\n", fcn, ret)); return (ret); } @@ -8029,12 +8317,13 @@ menu_on_bootdisk(char *osroot, char *menu_root) int on_bootdisk; const char *fcn = "menu_on_bootdisk()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, osroot, menu_root)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, osroot, menu_root)); ret = get_physical(menu_root, &physarray, &n); INJECT_ERROR1("MENU_ON_BOOTDISK_PHYSICAL", ret = -1); if (ret != 0) { - bam_error(GET_PHYSICAL_MENU_NULL, menu_root); + bam_error(_("cannot get physical device special file for menu " + "root: %s\n"), menu_root); return (0); } @@ -8048,10 +8337,12 @@ menu_on_bootdisk(char *osroot, char *menu_root) strncmp(physarray[i], "/dev/rdsk/", strlen("/dev/rdsk/")) == 0); - BAM_DPRINTF((D_CHECK_ON_BOOTDISK, fcn, physarray[i])); + BAM_DPRINTF(("%s: checking if phys-device=%s is on bootdisk\n", + fcn, physarray[i])); if (is_bootdisk(osroot, physarray[i])) { on_bootdisk = 1; - BAM_DPRINTF((D_IS_ON_BOOTDISK, fcn, physarray[i])); + BAM_DPRINTF(("%s: phys-device=%s *IS* on bootdisk\n", + fcn, physarray[i])); } } @@ -8060,9 +8351,9 @@ menu_on_bootdisk(char *osroot, char *menu_root) INJECT_ERROR1("ON_BOOTDISK_YES", on_bootdisk = 1); INJECT_ERROR1("ON_BOOTDISK_NO", on_bootdisk = 0); if (on_bootdisk) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (on_bootdisk); @@ -8080,22 +8371,22 @@ bam_add_line(menu_t *mp, entry_t *entry, line_t *prev, line_t *lp) lp->next = prev->next; if (prev->next) { - BAM_DPRINTF((D_ADD_LINE_PREV_NEXT, fcn)); + BAM_DPRINTF(("%s: previous next exists\n", fcn)); prev->next->prev = lp; } else { - BAM_DPRINTF((D_ADD_LINE_NOT_PREV_NEXT, fcn)); + BAM_DPRINTF(("%s: previous next does not exist\n", fcn)); } prev->next = lp; lp->prev = prev; if (entry->end == prev) { - BAM_DPRINTF((D_ADD_LINE_LAST_LINE_IN_ENTRY, fcn)); + BAM_DPRINTF(("%s: last line in entry\n", fcn)); entry->end = lp; } if (mp->end == prev) { assert(lp->next == NULL); mp->end = lp; - BAM_DPRINTF((D_ADD_LINE_LAST_LINE_IN_MENU, fcn)); + BAM_DPRINTF(("%s: last line in menu\n", fcn)); } } @@ -8142,10 +8433,12 @@ find_boot_entry( if (title) { if (lp->flags == BAM_TITLE && lp->arg && strcmp(lp->arg, title) == 0) { - BAM_DPRINTF((D_MATCHED_TITLE, fcn, title)); + BAM_DPRINTF(("%s: matched title: %s\n", + fcn, title)); break; } - BAM_DPRINTF((D_NOMATCH_TITLE, fcn, title, lp->arg)); + BAM_DPRINTF(("%s: no match title: %s, %s\n", + fcn, title, lp->arg)); continue; /* check title only */ } @@ -8157,33 +8450,34 @@ find_boot_entry( INJECT_ERROR1("FIND_BOOT_ENTRY_NULL_FINDROOT", findroot = NULL); if (findroot == NULL) { - BAM_DPRINTF((D_NOMATCH_FINDROOT_NULL, - fcn, lp->arg)); + BAM_DPRINTF(("%s: no match line has findroot, " + "we don't: %s\n", fcn, lp->arg)); continue; } /* findroot command found, try match */ if (strcmp(lp->arg, findroot) != 0) { - BAM_DPRINTF((D_NOMATCH_FINDROOT, + BAM_DPRINTF(("%s: no match findroot: %s, %s\n", fcn, findroot, lp->arg)); continue; } - BAM_DPRINTF((D_MATCHED_FINDROOT, fcn, findroot)); + BAM_DPRINTF(("%s: matched findroot: %s\n", + fcn, findroot)); lp = lp->next; /* advance to kernel line */ } else if (lp->cmd != NULL && strcmp(lp->cmd, menu_cmds[ROOT_CMD]) == 0) { INJECT_ERROR1("FIND_BOOT_ENTRY_NULL_ROOT", root = NULL); if (root == NULL) { - BAM_DPRINTF((D_NOMATCH_ROOT_NULL, - fcn, lp->arg)); + BAM_DPRINTF(("%s: no match, line has root, we " + "don't: %s\n", fcn, lp->arg)); continue; } /* root cmd found, try match */ if (strcmp(lp->arg, root) != 0) { - BAM_DPRINTF((D_NOMATCH_ROOT, + BAM_DPRINTF(("%s: no match root: %s, %s\n", fcn, root, lp->arg)); continue; } - BAM_DPRINTF((D_MATCHED_ROOT, fcn, root)); + BAM_DPRINTF(("%s: matched root: %s\n", fcn, root)); lp = lp->next; /* advance to kernel line */ } else { INJECT_ERROR1("FIND_BOOT_ENTRY_ROOT_OPT_NO", @@ -8192,10 +8486,10 @@ find_boot_entry( root_opt = 1); /* no root command, see if root is optional */ if (root_opt == 0) { - BAM_DPRINTF((D_NO_ROOT_OPT, fcn)); + BAM_DPRINTF(("%s: root NOT optional\n", fcn)); continue; } - BAM_DPRINTF((D_ROOT_OPT, fcn)); + BAM_DPRINTF(("%s: root IS optional\n", fcn)); } if (lp == NULL || lp->next == NULL) { @@ -8212,7 +8506,8 @@ find_boot_entry( ent->flags |= BAM_ENTRY_UPGFSKERNEL; } - BAM_DPRINTF((D_KERNEL_MATCH, fcn, kernel, lp->arg)); + BAM_DPRINTF(("%s: kernel match: %s, %s\n", fcn, + kernel, lp->arg)); /* * Check for matching module entry (failsafe or normal). @@ -8225,7 +8520,8 @@ find_boot_entry( (((lp = lp->next) != NULL) && check_cmd(lp->cmd, MODULE_CMD, lp->arg, module))) { /* match found */ - BAM_DPRINTF((D_MODULE_MATCH, fcn, module, lp->arg)); + BAM_DPRINTF(("%s: module match: %s, %s\n", fcn, + module, lp->arg)); break; } @@ -8243,9 +8539,9 @@ find_boot_entry( } if (ent) { - BAM_DPRINTF((D_RETURN_RET, fcn, i)); + BAM_DPRINTF(("%s: returning ret = %d\n", fcn, i)); } else { - BAM_DPRINTF((D_RETURN_RET, fcn, BAM_ERROR)); + BAM_DPRINTF(("%s: returning ret = %d\n", fcn, BAM_ERROR)); } return (ent); } @@ -8274,15 +8570,18 @@ update_boot_entry(menu_t *mp, char *title, char *findroot, char *root, ent = find_boot_entry(mp, NULL, "multiboot", NULL, root, MULTIBOOT_ARCHIVE, root_opt, &i); if (ent != NULL) { - BAM_DPRINTF((D_UPGRADE_FROM_MULTIBOOT, fcn, root)); + BAM_DPRINTF(("%s: upgrading entry from dboot to " + "multiboot: root = %s\n", fcn, root)); change_kernel = 1; } } else if (ent) { - BAM_DPRINTF((D_FOUND_FINDROOT, fcn, findroot)); + BAM_DPRINTF(("%s: found entry with matching findroot: %s\n", + fcn, findroot)); } if (ent == NULL) { - BAM_DPRINTF((D_ENTRY_NOT_FOUND_CREATING, fcn, findroot)); + BAM_DPRINTF(("%s: boot entry not found in menu. Creating " + "new entry, findroot = %s\n", fcn, findroot)); return (add_boot_entry(mp, title, findroot, kernel, mod_kernel, module, NULL)); } @@ -8296,7 +8595,7 @@ update_boot_entry(menu_t *mp, char *title, char *findroot, char *root, free(lp->line); lp->arg = s_strdup(title); lp->line = s_strdup(linebuf); - BAM_DPRINTF((D_CHANGING_TITLE, fcn, title)); + BAM_DPRINTF(("%s: changing title to: %s\n", fcn, title)); tlp = lp; /* title line */ lp = lp->next; /* root line */ @@ -8321,7 +8620,7 @@ update_boot_entry(menu_t *mp, char *title, char *findroot, char *root, (void) snprintf(linebuf, sizeof (linebuf), "%s%s%s", menu_cmds[FINDROOT_CMD], menu_cmds[SEP_CMD], findroot); lp->line = s_strdup(linebuf); - BAM_DPRINTF((D_ADDING_FINDROOT_LINE, fcn, findroot)); + BAM_DPRINTF(("%s: adding findroot line: %s\n", fcn, findroot)); /* kernel line */ lp = lp->next; @@ -8348,7 +8647,8 @@ update_boot_entry(menu_t *mp, char *title, char *findroot, char *root, lp->arg = s_strdup(strstr(linebuf, "/")); lp->line = s_strdup(linebuf); ent->flags &= ~BAM_ENTRY_UPGFSKERNEL; - BAM_DPRINTF((D_ADDING_KERNEL_DOLLAR, fcn, lp->prev->cmd)); + BAM_DPRINTF(("%s: adding new kernel$ line: %s\n", + fcn, lp->prev->cmd)); } if (change_kernel) { @@ -8367,7 +8667,8 @@ update_boot_entry(menu_t *mp, char *title, char *findroot, char *root, lp->arg = s_strdup(kernel); lp->line = s_strdup(linebuf); lp = lp->next; - BAM_DPRINTF((D_ADDING_KERNEL_DOLLAR, fcn, kernel)); + BAM_DPRINTF(("%s: adding new kernel$ line: %s\n", + fcn, kernel)); } if (lp->cmd != NULL && strcmp(lp->cmd, menu_cmds[MODULE_CMD]) == 0) { @@ -8381,7 +8682,8 @@ update_boot_entry(menu_t *mp, char *title, char *findroot, char *root, lp->arg = s_strdup(module); lp->line = s_strdup(linebuf); lp = lp->next; - BAM_DPRINTF((D_ADDING_MODULE_DOLLAR, fcn, module)); + BAM_DPRINTF(("%s: adding new module$ line: %s\n", + fcn, module)); } } @@ -8402,11 +8704,12 @@ update_boot_entry(menu_t *mp, char *title, char *findroot, char *root, lp->line = s_strdup(linebuf); lp = lp->next; ent->flags &= ~BAM_ENTRY_UPGFSMODULE; - BAM_DPRINTF((D_ADDING_MODULE_DOLLAR, fcn, module)); + BAM_DPRINTF(("%s: adding new module$ line: %s\n", + fcn, module)); } } - BAM_DPRINTF((D_RETURN_RET, fcn, i)); + BAM_DPRINTF(("%s: returning ret = %d\n", fcn, i)); return (i); } @@ -8421,7 +8724,7 @@ root_optional(char *osroot, char *menu_root) int ret2; const char *fcn = "root_optional()"; - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, osroot, menu_root)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, osroot, menu_root)); /* * For all filesystems except ZFS, a straight compare of osroot @@ -8433,7 +8736,8 @@ root_optional(char *osroot, char *menu_root) ret2 = is_zfs(menu_root); INJECT_ERROR1("ROOT_OPT_NOT_ZFS", ret1 = 0); if (!ret1 || !ret2) { - BAM_DPRINTF((D_ROOT_OPT_NOT_ZFS, fcn, osroot, menu_root)); + BAM_DPRINTF(("%s: one or more non-ZFS filesystems (%s, %s)\n", + fcn, osroot, menu_root)); root_opt = (strcmp(osroot, menu_root) == 0); goto out; } @@ -8441,24 +8745,28 @@ root_optional(char *osroot, char *menu_root) ospecial = get_special(osroot); INJECT_ERROR1("ROOT_OPTIONAL_OSPECIAL", ospecial = NULL); if (ospecial == NULL) { - bam_error(GET_OSROOT_SPECIAL_ERR, osroot); + bam_error(_("failed to get special file for osroot: %s\n"), + osroot); return (0); } - BAM_DPRINTF((D_ROOT_OPTIONAL_OSPECIAL, fcn, ospecial, osroot)); + BAM_DPRINTF(("%s: ospecial=%s for osroot=%s\n", fcn, ospecial, osroot)); mspecial = get_special(menu_root); INJECT_ERROR1("ROOT_OPTIONAL_MSPECIAL", mspecial = NULL); if (mspecial == NULL) { - bam_error(GET_MENU_ROOT_SPECIAL_ERR, menu_root); + bam_error(_("failed to get special file for menu_root: %s\n"), + menu_root); free(ospecial); return (0); } - BAM_DPRINTF((D_ROOT_OPTIONAL_MSPECIAL, fcn, mspecial, menu_root)); + BAM_DPRINTF(("%s: mspecial=%s for menu_root=%s\n", + fcn, mspecial, menu_root)); slash = strchr(ospecial, '/'); if (slash) *slash = '\0'; - BAM_DPRINTF((D_ROOT_OPTIONAL_FIXED_OSPECIAL, fcn, ospecial, osroot)); + BAM_DPRINTF(("%s: FIXED ospecial=%s for osroot=%s\n", + fcn, ospecial, osroot)); root_opt = (strcmp(ospecial, mspecial) == 0); @@ -8469,9 +8777,9 @@ out: INJECT_ERROR1("ROOT_OPTIONAL_NO", root_opt = 0); INJECT_ERROR1("ROOT_OPTIONAL_YES", root_opt = 1); if (root_opt) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (root_opt); @@ -8498,7 +8806,8 @@ update_entry(menu_t *mp, char *menu_root, char *osdev) assert(osdev); assert(bam_root); - BAM_DPRINTF((D_FUNC_ENTRY3, fcn, menu_root, osdev, bam_root)); + BAM_DPRINTF(("%s: entered. args: %s %s %s\n", fcn, menu_root, osdev, + bam_root)); (void) strlcpy(osroot, bam_root, sizeof (osroot)); @@ -8508,7 +8817,8 @@ update_entry(menu_t *mp, char *menu_root, char *osdev) grubsign = get_grubsign(osroot, osdev); INJECT_ERROR1("GET_GRUBSIGN_FAIL", grubsign = NULL); if (grubsign == NULL) { - bam_error(GET_GRUBSIGN_ERROR, osroot, osdev); + bam_error(_("failed to get grubsign for root: %s, device %s\n"), + osroot, osdev); return (BAM_ERROR); } @@ -8520,11 +8830,11 @@ update_entry(menu_t *mp, char *menu_root, char *osdev) grubroot = get_grubroot(osroot, osdev, menu_root); INJECT_ERROR1("GET_GRUBROOT_FAIL", grubroot = NULL); if (grubroot) { - BAM_DPRINTF((D_GET_GRUBROOT_SUCCESS, - fcn, osroot, osdev, menu_root)); + BAM_DPRINTF(("%s: get_grubroot success. osroot=%s, osdev=%s, " + "menu_root=%s\n", fcn, osroot, osdev, menu_root)); } else { - BAM_DPRINTF((D_GET_GRUBROOT_FAILURE, - fcn, osroot, osdev, menu_root)); + BAM_DPRINTF(("%s: get_grubroot failed. osroot=%s, osdev=%s, " + "menu_root=%s\n", fcn, osroot, osdev, menu_root)); } /* add the entry for normal Solaris */ @@ -8535,22 +8845,24 @@ update_entry(menu_t *mp, char *menu_root, char *osdev) (bam_zfs ? DIRECT_BOOT_KERNEL_ZFS : DIRECT_BOOT_KERNEL), NULL, DIRECT_BOOT_ARCHIVE, root_optional(osroot, menu_root)); - BAM_DPRINTF((D_UPDATED_BOOT_ENTRY, fcn, bam_zfs, grubsign)); + BAM_DPRINTF(("%s: updated boot entry bam_zfs=%d, " + "grubsign = %s\n", fcn, bam_zfs, grubsign)); if ((entry != BAM_ERROR) && (bam_is_hv == BAM_HV_PRESENT)) { (void) update_boot_entry(mp, NEW_HV_ENTRY, grubsign, grubroot, XEN_MENU, bam_zfs ? XEN_KERNEL_MODULE_LINE_ZFS : XEN_KERNEL_MODULE_LINE, DIRECT_BOOT_ARCHIVE, root_optional(osroot, menu_root)); - BAM_DPRINTF((D_UPDATED_HV_ENTRY, - fcn, bam_zfs, grubsign)); + BAM_DPRINTF(("%s: updated HV entry bam_zfs=%d, " + "grubsign = %s\n", fcn, bam_zfs, grubsign)); } } else { entry = update_boot_entry(mp, title, grubsign, grubroot, MULTI_BOOT, NULL, MULTIBOOT_ARCHIVE, root_optional(osroot, menu_root)); - BAM_DPRINTF((D_UPDATED_MULTIBOOT_ENTRY, fcn, grubsign)); + BAM_DPRINTF(("%s: updated MULTIBOOT entry grubsign = %s\n", + fcn, grubsign)); } /* @@ -8589,15 +8901,16 @@ update_entry(menu_t *mp, char *menu_root, char *osdev) (void) update_boot_entry(mp, FAILSAFE_TITLE, grubsign, grubroot, failsafe_kernel, NULL, FAILSAFE_ARCHIVE, root_optional(osroot, menu_root)); - BAM_DPRINTF((D_UPDATED_FAILSAFE_ENTRY, fcn, - failsafe_kernel)); + BAM_DPRINTF(("%s: updated FAILSAFE entry " + "failsafe_kernel = %s\n", fcn, failsafe_kernel)); } } free(grubroot); INJECT_ERROR1("UPDATE_ENTRY_ERROR", entry = BAM_ERROR); if (entry == BAM_ERROR) { - bam_error(FAILED_TO_ADD_BOOT_ENTRY, title, grubsign); + bam_error(_("failed to add boot entry with title=%s, grub " + "signature=%s\n"), title, grubsign); free(grubsign); return (BAM_ERROR); } @@ -8607,9 +8920,9 @@ update_entry(menu_t *mp, char *menu_root, char *osdev) ret = set_global(mp, menu_cmds[DEFAULT_CMD], entry); INJECT_ERROR1("SET_DEFAULT_ERROR", ret = BAM_ERROR); if (ret == BAM_ERROR) { - bam_error(SET_DEFAULT_FAILED, entry); + bam_error(_("failed to set GRUB menu default to %d\n"), entry); } - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (BAM_WRITE); } @@ -8635,9 +8948,10 @@ save_default_entry(menu_t *mp, const char *which) entry = s_strtol(lp->arg); (void) snprintf(linebuf, sizeof (linebuf), "#%s%d", which, entry); - BAM_DPRINTF((D_SAVING_DEFAULT_TO, fcn, linebuf)); + BAM_DPRINTF(("%s: saving default to: %s\n", fcn, linebuf)); line_parser(mp, linebuf, &lineNum, &entryNum); - BAM_DPRINTF((D_SAVED_DEFAULT_TO, fcn, lineNum, entryNum)); + BAM_DPRINTF(("%s: saved default to lineNum=%d, entryNum=%d\n", fcn, + lineNum, entryNum)); } static void @@ -8648,17 +8962,17 @@ restore_default_entry(menu_t *mp, const char *which, line_t *lp) const char *fcn = "restore_default_entry()"; if (lp == NULL) { - BAM_DPRINTF((D_RESTORE_DEFAULT_NULL, fcn)); + BAM_DPRINTF(("%s: NULL saved default\n", fcn)); return; /* nothing to restore */ } - BAM_DPRINTF((D_RESTORE_DEFAULT_STR, fcn, which)); + BAM_DPRINTF(("%s: saved default string: %s\n", fcn, which)); str = lp->arg + strlen(which); entry = s_strtol(str); (void) set_global(mp, menu_cmds[DEFAULT_CMD], entry); - BAM_DPRINTF((D_RESTORED_DEFAULT_TO, fcn, entry)); + BAM_DPRINTF(("%s: restored default to entryNum: %d\n", fcn, entry)); /* delete saved old default line */ unlink_line(mp, lp); @@ -8697,45 +9011,49 @@ update_temp(menu_t *mp, char *dummy, char *opt) assert(dummy == NULL); /* opt can be NULL */ - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, opt ? opt : "<NULL>")); - BAM_DPRINTF((D_BAM_ROOT, fcn, bam_alt_root, bam_root)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, opt ? opt : "<NULL>")); + BAM_DPRINTF(("%s: bam_alt_root: %d, bam_root: %s\n", fcn, + bam_alt_root, bam_root)); if (bam_alt_root || bam_rootlen != 1 || strcmp(bam_root, "/") != 0 || strcmp(rootbuf, "/") != 0) { - bam_error(ALT_ROOT_INVALID, bam_root); + bam_error(_("an alternate root (%s) cannot be used with this " + "sub-command\n"), bam_root); return (BAM_ERROR); } /* If no option, delete exiting reboot menu entry */ if (opt == NULL) { entry_t *ent; - BAM_DPRINTF((D_OPT_NULL, fcn)); + BAM_DPRINTF(("%s: opt is NULL\n", fcn)); ent = find_boot_entry(mp, REBOOT_TITLE, NULL, NULL, NULL, NULL, 0, &entry); if (ent == NULL) { /* not found is ok */ - BAM_DPRINTF((D_TRANSIENT_NOTFOUND, fcn)); + BAM_DPRINTF(("%s: transient entry not found\n", fcn)); return (BAM_SUCCESS); } (void) delete_boot_entry(mp, entry, DBE_PRINTERR); restore_default_entry(mp, BAM_OLDDEF, mp->olddefault); mp->olddefault = NULL; - BAM_DPRINTF((D_RESTORED_DEFAULT, fcn)); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: restored old default\n", fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (BAM_WRITE); } /* if entry= is specified, set the default entry */ if (strncmp(opt, "entry=", strlen("entry=")) == 0) { int entryNum = s_strtol(opt + strlen("entry=")); - BAM_DPRINTF((D_ENTRY_EQUALS, fcn, opt)); + BAM_DPRINTF(("%s: opt has entry=: %s\n", fcn, opt)); if (selector(mp, opt, &entry, NULL) == BAM_SUCCESS) { /* this is entry=# option */ ret = set_global(mp, menu_cmds[DEFAULT_CMD], entry); - BAM_DPRINTF((D_ENTRY_SET_IS, fcn, entry, ret)); + BAM_DPRINTF(("%s: default set to %d, " + "set_default ret=%d\n", fcn, entry, ret)); return (ret); } else { - bam_error(SET_DEFAULT_FAILED, entryNum); + bam_error(_("failed to set GRUB menu default to %d\n"), + entryNum); return (BAM_ERROR); } } @@ -8747,7 +9065,8 @@ update_temp(menu_t *mp, char *dummy, char *opt) fstype = get_fstype("/"); INJECT_ERROR1("REBOOT_FSTYPE_NULL", fstype = NULL); if (fstype == NULL) { - bam_error(REBOOT_FSTYPE_FAILED); + bam_error(_("failed to determine filesystem type for \"/\". " + "Reboot with \narguments failed.\n")); return (BAM_ERROR); } @@ -8755,7 +9074,8 @@ update_temp(menu_t *mp, char *dummy, char *opt) INJECT_ERROR1("REBOOT_SPECIAL_NULL", osdev = NULL); if (osdev == NULL) { free(fstype); - bam_error(REBOOT_SPECIAL_FAILED); + bam_error(_("failed to find device special file for \"/\". " + "Reboot with \narguments failed.\n")); return (BAM_ERROR); } @@ -8764,7 +9084,8 @@ update_temp(menu_t *mp, char *dummy, char *opt) if (sign == NULL) { free(fstype); free(osdev); - bam_error(REBOOT_SIGN_FAILED); + bam_error(_("failed to find boot signature. Reboot with " + "arguments failed.\n")); return (BAM_ERROR); } @@ -8783,7 +9104,9 @@ update_temp(menu_t *mp, char *dummy, char *opt) INJECT_ERROR1("REBOOT_NOT_DBOOT", bam_direct = BAM_DIRECT_MULTIBOOT); if (bam_direct != BAM_DIRECT_DBOOT) { free(fstype); - bam_error(REBOOT_DIRECT_FAILED); + bam_error(_("the root filesystem is not a dboot Solaris " + "instance. \nThis version of bootadm is not supported " + "on this version of Solaris.\n")); return (BAM_ERROR); } @@ -8794,7 +9117,8 @@ update_temp(menu_t *mp, char *dummy, char *opt) INJECT_ERROR1("REBOOT_GET_KERNEL", ret = BAM_ERROR); if (ret != BAM_SUCCESS) { free(fstype); - bam_error(REBOOT_GET_KERNEL_FAILED); + bam_error(_("reboot with arguments: error querying " + "current boot-file settings\n")); return (BAM_ERROR); } if (kernbuf[0] == '\0') @@ -8810,7 +9134,8 @@ update_temp(menu_t *mp, char *dummy, char *opt) } (void) strlcat(kernbuf, " ", sizeof (kernbuf)); (void) strlcat(kernbuf, opt, sizeof (kernbuf)); - BAM_DPRINTF((D_REBOOT_OPTION, fcn, kernbuf)); + BAM_DPRINTF(("%s: reboot with args, option specified: " + "kern=%s\n", fcn, kernbuf)); } else if (opt[0] == '/') { /* It's a full path, so write it out. */ (void) strlcpy(kernbuf, opt, sizeof (kernbuf)); @@ -8836,7 +9161,8 @@ update_temp(menu_t *mp, char *dummy, char *opt) INJECT_ERROR1("REBOOT_GET_ARGS", ret = BAM_ERROR); if (ret != BAM_SUCCESS) { free(fstype); - bam_error(REBOOT_GET_ARGS_FAILED); + bam_error(_("reboot with arguments: error " + "querying current boot-args settings\n")); return (BAM_ERROR); } @@ -8846,7 +9172,8 @@ update_temp(menu_t *mp, char *dummy, char *opt) sizeof (kernbuf)); } } - BAM_DPRINTF((D_REBOOT_ABSPATH, fcn, kernbuf)); + BAM_DPRINTF(("%s: reboot with args, abspath specified: " + "kern=%s\n", fcn, kernbuf)); } else { /* * It may be a partial path, or it may be a partial @@ -8880,7 +9207,9 @@ update_temp(menu_t *mp, char *dummy, char *opt) ret = BAM_ERROR); if (ret != BAM_SUCCESS) { free(fstype); - bam_error(REBOOT_GET_ARGS_FAILED); + bam_error(_("reboot with arguments: " + "error querying current boot-args " + "settings\n")); return (BAM_ERROR); } @@ -8891,11 +9220,14 @@ update_temp(menu_t *mp, char *dummy, char *opt) args_buf, sizeof (kernbuf)); } } - BAM_DPRINTF((D_REBOOT_RESOLVED_PARTIAL, fcn, kernbuf)); + BAM_DPRINTF(("%s: resolved partial path: %s\n", + fcn, kernbuf)); } else { free(fstype); - bam_error(UNKNOWN_KERNEL, opt); - bam_print_stderr(UNKNOWN_KERNEL_REBOOT); + bam_error(_("unable to expand %s to a full file" + " path.\n"), opt); + bam_print_stderr(_("Rebooting with default kernel " + "and options.\n")); return (BAM_ERROR); } } @@ -8904,7 +9236,8 @@ update_temp(menu_t *mp, char *dummy, char *opt) NULL, NULL, NULL); INJECT_ERROR1("REBOOT_ADD_BOOT_ENTRY", entry = BAM_ERROR); if (entry == BAM_ERROR) { - bam_error(REBOOT_WITH_ARGS_ADD_ENTRY_FAILED); + bam_error(_("Cannot update menu. Cannot reboot with " + "requested arguments\n")); return (BAM_ERROR); } @@ -8912,9 +9245,10 @@ update_temp(menu_t *mp, char *dummy, char *opt) ret = set_global(mp, menu_cmds[DEFAULT_CMD], entry); INJECT_ERROR1("REBOOT_SET_GLOBAL", ret = BAM_ERROR); if (ret == BAM_ERROR) { - bam_error(REBOOT_SET_DEFAULT_FAILED, entry); + bam_error(_("reboot with arguments: setting GRUB menu default " + "to %d failed\n"), entry); } - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (BAM_WRITE); } @@ -8939,7 +9273,7 @@ set_global(menu_t *mp, char *globalcmd, int val) INJECT_ERROR1("SET_GLOBAL_VAL_TOO_BIG", val = 100); if (val < 0 || mp->end == NULL || val > mp->end->entryNum) { (void) snprintf(prefix, sizeof (prefix), "%d", val); - bam_error(INVALID_ENTRY, prefix); + bam_error(_("invalid boot entry number: %s\n"), prefix); return (BAM_ERROR); } } @@ -8953,16 +9287,19 @@ set_global(menu_t *mp, char *globalcmd, int val) INJECT_ERROR1("SET_GLOBAL_NULL_CMD", lp->cmd = NULL); if (lp->cmd == NULL) { - bam_error(NO_CMD, lp->lineNum); + bam_error(_("no command at line %d\n"), lp->lineNum); continue; } if (strcmp(globalcmd, lp->cmd) != 0) continue; - BAM_DPRINTF((D_FOUND_GLOBAL, fcn, globalcmd)); + BAM_DPRINTF(("%s: found matching global command: %s\n", + fcn, globalcmd)); if (found) { - bam_error(DUP_CMD, globalcmd, lp->lineNum, bam_root); + bam_error(_("duplicate command %s at line %d of " + "%sboot/grub/menu.lst\n"), globalcmd, + lp->lineNum, bam_root); } found = lp; } @@ -8985,8 +9322,8 @@ set_global(menu_t *mp, char *globalcmd, int val) lp->line = s_calloc(1, len); (void) snprintf(lp->line, len, "%s%s%d", globalcmd, menu_cmds[SEP_CMD], val); - BAM_DPRINTF((D_SET_GLOBAL_WROTE_NEW, fcn, lp->line)); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: wrote new global line: %s\n", fcn, lp->line)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (BAM_WRITE); } @@ -9008,8 +9345,8 @@ set_global(menu_t *mp, char *globalcmd, int val) (void) snprintf(found->line, len, "%s%s%s%d", prefix, globalcmd, menu_cmds[SEP_CMD], val); - BAM_DPRINTF((D_SET_GLOBAL_REPLACED, fcn, found->line)); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: replaced global line with: %s\n", fcn, found->line)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (BAM_WRITE); /* need a write to menu */ } @@ -9034,14 +9371,14 @@ expand_path(const char *partial_path) (void) snprintf(new_path, new_path_len, "/platform/i86pc/%s", partial_path); if (stat(new_path, &sb) == 0) { - BAM_DPRINTF((D_EXPAND_PATH, fcn, new_path)); + BAM_DPRINTF(("%s: expanded path: %s\n", fcn, new_path)); return (new_path); } if (strcmp(partial_path, "kmdb") == 0) { (void) snprintf(new_path, new_path_len, "%s -k", DIRECT_BOOT_KERNEL); - BAM_DPRINTF((D_EXPAND_PATH, fcn, new_path)); + BAM_DPRINTF(("%s: expanded path: %s\n", fcn, new_path)); return (new_path); } @@ -9063,12 +9400,12 @@ expand_path(const char *partial_path) "/platform/i86pc/kernel/%s/$ISADIR/unix", partial_path); } - BAM_DPRINTF((D_EXPAND_PATH, fcn, new_path)); + BAM_DPRINTF(("%s: expanded path: %s\n", fcn, new_path)); return (new_path); } free(new_path); - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); return (NULL); } @@ -9092,14 +9429,15 @@ set_archive_line(entry_t *entryp, line_t *kernelp) INJECT_ERROR1("SET_ARCHIVE_LINE_END_ENTRY", lp = entryp->end); if (lp == entryp->end) { - BAM_DPRINTF((D_ARCHIVE_LINE_NONE, fcn, - entryp->entryNum)); + BAM_DPRINTF(("%s: no module/archive line for entry: " + "%d\n", fcn, entryp->entryNum)); return; } } INJECT_ERROR1("SET_ARCHIVE_LINE_END_MENU", lp = NULL); if (lp == NULL) { - BAM_DPRINTF((D_ARCHIVE_LINE_NONE, fcn, entryp->entryNum)); + BAM_DPRINTF(("%s: no module/archive line for entry: %d\n", + fcn, entryp->entryNum)); return; } @@ -9115,7 +9453,7 @@ set_archive_line(entry_t *entryp, line_t *kernelp) } if (strcmp(lp->arg, new_archive) == 0) { - BAM_DPRINTF((D_ARCHIVE_LINE_NOCHANGE, fcn, lp->arg)); + BAM_DPRINTF(("%s: no change for line: %s\n", fcn, lp->arg)); return; } @@ -9127,7 +9465,7 @@ set_archive_line(entry_t *entryp, line_t *kernelp) free(lp->arg); lp->arg = s_strdup(new_archive); update_line(lp); - BAM_DPRINTF((D_ARCHIVE_LINE_REPLACED, fcn, lp->line)); + BAM_DPRINTF(("%s: replaced for line: %s\n", fcn, lp->line)); } /* @@ -9179,7 +9517,9 @@ get_set_kernel( INJECT_ERROR1("GET_SET_KERNEL_NOT_DBOOT", bam_direct = BAM_DIRECT_MULTIBOOT); if (bam_direct != BAM_DIRECT_DBOOT) { - bam_error(NOT_DBOOT, optnum == KERNEL_CMD ? "kernel" : "args"); + bam_error(_("bootadm set-menu %s may only be run on " + "directboot kernels.\n"), + optnum == KERNEL_CMD ? "kernel" : "args"); return (BAM_ERROR); } @@ -9196,7 +9536,8 @@ get_set_kernel( } if ((entryp != NULL) && ((entryp->flags & (BAM_ENTRY_BOOTADM|BAM_ENTRY_LU)) == 0)) { - bam_error(DEFAULT_NOT_BAM); + bam_error(_("Default /boot/grub/menu.lst entry is not " + "controlled by bootadm. Exiting\n")); return (BAM_ERROR); } } @@ -9214,7 +9555,8 @@ get_set_kernel( } } if (kernelp == NULL) { - bam_error(NO_KERNEL, entryNum); + bam_error(_("no kernel line found in entry %d\n"), + entryNum); return (BAM_ERROR); } @@ -9226,15 +9568,17 @@ get_set_kernel( if (path == NULL) { if (entryp == NULL) { - BAM_DPRINTF((D_GET_SET_KERNEL_NO_RC, fcn)); - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: no RC entry, nothing to report\n", + fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (BAM_SUCCESS); } assert(kernelp); if (optnum == ARGS_CMD) { if (old_args[0] != '\0') { (void) strlcpy(buf, old_args, bufsize); - BAM_DPRINTF((D_GET_SET_KERNEL_ARGS, fcn, buf)); + BAM_DPRINTF(("%s: read menu boot-args: %s\n", + fcn, buf)); } } else { /* @@ -9246,11 +9590,12 @@ get_set_kernel( *space = '\0'; if (strcmp(kernelp->arg, DIRECT_BOOT_KERNEL) != 0) { (void) strlcpy(buf, kernelp->arg, bufsize); - BAM_DPRINTF((D_GET_SET_KERNEL_KERN, fcn, buf)); + BAM_DPRINTF(("%s: read menu boot-file: %s\n", + fcn, buf)); } *space = old_space; } - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); return (BAM_SUCCESS); } @@ -9262,7 +9607,8 @@ get_set_kernel( (strcmp(path, DIRECT_BOOT_KERNEL) == 0))) { if ((entryp == NULL) || (kernelp == NULL)) { /* No previous entry, it's already the default */ - BAM_DPRINTF((D_GET_SET_KERNEL_ALREADY, fcn)); + BAM_DPRINTF(("%s: no reset, already has default\n", + fcn)); return (BAM_SUCCESS); } @@ -9283,7 +9629,7 @@ get_set_kernel( mp->old_rc_default); mp->old_rc_default = NULL; rv = BAM_WRITE; - BAM_DPRINTF((D_GET_SET_KERNEL_RESTORE_DEFAULT, fcn)); + BAM_DPRINTF(("%s: resetting to default\n", fcn)); goto done; } @@ -9306,8 +9652,8 @@ get_set_kernel( * to update the archive line as well. */ set_archive_line(entryp, kernelp); - BAM_DPRINTF((D_GET_SET_KERNEL_RESET_KERNEL_SET_ARG, - fcn, kernelp->arg)); + BAM_DPRINTF(("%s: reset kernel to default, but " + "retained old args: %s\n", fcn, kernelp->arg)); } else { /* * We're resetting the boot args to nothing, so @@ -9319,8 +9665,8 @@ get_set_kernel( kernelp->arg); free(kernelp->arg); kernelp->arg = new_arg; - BAM_DPRINTF((D_GET_SET_KERNEL_RESET_ARG_SET_KERNEL, - fcn, kernelp->arg)); + BAM_DPRINTF(("%s: reset args to default, but retained " + "old kernel: %s\n", fcn, kernelp->arg)); } rv = BAM_WRITE; goto done; @@ -9332,8 +9678,9 @@ get_set_kernel( if ((optnum == KERNEL_CMD) && (path[0] != '/')) { new_path = expand_path(path); if (new_path == NULL) { - bam_error(UNKNOWN_KERNEL, path); - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + bam_error(_("unable to expand %s to a full file " + "path.\n"), path); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); return (BAM_ERROR); } free_new_path = 1; @@ -9352,7 +9699,9 @@ get_set_kernel( fstype = get_fstype("/"); INJECT_ERROR1("GET_SET_KERNEL_FSTYPE", fstype = NULL); if (fstype == NULL) { - bam_error(BOOTENV_FSTYPE_FAILED); + bam_error(_("cannot determine filesystem type for " + "\"/\".\nCannot generate GRUB menu entry with " + "EEPROM arguments.\n")); rv = BAM_ERROR; goto done; } @@ -9361,7 +9710,9 @@ get_set_kernel( INJECT_ERROR1("GET_SET_KERNEL_SPECIAL", osdev = NULL); if (osdev == NULL) { free(fstype); - bam_error(BOOTENV_SPECIAL_FAILED); + bam_error(_("cannot determine device special file for " + "\"/\".\nCannot generate GRUB menu entry with " + "EEPROM arguments.\n")); rv = BAM_ERROR; goto done; } @@ -9371,7 +9722,9 @@ get_set_kernel( if (sign == NULL) { free(fstype); free(osdev); - bam_error(BOOTENV_SIGN_FAILED); + bam_error(_("cannot determine boot signature for " + "\"/\".\nCannot generate GRUB menu entry with " + "EEPROM arguments.\n")); rv = BAM_ERROR; goto done; } @@ -9390,13 +9743,13 @@ get_set_kernel( new_arg = s_calloc(1, new_str_len); (void) snprintf(new_arg, new_str_len, "%s %s", new_path, ZFS_BOOT); - BAM_DPRINTF((D_GET_SET_KERNEL_NEW_KERN, fcn, + BAM_DPRINTF(("%s: new kernel=%s\n", fcn, new_arg)); entryNum = add_boot_entry(mp, BOOTENV_RC_TITLE, signbuf, new_arg, NULL, NULL, NULL); free(new_arg); } else { - BAM_DPRINTF((D_GET_SET_KERNEL_NEW_KERN, fcn, + BAM_DPRINTF(("%s: new kernel=%s\n", fcn, new_path)); entryNum = add_boot_entry(mp, BOOTENV_RC_TITLE, signbuf, new_path, NULL, NULL, NULL); @@ -9415,7 +9768,7 @@ get_set_kernel( DIRECT_BOOT_KERNEL, path); } - BAM_DPRINTF((D_GET_SET_KERNEL_NEW_ARG, fcn, new_arg)); + BAM_DPRINTF(("%s: new args=%s\n", fcn, new_arg)); entryNum = add_boot_entry(mp, BOOTENV_RC_TITLE, signbuf, new_arg, NULL, DIRECT_BOOT_ARCHIVE, NULL); free(new_arg); @@ -9424,7 +9777,7 @@ get_set_kernel( INJECT_ERROR1("GET_SET_KERNEL_ADD_BOOT_ENTRY", entryNum = BAM_ERROR); if (entryNum == BAM_ERROR) { - bam_error(GET_SET_KERNEL_ADD_BOOT_ENTRY, + bam_error(_("failed to add boot entry: %s\n"), BOOTENV_RC_TITLE); rv = BAM_ERROR; goto done; @@ -9433,7 +9786,8 @@ get_set_kernel( ret = set_global(mp, menu_cmds[DEFAULT_CMD], entryNum); INJECT_ERROR1("GET_SET_KERNEL_SET_GLOBAL", ret = BAM_ERROR); if (ret == BAM_ERROR) { - bam_error(GET_SET_KERNEL_SET_GLOBAL, entryNum); + bam_error(_("failed to set default to: %d\n"), + entryNum); } rv = BAM_WRITE; goto done; @@ -9455,8 +9809,8 @@ get_set_kernel( * the archive line as well. */ set_archive_line(entryp, kernelp); - BAM_DPRINTF((D_GET_SET_KERNEL_REPLACED_KERNEL_SAME_ARG, fcn, - kernelp->arg)); + BAM_DPRINTF(("%s: rc line exists, replaced kernel, same " + "args: %s\n", fcn, kernelp->arg)); } else { new_str_len = old_kernel_len + strlen(path) + 8; new_arg = s_calloc(1, new_str_len); @@ -9465,8 +9819,8 @@ get_set_kernel( (void) strlcat(new_arg, path, new_str_len); free(kernelp->arg); kernelp->arg = new_arg; - BAM_DPRINTF((D_GET_SET_KERNEL_SAME_KERNEL_REPLACED_ARG, fcn, - kernelp->arg)); + BAM_DPRINTF(("%s: rc line exists, same kernel, but new " + "args: %s\n", fcn, kernelp->arg)); } rv = BAM_WRITE; @@ -9476,9 +9830,9 @@ done: if (free_new_path) free(new_path); if (rv == BAM_WRITE) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (rv); } @@ -9487,7 +9841,7 @@ static error_t get_kernel(menu_t *mp, menu_cmd_t optnum, char *buf, size_t bufsize) { const char *fcn = "get_kernel()"; - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, menu_cmds[optnum])); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, menu_cmds[optnum])); return (get_set_kernel(mp, optnum, NULL, buf, bufsize)); } @@ -9496,7 +9850,8 @@ set_kernel(menu_t *mp, menu_cmd_t optnum, char *path, char *buf, size_t bufsize) { const char *fcn = "set_kernel()"; assert(path != NULL); - BAM_DPRINTF((D_FUNC_ENTRY2, fcn, menu_cmds[optnum], path)); + BAM_DPRINTF(("%s: entered. args: %s %s\n", fcn, + menu_cmds[optnum], path)); return (get_set_kernel(mp, optnum, path, buf, bufsize)); } @@ -9516,7 +9871,7 @@ set_option(menu_t *mp, char *dummy, char *opt) assert(dummy == NULL); /* opt is set from bam_argv[0] and is always non-NULL */ - BAM_DPRINTF((D_FUNC_ENTRY1, fcn, opt)); + BAM_DPRINTF(("%s: entered. arg: %s\n", fcn, opt)); val = strchr(opt, '='); if (val != NULL) { @@ -9532,7 +9887,7 @@ set_option(menu_t *mp, char *dummy, char *opt) } else if (strcmp(opt, menu_cmds[ARGS_CMD]) == 0) { optnum = ARGS_CMD; } else { - bam_error(INVALID_OPTION, opt); + bam_error(_("invalid option: %s\n"), opt); return (BAM_ERROR); } @@ -9541,15 +9896,15 @@ set_option(menu_t *mp, char *dummy, char *opt) * others cause errors */ if ((val == NULL) && (optnum != KERNEL_CMD) && (optnum != ARGS_CMD)) { - bam_error(NO_OPTION_ARG, opt); + bam_error(_("option has no argument: %s\n"), opt); return (BAM_ERROR); } else if (val != NULL) { *val = '='; } if ((optnum == KERNEL_CMD) || (optnum == ARGS_CMD)) { - BAM_DPRINTF((D_SET_OPTION, fcn, menu_cmds[optnum], - val ? val + 1 : "NULL")); + BAM_DPRINTF(("%s: setting %s option to %s\n", + fcn, menu_cmds[optnum], val ? val + 1 : "NULL")); if (val) rv = set_kernel(mp, optnum, val + 1, buf, sizeof (buf)); @@ -9559,14 +9914,15 @@ set_option(menu_t *mp, char *dummy, char *opt) (void) printf("%s\n", buf); } else { optval = s_strtol(val + 1); - BAM_DPRINTF((D_SET_OPTION, fcn, menu_cmds[optnum], val + 1)); + BAM_DPRINTF(("%s: setting %s option to %s\n", fcn, + menu_cmds[optnum], val + 1)); rv = set_global(mp, menu_cmds[optnum], optval); } if (rv == BAM_WRITE || rv == BAM_SUCCESS) { - BAM_DPRINTF((D_RETURN_SUCCESS, fcn)); + BAM_DPRINTF(("%s: returning SUCCESS\n", fcn)); } else { - BAM_DPRINTF((D_RETURN_FAILURE, fcn)); + BAM_DPRINTF(("%s: returning FAILURE\n", fcn)); } return (rv); @@ -9589,7 +9945,7 @@ read_globals(menu_t *mp, char *menu_path, char *globalcmd, int quiet) if (mp->start == NULL) { if (!quiet) - bam_error(NO_MENU, menu_path); + bam_error(_("menu file not found: %s\n"), menu_path); return (BAM_ERROR); } @@ -9600,7 +9956,8 @@ read_globals(menu_t *mp, char *menu_path, char *globalcmd, int quiet) if (lp->cmd == NULL) { if (!quiet) - bam_error(NO_CMD, lp->lineNum); + bam_error(_("no command at line %d\n"), + lp->lineNum); continue; } @@ -9609,17 +9966,19 @@ read_globals(menu_t *mp, char *menu_path, char *globalcmd, int quiet) /* Found global. Check for duplicates */ if (done && !quiet) { - bam_error(DUP_CMD, globalcmd, lp->lineNum, bam_root); + bam_error(_("duplicate command %s at line %d of " + "%sboot/grub/menu.lst\n"), globalcmd, + lp->lineNum, bam_root); ret = BAM_ERROR; } arg = lp->arg ? lp->arg : ""; - bam_print(GLOBAL_CMD, globalcmd, arg); + bam_print(_("%s %s\n"), globalcmd, arg); done = 1; } if (!done && bam_verbose) - bam_print(NO_ENTRY, globalcmd); + bam_print(_("no %s entry found\n"), globalcmd); return (ret); } @@ -9629,7 +9988,7 @@ menu_write(char *root, menu_t *mp) { const char *fcn = "menu_write()"; - BAM_DPRINTF((D_MENU_WRITE_ENTER, fcn, root)); + BAM_DPRINTF(("%s: entered menu_write() for root: <%s>\n", fcn, root)); return (list2file(root, MENU_TMP, GRUB_MENU, mp->start)); } @@ -9712,7 +10071,7 @@ exec_cmd(char *cmdline, filelist_t *flistp) * - set IFS to space and tab */ if (*cmdline != '/') { - bam_error(ABS_PATH_REQ, cmdline); + bam_error(_("path is not absolute: %s\n"), cmdline); return (-1); } (void) putenv("IFS= \t"); @@ -9724,7 +10083,7 @@ exec_cmd(char *cmdline, filelist_t *flistp) (void) sigemptyset(&set); (void) sigaddset(&set, SIGCHLD); if (sigprocmask(SIG_UNBLOCK, &set, NULL) != 0) { - bam_error(CANT_UNBLOCK_SIGCHLD, strerror(errno)); + bam_error(_("cannot unblock SIGCHLD: %s\n"), strerror(errno)); return (-1); } @@ -9733,17 +10092,20 @@ exec_cmd(char *cmdline, filelist_t *flistp) */ disp = sigset(SIGCHLD, SIG_DFL); if (disp == SIG_ERR) { - bam_error(FAILED_SIG, strerror(errno)); + bam_error(_("cannot set SIGCHLD disposition: %s\n"), + strerror(errno)); return (-1); } if (disp == SIG_HOLD) { - bam_error(BLOCKED_SIG, cmdline); + bam_error(_("SIGCHLD signal blocked. Cannot exec: %s\n"), + cmdline); return (-1); } ptr = popen(cmdline, "r"); if (ptr == NULL) { - bam_error(POPEN_FAIL, cmdline, strerror(errno)); + bam_error(_("popen failed: %s: %s\n"), cmdline, + strerror(errno)); return (-1); } @@ -9766,7 +10128,7 @@ exec_cmd(char *cmdline, filelist_t *flistp) while (s_fgets(buf, sizeof (buf), ptr) != NULL) { if (flistp == NULL) { /* s_fgets strips newlines, so insert them at the end */ - bam_print(PRINT, buf); + bam_print(_("%s\n"), buf); } else { append_to_flist(flistp, buf); } @@ -9774,14 +10136,16 @@ exec_cmd(char *cmdline, filelist_t *flistp) ret = pclose(ptr); if (ret == -1) { - bam_error(PCLOSE_FAIL, cmdline, strerror(errno)); + bam_error(_("pclose failed: %s: %s\n"), cmdline, + strerror(errno)); return (-1); } if (WIFEXITED(ret)) { return (WEXITSTATUS(ret)); } else { - bam_error(EXEC_FAIL, cmdline, ret); + bam_error(_("command terminated abnormally: %s: %d\n"), + cmdline, ret); return (-1); } } @@ -9834,7 +10198,8 @@ s_fgets(char *buf, int buflen, FILE *fp) if (buf) { n = strlen(buf); if (n == buflen - 1 && buf[n-1] != '\n') - bam_error(TOO_LONG, buflen - 1, buf); + bam_error(_("the following line is too long " + "(> %d chars)\n\t%s\n"), buflen - 1, buf); buf[n-1] = (buf[n-1] == '\n') ? '\0' : buf[n-1]; } @@ -9848,7 +10213,8 @@ s_calloc(size_t nelem, size_t sz) ptr = calloc(nelem, sz); if (ptr == NULL) { - bam_error(NO_MEM, nelem*sz); + bam_error(_("could not allocate memory: size = %u\n"), + nelem*sz); bam_exit(1); } return (ptr); @@ -9859,7 +10225,7 @@ s_realloc(void *ptr, size_t sz) { ptr = realloc(ptr, sz); if (ptr == NULL) { - bam_error(NO_MEM, sz); + bam_error(_("could not allocate memory: size = %u\n"), sz); bam_exit(1); } return (ptr); @@ -9875,7 +10241,8 @@ s_strdup(char *str) ptr = strdup(str); if (ptr == NULL) { - bam_error(NO_MEM, strlen(str) + 1); + bam_error(_("could not allocate memory: size = %u\n"), + strlen(str) + 1); bam_exit(1); } return (ptr); |
