svccfg.y revision 347a77f277285a2c589b756c918c3f40eefbbb8b
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * CDDL HEADER START
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * The contents of this file are subject to the terms of the
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * Common Development and Distribution License (the "License").
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * You may not use this file except in compliance with the License.
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * See the License for the specific language governing permissions
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * and limitations under the License.
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * When distributing Covered Code, include this CDDL HEADER in each
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * If applicable, add the following below this CDDL HEADER, with the
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * fields enclosed by brackets "[]" replaced with your own identifying
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * information: Portions Copyright [yyyy] [name of copyright owner]
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * CDDL HEADER END
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * Use is subject to license terms.
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire#pragma ident "%Z%%M% %I% %E% SMI"
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire%token SCC_VALIDATE SCC_IMPORT SCC_EXPORT SCC_ARCHIVE SCC_APPLY SCC_EXTRACT
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire%token SCC_REPOSITORY SCC_INVENTORY SCC_SET SCC_END SCC_HELP SCC_RESTORE
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire%token SCC_LIST SCC_ADD SCC_DELETE SCC_SELECT SCC_UNSELECT
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire%token SCC_LISTPROP SCC_SETPROP SCC_DELPROP SCC_EDITPROP
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire%token SCC_ADDPROPVALUE SCC_DELPROPVALUE SCC_SETENV SCC_UNSETENV
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire%token SCC_LISTSNAP SCC_SELECTSNAP SCC_REVERT SCC_REFRESH
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire%token SCS_REDIRECT SCS_NEWLINE SCS_EQUALS SCS_LPAREN SCS_RPAREN
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * We could hoist the command terminator for all the rules up here, but then
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * the parser would reduce before shifting the terminator, which would require
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * an additional error rule (per command) to catch extra arguments.
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * This way requires all input to be terminated, which is done by input() in
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire * svccfg.l.
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire | error terminator { semerr(gettext("Syntax error.\n")); }
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire while ((slp = uu_list_teardown($2, &cookie)) != NULL) {
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire | SCC_VALIDATE error terminator { synerr(SCC_VALIDATE); return(0); }
a192e900f6d2b0e1a822e3252c0dfd795ed49d76amaguire while ((slp = uu_list_teardown($2, &cookie)) != NULL) {
if ($$ == NULL)