/*
 * osdef2.h.in - See osdef1.h.in for a description.
 */

extern int	remove __ARGS((const char *));
extern int	rename __ARGS((const char *, const char *));
extern int	free __ARGS((char *));
extern char	*malloc __ARGS((unsigned int));
extern char	*realloc __ARGS((char *, int));
extern char	*getenv __ARGS((char *));
extern int	setenv __ARGS((char *, char *, int));
extern int	putenv __ARGS((const char *));

#ifndef __TANDEM
extern int	gethostname __ARGS((char *, int));
#endif
extern void	perror __ARGS((char *));

#ifndef __TANDEM
extern int	sleep __ARGS((int));
#endif
extern int	usleep __ARGS((unsigned int));
extern unsigned int	alarm __ARGS((unsigned int));
#ifndef __TANDEM
extern int	chdir __ARGS((char *));
#endif
extern int	fchdir __ARGS((int));
#ifndef stat	/* could be redefined to stat64() */
extern int	stat __ARGS((const char *, struct stat *));
#endif
#ifndef lstat	/* could be redefined to lstat64() */
extern int	lstat __ARGS((const char *, struct stat *));
#endif
extern int	fstat __ARGS((int, struct stat *));
extern int	open __ARGS((const char *, int, ...));
extern int	close __ARGS((int));
#ifndef __TANDEM
extern int	read __ARGS((int, char *, size_t));
extern int	write __ARGS((int, char *, size_t));
#endif
extern int	pipe __ARGS((int *));
extern off_t	lseek __ARGS((int, off_t, int));
extern void	sync __ARGS((void));
extern uid_t	getuid __ARGS((void));
extern gid_t	getgid __ARGS((void));
extern void	qsort __ARGS((void *, size_t, size_t, int (*)(const void *, const void *)));

extern int	isatty __ARGS((int));
extern int	getpid __ARGS((void));
extern int	dup __ARGS((int));
extern int	unlink __ARGS((const char *));
extern int	link __ARGS((const char *, const char *));
extern int	mkdir __ARGS((const char *, mode_t));
extern int	rmdir __ARGS((const char *));

extern int	tgetent __ARGS((char *, char *));
extern int	tgetnum __ARGS((char *));
extern int	tgetflag __ARGS((char *));
extern char	*tgoto __ARGS((char *, int, int));
extern int	tputs __ARGS((char *, int, int (*)(int)));

#ifdef HAVE_TERMIOS_H
struct termios;		/* for tcgetattr __ARGS */
extern int	tcgetattr __ARGS((int, struct termios *));
extern int	tcsetattr __ARGS((int, int, const struct termios *));
#endif

#ifdef HAVE_SYS_STATFS_H
struct statfs;		/* for fstatfs __ARGS */
extern int	fstatfs __ARGS((int, struct statfs *, int, int));
#endif

#ifdef HAVE_GETTIMEOFDAY
struct timeval;		/* for gettimeofday __ARGS */
struct timezone;	/* for gettimeofday __ARGS */
extern int	gettimeofday __ARGS((struct timeval *tp, struct timezone *tzp));
extern time_t	time __ARGS((time_t *));
#endif

#ifdef HAVE_GETPWNAM
struct passwd;		/* for getpwnam __ARGS */
extern struct passwd *getpwnam __ARGS((const char *));
#endif

#ifdef USE_TMPNAM
extern char	*tmpnam __ARGS((char *));
#else
extern char	*mktemp __ARGS((char *));
#endif

#ifdef ISC
extern int	_Xmblen __ARGS((char const *, size_t));
#else
		/* This is different from the header but matches mblen() */
extern int	_Xmblen __ARGS((char *, size_t));
#endif
