#ifndef _h_tc_decls
#define _h_tc_decls
struct blk_buf;
struct strbuf;
struct Strbuf;
#ifndef SYSMALLOC
#ifndef WINNT_NATIVE
#ifndef __linux__
extern void free (ptr_t);
extern memalign_t malloc (size_t);
extern memalign_t realloc (ptr_t, size_t);
extern memalign_t calloc (size_t, size_t);
#endif
#endif
#else
extern void sfree (ptr_t);
extern memalign_t smalloc (size_t);
extern memalign_t srealloc (ptr_t, size_t);
extern memalign_t scalloc (size_t, size_t);
#endif
extern void showall (Char **, struct command *);
extern void dobindkey (Char **, struct command *);
extern void getmachine (void);
extern int setdisc (int);
extern int resetdisc (int);
extern Char *expand_lex (const struct wordent *, int, int);
extern Char *sprlex (const struct wordent *);
extern Char *Itoa (int, size_t, Char);
extern void dolist (Char **, struct command *);
extern void dotermname (Char **, struct command *);
extern void dotelltc (Char **, struct command *);
extern void doechotc (Char **, struct command *);
extern void dosettc (Char **, struct command *);
extern int cmd_expand (Char *, Char **);
extern void dowhich (Char **, struct command *);
extern struct process *find_stop_ed (void);
extern void fg_proc_entry (struct process *);
extern void alrmcatch (void);
extern void precmd (void);
extern void postcmd (void);
extern void cwd_cmd (void);
extern void beep_cmd (void);
extern void period_cmd (void);
extern void job_cmd (Char *);
extern void aliasrun (int, Char *, Char *);
extern void setalarm (int);
extern void rmstar (struct wordent *);
extern void continue_jobs (struct wordent *);
extern Char *gettilde (const Char *);
extern Char *getusername (Char **);
#ifdef OBSOLETE
extern void doaliases (Char **, struct command *);
#endif
extern void shlvl (int);
extern int fixio (int, int);
extern int collate (const Char *, const Char *);
#ifdef HASHBANG
extern int hashbang (int, Char ***);
#endif
#ifdef REMOTEHOST
extern void remotehost (void);
#endif
#ifdef MACH
extern void dosetpath (Char **, struct command *);
#endif
#ifdef TCF
extern void dogetxvers (Char **, struct command *);
extern void dosetxvers (Char **, struct command *);
extern void dogetspath (Char **, struct command *);
extern void dosetspath (Char **, struct command *);
extern char *sitename (pid_t);
extern void domigrate (Char **, struct command *);
#endif
#ifdef WARP
extern void dowarp (Char **, struct command *);
#endif
#if defined(_CRAY) && !defined(_CRAYMPP)
extern void dodmmode (Char **, struct command *);
#endif
#if defined(masscomp) || defined(hcx)
extern void douniverse (Char **, struct command *);
#endif
#if defined(_OSD_POSIX)
extern void dobs2cmd (Char **, struct command *);
#endif
#if defined(hcx)
extern void doatt (Char **, struct command *);
extern void doucb (Char **, struct command *);
#endif
#ifdef _SEQUENT_
extern void pr_stat_sub (struct process_stats *,
struct process_stats *,
struct process_stats *);
#endif
#ifdef NEEDtcgetpgrp
extern pid_t xtcgetpgrp (int);
extern int xtcsetpgrp (int, int);
# undef tcgetpgrp
# define tcgetpgrp(a) xtcgetpgrp(a)
# undef tcsetpgrp
# define tcsetpgrp(a, b) xtcsetpgrp((a), (b))
#endif
#ifdef YPBUGS
extern void fix_yp_bugs (void);
#endif
#ifdef STRCOLLBUG
extern void fix_strcoll_bug (void);
#endif
extern void osinit (void);
#ifndef HAVE_MEMMOVE
extern void *xmemmove (void *, const void *, size_t);
# define memmove(a, b, c) xmemmove(a, b, c)
#endif
#ifndef HAVE_MEMSET
extern void *xmemset (void *, int, size_t);
# define memset(a, b, c) xmemset(a, b, c)
#endif
#ifndef HAVE_GETCWD
extern char *xgetcwd (char *, size_t);
# undef getcwd
# define getcwd(a, b) xgetcwd(a, b)
#endif
#ifndef HAVE_GETHOSTNAME
extern int xgethostname (char *, int);
# undef gethostname
# define gethostname(a, b) xgethostname(a, b)
#endif
#ifndef HAVE_NICE
extern int xnice (int);
# undef nice
# define nice(a) xnice(a)
#endif
#ifndef HAVE_STRERROR
extern char *xstrerror (int);
# undef strerror
# define strerror(a) xstrerror(a)
#endif
#ifdef apollo
extern void doinlib (Char **, struct command *);
extern void dover (Char **, struct command *);
extern void dorootnode (Char **, struct command *);
extern int getv (Char *);
#endif
#ifndef __GNUC__
#define __attribute__(a)
#endif
extern pret_t xprintf (const char *, ...)
__attribute__((__format__(__printf__, 1, 2)));
extern pret_t xsnprintf (char *, size_t, const char *, ...)
__attribute__((__format__(__printf__, 3, 4)));
extern char *xasprintf (const char *, ...)
__attribute__((__format__(__printf__, 1, 2)));
extern pret_t xvprintf (const char *, va_list)
__attribute__((__format__(__printf__, 1, 0)));
extern pret_t xvsnprintf (char *, size_t, const char *, va_list)
__attribute__((__format__(__printf__, 3, 0)));
extern char *xvasprintf (const char *, va_list)
__attribute__((__format__(__printf__, 1, 0)));
extern void dateinit (void);
extern void printprompt (int, const char *);
extern int expdollar (struct Strbuf *, const Char **, Char);
extern Char *tprintf (int, const Char *, const char *,
time_t, ptr_t);
extern time_t sched_next (void);
extern void dosched (Char **, struct command *);
extern void sched_run (void);
#ifdef WIDE_STRINGS
extern size_t one_mbtowc (wchar_t *, const char *, size_t);
extern size_t one_wctomb (char *, wchar_t);
extern int rt_mbtowc (wchar_t *, const char *, size_t);
#else
#define one_mbtowc(PWC, S, N) \
((void)(N), *(PWC) = (unsigned char)*(S), (size_t)1)
#define one_wctomb(S, WCHAR) (*(S) = (WCHAR), (size_t)1)
#endif
#ifdef SHORT_STRINGS
extern Char *s_strchr (const Char *, int);
extern Char *s_strrchr (const Char *, int);
extern Char *s_strcat (Char *, const Char *);
# ifdef NOTUSED
extern Char *s_strncat (Char *, const Char *, size_t);
# endif
extern Char *s_strcpy (Char *, const Char *);
extern Char *s_strncpy (Char *, const Char *, size_t);
extern Char *s_strspl (const Char *, const Char *);
extern size_t s_strlen (const Char *);
extern int s_strcmp (const Char *, const Char *);
extern int s_strncmp (const Char *, const Char *, size_t);
extern int s_strcasecmp (const Char *, const Char *);
extern Char *s_strnsave (const Char *, size_t);
extern Char *s_strsave (const Char *);
extern Char *s_strend (const Char *);
extern Char *s_strstr (const Char *, const Char *);
extern Char *str2short (const char *);
extern Char **blk2short (char **);
extern char *short2str (const Char *);
extern char **short2blk (Char **);
#else
extern char *caching_strip (const char *);
#endif
extern char *short2qstr (const Char *);
extern void bb_append (struct blk_buf *, Char *);
extern void bb_cleanup (void *);
extern Char **bb_finish (struct blk_buf *);
extern void strbuf_terminate(struct strbuf *);
extern void strbuf_append1(struct strbuf *, char);
extern void strbuf_appendn(struct strbuf *, const char *,
size_t);
extern void strbuf_append (struct strbuf *, const char *);
extern char *strbuf_finish (struct strbuf *);
extern void strbuf_cleanup(void *);
extern void Strbuf_terminate(struct Strbuf *);
extern void Strbuf_append1(struct Strbuf *, Char);
extern void Strbuf_appendn(struct Strbuf *, const Char *,
size_t);
extern void Strbuf_append (struct Strbuf *, const Char *);
extern Char *Strbuf_finish (struct Strbuf *);
extern void Strbuf_cleanup(void *);
extern void fix_version (void);
#if defined (HAVE_UTMP_H) || defined (HAVE_UTMPX_H) || defined (WINNT_NATIVE)
extern void initwatch (void);
extern void resetwatch (void);
extern void watch_login (int);
extern char *who_info (ptr_t, int);
extern void dolog (Char **, struct command *);
# ifdef HAVE_STRUCT_UTMP_UT_HOST
extern char *utmphost (void);
extern size_t utmphostsize (void);
# endif
#else
# define HAVENOUTMP
#endif
#endif