svccfg.y revision db11989eba94cf47ce5bf1b5d90354fa5855a69f
%{
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
#include <libintl.h>
#include "svccfg.h"
%}
%union {
int tok;
char *str;
}
%%
/*
* We could hoist the command terminator for all the rules up here, but then
* the parser would reduce before shifting the terminator, which would require
* an additional error rule (per command) to catch extra arguments.
* This way requires all input to be terminated, which is done by input() in
* svccfg.l.
*/
| set_cmd
| end_cmd
| help_cmd
| list_cmd
| add_cmd
{
free($1);
}
{
}
uu_list_destroy($2);
free($1);
}
{
bundle_t *b = internal_bundle_new();
lxml_get_bundle_file(b, $2, 0);
(void) internal_bundle_free(b);
free($2);
}
{
return(0);
}
}
uu_list_destroy($2);
}
{
free($2);
}
{
free($2);
free($4);
}
{
}
{
lscf_archive($3);
free($3);
}
{
lscf_profile_extract($3);
free($3);
}
{
return(0);
}
lscf_set_repository($2, 0);
free($2);
}
{
free($2);
free($3);
} else {
return(0);
}
}
{
(void) engine_set($2);
}
uu_list_destroy($2);
}
{
free($2);
free($3);
} else {
return(0);
}
}
{
free($2);
free($3);
free($4);
}
{
free($2);
free($4);
}
{
free($2);
free($4);
free($5);
}
{
free($2);
free($4);
}
uu_list_destroy($6);
}
{
free($2);
free($3);
}
{
free($2);
free($3);
free($4);
}
{
free($2);
free($3);
}
{
return(0);
}
}
uu_list_destroy($2);
}
{
return(0);
}
}
uu_list_destroy($2);
}
{ synerr(SCC_SELECTSNAP); return(0); }
{
if ($$ == NULL)
}
{
$$ = $1;
}
{
$$ = $1;
}
{
/* Append $3 to $1. */
uu_list_destroy($3);
}
| SCV_STRING { $$ = $1; }
| SCV_WORD { $$ = $1; }
| SCC_IMPORT { $$ = SCC_IMPORT; }
| SCC_EXPORT { $$ = SCC_EXPORT; }
| SCC_EXTRACT { $$ = SCC_EXTRACT; }
| SCC_REPOSITORY { $$ = SCC_REPOSITORY; }
| SCC_ARCHIVE { $$ = SCC_ARCHIVE; }
| SCC_INVENTORY { $$ = SCC_INVENTORY; }
| SCC_DELETE { $$ = SCC_DELETE; }
| SCC_SELECT { $$ = SCC_SELECT; }
| SCC_UNSELECT { $$ = SCC_UNSELECT; }
| SCC_LISTPG { $$ = SCC_LISTPG; }
| SCC_LISTPROP { $$ = SCC_LISTPROP; }
| SCC_SETPROP { $$ = SCC_SETPROP; }
| SCC_DELPROP { $$ = SCC_DELPROP; }
| SCC_EDITPROP { $$ = SCC_EDITPROP; }
| SCC_ADDPROPVALUE { $$ = SCC_ADDPROPVALUE; }
| SCC_DELPROPVALUE { $$ = SCC_DELPROPVALUE; }
| SCC_SETENV { $$ = SCC_SETENV; }
| SCC_UNSETENV { $$ = SCC_UNSETENV; }
| SCC_LISTSNAP { $$ = SCC_LISTSNAP; }
| SCC_SELECTSNAP { $$ = SCC_SELECTSNAP; }
| SCC_REVERT { $$ = SCC_REVERT; }