Print this page
Fixes to allow compilation on OmniOS and OI
OS-3342+co
OS-1572
OS-327

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/zoneadmd/zoneadmd.c
          +++ new/usr/src/cmd/zoneadmd/zoneadmd.c
↓ open down ↓ 763 lines elided ↑ open up ↑
 764  764          }
 765  765  
 766  766          file = popen(cmdbuf, "r");
 767  767          if (file == NULL) {
 768  768                  zerror(zlogp, B_TRUE, "could not launch: %s", cmdbuf);
 769  769                  return (-1);
 770  770          }
 771  771  
 772  772          while (fgets(inbuf, 1024, file) != NULL) {
 773  773                  if (retstr == NULL) {
 774      -                        if (zlogp != &logsys)
      774 +                        if (zlogp != &logsys) {
      775 +                                int last = strlen(inbuf) - 1;
      776 +
      777 +                                if (inbuf[last] == '\n')
      778 +                                        inbuf[last] = '\0';
 775  779                                  zerror(zlogp, B_FALSE, "%s", inbuf);
      780 +                        }
 776  781                  } else {
 777  782                          char *p;
 778  783  
 779  784                          rd_cnt += 1024 - 1;
 780  785                          if ((p = realloc(*retstr, rd_cnt + 1024)) == NULL) {
 781  786                                  zerror(zlogp, B_FALSE, "out of memory");
 782  787                                  (void) pclose(file);
 783  788                                  return (-1);
 784  789                          }
 785  790  
↓ open down ↓ 684 lines elided ↑ open up ↑
1470 1475                          /*
1471 1476                           * We could have two clients racing to ready this
1472 1477                           * zone; the second client loses, but his request
1473 1478                           * doesn't fail, since the zone is now in the desired
1474 1479                           * state.
1475 1480                           */
1476 1481                          zerror(zlogp, B_FALSE, "zone is already ready");
1477 1482                          rval = 0;
1478 1483                          break;
1479 1484                  case Z_BOOT:
     1485 +                case Z_FORCEBOOT:
1480 1486                          (void) strlcpy(boot_args, zargp->bootbuf,
1481 1487                              sizeof (boot_args));
1482 1488                          eventstream_write(Z_EVT_ZONE_BOOTING);
1483 1489                          rval = zone_bootup(zlogp, zargp->bootbuf, zstate);
1484 1490                          audit_put_record(zlogp, uc, rval, "boot");
1485 1491                          if (rval != 0) {
1486 1492                                  bringup_failure_recovery = B_TRUE;
1487 1493                                  (void) zone_halt(zlogp, B_FALSE, B_TRUE,
1488 1494                                      zstate);
1489 1495                                  eventstream_write(Z_EVT_ZONE_BOOTFAILED);
↓ open down ↓ 5 lines elided ↑ open up ↑
1495 1501                                  abort();
1496 1502                          if ((rval = zone_halt(zlogp, B_FALSE, B_FALSE, zstate))
1497 1503                              != 0)
1498 1504                                  break;
1499 1505                          eventstream_write(Z_EVT_ZONE_HALTED);
1500 1506                          break;
1501 1507                  case Z_SHUTDOWN:
1502 1508                  case Z_REBOOT:
1503 1509                  case Z_NOTE_UNINSTALLING:
1504 1510                  case Z_MOUNT:
     1511 +                case Z_FORCEMOUNT:
1505 1512                  case Z_UNMOUNT:
1506 1513                          if (kernelcall) /* Invalid; can't happen */
1507 1514                                  abort();
1508 1515                          zerror(zlogp, B_FALSE, "%s operation is invalid "
1509 1516                              "for zones in state '%s'", z_cmd_name(cmd),
1510 1517                              zone_state_str(zstate));
1511 1518                          rval = -1;
1512 1519                          break;
1513 1520                  }
1514 1521                  break;
↓ open down ↓ 27 lines elided ↑ open up ↑
1542 1549                  case Z_READY:
1543 1550                          if ((rval = zone_halt(zlogp, B_FALSE, B_TRUE, zstate))
1544 1551                              != 0)
1545 1552                                  break;
1546 1553                          if ((rval = zone_ready(zlogp, Z_MNT_BOOT, zstate)) == 0)
1547 1554                                  eventstream_write(Z_EVT_ZONE_READIED);
1548 1555                          else
1549 1556                                  eventstream_write(Z_EVT_ZONE_HALTED);
1550 1557                          break;
1551 1558                  case Z_BOOT:
     1559 +                case Z_FORCEBOOT:
1552 1560                          /*
1553 1561                           * We could have two clients racing to boot this
1554 1562                           * zone; the second client loses, but his request
1555 1563                           * doesn't fail, since the zone is now in the desired
1556 1564                           * state.
1557 1565                           */
1558 1566                          zerror(zlogp, B_FALSE, "zone is already booted");
1559 1567                          rval = 0;
1560 1568                          break;
1561 1569                  case Z_HALT:
↓ open down ↓ 27 lines elided ↑ open up ↑
1589 1597                          }
1590 1598                          boot_args[0] = '\0';
1591 1599                          break;
1592 1600                  case Z_SHUTDOWN:
1593 1601                          if ((rval = zone_graceful_shutdown(zlogp)) == 0) {
1594 1602                                  wait_shut = B_TRUE;
1595 1603                          }
1596 1604                          break;
1597 1605                  case Z_NOTE_UNINSTALLING:
1598 1606                  case Z_MOUNT:
     1607 +                case Z_FORCEMOUNT:
1599 1608                  case Z_UNMOUNT:
1600 1609                          zerror(zlogp, B_FALSE, "%s operation is invalid "
1601 1610                              "for zones in state '%s'", z_cmd_name(cmd),
1602 1611                              zone_state_str(zstate));
1603 1612                          rval = -1;
1604 1613                          break;
1605 1614                  }
1606 1615                  break;
1607 1616          default:
1608 1617                  abort();
↓ open down ↓ 683 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX