159243Sobrien/* 259243Sobrien * tc.decls.h: Function declarations from all the tcsh modules 359243Sobrien */ 459243Sobrien/*- 559243Sobrien * Copyright (c) 1980, 1991 The Regents of the University of California. 659243Sobrien * All rights reserved. 759243Sobrien * 859243Sobrien * Redistribution and use in source and binary forms, with or without 959243Sobrien * modification, are permitted provided that the following conditions 1059243Sobrien * are met: 1159243Sobrien * 1. Redistributions of source code must retain the above copyright 1259243Sobrien * notice, this list of conditions and the following disclaimer. 1359243Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1459243Sobrien * notice, this list of conditions and the following disclaimer in the 1559243Sobrien * documentation and/or other materials provided with the distribution. 16100616Smp * 3. Neither the name of the University nor the names of its contributors 1759243Sobrien * may be used to endorse or promote products derived from this software 1859243Sobrien * without specific prior written permission. 1959243Sobrien * 2059243Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2159243Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2259243Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2359243Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2459243Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2559243Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2659243Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2759243Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2859243Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2959243Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3059243Sobrien * SUCH DAMAGE. 3159243Sobrien */ 3259243Sobrien#ifndef _h_tc_decls 3359243Sobrien#define _h_tc_decls 3459243Sobrien 35167465Smpstruct blk_buf; 36167465Smpstruct strbuf; 37167465Smpstruct Strbuf; 38167465Smp 3959243Sobrien/* 4059243Sobrien * tc.alloc.c 4159243Sobrien */ 4259243Sobrien#ifndef SYSMALLOC 4369408Sache#ifndef WINNT_NATIVE 44167465Smp#ifndef __linux__ 45167465Smpextern void free (ptr_t); 46167465Smpextern memalign_t malloc (size_t); 47167465Smpextern memalign_t realloc (ptr_t, size_t); 48167465Smpextern memalign_t calloc (size_t, size_t); 49167465Smp#endif 5069408Sache#endif /* !WINNT_NATIVE */ 5159243Sobrien#else /* SYSMALLOC */ 52167465Smpextern void sfree (ptr_t); 53167465Smpextern memalign_t smalloc (size_t); 54167465Smpextern memalign_t srealloc (ptr_t, size_t); 55167465Smpextern memalign_t scalloc (size_t, size_t); 5659243Sobrien#endif /* SYSMALLOC */ 57167465Smpextern void showall (Char **, struct command *); 5859243Sobrien 5959243Sobrien/* 6059243Sobrien * tc.bind.c 6159243Sobrien */ 62167465Smpextern void dobindkey (Char **, struct command *); 6359243Sobrien 6459243Sobrien/* 6559243Sobrien * tc.defs.c: 6659243Sobrien */ 67167465Smpextern void getmachine (void); 6859243Sobrien 6959243Sobrien 7059243Sobrien/* 7159243Sobrien * tc.disc.c 7259243Sobrien */ 73167465Smpextern int setdisc (int); 74167465Smpextern int resetdisc (int); 7559243Sobrien 7659243Sobrien/* 7759243Sobrien * tc.func.c 7859243Sobrien */ 79167465Smpextern Char *expand_lex (const struct wordent *, int, int); 80167465Smpextern Char *sprlex (const struct wordent *); 81167465Smpextern Char *Itoa (int, size_t, Char); 82167465Smpextern void dolist (Char **, struct command *); 83167465Smpextern void dotermname (Char **, struct command *); 84167465Smpextern void dotelltc (Char **, struct command *); 85167465Smpextern void doechotc (Char **, struct command *); 86167465Smpextern void dosettc (Char **, struct command *); 87167465Smpextern int cmd_expand (Char *, Char **); 88167465Smpextern void dowhich (Char **, struct command *); 89167465Smpextern struct process *find_stop_ed (void); 90167465Smpextern void fg_proc_entry (struct process *); 91167465Smpextern void alrmcatch (void); 92167465Smpextern void precmd (void); 93167465Smpextern void postcmd (void); 94167465Smpextern void cwd_cmd (void); 95167465Smpextern void beep_cmd (void); 96167465Smpextern void period_cmd (void); 97167465Smpextern void job_cmd (Char *); 98167465Smpextern void aliasrun (int, Char *, Char *); 99167465Smpextern void setalarm (int); 100167465Smpextern void rmstar (struct wordent *); 101167465Smpextern void continue_jobs (struct wordent *); 102167465Smpextern Char *gettilde (const Char *); 103167465Smpextern Char *getusername (Char **); 10459243Sobrien#ifdef OBSOLETE 105167465Smpextern void doaliases (Char **, struct command *); 10659243Sobrien#endif /* OBSOLETE */ 107167465Smpextern void shlvl (int); 108167465Smpextern int fixio (int, int); 109167465Smpextern int collate (const Char *, const Char *); 11059243Sobrien#ifdef HASHBANG 111167465Smpextern int hashbang (int, Char ***); 11259243Sobrien#endif /* HASHBANG */ 11359243Sobrien#ifdef REMOTEHOST 114167465Smpextern void remotehost (void); 11559243Sobrien#endif /* REMOTEHOST */ 11659243Sobrien 11759243Sobrien 11859243Sobrien/* 11959243Sobrien * tc.os.c 12059243Sobrien */ 12159243Sobrien#ifdef MACH 122167465Smpextern void dosetpath (Char **, struct command *); 12359243Sobrien#endif /* MACH */ 12459243Sobrien 12559243Sobrien#ifdef TCF 126167465Smpextern void dogetxvers (Char **, struct command *); 127167465Smpextern void dosetxvers (Char **, struct command *); 128167465Smpextern void dogetspath (Char **, struct command *); 129167465Smpextern void dosetspath (Char **, struct command *); 130167465Smpextern char *sitename (pid_t); 131167465Smpextern void domigrate (Char **, struct command *); 13259243Sobrien#endif /* TCF */ 13359243Sobrien 13459243Sobrien#ifdef WARP 135167465Smpextern void dowarp (Char **, struct command *); 13659243Sobrien#endif /* WARP */ 13759243Sobrien 13859243Sobrien#if defined(_CRAY) && !defined(_CRAYMPP) 139167465Smpextern void dodmmode (Char **, struct command *); 14059243Sobrien#endif /* _CRAY && !_CRAYMPP */ 14159243Sobrien 14259243Sobrien#if defined(masscomp) || defined(hcx) 143167465Smpextern void douniverse (Char **, struct command *); 14459243Sobrien#endif /* masscomp */ 14559243Sobrien 146131962Smp#if defined(_OSD_POSIX) /* BS2000 */ 147167465Smpextern void dobs2cmd (Char **, struct command *); 148131962Smp#endif /* _OSD_POSIX */ 149131962Smp 15059243Sobrien#if defined(hcx) 151167465Smpextern void doatt (Char **, struct command *); 152167465Smpextern void doucb (Char **, struct command *); 15359243Sobrien#endif /* hcx */ 15459243Sobrien 15559243Sobrien#ifdef _SEQUENT_ 156167465Smpextern void pr_stat_sub (struct process_stats *, 157167465Smp struct process_stats *, 158167465Smp struct process_stats *); 15959243Sobrien#endif /* _SEQUENT_ */ 16059243Sobrien 16159243Sobrien#ifdef NEEDtcgetpgrp 162167465Smpextern pid_t xtcgetpgrp (int); 163167465Smpextern int xtcsetpgrp (int, int); 16459243Sobrien# undef tcgetpgrp 16559243Sobrien# define tcgetpgrp(a) xtcgetpgrp(a) 16659243Sobrien# undef tcsetpgrp 16759243Sobrien# define tcsetpgrp(a, b) xtcsetpgrp((a), (b)) 16859243Sobrien#endif /* NEEDtcgetpgrp */ 16959243Sobrien 17059243Sobrien#ifdef YPBUGS 171167465Smpextern void fix_yp_bugs (void); 17259243Sobrien#endif /* YPBUGS */ 17359243Sobrien#ifdef STRCOLLBUG 174167465Smpextern void fix_strcoll_bug (void); 17559243Sobrien#endif /* STRCOLLBUG */ 17659243Sobrien 177167465Smpextern void osinit (void); 17859243Sobrien 179145479Smp#ifndef HAVE_MEMMOVE 180167465Smpextern void *xmemmove (void *, const void *, size_t); 181145479Smp# define memmove(a, b, c) xmemmove(a, b, c) 182145479Smp#endif /* !HAVE_MEMMOVE */ 18359243Sobrien 184145479Smp#ifndef HAVE_MEMSET 185167465Smpextern void *xmemset (void *, int, size_t); 186145479Smp# define memset(a, b, c) xmemset(a, b, c) 187145479Smp#endif /* !HAVE_MEMSET */ 18859243Sobrien 18959243Sobrien 190145479Smp#ifndef HAVE_GETCWD 191167465Smpextern char *xgetcwd (char *, size_t); 19259243Sobrien# undef getcwd 193145479Smp# define getcwd(a, b) xgetcwd(a, b) 194145479Smp#endif /* !HAVE_GETCWD */ 19559243Sobrien 196145479Smp#ifndef HAVE_GETHOSTNAME 197167465Smpextern int xgethostname (char *, int); 19859243Sobrien# undef gethostname 199145479Smp# define gethostname(a, b) xgethostname(a, b) 200145479Smp#endif /* !HAVE_GETHOSTNAME */ 20159243Sobrien 202145479Smp#ifndef HAVE_NICE 203167465Smpextern int xnice (int); 20459243Sobrien# undef nice 20559243Sobrien# define nice(a) xnice(a) 206145479Smp#endif /* !HAVE_NICE */ 20759243Sobrien 208145479Smp#ifndef HAVE_STRERROR 209167465Smpextern char *xstrerror (int); 21059243Sobrien# undef strerror 21159243Sobrien# define strerror(a) xstrerror(a) 212145479Smp#endif /* !HAVE_STRERROR */ 21359243Sobrien 21459243Sobrien#ifdef apollo 215167465Smpextern void doinlib (Char **, struct command *); 216167465Smpextern void dover (Char **, struct command *); 217167465Smpextern void dorootnode (Char **, struct command *); 218167465Smpextern int getv (Char *); 21959243Sobrien#endif /* apollo */ 22059243Sobrien 22159243Sobrien 22259243Sobrien/* 22359243Sobrien * tc.printf.h 22459243Sobrien */ 225167465Smp#ifndef __GNUC__ 226167465Smp#define __attribute__(a) 227167465Smp#endif 228316957Sdchaginextern int xprintf (const char *, ...) 229167465Smp __attribute__((__format__(__printf__, 1, 2))); 230316957Sdchaginextern int xsnprintf (char *, size_t, const char *, ...) 231167465Smp __attribute__((__format__(__printf__, 3, 4))); 232167465Smpextern char *xasprintf (const char *, ...) 233167465Smp __attribute__((__format__(__printf__, 1, 2))); 234316957Sdchaginextern int xvprintf (const char *, va_list) 235167465Smp __attribute__((__format__(__printf__, 1, 0))); 236316957Sdchaginextern int xvsnprintf (char *, size_t, const char *, va_list) 237167465Smp __attribute__((__format__(__printf__, 3, 0))); 238167465Smpextern char *xvasprintf (const char *, va_list) 239167465Smp __attribute__((__format__(__printf__, 1, 0))); 24059243Sobrien 24159243Sobrien/* 24259243Sobrien * tc.prompt.c 24359243Sobrien */ 244167465Smpextern void dateinit (void); 245167465Smpextern void printprompt (int, const char *); 246167465Smpextern int expdollar (struct Strbuf *, const Char **, Char); 247167465Smpextern Char *tprintf (int, const Char *, const char *, 248167465Smp time_t, ptr_t); 24959243Sobrien 25059243Sobrien/* 25159243Sobrien * tc.sched.c 25259243Sobrien */ 253167465Smpextern time_t sched_next (void); 254167465Smpextern void dosched (Char **, struct command *); 255167465Smpextern void sched_run (void); 25659243Sobrien 25759243Sobrien/* 25859243Sobrien * tc.str.c: 25959243Sobrien */ 260145479Smp#ifdef WIDE_STRINGS 261231990Smpextern size_t one_mbtowc (Char *, const char *, size_t); 262231990Smpextern size_t one_wctomb (char *, Char); 263231990Smpextern int rt_mbtowc (Char *, const char *, size_t); 264145479Smp#else 265145479Smp#define one_mbtowc(PWC, S, N) \ 266145479Smp ((void)(N), *(PWC) = (unsigned char)*(S), (size_t)1) 267354195Sbrooks#define one_wctomb(S, WCHAR) (*(S) = (char)(WCHAR), (size_t)1) 268145479Smp#endif 26959243Sobrien#ifdef SHORT_STRINGS 270167465Smpextern Char *s_strchr (const Char *, int); 271167465Smpextern Char *s_strrchr (const Char *, int); 272167465Smpextern Char *s_strcat (Char *, const Char *); 27359243Sobrien# ifdef NOTUSED 274167465Smpextern Char *s_strncat (Char *, const Char *, size_t); 27559243Sobrien# endif /* NOTUSED */ 276167465Smpextern Char *s_strcpy (Char *, const Char *); 277167465Smpextern Char *s_strncpy (Char *, const Char *, size_t); 278167465Smpextern Char *s_strspl (const Char *, const Char *); 279167465Smpextern size_t s_strlen (const Char *); 280167465Smpextern int s_strcmp (const Char *, const Char *); 281167465Smpextern int s_strncmp (const Char *, const Char *, size_t); 282167465Smpextern int s_strcasecmp (const Char *, const Char *); 283167465Smpextern Char *s_strnsave (const Char *, size_t); 284167465Smpextern Char *s_strsave (const Char *); 285167465Smpextern Char *s_strend (const Char *); 286167465Smpextern Char *s_strstr (const Char *, const Char *); 287167465Smpextern Char *str2short (const char *); 288167465Smpextern Char **blk2short (char **); 289167465Smpextern char *short2str (const Char *); 290167465Smpextern char **short2blk (Char **); 291167465Smp#else /* !SHORT_STRINGS */ 292167465Smpextern char *caching_strip (const char *); 293167465Smp#endif 294167465Smpextern char *short2qstr (const Char *); 29559243Sobrien 296195609Smpextern struct blk_buf *bb_alloc (void); 297167465Smpextern void bb_append (struct blk_buf *, Char *); 298167465Smpextern void bb_cleanup (void *); 299167465Smpextern Char **bb_finish (struct blk_buf *); 300195609Smpextern void bb_free (void *); 30159243Sobrien 302195609Smpextern struct strbuf *strbuf_alloc(void); 303167465Smpextern void strbuf_terminate(struct strbuf *); 304167465Smpextern void strbuf_append1(struct strbuf *, char); 305167465Smpextern void strbuf_appendn(struct strbuf *, const char *, 306167465Smp size_t); 307167465Smpextern void strbuf_append (struct strbuf *, const char *); 308167465Smpextern char *strbuf_finish (struct strbuf *); 309167465Smpextern void strbuf_cleanup(void *); 310195609Smpextern void strbuf_free(void *); 311195609Smpextern struct Strbuf *Strbuf_alloc(void); 312167465Smpextern void Strbuf_terminate(struct Strbuf *); 313167465Smpextern void Strbuf_append1(struct Strbuf *, Char); 314167465Smpextern void Strbuf_appendn(struct Strbuf *, const Char *, 315167465Smp size_t); 316167465Smpextern void Strbuf_append (struct Strbuf *, const Char *); 317167465Smpextern Char *Strbuf_finish (struct Strbuf *); 318167465Smpextern void Strbuf_cleanup(void *); 319195609Smpextern void Strbuf_free(void *); 320167465Smp 321167465Smp 32259243Sobrien/* 32359243Sobrien * tc.vers.c: 32459243Sobrien */ 325167465Smpextern void fix_version (void); 32659243Sobrien 32759243Sobrien/* 32859243Sobrien * tc.who.c 32959243Sobrien */ 330145479Smp#if defined (HAVE_UTMP_H) || defined (HAVE_UTMPX_H) || defined (WINNT_NATIVE) 331167465Smpextern void initwatch (void); 332167465Smpextern void resetwatch (void); 333167465Smpextern void watch_login (int); 334167465Smpextern char *who_info (ptr_t, int); 335167465Smpextern void dolog (Char **, struct command *); 336145479Smp# ifdef HAVE_STRUCT_UTMP_UT_HOST 337167465Smpextern char *utmphost (void); 338167465Smpextern size_t utmphostsize (void); 339145479Smp# endif /* HAVE_STRUCT_UTMP_UT_HOST */ 340145479Smp#else 341145479Smp# define HAVENOUTMP 342145479Smp#endif 34359243Sobrien 34459243Sobrien#endif /* _h_tc_decls */ 345