1 /* Copyright 1993,1994 by Paul Vixie 2 * All rights reserved 3 * 4 * Distribute freely, except: don't remove my name from the source or 5 * documentation (don't take credit for my work), mark your changes (don't 6 * get me blamed for your possible bugs), don't alter or remove this 7 * notice. May be sold if buildable source is provided to buyer. No 8 * warrantee of any kind, express or implied, is included with this 9 * software; use at your own risk, responsibility for damages (if any) to 10 * anyone resulting from the use of this software rests entirely with the 11 * user. 12 * 13 * Send bug reports, bug fixes, enhancements, requests, flames, etc., and 14 * I'll try to keep a version up to date. I can be reached as follows: 15 * Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul 16 * 17 * $DragonFly: src/usr.sbin/cron/cron/externs.h,v 1.3 2003/11/03 19:31:36 eirikn Exp $ 18 */ 19 20 #if defined(POSIX) || defined(ATT) 21 # include <stdlib.h> 22 # include <unistd.h> 23 # include <string.h> 24 # include <dirent.h> 25 # define DIR_T struct dirent 26 # define WAIT_T int 27 # define WAIT_IS_INT 1 28 extern char *tzname[2]; 29 # define TZONE(tm) tzname[(tm).tm_isdst] 30 #endif 31 32 #if defined(UNIXPC) 33 # undef WAIT_T 34 # undef WAIT_IS_INT 35 # define WAIT_T union wait 36 #endif 37 38 #if defined(POSIX) 39 # define SIG_T sig_t 40 # define TIME_T time_t 41 # define PID_T pid_t 42 #endif 43 44 #if defined(ATT) 45 # define SIG_T void 46 # define TIME_T long 47 # define PID_T int 48 #endif 49 50 #if !defined(POSIX) && !defined(ATT) 51 /* classic BSD */ 52 extern time_t time(); 53 extern unsigned sleep(); 54 extern struct tm *localtime(); 55 extern struct passwd *getpwnam(); 56 extern int errno; 57 extern void perror(), exit(), free(); 58 extern char *getenv(), *strcpy(), *strchr(), *strtok(); 59 extern void *malloc(), *realloc(); 60 # define SIG_T void 61 # define TIME_T long 62 # define PID_T int 63 # define WAIT_T union wait 64 # define DIR_T struct direct 65 # include <sys/dir.h> 66 # define TZONE(tm) (tm).tm_zone 67 #endif 68 69 /* getopt() isn't part of POSIX. some systems define it in <stdlib.h> anyway. 70 * of those that do, some complain that our definition is different and some 71 * do not. to add to the misery and confusion, some systems define getopt() 72 * in ways that we cannot predict or comprehend, yet do not define the adjunct 73 * external variables needed for the interface. 74 */ 75 #if (!defined(BSD) || (BSD < 198911)) && !defined(ATT) && !defined(UNICOS) 76 int getopt(int, char * const *, const char *); 77 #endif 78 79 #if (!defined(BSD) || (BSD < 199103)) 80 extern char *optarg; 81 extern int optind, opterr, optopt; 82 #endif 83 84 #if WAIT_IS_INT 85 # ifndef WEXITSTATUS 86 # define WEXITSTATUS(x) (((x) >> 8) & 0xff) 87 # endif 88 # ifndef WTERMSIG 89 # define WTERMSIG(x) ((x) & 0x7f) 90 # endif 91 # ifndef WCOREDUMP 92 # define WCOREDUMP(x) ((x) & 0x80) 93 # endif 94 #else /*WAIT_IS_INT*/ 95 # ifndef WEXITSTATUS 96 # define WEXITSTATUS(x) ((x).w_retcode) 97 # endif 98 # ifndef WTERMSIG 99 # define WTERMSIG(x) ((x).w_termsig) 100 # endif 101 # ifndef WCOREDUMP 102 # define WCOREDUMP(x) ((x).w_coredump) 103 # endif 104 #endif /*WAIT_IS_INT*/ 105 106 #ifndef WIFSIGNALED 107 #define WIFSIGNALED(x) (WTERMSIG(x) != 0) 108 #endif 109 #ifndef WIFEXITED 110 #define WIFEXITED(x) (WTERMSIG(x) == 0) 111 #endif 112 113 #ifdef NEED_STRCASECMP 114 extern int strcasecmp(char *, char *); 115 #endif 116 117 #ifdef NEED_STRDUP 118 extern char *strdup(char *); 119 #endif 120 121 #ifdef NEED_STRERROR 122 extern char *strerror(int); 123 #endif 124 125 #ifdef NEED_FLOCK 126 extern int flock(int, int); 127 # define LOCK_SH 1 128 # define LOCK_EX 2 129 # define LOCK_NB 4 130 # define LOCK_UN 8 131 #endif 132 133 #ifdef NEED_SETSID 134 extern int setsid(void); 135 #endif 136 137 #ifdef NEED_GETDTABLESIZE 138 extern int getdtablesize(void); 139 #endif 140 141 #ifdef NEED_SETENV 142 extern int setenv(char *, char *, int); 143 #endif 144 145 #ifdef NEED_VFORK 146 extern PID_T vfork(void); 147 #endif 148