diff options
Diffstat (limited to 'usr/src/lib/libbrand/common/libbrand.c')
| -rw-r--r-- | usr/src/lib/libbrand/common/libbrand.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/usr/src/lib/libbrand/common/libbrand.c b/usr/src/lib/libbrand/common/libbrand.c index d0343acc47..5e6f3e502e 100644 --- a/usr/src/lib/libbrand/common/libbrand.c +++ b/usr/src/lib/libbrand/common/libbrand.c @@ -63,6 +63,8 @@ #define DTD_ELEM_MODNAME ((const xmlChar *) "modname") #define DTD_ELEM_MOUNT ((const xmlChar *) "mount") #define DTD_ELEM_RESTARTINIT ((const xmlChar *) "restartinit") +#define DTD_ELEM_RESTARTINIT0 ((const xmlChar *) "restartinit0") +#define DTD_ELEM_RESTARTINITREBOOT ((const xmlChar *) "restartinitreboot") #define DTD_ELEM_POSTATTACH ((const xmlChar *) "postattach") #define DTD_ELEM_POSTCLONE ((const xmlChar *) "postclone") #define DTD_ELEM_POSTINSTALL ((const xmlChar *) "postinstall") @@ -522,21 +524,40 @@ brand_get_initname(brand_handle_t bh, char *buf, size_t len) buf, len, DTD_ELEM_INITNAME, B_FALSE, B_FALSE)); } -boolean_t -brand_restartinit(brand_handle_t bh) +static boolean_t +i_brand_restartinit(brand_handle_t bh, const xmlChar *tagname, boolean_t deflt) { struct brand_handle *bhp = (struct brand_handle *)bh; char val[80]; if (brand_get_value(bhp, NULL, NULL, NULL, NULL, - val, sizeof (val), DTD_ELEM_RESTARTINIT, B_FALSE, B_FALSE) != 0) - return (B_TRUE); + val, sizeof (val), tagname, B_FALSE, B_FALSE) != 0) { + return (deflt); + } if (strcmp(val, "false") == 0) return (B_FALSE); return (B_TRUE); } +boolean_t +brand_restartinit(brand_handle_t bh) +{ + return (i_brand_restartinit(bh, DTD_ELEM_RESTARTINIT, B_TRUE)); +} + +boolean_t +brand_restartinit0(brand_handle_t bh) +{ + return (i_brand_restartinit(bh, DTD_ELEM_RESTARTINIT0, B_FALSE)); +} + +boolean_t +brand_restartinitreboot(brand_handle_t bh) +{ + return (i_brand_restartinit(bh, DTD_ELEM_RESTARTINITREBOOT, B_FALSE)); +} + int brand_get_login_cmd(brand_handle_t bh, const char *username, char *buf, size_t len) |
