Home | History | Annotate | Line # | Download | only in csh
extern.h revision 1.14
      1 /* $NetBSD: extern.h,v 1.14 2001/09/14 14:04:00 wiz Exp $ */
      2 
      3 /*-
      4  * Copyright (c) 1991, 1993
      5  *	The Regents of the University of California.  All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  * 3. All advertising materials mentioning features or use of this software
     16  *    must display the following acknowledgement:
     17  *	This product includes software developed by the University of
     18  *	California, Berkeley and its contributors.
     19  * 4. Neither the name of the University nor the names of its contributors
     20  *    may be used to endorse or promote products derived from this software
     21  *    without specific prior written permission.
     22  *
     23  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     26  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     30  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     31  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     32  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     33  * SUCH DAMAGE.
     34  *
     35  *	@(#)extern.h	8.1 (Berkeley) 5/31/93
     36  */
     37 
     38 #ifndef _EXTERN_H_
     39 #define _EXTERN_H_
     40 
     41 #include <sys/cdefs.h>
     42 
     43 /*
     44  * csh.c
     45  */
     46 int gethdir(Char *);
     47 void dosource(Char **, struct command *);
     48 __dead void exitstat __P((void)) __attribute__((noreturn));
     49 void goodbye(void);
     50 void importpath(Char *);
     51 void initdesc(void);
     52 void pintr(int);
     53 void pintr1 __P((bool)) __attribute__((noreturn));
     54 void printprompt(void);
     55 void process(bool);
     56 void rechist(void);
     57 void untty(void);
     58 int vis_fputc(int, FILE *);
     59 
     60 #ifdef PROF
     61 __dead void done __P((int)) __attribute__((noreturn));
     62 #else
     63 __dead void xexit __P((int)) __attribute__((noreturn));
     64 #endif
     65 
     66 /*
     67  * dir.c
     68  */
     69 void dinit(Char *);
     70 void dodirs(Char **, struct command *);
     71 Char *dcanon(Char *, Char *);
     72 void dtildepr(Char *, Char *);
     73 void dtilde(void);
     74 void dochngd(Char **, struct command *);
     75 Char *dnormalize(Char *);
     76 void dopushd(Char **, struct command *);
     77 void dopopd(Char **, struct command *);
     78 struct directory;
     79 void dfree(struct directory *);
     80 
     81 /*
     82  * dol.c
     83  */
     84 void Dfix(struct command *);
     85 Char *Dfix1(Char *);
     86 void heredoc(Char *);
     87 
     88 /*
     89  * err.c
     90  */
     91 void seterror(int, ...);
     92 __dead void stderror __P((int, ...)) __attribute__((noreturn));
     93 
     94 /*
     95  * exec.c
     96  */
     97 void doexec __P((Char **, struct command *)) __attribute__((noreturn));
     98 void dohash(Char **, struct command *);
     99 void dounhash(Char **, struct command *);
    100 void dowhich(Char **, struct command *);
    101 void execash(Char **, struct command *);
    102 void hashstat(Char **, struct command *);
    103 void xechoit(Char **);
    104 
    105 /*
    106  * exp.c
    107  */
    108 int expr(Char ***);
    109 int exp0(Char ***, bool);
    110 
    111 /*
    112  * file.c
    113  */
    114 #ifdef FILEC
    115 int tenex(Char *, int);
    116 #endif
    117 
    118 /*
    119  * func.c
    120  */
    121 void Setenv(Char *, Char *);
    122 void doalias(Char **, struct command *);
    123 void dobreak(Char **, struct command *);
    124 void docontin(Char **, struct command *);
    125 void doecho(Char **, struct command *);
    126 void doelse(Char **, struct command *);
    127 void doend(Char **, struct command *);
    128 void doeval(Char **, struct command *);
    129 void doexit(Char **, struct command *);
    130 void doforeach(Char **, struct command *);
    131 void doglob(Char **, struct command *);
    132 void dogoto(Char **, struct command *);
    133 void doif(Char **, struct command *);
    134 void dolimit(Char **, struct command *);
    135 void dologin(Char **, struct command *);
    136 void dologout(Char **, struct command *);
    137 void donohup(Char **, struct command *);
    138 void doonintr(Char **, struct command *);
    139 void doprintf(Char **, struct command *);
    140 void dorepeat(Char **, struct command *);
    141 void dosetenv(Char **, struct command *);
    142 void dosuspend(Char **, struct command *);
    143 void doswbrk(Char **, struct command *);
    144 void doswitch(Char **, struct command *);
    145 void doumask(Char **, struct command *);
    146 void dounlimit(Char **, struct command *);
    147 void dounsetenv(Char **, struct command *);
    148 void dowhile(Char **, struct command *);
    149 void dozip(Char **, struct command *);
    150 void func(struct command *, struct biltins *);
    151 struct biltins *isbfunc(struct command *);
    152 void prvars(void);
    153 void gotolab(Char *);
    154 int srchx(Char *);
    155 void unalias(Char **, struct command *);
    156 void wfree(void);
    157 
    158 /*
    159  * glob.c
    160  */
    161 Char **dobackp(Char *, bool);
    162 void Gcat(Char *, Char *);
    163 Char *globone(Char *, int);
    164 int  Gmatch(Char *, Char *);
    165 void ginit(void);
    166 Char **globall(Char **);
    167 void rscan(Char **, void (*)(int));
    168 void tglob(Char **);
    169 void trim(Char **);
    170 #ifdef FILEC
    171 int sortscmp(const ptr_t, const ptr_t);
    172 #endif /* FILEC */
    173 
    174 /*
    175  * hist.c
    176  */
    177 void dohist(Char **, struct command *);
    178 struct Hist *enthist(int, struct wordent *, bool);
    179 void savehist(struct wordent *);
    180 
    181 /*
    182  * lex.c
    183  */
    184 void addla(Char *);
    185 void bseek(struct Ain *);
    186 void btell(struct Ain *);
    187 void btoeof(void);
    188 void copylex(struct wordent *, struct wordent *);
    189 Char *domod(Char *, int);
    190 void freelex(struct wordent *);
    191 int lex(struct wordent *);
    192 void prlex(FILE *, struct wordent *);
    193 int readc(bool);
    194 void settell(void);
    195 void unreadc(int);
    196 
    197 /*
    198  * misc.c
    199  */
    200 int any(char *, int);
    201 Char **blkcat(Char **, Char **);
    202 Char **blkcpy(Char **, Char **);
    203 Char **blkend(Char **);
    204 void blkfree(Char **);
    205 int blklen(Char **);
    206 void blkpr(FILE *, Char **);
    207 Char **blkspl(Char **, Char **);
    208 void closem(void);
    209 Char **copyblk(Char **);
    210 int dcopy(int, int);
    211 int dmove(int, int);
    212 void donefds(void);
    213 Char lastchr(Char *);
    214 void lshift(Char **, int);
    215 int number(Char *);
    216 int prefix(Char *, Char *);
    217 Char **saveblk(Char **);
    218 Char *strip(Char *);
    219 Char *quote(Char *);
    220 char *strsave(char *);
    221 char *strspl(char *, char *);
    222 void udvar __P((Char *)) __attribute__((noreturn));
    223 
    224 #ifndef	SHORT_STRINGS
    225 # ifdef NOTUSED
    226 char *strstr(const char *, const char *);
    227 # endif /* NOTUSED */
    228 char *strend(char *);
    229 #endif
    230 
    231 /*
    232  * parse.c
    233  */
    234 void alias(struct wordent *);
    235 void freesyn(struct command *);
    236 struct command *syntax(struct wordent *, struct wordent *, int);
    237 
    238 
    239 /*
    240  * proc.c
    241  */
    242 void dobg(Char **, struct command *);
    243 void dobg1(Char **, struct command *);
    244 void dofg(Char **, struct command *);
    245 void dofg1(Char **, struct command *);
    246 void dojobs(Char **, struct command *);
    247 void dokill(Char **, struct command *);
    248 void donotify(Char **, struct command *);
    249 void dostop(Char **, struct command *);
    250 void dowait(Char **, struct command *);
    251 void palloc(int, struct command *);
    252 void panystop(bool);
    253 void pchild(int);
    254 void pendjob(void);
    255 struct process *pfind(Char *);
    256 int pfork(struct command *, int);
    257 void pgetty(int, int);
    258 void pjwait(struct process *);
    259 void pnote(void);
    260 void prestjob(void);
    261 void psavejob(void);
    262 void pstart(struct process *, int);
    263 void pwait(void);
    264 
    265 /*
    266  * sem.c
    267  */
    268 void execute(struct command *, int, int *, int *);
    269 void mypipe(int *);
    270 
    271 /*
    272  * set.c
    273  */
    274 struct varent*adrof1(Char *, struct varent *);
    275 void doset(Char **, struct command *);
    276 void dolet(Char **, struct command *);
    277 Char *putn(int);
    278 int getn(Char *);
    279 Char *value1(Char *, struct varent *);
    280 void set(Char *, Char *);
    281 void set1(Char *, Char **, struct varent *);
    282 void setq(Char *, Char **, struct varent *);
    283 void unset(Char **, struct command *);
    284 void unset1(Char *[], struct varent *);
    285 void unsetv(Char *);
    286 void setNS(Char *);
    287 void shift(Char **, struct command *);
    288 void plist(struct varent *);
    289 
    290 /*
    291  * time.c
    292  */
    293 void donice(Char **, struct command *);
    294 void dotime(Char **, struct command *);
    295 void prusage(struct rusage *, struct rusage *, struct timeval *,
    296              struct timeval *);
    297 void ruadd(struct rusage *, struct rusage *);
    298 void settimes(void);
    299 void pcsecs(long);
    300 void psecs(long);
    301 
    302 /*
    303  * alloc.c
    304  */
    305 void Free(ptr_t);
    306 ptr_t Malloc(size_t);
    307 ptr_t Realloc(ptr_t, size_t);
    308 ptr_t Calloc(size_t, size_t);
    309 void showall(Char **, struct command *);
    310 
    311 /*
    312  * str.c:
    313  */
    314 #ifdef SHORT_STRINGS
    315 Char *s_strchr(Char *, int);
    316 Char *s_strrchr(Char *, int);
    317 Char *s_strcat(Char *, Char *);
    318 #ifdef NOTUSED
    319 Char *s_strncat(Char *, Char *, size_t);
    320 #endif
    321 Char *s_strcpy(Char *, Char *);
    322 Char *s_strncpy(Char *, Char *, size_t);
    323 Char *s_strspl(Char *, Char *);
    324 size_t s_strlen(Char *);
    325 int s_strcmp(Char *, Char *);
    326 int s_strncmp(Char *, Char *, size_t);
    327 Char *s_strsave(Char *);
    328 Char *s_strend(Char *);
    329 Char *s_strstr(Char *, Char *);
    330 Char *str2short(const char *);
    331 Char **blk2short(char **);
    332 char *short2str(Char *);
    333 char **short2blk(Char **);
    334 #endif
    335 char *short2qstr(Char *);
    336 char *vis_str(Char *);
    337 
    338 #endif /* !_EXTERN_H_ */
    339