usr/src/cmd/zonecfg/zonecfg_lex.l
author nn35248
Mon, 11 Sep 2006 22:51:59 -0700
changeset 2712 f74a135872bc
parent 2267 c5d9a656170f
child 3247 e05001c14ea2
permissions -rw-r--r--
PSARC/2005/471 BrandZ: Support for non-native zones 6374606 ::nm -D without an object may not work on processes in zones 6409350 BrandZ project integration into Solaris 6455289 pthread_setschedparam() should return EPERM rather than panic libc 6455591 setpriority(3C) gets errno wrong for deficient privileges failure 6458178 fifofs doesn't support lofs mounts of fifos 6460380 Attempted open() of a symlink with the O_NOFOLLOW flag set returns EINVAL, not ELOOP 6463857 renice(1) errors erroneously
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
%{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
 * The contents of this file are subject to the terms of the
1645
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
     6
 * Common Development and Distribution License (the "License").
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
     7
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 * CDDL HEADER END
1645
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
    21
 */
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
    22
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
    23
/*
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
    24
 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
#pragma ident	"%Z%%M%	%I%	%E% SMI"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#include <string.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
#include <libintl.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#include "zonecfg.h"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
#include "zonecfg_grammar.tab.h"
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
int lex_lineno = 1;	/* line number for error reporting */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
static int state = INITIAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
extern bool cmd_file_mode;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
extern bool saw_error;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
extern void yyerror(char *s);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
char *safe_strdup(char *s);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
%}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
2267
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
    43
%a 4000
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
%{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
 * The three states below are for tokens, lists and complex property values.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
 * Note that simple property values are a subset of tokens.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
%}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
%s TSTATE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
%s LSTATE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
%s CSTATE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
%%
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
<INITIAL>"#"[^\n]*	{ }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
<INITIAL>add	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
			return ADD;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
<INITIAL>cancel	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
			return CANCEL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
<INITIAL>commit	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
			return COMMIT;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
<INITIAL>create	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
			return CREATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
