Your code changes for both zoneadm and zonecfg would preserve the current
zonexxx -z zonename for backwards compatibility purposes, is that correct?
Thank you,
On Mon, Jun 9, 2008 at 11:51 AM, Darren Reed <[EMAIL PROTECTED]> wrote:
> Someone mentioned zonecfg was the cause of some similar awkwardness...
>
> So here's a patch attached for that.
>
> Darren
>
>
>
> --- usr/src/cmd/zonecfg/zonecfg.c ---
>
> Index: usr/src/cmd/zonecfg/zonecfg.c
> *** /biscuit/onnv/usr/src/cmd/zonecfg/zonecfg.c Mon Mar 24 17:30:38 2008
> --- /biscuit/onnv_20080608/usr/src/cmd/zonecfg/zonecfg.cMon Jun 9
> 11:47:41 2008
> ***
> *** 1071,1076
> --- 1071,1077
>execname, cmd_to_str(CMD_HELP));
>(void) fprintf(fp, "\t%s -z \t\t\t(%s)\n",
>execname, gettext("interactive"));
> + (void) fprintf(fp, "\t%s \n", execname);
>(void) fprintf(fp, "\t%s -z \n", execname);
>(void) fprintf(fp, "\t%s -z -f \n",
>execname);
> ***
> *** 6653,6689
>return (execbasename);
> }
>
> ! int
> ! main(int argc, char *argv[])
> {
> ! int err, arg;
> ! struct stat st;
> !
> ! /* This must be before anything goes to stdout. */
> ! setbuf(stdout, NULL);
> !
> ! saw_error = B_FALSE;
> ! cmd_file_mode = B_FALSE;
> ! execname = get_execbasename(argv[0]);
> !
> ! (void) setlocale(LC_ALL, "");
> ! (void) textdomain(TEXT_DOMAIN);
> !
> ! if (getzoneid() != GLOBAL_ZONEID) {
> ! zerr(gettext("%s can only be run from the global zone."),
> ! execname);
> ! exit(Z_ERR);
> ! }
> !
> ! if (argc < 2) {
> ! usage(B_FALSE, HELP_USAGE | HELP_SUBCMDS);
>exit(Z_USAGE);
>}
> ! if (strcmp(argv[1], cmd_to_str(CMD_HELP)) == 0) {
> ! (void) one_command_at_a_time(argc - 1, &(argv[1]));
> ! exit(Z_OK);
> ! }
>
>while ((arg = getopt(argc, argv, "?f:R:z:")) != EOF) {
>switch (arg) {
>case '?':
> --- 6654,6679
>return (execbasename);
> }
>
> ! static void
> ! set_zonename(char *zonename)
> {
> ! if (strcmp(zonename, GLOBAL_ZONENAME) == 0) {
> ! global_zone = B_TRUE;
> ! } else if (zonecfg_validate_zonename(zonename) != Z_OK) {
> ! zone_perror(zonename, Z_BOGUS_ZONE_NAME, B_TRUE);
> ! usage(B_FALSE, HELP_SYNTAX);
>exit(Z_USAGE);
>}
> ! (void) strlcpy(zone, zonename, sizeof (zone));
> ! (void) strlcpy(revert_zone, zonename, sizeof (zone));
> ! }
>
> + static void
> + get_clioptions(int argc, char *argv[])
> + {
> + struct stat st;
> + int arg;
> +
>while ((arg = getopt(argc, argv, "?f:R:z:")) != EOF) {
>switch (arg) {
>case '?':
> ***
> *** 6712,6726
>zonecfg_set_root(optarg);
>break;
>case 'z':
> ! if (strcmp(optarg, GLOBAL_ZONENAME) == 0) {
> ! global_zone = B_TRUE;
> ! } else if (zonecfg_validate_zonename(optarg) !=
> Z_OK) {
> ! zone_perror(optarg, Z_BOGUS_ZONE_NAME,
> B_TRUE);
> ! usage(B_FALSE, HELP_SYNTAX);
> ! exit(Z_USAGE);
> ! }
> ! (void) strlcpy(zone, optarg, sizeof (zone));
> ! (void) strlcpy(revert_zone, optarg, sizeof (zone));
>break;
>default:
>usage(B_FALSE, HELP_USAGE);
> --- 6702,6708
>zonecfg_set_root(optarg);
>break;
>case 'z':
> ! set_zonename(optarg);
>break;
>default:
>usage(B_FALSE, HELP_USAGE);
> ***
> *** 6727,6733
> --- 6709,6761
>exit(Z_USAGE);
>}
>}
> + }
>
> + int
> + main(int argc, char *argv[])
> + {
> + int err;
> +
> + /* This must be before anything goes to stdout. */
> + setbuf(stdout, NULL);
> +
> + saw_error = B_FALSE;
> + cmd_file_mode = B_FALSE;
> + execname = get_execbasename(argv[0]);
> +
> + (void) setlocale(LC_ALL, "");
> + (void) textdomain(TEXT_DOMAIN);
> +
> + if (getzoneid() != GLOBAL_ZONEID) {
> + zerr(gettext("%s can only be run from the global zone."),
> + execname);
> + exit(Z_ERR);
> + }
> +
> + if (argc < 2) {
> + usage(B_FALSE, HELP_USAGE | HELP_SUBCMDS);
> + exit(Z_USAGE);
> + }
> + if (strcmp(argv[1], cmd_to_str(CMD_HELP))