~ubuntu-branches/ubuntu/hardy/klibc/hardy-updates

« back to all changes in this revision

Viewing changes to dash/parser.h

  • Committer: Bazaar Package Importer
  • Author(s): Jeff Bailey
  • Date: 2006-01-04 20:24:52 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20060104202452-ec4v3n829rymukuv
Tags: 1.1.15-0ubuntu1
* New upstream version.

* Patch to fix compilation on parisc64 kernels.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*-
 
2
 * Copyright (c) 1991, 1993
 
3
 *      The Regents of the University of California.  All rights reserved.
 
4
 * Copyright (c) 1997-2005
 
5
 *      Herbert Xu <herbert@gondor.apana.org.au>.  All rights reserved.
 
6
 *
 
7
 * This code is derived from software contributed to Berkeley by
 
8
 * Kenneth Almquist.
 
9
 *
 
10
 * Redistribution and use in source and binary forms, with or without
 
11
 * modification, are permitted provided that the following conditions
 
12
 * are met:
 
13
 * 1. Redistributions of source code must retain the above copyright
 
14
 *    notice, this list of conditions and the following disclaimer.
 
15
 * 2. Redistributions in binary form must reproduce the above copyright
 
16
 *    notice, this list of conditions and the following disclaimer in the
 
17
 *    documentation and/or other materials provided with the distribution.
 
18
 * 3. Neither the name of the University nor the names of its contributors
 
19
 *    may be used to endorse or promote products derived from this software
 
20
 *    without specific prior written permission.
 
21
 *
 
22
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 
23
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
24
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
25
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 
26
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
27
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 
28
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 
29
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 
30
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 
31
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 
32
 * SUCH DAMAGE.
 
33
 *
 
34
 *      @(#)parser.h    8.3 (Berkeley) 5/4/95
 
35
 */
 
36
 
 
37
/* control characters in argument strings */
 
38
#define CTL_FIRST '\201'        /* first 'special' character */
 
39
#define CTLESC '\201'           /* escape next character */
 
40
#define CTLVAR '\202'           /* variable defn */
 
41
#define CTLENDVAR '\203'
 
42
#define CTLBACKQ '\204'
 
43
#define CTLQUOTE 01             /* ored with CTLBACKQ code if in quotes */
 
44
/*      CTLBACKQ | CTLQUOTE == '\205' */
 
45
#define CTLARI  '\206'          /* arithmetic expression */
 
46
#define CTLENDARI '\207'
 
47
#define CTLQUOTEMARK '\210'
 
48
#define CTL_LAST '\210'         /* last 'special' character */
 
49
 
 
50
/* variable substitution byte (follows CTLVAR) */
 
51
#define VSTYPE  0x0f            /* type of variable substitution */
 
52
#define VSNUL   0x10            /* colon--treat the empty string as unset */
 
53
#define VSQUOTE 0x80            /* inside double quotes--suppress splitting */
 
54
 
 
55
/* values of VSTYPE field */
 
56
#define VSNORMAL        0x1             /* normal variable:  $var or ${var} */
 
57
#define VSMINUS         0x2             /* ${var-text} */
 
58
#define VSPLUS          0x3             /* ${var+text} */
 
59
#define VSQUESTION      0x4             /* ${var?message} */
 
60
#define VSASSIGN        0x5             /* ${var=text} */
 
61
#define VSTRIMRIGHT     0x6             /* ${var%pattern} */
 
62
#define VSTRIMRIGHTMAX  0x7             /* ${var%%pattern} */
 
63
#define VSTRIMLEFT      0x8             /* ${var#pattern} */
 
64
#define VSTRIMLEFTMAX   0x9             /* ${var##pattern} */
 
65
#define VSLENGTH        0xa             /* ${#var} */
 
66
 
 
67
/* values of checkkwd variable */
 
68
#define CHKALIAS        0x1
 
69
#define CHKKWD          0x2
 
70
#define CHKNL           0x4
 
71
 
 
72
 
 
73
/*
 
74
 * NEOF is returned by parsecmd when it encounters an end of file.  It
 
75
 * must be distinct from NULL, so we use the address of a variable that
 
76
 * happens to be handy.
 
77
 */
 
78
extern int tokpushback;
 
79
#define NEOF ((union node *)&tokpushback)
 
80
extern int whichprompt;         /* 1 == PS1, 2 == PS2 */
 
81
extern int checkkwd;
 
82
extern int startlinno;          /* line # where last token started */
 
83
 
 
84
 
 
85
union node *parsecmd(int);
 
86
void fixredir(union node *, const char *, int);
 
87
const char *getprompt(void *);
 
88
const char *const *findkwd(const char *);
 
89
char *endofname(const char *);
 
90
const char *expandstr(const char *);
 
91
 
 
92
static inline int
 
93
goodname(const char *p)
 
94
{
 
95
        return !*endofname(p);
 
96
}