1 /* $Header: /p/tcsh/cvsroot/tcsh/tc.decls.h,v 3.66 2012/06/21 18:49:11 christos Exp $ */ 2 /* 3 * tc.decls.h: Function declarations from all the tcsh modules 4 */ 5 /*- 6 * Copyright (c) 1980, 1991 The Regents of the University of California. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. Neither the name of the University nor the names of its contributors 18 * may be used to endorse or promote products derived from this software 19 * without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 */ 33 #ifndef _h_tc_decls 34 #define _h_tc_decls 35 36 struct blk_buf; 37 struct strbuf; 38 struct Strbuf; 39 40 /* 41 * tc.alloc.c 42 */ 43 #ifndef SYSMALLOC 44 #ifndef WINNT_NATIVE 45 #ifndef __linux__ 46 extern void free (ptr_t); 47 extern memalign_t malloc (size_t); 48 extern memalign_t realloc (ptr_t, size_t); 49 extern memalign_t calloc (size_t, size_t); 50 #endif 51 #endif /* !WINNT_NATIVE */ 52 #else /* SYSMALLOC */ 53 extern void sfree (ptr_t); 54 extern memalign_t smalloc (size_t); 55 extern memalign_t srealloc (ptr_t, size_t); 56 extern memalign_t scalloc (size_t, size_t); 57 #endif /* SYSMALLOC */ 58 extern void showall (Char **, struct command *); 59 60 /* 61 * tc.bind.c 62 */ 63 extern void dobindkey (Char **, struct command *); 64 65 /* 66 * tc.defs.c: 67 */ 68 extern void getmachine (void); 69 70 71 /* 72 * tc.disc.c 73 */ 74 extern int setdisc (int); 75 extern int resetdisc (int); 76 77 /* 78 * tc.func.c 79 */ 80 extern Char *expand_lex (const struct wordent *, int, int); 81 extern Char *sprlex (const struct wordent *); 82 extern Char *Itoa (int, size_t, Char); 83 extern void dolist (Char **, struct command *); 84 extern void dotermname (Char **, struct command *); 85 extern void dotelltc (Char **, struct command *); 86 extern void doechotc (Char **, struct command *); 87 extern void dosettc (Char **, struct command *); 88 extern int cmd_expand (Char *, Char **); 89 extern void dowhich (Char **, struct command *); 90 extern struct process *find_stop_ed (void); 91 extern void fg_proc_entry (struct process *); 92 extern void alrmcatch (void); 93 extern void precmd (void); 94 extern void postcmd (void); 95 extern void cwd_cmd (void); 96 extern void beep_cmd (void); 97 extern void period_cmd (void); 98 extern void job_cmd (Char *); 99 extern void aliasrun (int, Char *, Char *); 100 extern void setalarm (int); 101 extern void rmstar (struct wordent *); 102 extern void continue_jobs (struct wordent *); 103 extern Char *gettilde (const Char *); 104 extern Char *getusername (Char **); 105 #ifdef OBSOLETE 106 extern void doaliases (Char **, struct command *); 107 #endif /* OBSOLETE */ 108 extern void shlvl (int); 109 extern int fixio (int, int); 110 extern int collate (const Char *, const Char *); 111 #ifdef HASHBANG 112 extern int hashbang (int, Char ***); 113 #endif /* HASHBANG */ 114 #ifdef REMOTEHOST 115 extern void remotehost (void); 116 #endif /* REMOTEHOST */ 117 118 119 /* 120 * tc.os.c 121 */ 122 #ifdef MACH 123 extern void dosetpath (Char **, struct command *); 124 #endif /* MACH */ 125 126 #ifdef TCF 127 extern void dogetxvers (Char **, struct command *); 128 extern void dosetxvers (Char **, struct command *); 129 extern void dogetspath (Char **, struct command *); 130 extern void dosetspath (Char **, struct command *); 131 extern char *sitename (pid_t); 132 extern void domigrate (Char **, struct command *); 133 #endif /* TCF */ 134 135 #ifdef WARP 136 extern void dowarp (Char **, struct command *); 137 #endif /* WARP */ 138 139 #if defined(_CRAY) && !defined(_CRAYMPP) 140 extern void dodmmode (Char **, struct command *); 141 #endif /* _CRAY && !_CRAYMPP */ 142 143 #if defined(masscomp) || defined(hcx) 144 extern void douniverse (Char **, struct command *); 145 #endif /* masscomp */ 146 147 #if defined(_OSD_POSIX) /* BS2000 */ 148 extern void dobs2cmd (Char **, struct command *); 149 #endif /* _OSD_POSIX */ 150 151 #if defined(hcx) 152 extern void doatt (Char **, struct command *); 153 extern void doucb (Char **, struct command *); 154 #endif /* hcx */ 155 156 #ifdef _SEQUENT_ 157 extern void pr_stat_sub (struct process_stats *, 158 struct process_stats *, 159 struct process_stats *); 160 #endif /* _SEQUENT_ */ 161 162 #ifdef NEEDtcgetpgrp 163 extern pid_t xtcgetpgrp (int); 164 extern int xtcsetpgrp (int, int); 165 # undef tcgetpgrp 166 # define tcgetpgrp(a) xtcgetpgrp(a) 167 # undef tcsetpgrp 168 # define tcsetpgrp(a, b) xtcsetpgrp((a), (b)) 169 #endif /* NEEDtcgetpgrp */ 170 171 #ifdef YPBUGS 172 extern void fix_yp_bugs (void); 173 #endif /* YPBUGS */ 174 #ifdef STRCOLLBUG 175 extern void fix_strcoll_bug (void); 176 #endif /* STRCOLLBUG */ 177 178 extern void osinit (void); 179 180 #ifndef HAVE_MEMMOVE 181 extern void *xmemmove (void *, const void *, size_t); 182 # define memmove(a, b, c) xmemmove(a, b, c) 183 #endif /* !HAVE_MEMMOVE */ 184 185 #ifndef HAVE_MEMSET 186 extern void *xmemset (void *, int, size_t); 187 # define memset(a, b, c) xmemset(a, b, c) 188 #endif /* !HAVE_MEMSET */ 189 190 191 #ifndef HAVE_GETCWD 192 extern char *xgetcwd (char *, size_t); 193 # undef getcwd 194 # define getcwd(a, b) xgetcwd(a, b) 195 #endif /* !HAVE_GETCWD */ 196 197 #ifndef HAVE_GETHOSTNAME 198 extern int xgethostname (char *, int); 199 # undef gethostname 200 # define gethostname(a, b) xgethostname(a, b) 201 #endif /* !HAVE_GETHOSTNAME */ 202 203 #ifndef HAVE_NICE 204 extern int xnice (int); 205 # undef nice 206 # define nice(a) xnice(a) 207 #endif /* !HAVE_NICE */ 208 209 #ifndef HAVE_STRERROR 210 extern char *xstrerror (int); 211 # undef strerror 212 # define strerror(a) xstrerror(a) 213 #endif /* !HAVE_STRERROR */ 214 215 #ifdef apollo 216 extern void doinlib (Char **, struct command *); 217 extern void dover (Char **, struct command *); 218 extern void dorootnode (Char **, struct command *); 219 extern int getv (Char *); 220 #endif /* apollo */ 221 222 223 /* 224 * tc.printf.h 225 */ 226 #ifndef __GNUC__ 227 #define __attribute__(a) 228 #endif 229 extern int xprintf (const char *, ...) 230 __attribute__((__format__(__printf__, 1, 2))); 231 extern int xsnprintf (char *, size_t, const char *, ...) 232 __attribute__((__format__(__printf__, 3, 4))); 233 extern char *xasprintf (const char *, ...) 234 __attribute__((__format__(__printf__, 1, 2))); 235 extern int xvprintf (const char *, va_list) 236 __attribute__((__format__(__printf__, 1, 0))); 237 extern int xvsnprintf (char *, size_t, const char *, va_list) 238 __attribute__((__format__(__printf__, 3, 0))); 239 extern char *xvasprintf (const char *, va_list) 240 __attribute__((__format__(__printf__, 1, 0))); 241 242 /* 243 * tc.prompt.c 244 */ 245 extern void dateinit (void); 246 extern void printprompt (int, const char *); 247 extern int expdollar (struct Strbuf *, const Char **, Char); 248 extern Char *tprintf (int, const Char *, const char *, 249 time_t, ptr_t); 250 251 /* 252 * tc.sched.c 253 */ 254 extern time_t sched_next (void); 255 extern void dosched (Char **, struct command *); 256 extern void sched_run (void); 257 258 /* 259 * tc.str.c: 260 */ 261 #ifdef WIDE_STRINGS 262 extern size_t one_mbtowc (Char *, const char *, size_t); 263 extern size_t one_wctomb (char *, Char); 264 extern int rt_mbtowc (Char *, const char *, size_t); 265 #else 266 #define one_mbtowc(PWC, S, N) \ 267 ((void)(N), *(PWC) = (unsigned char)*(S), (size_t)1) 268 #define one_wctomb(S, WCHAR) (*(S) = (WCHAR), (size_t)1) 269 #endif 270 #ifdef SHORT_STRINGS 271 extern Char *s_strchr (const Char *, int); 272 extern Char *s_strrchr (const Char *, int); 273 extern Char *s_strcat (Char *, const Char *); 274 # ifdef NOTUSED 275 extern Char *s_strncat (Char *, const Char *, size_t); 276 # endif /* NOTUSED */ 277 extern Char *s_strcpy (Char *, const Char *); 278 extern Char *s_strncpy (Char *, const Char *, size_t); 279 extern Char *s_strspl (const Char *, const Char *); 280 extern size_t s_strlen (const Char *); 281 extern int s_strcmp (const Char *, const Char *); 282 extern int s_strncmp (const Char *, const Char *, size_t); 283 extern int s_strcasecmp (const Char *, const Char *); 284 extern Char *s_strnsave (const Char *, size_t); 285 extern Char *s_strsave (const Char *); 286 extern Char *s_strend (const Char *); 287 extern Char *s_strstr (const Char *, const Char *); 288 extern Char *str2short (const char *); 289 extern Char **blk2short (char **); 290 extern char *short2str (const Char *); 291 extern char **short2blk (Char **); 292 #else /* !SHORT_STRINGS */ 293 extern char *caching_strip (const char *); 294 #endif 295 extern char *short2qstr (const Char *); 296 297 extern struct blk_buf *bb_alloc (void); 298 extern void bb_append (struct blk_buf *, Char *); 299 extern void bb_cleanup (void *); 300 extern Char **bb_finish (struct blk_buf *); 301 extern void bb_free (void *); 302 303 extern struct strbuf *strbuf_alloc(void); 304 extern void strbuf_terminate(struct strbuf *); 305 extern void strbuf_append1(struct strbuf *, char); 306 extern void strbuf_appendn(struct strbuf *, const char *, 307 size_t); 308 extern void strbuf_append (struct strbuf *, const char *); 309 extern char *strbuf_finish (struct strbuf *); 310 extern void strbuf_cleanup(void *); 311 extern void strbuf_free(void *); 312 extern struct Strbuf *Strbuf_alloc(void); 313 extern void Strbuf_terminate(struct Strbuf *); 314 extern void Strbuf_append1(struct Strbuf *, Char); 315 extern void Strbuf_appendn(struct Strbuf *, const Char *, 316 size_t); 317 extern void Strbuf_append (struct Strbuf *, const Char *); 318 extern Char *Strbuf_finish (struct Strbuf *); 319 extern void Strbuf_cleanup(void *); 320 extern void Strbuf_free(void *); 321 322 323 /* 324 * tc.vers.c: 325 */ 326 extern void fix_version (void); 327 328 /* 329 * tc.who.c 330 */ 331 #if defined (HAVE_UTMP_H) || defined (HAVE_UTMPX_H) || defined (WINNT_NATIVE) 332 extern void initwatch (void); 333 extern void resetwatch (void); 334 extern void watch_login (int); 335 extern char *who_info (ptr_t, int); 336 extern void dolog (Char **, struct command *); 337 # ifdef HAVE_STRUCT_UTMP_UT_HOST 338 extern char *utmphost (void); 339 extern size_t utmphostsize (void); 340 # endif /* HAVE_STRUCT_UTMP_UT_HOST */ 341 #else 342 # define HAVENOUTMP 343 #endif 344 345 #endif /* _h_tc_decls */ 346