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