<INITIAL>delete {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
			return DELETE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
<INITIAL>end	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
			return END;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
<INITIAL>exit	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
			return EXIT;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
<INITIAL>export	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
			return EXPORT;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   105
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   106
<INITIAL>"?"|help {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   107
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   108
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   109
			return HELP;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   110
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   111
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   112
<INITIAL>info	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   113
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   114
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   115
			return INFO;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   116
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   117
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   118
<INITIAL>remove	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   119
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   120
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   121
			return REMOVE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   122
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
<INITIAL>revert	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
			return REVERT;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   128
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   129
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   130
<INITIAL>select {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
			return SELECT;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
<INITIAL>set {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   137
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   138
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   139
			return SET;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   140
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   141
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   142
<INITIAL>verify	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   143
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   144
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   145
			return VERIFY;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   146
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   147
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   148
<TSTATE>net	{ return NET; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   149
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   150
<TSTATE>fs	{ return FS; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   151
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   152
<TSTATE>inherit-pkg-dir	{ return IPD; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   153
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   154
<TSTATE>device	{ return DEVICE; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   155
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   156
<TSTATE>rctl	{ return RCTL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   157
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   158
<TSTATE>attr	{ return ATTR; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   159
565
519e81088064 PSARC 2005/485 Zone Rename
dp
parents: 0
diff changeset
   160
<TSTATE>zonename	{ return ZONENAME; }
519e81088064 PSARC 2005/485 Zone Rename
dp
parents: 0
diff changeset
   161
<CSTATE>zonename	{ return ZONENAME; }
519e81088064 PSARC 2005/485 Zone Rename
dp
parents: 0
diff changeset
   162
789
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents: 565
diff changeset
   163
<TSTATE>dataset	{ return DATASET; }
b348f31ed315 PSARC 2002/240 ZFS
ahrens
parents: 565
diff changeset
   164
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
<TSTATE>zonepath	{ return ZONEPATH; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
<CSTATE>zonepath	{ return ZONEPATH; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
2712
f74a135872bc PSARC/2005/471 BrandZ: Support for non-native zones
nn35248
parents: 2267
diff changeset
   168
<TSTATE>brand	{ return BRAND; }
f74a135872bc PSARC/2005/471 BrandZ: Support for non-native zones
nn35248
parents: 2267
diff changeset
   169
<CSTATE>brand	{ return BRAND; }
f74a135872bc PSARC/2005/471 BrandZ: Support for non-native zones
nn35248
parents: 2267
diff changeset
   170
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
<TSTATE>autoboot	{ return AUTOBOOT; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
<CSTATE>autoboot	{ return AUTOBOOT; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
<TSTATE>pool	{ return POOL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
<CSTATE>pool	{ return POOL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
1645
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
   177
<TSTATE>limitpriv	{ return LIMITPRIV; }
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
   178
<CSTATE>limitpriv	{ return LIMITPRIV; }
5c204cdba7d2 PSARC 2006/124 Configurable Privileges for Zones
comay
parents: 789
diff changeset
   179
2267
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
   180
<TSTATE>bootargs	{ return BOOTARGS; }
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
   181
<CSTATE>bootargs	{ return BOOTARGS; }
c5d9a656170f PSARC/2006/269 Zone Boot Arguments II
dp
parents: 1645
diff changeset
   182
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
<TSTATE>type	{ return TYPE; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
<CSTATE>type	{ return TYPE; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
<TSTATE>value	{ return VALUE; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
<CSTATE>value	{ return VALUE; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
<TSTATE>options	{ return OPTIONS; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
<CSTATE>options	{ return OPTIONS; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
<TSTATE>address	{ return ADDRESS; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
<CSTATE>address	{ return ADDRESS; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
<TSTATE>physical	{ return PHYSICAL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
<CSTATE>physical	{ return PHYSICAL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
<TSTATE>dir	{ return DIR; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
<CSTATE>dir	{ return DIR; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   201
<TSTATE>special	{ return SPECIAL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   202
<CSTATE>special	{ return SPECIAL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   203
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   204
<TSTATE>raw	{ return RAW; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   205
<CSTATE>raw	{ return RAW; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   206
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   207
<TSTATE>name	{ return NAME; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
<CSTATE>name	{ return NAME; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
<TSTATE>match	{ return MATCH; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
<CSTATE>match	{ return MATCH; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
<TSTATE>priv	{ return PRIV; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
<CSTATE>priv	{ return PRIV; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
<TSTATE>limit	{ return LIMIT; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
<CSTATE>limit	{ return LIMIT; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
<TSTATE>action	{ return ACTION; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   220
<CSTATE>action	{ return ACTION; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   221
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
<TSTATE>=	{ return EQUAL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
<LSTATE>=	{ return EQUAL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
<CSTATE>=	{ return EQUAL; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
<TSTATE>"["	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
			BEGIN LSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
			state = LSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
			return OPEN_SQ_BRACKET;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
<LSTATE>"]"	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
			BEGIN TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   234
			state = TSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   235
			return CLOSE_SQ_BRACKET;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
<TSTATE>"("	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
			BEGIN CSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
			return OPEN_PAREN;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
<LSTATE>"("	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
			BEGIN CSTATE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
			return OPEN_PAREN;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
<CSTATE>")"	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
			BEGIN state;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
			return CLOSE_PAREN;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
<LSTATE>","	{ return COMMA; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
<CSTATE>","	{ return COMMA; }
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
<TSTATE>[^ \t\n\";=\[\]\(\)]+	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
			yylval.strval = safe_strdup(yytext);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
			return TOKEN;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
<LSTATE>[^ \t\n\",;=\[\]\(\)]+	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   262
			yylval.strval = safe_strdup(yytext);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   263
			return TOKEN;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
<CSTATE>[^ \t\n\",;=\(\)]+	{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
			yylval.strval = safe_strdup(yytext);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
			return TOKEN;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
<TSTATE>\"[^\"\n]*[\"\n] {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
			yylval.strval = safe_strdup(yytext + 1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
			if (yylval.strval[yyleng - 2] == '"')
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
				yylval.strval[yyleng - 2] = 0;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
			return TOKEN;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   276
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   277
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
<LSTATE>\"[^\"\n]*[\"\n] {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
			yylval.strval = safe_strdup(yytext + 1);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
			if (yylval.strval[yyleng - 2] == '"')
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
				yylval.strval[yyleng - 2] = 0;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
			return TOKEN;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
";"		{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   286
			BEGIN INITIAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   287
			return (yytext[0]);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   288
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   289
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   290
\n		{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   291
			lex_lineno++;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   292
			BEGIN INITIAL;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   293
			return (yytext[0]);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   294
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   295
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   296
[ \t]		;	/* Ignore whitespace */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   297
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
.		{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
			return (yytext[0]);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   300
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
%%
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
char *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
safe_strdup(char *s)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
	char *result;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
	if ((result = strdup(s)) == NULL) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
		yyerror("Out of memory");
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
		exit(Z_ERR);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
	return (result);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
void
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   317
yyerror(char *s)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   318
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   319
	/* feof(yyin) is not an error; anything else is, so we set saw_error */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   320
	if (yytext[0] == '\0') {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   321
		if (!feof(yyin)) {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   322
			saw_error = TRUE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   323
			(void) fprintf(stderr, gettext("%s, token expected\n"),
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   324
			    s);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
		}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
		return;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
	}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
	saw_error = TRUE;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
	if (cmd_file_mode)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
		(void) fprintf(stderr, gettext("%s on line %d at '%s'\n"), s,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
		    lex_lineno, (yytext[0] == '\n') ? "\\n" : yytext);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
	else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   334
		(void) fprintf(stderr, gettext("%s at '%s'\n"), s,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
		    (yytext[0] == '\n') ? "\\n" : yytext);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
	usage(FALSE, HELP_SUBCMDS);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   337
}