/*  DO NOT EDIT THIS FILE.

    It has been auto-edited by fixincludes from:

	"fixinc/tests/inc/unistd.h"

    This had to be done to correct non-standard usages in the
    original, manufacturer supplied header file.  */



#if defined( ALPHA_SBRK_CHECK )
extern void *sbrk(ptrdiff_t increment);
#endif  /* ALPHA_SBRK_CHECK */


#if defined( SOLARIS_UNISTD_CHECK )
#ident "@(#)unistd.h   1.33    95/08/28 SMI"
extern int getpagesize();
extern pid_t getpgid(pid_t);
extern int getpagesize();
extern int getpgid();
#endif  /* SOLARIS_UNISTD_CHECK */


#if defined( ULTRIX_UNISTD_CHECK )
@(#)unistd.h      6.1     (ULTRIX)
	getgroups(),
	getpagesize(),
	fork(),
	vfork(),

#endif  /* ULTRIX_UNISTD_CHECK */
