145e5710bSMark Peek /* 2c80476e4SDavid E. O'Brien * tc.decls.h: Function declarations from all the tcsh modules 3c80476e4SDavid E. O'Brien */ 4c80476e4SDavid E. O'Brien /*- 5c80476e4SDavid E. O'Brien * Copyright (c) 1980, 1991 The Regents of the University of California. 6c80476e4SDavid E. O'Brien * All rights reserved. 7c80476e4SDavid E. O'Brien * 8c80476e4SDavid E. O'Brien * Redistribution and use in source and binary forms, with or without 9c80476e4SDavid E. O'Brien * modification, are permitted provided that the following conditions 10c80476e4SDavid E. O'Brien * are met: 11c80476e4SDavid E. O'Brien * 1. Redistributions of source code must retain the above copyright 12c80476e4SDavid E. O'Brien * notice, this list of conditions and the following disclaimer. 13c80476e4SDavid E. O'Brien * 2. Redistributions in binary form must reproduce the above copyright 14c80476e4SDavid E. O'Brien * notice, this list of conditions and the following disclaimer in the 15c80476e4SDavid E. O'Brien * documentation and/or other materials provided with the distribution. 16c80476e4SDavid E. O'Brien * 3. Neither the name of the University nor the names of its contributors 1729301572SMark Peek * may be used to endorse or promote products derived from this software 18c80476e4SDavid E. O'Brien * without specific prior written permission. 19c80476e4SDavid E. O'Brien * 20c80476e4SDavid E. O'Brien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21c80476e4SDavid E. O'Brien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22c80476e4SDavid E. O'Brien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23c80476e4SDavid E. O'Brien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24c80476e4SDavid E. O'Brien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25c80476e4SDavid E. O'Brien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26c80476e4SDavid E. O'Brien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27c80476e4SDavid E. O'Brien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28c80476e4SDavid E. O'Brien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29c80476e4SDavid E. O'Brien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30c80476e4SDavid E. O'Brien * SUCH DAMAGE. 31c80476e4SDavid E. O'Brien */ 32c80476e4SDavid E. O'Brien #ifndef _h_tc_decls 33c80476e4SDavid E. O'Brien #define _h_tc_decls 34c80476e4SDavid E. O'Brien 35c80476e4SDavid E. O'Brien struct blk_buf; 3645e5710bSMark Peek struct strbuf; 3745e5710bSMark Peek struct Strbuf; 3845e5710bSMark Peek 3945e5710bSMark Peek /* 40c80476e4SDavid E. O'Brien * tc.alloc.c 41c80476e4SDavid E. O'Brien */ 42c80476e4SDavid E. O'Brien #ifndef SYSMALLOC 43c80476e4SDavid E. O'Brien #ifndef WINNT_NATIVE 443b6eaa7bSAndrey A. Chernov #ifndef __linux__ 4545e5710bSMark Peek extern void free (ptr_t); 4645e5710bSMark Peek extern memalign_t malloc (size_t); 4745e5710bSMark Peek extern memalign_t realloc (ptr_t, size_t); 4845e5710bSMark Peek extern memalign_t calloc (size_t, size_t); 4945e5710bSMark Peek #endif 5045e5710bSMark Peek #endif /* !WINNT_NATIVE */ 513b6eaa7bSAndrey A. Chernov #else /* SYSMALLOC */ 52c80476e4SDavid E. O'Brien extern void sfree (ptr_t); 5345e5710bSMark Peek extern memalign_t smalloc (size_t); 5445e5710bSMark Peek extern memalign_t srealloc (ptr_t, size_t); 5545e5710bSMark Peek extern memalign_t scalloc (size_t, size_t); 5645e5710bSMark Peek #endif /* SYSMALLOC */ 57c80476e4SDavid E. O'Brien extern void showall (Char **, struct command *); 5845e5710bSMark Peek 59c80476e4SDavid E. O'Brien /* 60c80476e4SDavid E. O'Brien * tc.bind.c 61c80476e4SDavid E. O'Brien */ 62c80476e4SDavid E. O'Brien extern void dobindkey (Char **, struct command *); 6345e5710bSMark Peek 64c80476e4SDavid E. O'Brien /* 65c80476e4SDavid E. O'Brien * tc.defs.c: 66c80476e4SDavid E. O'Brien */ 67c80476e4SDavid E. O'Brien extern void getmachine (void); 6845e5710bSMark Peek 69c80476e4SDavid E. O'Brien 70c80476e4SDavid E. O'Brien /* 71c80476e4SDavid E. O'Brien * tc.disc.c 72c80476e4SDavid E. O'Brien */ 73c80476e4SDavid E. O'Brien extern int setdisc (int); 7445e5710bSMark Peek extern int resetdisc (int); 7545e5710bSMark Peek 76c80476e4SDavid E. O'Brien /* 77c80476e4SDavid E. O'Brien * tc.func.c 78c80476e4SDavid E. O'Brien */ 79c80476e4SDavid E. O'Brien extern Char *expand_lex (const struct wordent *, int, int); 8045e5710bSMark Peek extern Char *sprlex (const struct wordent *); 8145e5710bSMark Peek extern Char *Itoa (int, size_t, Char); 8245e5710bSMark Peek extern void dolist (Char **, struct command *); 8345e5710bSMark Peek extern void dotermname (Char **, struct command *); 8445e5710bSMark Peek extern void dotelltc (Char **, struct command *); 8545e5710bSMark Peek extern void doechotc (Char **, struct command *); 8645e5710bSMark Peek extern void dosettc (Char **, struct command *); 8745e5710bSMark Peek extern int cmd_expand (Char *, Char **); 8845e5710bSMark Peek extern void dowhich (Char **, struct command *); 8945e5710bSMark Peek extern struct process *find_stop_ed (void); 9045e5710bSMark Peek extern void fg_proc_entry (struct process *); 9145e5710bSMark Peek extern void alrmcatch (void); 9245e5710bSMark Peek extern void precmd (void); 9345e5710bSMark Peek extern void postcmd (void); 9445e5710bSMark Peek extern void cwd_cmd (void); 9545e5710bSMark Peek extern void beep_cmd (void); 9645e5710bSMark Peek extern void period_cmd (void); 9745e5710bSMark Peek extern void job_cmd (Char *); 9845e5710bSMark Peek extern void aliasrun (int, Char *, Char *); 9945e5710bSMark Peek extern void setalarm (int); 10045e5710bSMark Peek extern void rmstar (struct wordent *); 10145e5710bSMark Peek extern void continue_jobs (struct wordent *); 10245e5710bSMark Peek extern Char *gettilde (const Char *); 10345e5710bSMark Peek extern Char *getusername (Char **); 10445e5710bSMark Peek #ifdef OBSOLETE 105c80476e4SDavid E. O'Brien extern void doaliases (Char **, struct command *); 10645e5710bSMark Peek #endif /* OBSOLETE */ 107c80476e4SDavid E. O'Brien extern void shlvl (int); 10845e5710bSMark Peek extern int fixio (int, int); 10945e5710bSMark Peek extern int collate (const Char *, const Char *); 11045e5710bSMark Peek #ifdef HASHBANG 111c80476e4SDavid E. O'Brien extern int hashbang (int, Char ***); 11245e5710bSMark Peek #endif /* HASHBANG */ 113c80476e4SDavid E. O'Brien #ifdef REMOTEHOST 114c80476e4SDavid E. O'Brien extern void remotehost (void); 11545e5710bSMark Peek #endif /* REMOTEHOST */ 116c80476e4SDavid E. O'Brien 117c80476e4SDavid E. O'Brien 118c80476e4SDavid E. O'Brien /* 119c80476e4SDavid E. O'Brien * tc.os.c 120c80476e4SDavid E. O'Brien */ 121c80476e4SDavid E. O'Brien #ifdef MACH 122c80476e4SDavid E. O'Brien extern void dosetpath (Char **, struct command *); 12345e5710bSMark Peek #endif /* MACH */ 124c80476e4SDavid E. O'Brien 125c80476e4SDavid E. O'Brien #ifdef TCF 126c80476e4SDavid E. O'Brien extern void dogetxvers (Char **, struct command *); 12745e5710bSMark Peek extern void dosetxvers (Char **, struct command *); 12845e5710bSMark Peek extern void dogetspath (Char **, struct command *); 12945e5710bSMark Peek extern void dosetspath (Char **, struct command *); 13045e5710bSMark Peek extern char *sitename (pid_t); 13145e5710bSMark Peek extern void domigrate (Char **, struct command *); 13245e5710bSMark Peek #endif /* TCF */ 133c80476e4SDavid E. O'Brien 134c80476e4SDavid E. O'Brien #ifdef WARP 135c80476e4SDavid E. O'Brien extern void dowarp (Char **, struct command *); 13645e5710bSMark Peek #endif /* WARP */ 137c80476e4SDavid E. O'Brien 138c80476e4SDavid E. O'Brien #if defined(_CRAY) && !defined(_CRAYMPP) 139c80476e4SDavid E. O'Brien extern void dodmmode (Char **, struct command *); 14045e5710bSMark Peek #endif /* _CRAY && !_CRAYMPP */ 141c80476e4SDavid E. O'Brien 142c80476e4SDavid E. O'Brien #if defined(masscomp) || defined(hcx) 143c80476e4SDavid E. O'Brien extern void douniverse (Char **, struct command *); 14445e5710bSMark Peek #endif /* masscomp */ 145c80476e4SDavid E. O'Brien 146c80476e4SDavid E. O'Brien #if defined(_OSD_POSIX) /* BS2000 */ 147b2d5d167SMark Peek extern void dobs2cmd (Char **, struct command *); 14845e5710bSMark Peek #endif /* _OSD_POSIX */ 149b2d5d167SMark Peek 150b2d5d167SMark Peek #if defined(hcx) 151c80476e4SDavid E. O'Brien extern void doatt (Char **, struct command *); 15245e5710bSMark Peek extern void doucb (Char **, struct command *); 15345e5710bSMark Peek #endif /* hcx */ 154c80476e4SDavid E. O'Brien 155c80476e4SDavid E. O'Brien #ifdef _SEQUENT_ 156c80476e4SDavid E. O'Brien extern void pr_stat_sub (struct process_stats *, 15745e5710bSMark Peek struct process_stats *, 158c80476e4SDavid E. O'Brien struct process_stats *); 15945e5710bSMark Peek #endif /* _SEQUENT_ */ 160c80476e4SDavid E. O'Brien 161c80476e4SDavid E. O'Brien #ifdef NEEDtcgetpgrp 162c80476e4SDavid E. O'Brien extern pid_t xtcgetpgrp (int); 16345e5710bSMark Peek extern int xtcsetpgrp (int, int); 16445e5710bSMark Peek # undef tcgetpgrp 165c80476e4SDavid E. O'Brien # define tcgetpgrp(a) xtcgetpgrp(a) 166c80476e4SDavid E. O'Brien # undef tcsetpgrp 167c80476e4SDavid E. O'Brien # define tcsetpgrp(a, b) xtcsetpgrp((a), (b)) 168c80476e4SDavid E. O'Brien #endif /* NEEDtcgetpgrp */ 169c80476e4SDavid E. O'Brien 170c80476e4SDavid E. O'Brien #ifdef YPBUGS 171c80476e4SDavid E. O'Brien extern void fix_yp_bugs (void); 17245e5710bSMark Peek #endif /* YPBUGS */ 173c80476e4SDavid E. O'Brien #ifdef STRCOLLBUG 174c80476e4SDavid E. O'Brien extern void fix_strcoll_bug (void); 17545e5710bSMark Peek #endif /* STRCOLLBUG */ 176c80476e4SDavid E. O'Brien 177c80476e4SDavid E. O'Brien extern void osinit (void); 17845e5710bSMark Peek 179c80476e4SDavid E. O'Brien #ifndef HAVE_MEMMOVE 18023338178SMark Peek extern void *xmemmove (void *, const void *, size_t); 18145e5710bSMark Peek # define memmove(a, b, c) xmemmove(a, b, c) 18223338178SMark Peek #endif /* !HAVE_MEMMOVE */ 18323338178SMark Peek 184c80476e4SDavid E. O'Brien #ifndef HAVE_MEMSET 18523338178SMark Peek extern void *xmemset (void *, int, size_t); 18645e5710bSMark Peek # define memset(a, b, c) xmemset(a, b, c) 18723338178SMark Peek #endif /* !HAVE_MEMSET */ 18823338178SMark Peek 189c80476e4SDavid E. O'Brien 190c80476e4SDavid E. O'Brien #ifndef HAVE_GETCWD 19123338178SMark Peek extern char *xgetcwd (char *, size_t); 19245e5710bSMark Peek # undef getcwd 193c80476e4SDavid E. O'Brien # define getcwd(a, b) xgetcwd(a, b) 19423338178SMark Peek #endif /* !HAVE_GETCWD */ 19523338178SMark Peek 196c80476e4SDavid E. O'Brien #ifndef HAVE_GETHOSTNAME 19723338178SMark Peek extern int xgethostname (char *, int); 19845e5710bSMark Peek # undef gethostname 199c80476e4SDavid E. O'Brien # define gethostname(a, b) xgethostname(a, b) 20023338178SMark Peek #endif /* !HAVE_GETHOSTNAME */ 20123338178SMark Peek 202c80476e4SDavid E. O'Brien #ifndef HAVE_NICE 20323338178SMark Peek extern int xnice (int); 20445e5710bSMark Peek # undef nice 205c80476e4SDavid E. O'Brien # define nice(a) xnice(a) 206c80476e4SDavid E. O'Brien #endif /* !HAVE_NICE */ 20723338178SMark Peek 208c80476e4SDavid E. O'Brien #ifndef HAVE_STRERROR 20923338178SMark Peek extern char *xstrerror (int); 21045e5710bSMark Peek # undef strerror 211c80476e4SDavid E. O'Brien # define strerror(a) xstrerror(a) 212c80476e4SDavid E. O'Brien #endif /* !HAVE_STRERROR */ 21323338178SMark Peek 214c80476e4SDavid E. O'Brien #ifdef apollo 215c80476e4SDavid E. O'Brien extern void doinlib (Char **, struct command *); 21645e5710bSMark Peek extern void dover (Char **, struct command *); 21745e5710bSMark Peek extern void dorootnode (Char **, struct command *); 21845e5710bSMark Peek extern int getv (Char *); 21945e5710bSMark Peek #endif /* apollo */ 220c80476e4SDavid E. O'Brien 221c80476e4SDavid E. O'Brien 222c80476e4SDavid E. O'Brien /* 223c80476e4SDavid E. O'Brien * tc.printf.h 224c80476e4SDavid E. O'Brien */ 225c80476e4SDavid E. O'Brien #ifndef __GNUC__ 22645e5710bSMark Peek #define __attribute__(a) 22745e5710bSMark Peek #endif 22845e5710bSMark Peek extern int xprintf (const char *, ...) 22945e5710bSMark Peek __attribute__((__format__(__printf__, 1, 2))); 23045e5710bSMark Peek extern int xsnprintf (char *, size_t, const char *, ...) 23145e5710bSMark Peek __attribute__((__format__(__printf__, 3, 4))); 23245e5710bSMark Peek extern char *xasprintf (const char *, ...) 23345e5710bSMark Peek __attribute__((__format__(__printf__, 1, 2))); 23445e5710bSMark Peek extern int xvprintf (const char *, va_list) 23545e5710bSMark Peek __attribute__((__format__(__printf__, 1, 0))); 23645e5710bSMark Peek extern int xvsnprintf (char *, size_t, const char *, va_list) 23745e5710bSMark Peek __attribute__((__format__(__printf__, 3, 0))); 23845e5710bSMark Peek extern char *xvasprintf (const char *, va_list) 23945e5710bSMark Peek __attribute__((__format__(__printf__, 1, 0))); 24045e5710bSMark Peek 241c80476e4SDavid E. O'Brien /* 242c80476e4SDavid E. O'Brien * tc.prompt.c 243c80476e4SDavid E. O'Brien */ 244c80476e4SDavid E. O'Brien extern void dateinit (void); 24545e5710bSMark Peek extern void printprompt (int, const char *); 24645e5710bSMark Peek extern int expdollar (struct Strbuf *, const Char **, Char); 24745e5710bSMark Peek extern Char *tprintf (int, const Char *, const char *, 24845e5710bSMark Peek time_t, ptr_t); 24945e5710bSMark Peek 250c80476e4SDavid E. O'Brien /* 251c80476e4SDavid E. O'Brien * tc.sched.c 252c80476e4SDavid E. O'Brien */ 253c80476e4SDavid E. O'Brien extern time_t sched_next (void); 25445e5710bSMark Peek extern void dosched (Char **, struct command *); 25545e5710bSMark Peek extern void sched_run (void); 25645e5710bSMark Peek 257c80476e4SDavid E. O'Brien /* 258c80476e4SDavid E. O'Brien * tc.str.c: 259c80476e4SDavid E. O'Brien */ 260c80476e4SDavid E. O'Brien #ifdef WIDE_STRINGS 26123338178SMark Peek extern size_t one_mbtowc (Char *, const char *, size_t); 26245e5710bSMark Peek extern size_t one_wctomb (char *, Char); 26345e5710bSMark Peek extern int rt_mbtowc (Char *, const char *, size_t); 26445e5710bSMark Peek #else 26523338178SMark Peek #define one_mbtowc(PWC, S, N) \ 26623338178SMark Peek ((void)(N), *(PWC) = (unsigned char)*(S), (size_t)1) 26723338178SMark Peek #define one_wctomb(S, WCHAR) (*(S) = (char)(WCHAR), (size_t)1) 26823338178SMark Peek #endif 26923338178SMark Peek #ifdef SHORT_STRINGS 270c80476e4SDavid E. O'Brien extern Char *s_strchr (const Char *, int); 27145e5710bSMark Peek extern Char *s_strrchr (const Char *, int); 27245e5710bSMark Peek extern Char *s_strcat (Char *, const Char *); 27345e5710bSMark Peek # ifdef NOTUSED 274c80476e4SDavid E. O'Brien extern Char *s_strncat (Char *, const Char *, size_t); 27545e5710bSMark Peek # endif /* NOTUSED */ 276c80476e4SDavid E. O'Brien extern Char *s_strcpy (Char *, const Char *); 27745e5710bSMark Peek extern Char *s_strncpy (Char *, const Char *, size_t); 27845e5710bSMark Peek extern Char *s_strspl (const Char *, const Char *); 27945e5710bSMark Peek extern size_t s_strlen (const Char *); 28045e5710bSMark Peek extern int s_strcmp (const Char *, const Char *); 28145e5710bSMark Peek extern int s_strncmp (const Char *, const Char *, size_t); 28245e5710bSMark Peek extern int s_strcasecmp (const Char *, const Char *); 28345e5710bSMark Peek extern Char *s_strnsave (const Char *, size_t); 28445e5710bSMark Peek extern Char *s_strsave (const Char *); 28545e5710bSMark Peek extern Char *s_strend (const Char *); 28645e5710bSMark Peek extern Char *s_strstr (const Char *, const Char *); 28745e5710bSMark Peek extern Char *str2short (const char *); 28845e5710bSMark Peek extern Char **blk2short (char **); 28945e5710bSMark Peek extern char *short2str (const Char *); 29045e5710bSMark Peek extern char **short2blk (Char **); 29145e5710bSMark Peek #else /* !SHORT_STRINGS */ 29245e5710bSMark Peek extern char *caching_strip (const char *); 29345e5710bSMark Peek #endif 29445e5710bSMark Peek extern char *short2qstr (const Char *); 29545e5710bSMark Peek 29645e5710bSMark Peek extern struct blk_buf *bb_alloc (void); 29745e5710bSMark Peek extern void bb_append (struct blk_buf *, Char *); 29845e5710bSMark Peek extern void bb_cleanup (void *); 29945e5710bSMark Peek extern Char **bb_finish (struct blk_buf *); 30045e5710bSMark Peek extern void bb_free (void *); 30145e5710bSMark Peek 30245e5710bSMark Peek extern struct strbuf *strbuf_alloc(void); 30345e5710bSMark Peek extern void strbuf_terminate(struct strbuf *); 30445e5710bSMark Peek extern void strbuf_append1(struct strbuf *, char); 30545e5710bSMark Peek extern void strbuf_appendn(struct strbuf *, const char *, 30645e5710bSMark Peek size_t); 30745e5710bSMark Peek extern void strbuf_append (struct strbuf *, const char *); 30845e5710bSMark Peek extern char *strbuf_finish (struct strbuf *); 30945e5710bSMark Peek extern void strbuf_cleanup(void *); 31045e5710bSMark Peek extern void strbuf_free(void *); 31145e5710bSMark Peek extern struct Strbuf *Strbuf_alloc(void); 31245e5710bSMark Peek extern void Strbuf_terminate(struct Strbuf *); 31345e5710bSMark Peek extern void Strbuf_append1(struct Strbuf *, Char); 31445e5710bSMark Peek extern void Strbuf_appendn(struct Strbuf *, const Char *, 315c80476e4SDavid E. O'Brien size_t); 316c80476e4SDavid E. O'Brien extern void Strbuf_append (struct Strbuf *, const Char *); 317c80476e4SDavid E. O'Brien extern Char *Strbuf_finish (struct Strbuf *); 318c80476e4SDavid E. O'Brien extern void Strbuf_cleanup(void *); 319c80476e4SDavid E. O'Brien extern void Strbuf_free(void *); 32045e5710bSMark Peek 321c80476e4SDavid E. O'Brien 322c80476e4SDavid E. O'Brien /* 323c80476e4SDavid E. O'Brien * tc.vers.c: 324c80476e4SDavid E. O'Brien */ 32523338178SMark Peek extern void fix_version (void); 32645e5710bSMark Peek 32745e5710bSMark Peek /* 32845e5710bSMark Peek * tc.who.c 32945e5710bSMark Peek */ 33045e5710bSMark Peek #if defined (HAVE_UTMP_H) || defined (HAVE_UTMPX_H) || defined (WINNT_NATIVE) 33123338178SMark Peek extern void initwatch (void); 33245e5710bSMark Peek extern void resetwatch (void); 33345e5710bSMark Peek extern void watch_login (int); 33423338178SMark Peek extern char *who_info (ptr_t, int); 33523338178SMark Peek extern void dolog (Char **, struct command *); 33623338178SMark Peek # ifdef HAVE_STRUCT_UTMP_UT_HOST 33723338178SMark Peek extern char *utmphost (void); 338c80476e4SDavid E. O'Brien extern size_t utmphostsize (void); 339c80476e4SDavid E. O'Brien # endif /* HAVE_STRUCT_UTMP_UT_HOST */ 340 #else 341 # define HAVENOUTMP 342 #endif 343 344 #endif /* _h_tc_decls */ 345