]> granicus.if.org Git - sudo/commitdiff
Merge compat.h and missing.h into missing.h
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 16 Aug 2010 18:05:44 +0000 (14:05 -0400)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 16 Aug 2010 18:05:44 +0000 (14:05 -0400)
52 files changed:
MANIFEST
common/Makefile.in
common/aix.c
common/alloc.c
common/atobool.c
common/fileops.c
common/fmt_string.c
common/lbuf.c
common/list.c
common/term.c
common/zero_bytes.c
compat/Makefile.in
compat/closefrom.c
compat/fnmatch.c
compat/getcwd.c
compat/getgrouplist.c
compat/getline.c
compat/getprogname.c
compat/glob.c
compat/isblank.c
compat/memrchr.c
compat/mksiglist.c
compat/mkstemps.c
compat/nanosleep.c
compat/setenv.c
compat/snprintf.c
compat/strlcat.c
compat/strlcpy.c
compat/strsignal.c
compat/unsetenv.c
compat/utimes.c
include/compat.h
include/missing.h
plugins/sample/sample_plugin.c
plugins/sample_group/getgrent.c
plugins/sample_group/sample_group.c
plugins/sudoers/Makefile.in
plugins/sudoers/audit.c
plugins/sudoers/boottime.c
plugins/sudoers/getdate.c
plugins/sudoers/getdate.y
plugins/sudoers/linux_audit.c
plugins/sudoers/plugin_error.c
plugins/sudoers/sudoers.h
plugins/sudoers/sudoreplay.c
plugins/sudoers/timestr.c
src/Makefile.in
src/error.c
src/sesh.c
src/sudo.h
src/sudo_noexec.c
src/ttysize.c

index b2f0d42e24152988325ac8eb9e4d5451b72d6c5a..7c43181c7d11f361c1bc9b64c175ca7c703205ba 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -84,7 +84,6 @@ doc/visudo.man.in
 doc/visudo.pod
 include/Makefile.in
 include/alloc.h
-include/compat.h
 include/error.h
 include/fileops.h
 include/lbuf.h
index 815eb5a47a6e57420328b6ad813bda64ccbc381b..392dc050205e2974ef8a648d57ce231c69ce11dd 100644 (file)
@@ -59,15 +59,15 @@ libcommon.la: $(LTOBJS)
        $(LIBTOOL) --mode=link $(CC) -o $@ $(LTOBJS) -no-install
 
 # Dependencies
-aix.lo: $(srcdir)/aix.c $(incdir)/compat.h $(incdir)/alloc.h $(incdir)/error.h $(top_builddir)/config.h
-alloc.lo: $(srcdir)/alloc.c $(incdir)/compat.h $(incdir)/alloc.h $(incdir)/error.h $(top_builddir)/config.h
-atobool.lo: $(srcdir)/atobool.c $(incdir)/compat.h $(incdir)/missing.h $(top_builddir)/config.h
+aix.lo: $(srcdir)/aix.c $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h $(top_builddir)/config.h
+alloc.lo: $(srcdir)/alloc.c $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h $(top_builddir)/config.h
+atobool.lo: $(srcdir)/atobool.c $(incdir)/missing.h $(incdir)/missing.h $(top_builddir)/config.h
 fileops.lo: $(srcdir)/fileops.c $(incdir)/fileops.h $(top_builddir)/config.h
-fmt_string.lo: $(srcdir)/fmt_string.c $(incdir)/compat.h $(top_builddir)/config.h
-lbuf.lo: $(srcdir)/lbuf.c $(incdir)/compat.h $(incdir)/alloc.h $(incdir)/error.h $(incdir)/missing.h $(incdir)/lbuf.h $(top_builddir)/config.h
-list.lo: $(srcdir)/list.c $(incdir)/compat.h $(incdir)/list.h $(incdir)/error.h $(top_builddir)/config.h
-term.lo: $(srcdir)/term.c $(incdir)/compat.h $(top_builddir)/config.h
-zero_bytes.lo: $(srcdir)/zero_bytes.c $(incdir)/compat.h $(top_builddir)/config.h
+fmt_string.lo: $(srcdir)/fmt_string.c $(incdir)/missing.h $(top_builddir)/config.h
+lbuf.lo: $(srcdir)/lbuf.c $(incdir)/missing.h $(incdir)/alloc.h $(incdir)/error.h $(incdir)/missing.h $(incdir)/lbuf.h $(top_builddir)/config.h
+list.lo: $(srcdir)/list.c $(incdir)/missing.h $(incdir)/list.h $(incdir)/error.h $(top_builddir)/config.h
+term.lo: $(srcdir)/term.c $(incdir)/missing.h $(top_builddir)/config.h
+zero_bytes.lo: $(srcdir)/zero_bytes.c $(incdir)/missing.h $(top_builddir)/config.h
 
 install:
 
index 90f907e130828d0c201c01cd666eb5eb037f3192..b02296ec53eeb5532a5e5558dc8166352b935e2a 100644 (file)
@@ -31,7 +31,7 @@
 #include <usersec.h>
 #include <uinfo.h>
 
-#include "compat.h"
+#include "missing.h"
 #include "alloc.h"
 #include "error.h"
 
index 016ad9297aaa9af382aa7e7d0c3a0dfe2672c0a2..ef11c1794d8ad7bb001c6486dd2f3274e5eb00b5 100644 (file)
@@ -45,7 +45,6 @@
 # include <inttypes.h>
 #endif
 
-#include <compat.h>
 #include <missing.h>
 #include <alloc.h>
 #include <error.h>
index 77211e685285ac5545e069f8e61ff0d21aab22e1..b056489afe39e85c4728de5f5026b21a397998de 100644 (file)
@@ -38,7 +38,6 @@
 # include <strings.h>
 #endif /* HAVE_STRINGS_H */
 
-#include <compat.h>
 #include <missing.h>
 
 int
index 8659a096da030130a073764772e7d891061803b4..fe319ebea0d6cc41d3bf6aead78ce157a9828697 100644 (file)
@@ -47,7 +47,6 @@
 # include <emul/timespec.h>
 #endif
 
-#include <compat.h>
 #include <missing.h>
 #include <fileops.h>
 
index ae476320d5a2309c08194e429049c43123c0a674..5ece309f12fc38e0a42f915577288f971efb0a27 100644 (file)
@@ -38,7 +38,7 @@
 # include <strings.h>
 #endif /* HAVE_STRINGS_H */
 
-#include <compat.h>
+#include <missing.h>
 
 /*
  * Allocate storage for a name=value string and return it.
index c20e3603dd042ccc70b30868e90f388c9e1204d8..ce5213068988d9287bf83543d16b22dfb78bda7a 100644 (file)
 #include <ctype.h>
 #include <termios.h>
 
-#include <compat.h>
+#include <missing.h>
 #include <alloc.h>
 #include <error.h>
-#include <missing.h>
 #include <lbuf.h>
 
 void
index 3a8341af475b7975886f7c4e78e9c30dd38f3a85..88f8bdd91074650cc0c2309b119b86c4ea8d17d9 100644 (file)
@@ -29,7 +29,7 @@
 # endif
 #endif /* STDC_HEADERS */
 
-#include <compat.h>
+#include <missing.h>
 #include <list.h>
 #ifdef DEBUG
 # include <error.h>
index bbde495e149f052fec58de7c4878af358511d2ff..26069d2c1c88174de9e412d653d1abea19456d45 100644 (file)
@@ -38,7 +38,7 @@
 #endif /* HAVE_STRINGS_H */
 #include <termios.h>
 
-#include <compat.h>
+#include <missing.h>
 
 #ifndef TCSASOFT
 # define TCSASOFT      0
index 03d2b8c5c978e91a891fabbab75d201afd28ed99..21041673fbecfde74033dd79ee894d6b434f2e93 100644 (file)
@@ -18,7 +18,7 @@
 #include <sys/types.h>
 
 #include <config.h>
-#include <compat.h>
+#include <missing.h>
 
 /*
  * Like bzero(3) but with a volatile pointer.  The hope is that
index 5d0cd00f6554f19ab5cde2466c133410fe1f3371..1b04b0652d84b2f619a3cd5c59e1855f9ec051de 100644 (file)
@@ -66,33 +66,32 @@ libreplace.la: $(LTLIBOBJS)
 siglist.c: mksiglist
        ./mksiglist > $@
 
-mksiglist: $(srcdir)/mksiglist.c $(srcdir)/mksiglist.h $(incdir)/compat.h $(top_builddir)/config.h
+mksiglist: $(srcdir)/mksiglist.c $(srcdir)/mksiglist.h $(incdir)/missing.h $(top_builddir)/config.h
        $(CC) $(CPPFLAGS) $(CFLAGS) $(DEFS) $(srcdir)/mksiglist.c -o $@
 
 @DEV@$(srcdir)/mksiglist.h: $(srcdir)/siglist.in
 @DEV@  awk 'BEGIN {print "/* public domain */\n"} /^    [A-Z]/ {printf("#ifdef SIG%s\n    if (my_sys_siglist[SIG%s] == NULL)\n\tmy_sys_siglist[SIG%s] = \"%s\";\n#endif\n", $$1, $$1, $$1, substr($$0, 13))}' < $(srcdir)/siglist.in > $@
 
-siglist.lo: siglist.c $(incdir)/compat.h $(top_builddir)/config.h
+siglist.lo: siglist.c $(incdir)/missing.h $(top_builddir)/config.h
 
 # Dependencies
-closefrom.lo: $(compat)/closefrom.c $(incdir)/compat.h $(top_builddir)/config.h
-fnmatch.lo: $(compat)/fnmatch.c $(compat)/fnmatch.h $(compat)/charclass.h $(incdir)/compat.h $(top_builddir)/config.h
-getcwd.lo: $(compat)/getcwd.c $(incdir)/compat.h $(top_builddir)/config.h
-getline.lo: $(compat)/getline.c $(incdir)/compat.h $(top_builddir)/config.h
-getprogname.lo: $(compat)/getprogname.c $(incdir)/compat.h $(top_builddir)/config.h
-glob.lo: $(compat)/glob.c $(compat)/glob.h $(compat)/charclass.h $(incdir)/compat.h $(top_builddir)/config.h
-isblank.lo: $(compat)/isblank.c $(incdir)/compat.h $(top_builddir)/config.h
-memrchr.lo: $(compat)/memrchr.c $(incdir)/compat.h $(top_builddir)/config.h
-mkstemps.lo: $(compat)/mkstemps.c $(incdir)/compat.h $(top_builddir)/config.h
-nanosleep.lo: $(compat)/nanosleep.c $(incdir)/compat.h $(top_builddir)/config.h
-sigaction.lo: $(compat)/sigaction.c $(incdir)/compat.h $(incdir)/compat.h
-snprintf.lo: $(compat)/snprintf.c $(incdir)/compat.h $(top_builddir)/config.h
-strcasecmp.lo: $(compat)/strcasecmp.c $(incdir)/compat.h $(top_builddir)/config.h
-strerror.lo: $(compat)/strerror.c $(incdir)/compat.h $(top_builddir)/config.h
-strlcat.lo: $(compat)/strlcat.c $(incdir)/compat.h $(top_builddir)/config.h
-strlcpy.lo: $(compat)/strlcpy.c $(incdir)/compat.h $(top_builddir)/config.h
-strsignal.lo: $(compat)/strsignal.c $(incdir)/compat.h $(top_builddir)/config.h
-utimes.lo: $(compat)/utimes.c $(incdir)/compat.h $(compat)/utime.h $(top_builddir)/config.h
+closefrom.lo: $(compat)/closefrom.c $(incdir)/missing.h $(top_builddir)/config.h
+fnmatch.lo: $(compat)/fnmatch.c $(compat)/fnmatch.h $(compat)/charclass.h $(incdir)/missing.h $(top_builddir)/config.h
+getcwd.lo: $(compat)/getcwd.c $(incdir)/missing.h $(top_builddir)/config.h
+getline.lo: $(compat)/getline.c $(incdir)/missing.h $(top_builddir)/config.h
+getprogname.lo: $(compat)/getprogname.c $(incdir)/missing.h $(top_builddir)/config.h
+glob.lo: $(compat)/glob.c $(compat)/glob.h $(compat)/charclass.h $(incdir)/missing.h $(top_builddir)/config.h
+isblank.lo: $(compat)/isblank.c $(incdir)/missing.h $(top_builddir)/config.h
+memrchr.lo: $(compat)/memrchr.c $(incdir)/missing.h $(top_builddir)/config.h
+mkstemps.lo: $(compat)/mkstemps.c $(incdir)/missing.h $(top_builddir)/config.h
+nanosleep.lo: $(compat)/nanosleep.c $(incdir)/missing.h $(top_builddir)/config.h
+snprintf.lo: $(compat)/snprintf.c $(incdir)/missing.h $(top_builddir)/config.h
+strcasecmp.lo: $(compat)/strcasecmp.c $(incdir)/missing.h $(top_builddir)/config.h
+strerror.lo: $(compat)/strerror.c $(incdir)/missing.h $(top_builddir)/config.h
+strlcat.lo: $(compat)/strlcat.c $(incdir)/missing.h $(top_builddir)/config.h
+strlcpy.lo: $(compat)/strlcpy.c $(incdir)/missing.h $(top_builddir)/config.h
+strsignal.lo: $(compat)/strsignal.c $(incdir)/missing.h $(top_builddir)/config.h
+utimes.lo: $(compat)/utimes.c $(incdir)/missing.h $(compat)/utime.h $(top_builddir)/config.h
 
 install:
 
index 1f00e1231e7a8cbc010233e1fdf92e2a4112ad1d..a91e4578bda6e60d393d39ddabfb7933bb8cd1db 100644 (file)
@@ -47,7 +47,7 @@
 # endif
 #endif
 
-#include <compat.h>
+#include <missing.h>
 
 #ifndef HAVE_FCNTL_CLOSEM
 # ifndef HAVE_DIRFD
index 512272381c9191abc11999f75588ce4a25d62105..23e61c988a6c6bc49ab99085ce3d8610d4dda976 100644 (file)
@@ -47,7 +47,7 @@
 # include <strings.h>
 #endif /* HAVE_STRINGS_H */
 
-#include <compat.h>
+#include <missing.h>
 #include "fnmatch.h"
 #include "charclass.h"
 
index 83a3e8fd849fac97728250309a5a9330189baec8..d70c6af2b845d9921785267897698dc359797253 100644 (file)
@@ -71,7 +71,7 @@
 # endif
 #endif
 
-#include <compat.h>
+#include <missing.h>
 
 #define        ISDOT(dp) \
        (dp->d_name[0] == '.' && (dp->d_name[1] == '\0' || \
index 5996471aaf26b8370c9895c61801093c3683cae3..165878913be49588df1f38896a9e6117cd41dbee 100644 (file)
@@ -34,7 +34,7 @@
 #endif /* HAVE_STRINGS_H */
 #include <grp.h>
 
-#include <compat.h>
+#include <missing.h>
 
 /*
  * BSD-compatible getgrouplist(3) using getgrent(3)
index 2933e846cd523323e92c672894c1f7504bacb5a2..93f4952e71e29c209f4e775fdb5dff6f7c5d7c98 100644 (file)
@@ -35,7 +35,7 @@
 #endif /* HAVE_STRINGS_H */
 #include <limits.h>
 
-#include <compat.h>
+#include <missing.h>
 
 #ifndef LINE_MAX
 # define LINE_MAX 2048
index 8b7602a2e8e868b3a5c53493ad39cb9051122cd7..2de1333d4b72515b5b9494bcd75a55a546b8a782 100644 (file)
@@ -18,7 +18,7 @@
 #include <string.h>
 
 #include <config.h>
-#include <compat.h>
+#include <missing.h>
 
 static const char *progname = "sudo";
 
index 267effb049aba7383f2005a7b8916191355a8a55..b09cfe5f56c08ece78206888f6c1339f51d89719 100644 (file)
@@ -95,7 +95,7 @@
 #include <limits.h>
 #include <pwd.h>
 
-#include <compat.h>
+#include <missing.h>
 #include "glob.h"
 #include "charclass.h"
 
index 42ab126c486dfd7803c88aaedd1e7099f377b70b..64448b0e15a04576869e44876f57aa6d50bf13bb 100644 (file)
@@ -15,7 +15,7 @@
  */
 
 #include <config.h>
-#include <compat.h>
+#include <missing.h>
 
 #undef isblank
 int
index d2dd1e684d6d6d7cfbcdc9d4d924241f2b8f0f22..9b5cc9c8e53b86c67b3faddb60d40ad743681aaf 100644 (file)
@@ -16,7 +16,7 @@
 
 #include <sys/types.h>
 #include <config.h>
-#include <compat.h>
+#include <missing.h>
 
 /*
  * Reverse memchr()
index d9ba3707366728693f2dc01de126f2bbc11daf86..003e53166bd12f2d500e62c0c5861ff48675978f 100644 (file)
@@ -28,7 +28,7 @@
 #endif /* STDC_HEADERS */
 #include <signal.h>
 
-#include <compat.h>
+#include <missing.h>
 
 int
 main(int argc, char *argv[])
@@ -40,7 +40,7 @@ main(int argc, char *argv[])
 
     printf("#include <config.h>\n");
     printf("#include <signal.h>\n");
-    printf("#include <compat.h>\n\n");
+    printf("#include <missing.h>\n\n");
     printf("const char *const my_sys_siglist[NSIG] = {\n");
     for (i = 0; i < NSIG; i++) {
        if (my_sys_siglist[i] != NULL) {
index d707f40e2518046649546da17a3f8f93844efcd1..3026ce0b6839d368b15d44f4bf6b3711e13593dc 100644 (file)
@@ -36,7 +36,7 @@
 # include <time.h>
 #endif
 
-#include <compat.h>
+#include <missing.h>
 
 static unsigned int get_random(void);
 static void seed_random(void);
index bc0ecb70b1bf034b7dcb338808aaba62f57388f5..63620cd27bae5dba2ede5d97210285c4223c5819 100644 (file)
@@ -29,7 +29,7 @@
 #endif
 #include <errno.h>
 
-#include <compat.h>
+#include <missing.h>
 
 int
 nanosleep(const struct timespec *ts, struct timespec *rts)
index a5c06e0fd889925919b7cf2d248f2e9aba1693db..ae9576c76b7299f1b2d6dafa7924d8780bbcdce3 100644 (file)
@@ -38,7 +38,7 @@
 #endif /* HAVE_MALLOC_H && !STDC_HEADERS */
 #include <errno.h>
 
-#include <compat.h>
+#include <missing.h>
 
 int
 setenv(const char *var, const char *val, int overwrite)
index f5f5949d930e5448776375864c5fa265ad5efe10..7de9145bd2b06332f096217a18775fe99ba1884f 100644 (file)
@@ -71,7 +71,7 @@
 #include <limits.h>
 #include <stdarg.h>
 
-#include <compat.h>
+#include <missing.h>
 
 static int xxxprintf(char **, size_t, int, const char *, va_list);
 
index 092e5cc652f226c45b28707644860dbc7dac1848..a24ef49e68bcc7a2478c69f3046ef2532a4a28ff 100644 (file)
@@ -21,8 +21,7 @@
 #include <string.h>
 
 #include <config.h>
-#include <compat.h>
-
+#include <missing.h>
 
 /*
  * Appends src to string dst of size siz (unlike strncat, siz is the
index 0d5d789946e98c65af2234a1e840c2401b524503..9432e9304ad2f8c5638ffc6f51c75139033cd880 100644 (file)
@@ -20,7 +20,7 @@
 #include <sys/types.h>
 
 #include <config.h>
-#include <compat.h>
+#include <missing.h>
 
 /*
  * Copy src to string dst of size siz.  At most siz-1 characters
index a2c7a88759796b2add80ac61e9dc7968693ac3f3..76e3f9d1ce57dee98445a911124f0471cfaa3ee6 100644 (file)
@@ -18,7 +18,7 @@
 #include <signal.h>
 
 #include <config.h>
-#include <compat.h>
+#include <missing.h>
 
 #if defined(HAVE_DECL_SYS_SIGLIST) && HAVE_DECL_SYS_SIGLIST == 1
 # define my_sys_siglist        sys_siglist
index df408292269b4f9c947ad04e9e0c3a15c46f9562..6304d38fdadbd24d075ecac456d40f8d0bf7c1e0 100644 (file)
@@ -35,7 +35,7 @@
 #endif /* HAVE_STRINGS_H */
 #include <errno.h>
 
-#include <compat.h>
+#include <missing.h>
 
 extern char **environ; /* global environment */
 
index b727764e5771976030a28e7a23b622673c3e95da..f4aa2d4e57dc06f88212a025e88da12389bcf557 100644 (file)
@@ -30,7 +30,7 @@
 # include "utime.h"
 #endif
 
-#include <compat.h>
+#include <missing.h>
 
 #ifndef HAVE_UTIMES
 /*
index 333a88069db269a3e6e618a0c376ca7fff766801..2ca605c5e528842b00da171afe4110554ee4e69a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 1998-2005, 2008, 2010
+ * Copyright (c) 1996, 1998-2005, 2008, 2009-2010
  *     Todd C. Miller <Todd.Miller@courtesan.com>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
  */
 
-#ifndef _SUDO_COMPAT_H
-#define _SUDO_COMPAT_H
+#ifndef _SUDO_MISSING_H
+#define _SUDO_MISSING_H
 
 /*
- * Macros that may be missing on some Operating Systems
+ * Macros and functions that may be missing on some operating systems.
  */
 
 /* Define away __attribute__ for non-gcc or old gcc */
@@ -261,4 +261,64 @@ void setprogname(const char *);
 #  endif
 #endif /* HAVE_SETEUID */
 
-#endif /* _SUDO_COMPAT_H */
+#include <stdio.h>
+#include <stdarg.h>
+
+/* Functions "missing" from libc. */
+
+struct timeval;
+struct timespec;
+
+#ifndef HAVE_CLOSEFROM
+void closefrom(int);
+#endif
+#ifndef HAVE_GETCWD
+char *getcwd(char *, size_t size);
+#endif
+#ifndef HAVE_GETLINE
+ssize_t getline(char **, size_t *, FILE *);
+#endif
+#ifndef HAVE_UTIMES
+int utimes(const char *, const struct timeval *);
+#endif
+#ifdef HAVE_FUTIME
+int futimes(int, const struct timeval *);
+#endif
+#ifndef HAVE_SNPRINTF
+int snprintf(char *, size_t, const char *, ...) __printflike(3, 4);
+#endif
+#ifndef HAVE_VSNPRINTF
+int vsnprintf(char *, size_t, const char *, va_list) __printflike(3, 0);
+#endif
+#ifndef HAVE_ASPRINTF
+int asprintf(char **, const char *, ...) __printflike(2, 3);
+#endif
+#ifndef HAVE_VASPRINTF
+int vasprintf(char **, const char *, va_list) __printflike(2, 0);
+#endif
+#ifndef HAVE_STRLCAT
+size_t strlcat(char *, const char *, size_t);
+#endif
+#ifndef HAVE_STRLCPY
+size_t strlcpy(char *, const char *, size_t);
+#endif
+#ifndef HAVE_MEMRCHR
+void *memrchr(const void *, int, size_t);
+#endif
+#ifndef HAVE_MKSTEMPS
+int mkstemps(char *, int);
+#endif
+#ifndef HAVE_NANOSLEEP
+int nanosleep(const struct timespec *, struct timespec *);
+#endif
+#ifndef HAVE_SETENV
+int setenv(const char *, const char *, int);
+#endif
+#ifndef HAVE_UNSETENV
+int unsetenv(const char *);
+#endif
+#ifndef HAVE_STRSIGNAL
+char *strsignal(int);
+#endif
+
+#endif /* _SUDO_MISSING_H */
index 844023b4a22a48c29ab64af78dd5ba910e5fee06..2ca605c5e528842b00da171afe4110554ee4e69a 100644 (file)
@@ -1,5 +1,6 @@
 /*
- * Copyright (c) 2009-2010 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 1996, 1998-2005, 2008, 2009-2010
+ *     Todd C. Miller <Todd.Miller@courtesan.com>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Sponsored in part by the Defense Advanced Research Projects
+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
+ * Materiel Command, USAF, under agreement number F39502-99-1-0512.
  */
 
 #ifndef _SUDO_MISSING_H
 #define _SUDO_MISSING_H
 
+/*
+ * Macros and functions that may be missing on some operating systems.
+ */
+
+/* Define away __attribute__ for non-gcc or old gcc */
+#if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC__ == 2 && __GNUC_MINOR__ < 5
+# define __attribute__(x)
+#endif
+
+/* For silencing gcc warnings about rcsids */
+#ifndef __unused
+# if defined(__GNUC__) && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 7)
+#  define __unused     __attribute__((__unused__))
+# else
+#  define __unused
+# endif
+#endif
+
+/* For catching format string mismatches */
+#ifndef __printflike
+# if defined(__GNUC__) && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+#  define __printflike(f, v)   __attribute__((__format__ (__printf__, f, v)))
+# else
+#  define __printflike(f, v)
+# endif
+#endif
+
+/*
+ * Some systems lack full limit definitions.
+ */
+#ifndef OPEN_MAX
+# define OPEN_MAX      256
+#endif
+
+#ifndef INT_MAX
+# define INT_MAX       0x7fffffff
+#endif
+
+#ifndef PATH_MAX
+# ifdef MAXPATHLEN
+#  define PATH_MAX             MAXPATHLEN
+# else
+#  ifdef _POSIX_PATH_MAX
+#   define PATH_MAX            _POSIX_PATH_MAX
+#  else
+#   define PATH_MAX            1024
+#  endif
+# endif
+#endif
+
+#ifndef MAXHOSTNAMELEN
+# define MAXHOSTNAMELEN                64
+#endif
+
+/*
+ * Posix versions for those without...
+ */
+#ifndef _S_IFMT
+# define _S_IFMT               S_IFMT
+#endif /* _S_IFMT */
+#ifndef _S_IFREG
+# define _S_IFREG              S_IFREG
+#endif /* _S_IFREG */
+#ifndef _S_IFDIR
+# define _S_IFDIR              S_IFDIR
+#endif /* _S_IFDIR */
+#ifndef _S_IFLNK
+# define _S_IFLNK              S_IFLNK
+#endif /* _S_IFLNK */
+#ifndef S_ISREG
+# define S_ISREG(m)            (((m) & _S_IFMT) == _S_IFREG)
+#endif /* S_ISREG */
+#ifndef S_ISDIR
+# define S_ISDIR(m)            (((m) & _S_IFMT) == _S_IFDIR)
+#endif /* S_ISDIR */
+
+/*
+ * Some OS's may not have this.
+ */
+#ifndef S_IRWXU
+# define S_IRWXU               0000700         /* rwx for owner */
+#endif /* S_IRWXU */
+
+/*
+ * These should be defined in <unistd.h> but not everyone has them.
+ */
+#ifndef STDIN_FILENO
+# define       STDIN_FILENO    0
+#endif
+#ifndef STDOUT_FILENO
+# define       STDOUT_FILENO   1
+#endif
+#ifndef STDERR_FILENO
+# define       STDERR_FILENO   2
+#endif
+
+/*
+ * BSD defines these in <sys/param.h> but others may not.
+ */
+#ifndef MIN
+# define MIN(a,b) (((a)<(b))?(a):(b))
+#endif
+#ifndef MAX
+# define MAX(a,b) (((a)>(b))?(a):(b))
+#endif
+
+/*
+ * Simple isblank() macro and function for systems without it.
+ */
+#ifndef HAVE_ISBLANK
+int isblank(int);
+# define isblank(_x)   ((_x) == ' ' || (_x) == '\t')
+#endif
+
+/*
+ * NCR's SVr4 has _innetgr(3) instead of innetgr(3) for some reason.
+ */
+#ifdef HAVE__INNETGR
+# define innetgr(n, h, u, d)   (_innetgr(n, h, u, d))
+# define HAVE_INNETGR 1
+#endif /* HAVE__INNETGR */
+
+/*
+ * On POSIX systems, O_NOCTTY is the default so some OS's may lack this define.
+ */
+#ifndef O_NOCTTY
+# define O_NOCTTY      0
+#endif /* O_NOCTTY */
+
+/*
+ * Add IRIX-like sigaction_t for those without it.
+ * SA_RESTART is not required by POSIX; SunOS has SA_INTERRUPT instead.
+ */
+#ifndef HAVE_SIGACTION_T
+typedef struct sigaction sigaction_t;
+#endif
+#ifndef SA_INTERRUPT
+# define SA_INTERRUPT  0
+#endif
+#ifndef SA_RESTART
+# define SA_RESTART    0
+#endif
+
+/*
+ * If dirfd() does not exists, hopefully dd_fd does.
+ */
+#if !defined(HAVE_DIRFD) && defined(HAVE_DD_FD)
+# define dirfd(_d)     ((_d)->dd_fd)
+# define HAVE_DIRFD
+#endif
+
+/*
+ * Define futimes() in terms of futimesat() if needed.
+ */
+#if !defined(HAVE_FUTIMES) && defined(HAVE_FUTIMESAT)
+# define futimes(_f, _tv)      futimesat(_f, NULL, _tv)
+# define HAVE_FUTIMES
+#endif
+
+#if !defined(HAVE_KILLPG) && !defined(killpg)
+# define killpg(s)     kill(-(s))
+#endif
+
+/*
+ * If we lack getprogname(), emulate with __progname if possible.
+ * Otherwise, add a prototype for use with our own getprogname.c.
+ */
+#ifndef HAVE_GETPROGNAME
+# ifdef HAVE___PROGNAME
+extern const char *__progname;
+#  define getprogname()          (__progname)
+# else
+const char *getprogname(void);
+void setprogname(const char *);
+#endif /* HAVE___PROGNAME */
+#endif /* !HAVE_GETPROGNAME */
+
+#ifndef timevalclear
+# define timevalclear(tv)      ((tv)->tv_sec = (tv)->tv_usec = 0)
+#endif
+#ifndef timevalisset
+# define timevalisset(tv)      ((tv)->tv_sec || (tv)->tv_usec)
+#endif
+#ifndef timevalcmp
+# define timevalcmp(tv1, tv2, op)                                             \
+    (((tv1)->tv_sec == (tv2)->tv_sec) ?                                               \
+       ((tv1)->tv_usec op (tv2)->tv_usec) :                                   \
+       ((tv1)->tv_sec op (tv2)->tv_sec))
+#endif
+#ifndef timevaladd
+# define timevaladd(tv1, tv2)                                                 \
+    do {                                                                      \
+       (tv1)->tv_sec += (tv2)->tv_sec;                                        \
+       (tv1)->tv_usec += (tv2)->tv_usec;                                      \
+       if ((tv1)->tv_usec >= 1000000) {                                       \
+           (tv1)->tv_sec++;                                                   \
+           (tv1)->tv_usec -= 1000000;                                         \
+       }                                                                      \
+    } while (0)
+#endif
+#ifndef timevalsub
+# define timevalsub(tv1, tv2)                                                 \
+    do {                                                                      \
+       (tv1)->tv_sec -= (tv2)->tv_sec;                                        \
+       (tv1)->tv_usec -= (tv2)->tv_usec;                                      \
+       if ((tv1)->tv_usec < 0) {                                              \
+           (tv1)->tv_sec--;                                                   \
+           (tv1)->tv_usec += 1000000;                                         \
+       }                                                                      \
+    } while (0)
+#endif
+
+/* Not all systems define NSIG in signal.h */
+#if !defined(NSIG)
+# if defined(_NSIG)
+#  define NSIG _NSIG
+# elif defined(__NSIG)
+#  define NSIG __NSIG
+# else
+#  define NSIG 64
+# endif
+#endif
+
+#ifndef WCOREDUMP
+# define WCOREDUMP(x)  ((x) & 0x80)
+#endif
+
+#ifndef HAVE_SETEUID
+#  if defined(HAVE_SETRESUID)
+#    define seteuid(u) setresuid(-1, (u), -1)
+#    define setegid(g) setresgid(-1, (g), -1)
+#    define HAVE_SETEUID 1
+#  elif defined(HAVE_SETREUID)
+#    define seteuid(u) setreuid(-1, (u))
+#    define setegid(g) setregid(-1, (g))
+#    define HAVE_SETEUID 1
+#  endif
+#endif /* HAVE_SETEUID */
+
+#include <stdio.h>
 #include <stdarg.h>
 
 /* Functions "missing" from libc. */
index a8bb09be0a0b99b6295c688befd673b339dd5de2..a8a08c0372d297467333be498a2045607d72f7cb 100644 (file)
@@ -50,7 +50,6 @@
 #include <stdarg.h>
 
 #include <sudo_plugin.h>
-#include <compat.h>
 #include <missing.h>
 #include <pathnames.h>
 
index f2a65f4cd43b6d027c630c444c49fcab1d424211..4c4225bb8644c5115fb31dfa24026331c9e54805 100644 (file)
@@ -45,7 +45,6 @@
 #include <pwd.h>
 #include <grp.h>
 
-#include <compat.h>
 #include <missing.h>
 
 #ifndef LINE_MAX
index f8b36f9529f5e557fcef7c0284289696e669e69e..d4417955955e8e635e8358961c57ef988706ec63 100644 (file)
@@ -49,7 +49,6 @@
 #include <pwd.h>
 
 #include <sudo_plugin.h>
-#include <compat.h>
 #include <missing.h>
 
 /*
index 6110a8ecdef905d180be92834a9f3b9fa8ad4021..ff92429438384d6f02f52e183594b106bb0acf39 100644 (file)
@@ -118,10 +118,10 @@ TEST_OBJS = interfaces.o testsudoers.o tsgetgrpw.o error.o group_plugin.o
 VERSION = @PACKAGE_VERSION@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 
-SUDODEP = $(srcdir)/sudoers.h $(incdir)/compat.h \
-         $(srcdir)/defaults.h $(incdir)/error.h $(incdir)/list.h \
-         $(srcdir)/logging.h $(incdir)/missing.h $(srcdir)/sudo_nss.h \
-         $(devdir)/def_data.h $(top_builddir)/pathnames.h $(top_builddir)/config.h
+SUDODEP = $(srcdir)/sudoers.h $(srcdir)/defaults.h $(incdir)/error.h \
+         $(incdir)/list.h $(srcdir)/logging.h $(incdir)/missing.h \
+         $(srcdir)/sudo_nss.h $(devdir)/def_data.h \
+         $(top_builddir)/pathnames.h $(top_builddir)/config.h
 
 AUTHDEP = $(SUDODEP) $(authdir)/sudo_auth.h
 
@@ -211,11 +211,11 @@ redblack.lo: $(srcdir)/redblack.c $(SUDODEP) $(srcdir)/redblack.h
 set_perms.lo: $(srcdir)/set_perms.c $(SUDODEP)
 sudo_nss.lo: $(srcdir)/sudo_nss.c $(SUDODEP)
 sudoers.lo: $(srcdir)/sudoers.c $(SUDODEP) $(srcdir)/interfaces.h
-timestr.lo: $(srcdir)/timestr.c $(incdir)/compat.h $(top_builddir)/config.h
+timestr.lo: $(srcdir)/timestr.c $(incdir)/missing.h $(top_builddir)/config.h
 toke.lo: $(devdir)/toke.c $(SUDODEP) $(srcdir)/parse.h $(incdir)/list.h $(devdir)/gram.h
        $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(devdir)/toke.c
 tsgetgrpw.lo: $(srcdir)/tsgetgrpw.c $(SUDODEP)
-plugin_error.lo: $(srcdir)/plugin_error.c $(incdir)/error.h $(incdir)/compat.h $(top_builddir)/config.h
+plugin_error.lo: $(srcdir)/plugin_error.c $(incdir)/error.h $(incdir)/missing.h $(top_builddir)/config.h
 
 # Auth dependencies
 sudo_auth.lo: $(authdir)/sudo_auth.c $(AUTHDEP) $(INSDEP)
@@ -235,14 +235,14 @@ securid5.lo: $(authdir)/securid5.c $(AUTHDEP)
 sia.lo: $(authdir)/sia.c $(AUTHDEP)
 
 # Command dependencies (sudoreplay, testsudoers, visudo)
-error.o: $(top_srcdir)/src/error.c $(incdir)/error.h $(incdir)/compat.h $(top_builddir)/config.h
+error.o: $(top_srcdir)/src/error.c $(incdir)/error.h $(incdir)/missing.h $(top_builddir)/config.h
        $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(top_srcdir)/src/error.c
 find_path.o: find_path.lo
-getdate.o: $(devdir)/getdate.c $(incdir)/compat.h $(top_builddir)/config.h
+getdate.o: $(devdir)/getdate.c $(incdir)/missing.h $(top_builddir)/config.h
        $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(devdir)/getdate.c
 goodpath.o: goodpath.lo
 interfaces.o: interfaces.lo
-sudoreplay.o: $(srcdir)/sudoreplay.c $(incdir)/alloc.h $(incdir)/compat.h $(incdir)/error.h $(incdir)/missing.h $(top_builddir)/config.h
+sudoreplay.o: $(srcdir)/sudoreplay.c $(incdir)/alloc.h $(incdir)/missing.h $(incdir)/error.h $(incdir)/missing.h $(top_builddir)/config.h
 testsudoers.o: $(srcdir)/testsudoers.c $(SUDODEP) $(srcdir)/parse.h $(incdir)/list.h $(srcdir)/interfaces.h $(devdir)/gram.h
 tsgetgrpw.o: $(srcdir)/tsgetgrpw.c $(SUDODEP)
 visudo.o: $(srcdir)/visudo.c $(SUDODEP) $(devdir)/gram.h
index b05a02ac0829acbd404afd903b09f180e4da02f8..edb1dae0ae5a3fdcef0910f626719b73ee774033 100644 (file)
@@ -28,7 +28,7 @@
 #endif /* STDC_HEADERS */
 #include <stdarg.h>
 
-#include <compat.h>
+#include <missing.h>
 #include "logging.h"
 
 #ifdef HAVE_BSM_AUDIT
index 237bd8ea5446697b79badaa624cc8be681f03783..c4787b2b9d7cc16c8241952aa6390e62c4f6978f 100644 (file)
@@ -47,7 +47,6 @@
 # include <sys/sysctl.h>
 #endif
 
-#include <compat.h>
 #include <missing.h>
 
 /*
index 172add56ccdaa14d88bd797d1dfee04460a58154..c9dee68b0dbfa156f63239c6f57fc703070a0622 100644 (file)
@@ -50,7 +50,7 @@
 #endif
 #include <ctype.h>
 
-#include <compat.h>
+#include <missing.h>
 
 
 #define EPOCH          1970
index a40d78418cf3b6c700411d48582de4b00f312730..23ab34c0b12ee8d7ce5447d52677f9350c8e4eac 100644 (file)
@@ -39,7 +39,7 @@
 #endif
 #include <ctype.h>
 
-#include <compat.h>
+#include <missing.h>
 
 
 #define EPOCH          1970
index b18a3c2e3a082d1c5a96e71e52bb4ef97e7d6440..a623307e6c5a92b77b53bc79f6990859543fc5d4 100644 (file)
 #include <string.h>
 #include <libaudit.h>
 
-#include <compat.h>
+#include <missing.h>
 #include <error.h>
 #include <alloc.h>
-#include <missing.h>
 #include <linux_audit.h>
 
 /*
index 365c51c0759102f4c68aaf0ea0aca8419eb42dea..65d11433dec66c08d136ef293443e512ab25a971 100644 (file)
@@ -21,7 +21,7 @@
 #include <setjmp.h>
 
 #include <config.h>
-#include <compat.h>
+#include <missing.h>
 #include <alloc.h>
 #include <error.h>
 #include <sudo_plugin.h>
index 902508773a5e3efec59a3d8aeaf37ac56beceb65..1abcce676cee8704917ad79c0fd434bad90d6cbe 100644 (file)
 
 #include <pathnames.h>
 #include <limits.h>
-#include <compat.h>
+#include <missing.h>
 #include <error.h>
 #include <alloc.h>
 #include <list.h>
 #include <fileops.h>
-#include <missing.h>
 #include "defaults.h"
 #include "logging.h"
 #include "sudo_nss.h"
index 1f7e3d4aafb74e57f497424b83294085139babff..33df8c252ab3d75f49cffc907744f03e1f53c5c3 100644 (file)
 
 #include <pathnames.h>
 
-#include <compat.h>
+#include <missing.h>
 #include <alloc.h>
 #include <error.h>
-#include <missing.h>
 
 #ifndef LINE_MAX
 # define LINE_MAX 2048
index 740dccdf40957a4f23957cfe534b74742bb33452..bdcf009357d42c89a83f457cd19a8a2286f66e91 100644 (file)
@@ -28,7 +28,7 @@
 #endif /* STDC_HEADERS */
 #include <time.h>
 
-#include <compat.h>
+#include <missing.h>
 
 char *get_timestr(time_t, int);
 
index 8bda53446e615fc2589a46e40ddf357b1166d25c..4bdd9a518259e6cedb552b2e96b874c67379536b 100644 (file)
@@ -80,9 +80,8 @@ LIBOBJDIR = $(top_builddir)/@ac_config_libobj_dir@/
 VERSION = @PACKAGE_VERSION@
 
 SUDODEP = $(srcdir)/sudo.h $(incdir)/sudo_plugin.h $(incdir)/alloc.h \
-         $(incdir)/compat.h $(incdir)/error.h $(incdir)/list.h \
-         $(incdir)/missing.h $(top_builddir)/pathnames.h \
-         $(top_builddir)/config.h
+         $(incdir)/error.h $(incdir)/list.h $(incdir)/missing.h \
+         $(top_builddir)/pathnames.h $(top_builddir)/config.h
 
 all: $(PROGS)
 
@@ -106,19 +105,19 @@ sesh: sesh.o
 # Dependencies
 # XXX - SUDODEP is overkill for some of these
 conversation.o: $(srcdir)/conversation.c $(SUDODEP)
-error.o: $(srcdir)/error.c $(incdir)/compat.h $(incdir)/error.h $(top_builddir)/config.h
+error.o: $(srcdir)/error.c $(incdir)/missing.h $(incdir)/error.h $(top_builddir)/config.h
 exec.o: $(srcdir)/exec.c $(SUDODEP) $(srcdir)/sudo_exec.h
 exec_pty.o: $(srcdir)/exec_pty.c $(SUDODEP) $(srcdir)/sudo_exec.h
 get_pty.o: $(srcdir)/get_pty.c $(SUDODEP)
 load_plugins.o: $(srcdir)/load_plugins.c $(SUDODEP)
 parse_args.o: $(srcdir)/parse_args.c sudo_usage.h $(SUDODEP)
 selinux.o: $(srcdir)/selinux.c $(SUDODEP)
-sesh.o: $(srcdir)/sesh.c $(incdir)/compat.h $(top_builddir)/config.h
+sesh.o: $(srcdir)/sesh.c $(incdir)/missing.h $(top_builddir)/config.h
 sudo.o: $(srcdir)/sudo.c $(SUDODEP)
 sudo_edit.o: $(srcdir)/sudo_edit.c $(SUDODEP)
-sudo_noexec.lo: $(srcdir)/sudo_noexec.c $(incdir)/compat.h $(top_builddir)/config.h
+sudo_noexec.lo: $(srcdir)/sudo_noexec.c $(incdir)/missing.h $(top_builddir)/config.h
 tgetpass.o: $(srcdir)/tgetpass.c $(SUDODEP)
-ttysize.o: $(srcdir)/ttysize.c $(incdir)/compat.h $(top_builddir)/config.h
+ttysize.o: $(srcdir)/ttysize.c $(incdir)/missing.h $(top_builddir)/config.h
 
 install: install-dirs install-binaries @INSTALL_NOEXEC@
 
index 77ed00e1ece694497a4ca32251313d40ee3c97ba..62b7202294a013f97270fce13058ebc091db9916 100644 (file)
@@ -20,7 +20,7 @@
 #include <string.h>
 
 #include <config.h>
-#include <compat.h>
+#include <missing.h>
 #include "error.h"
 
 static void _warning(int, const char *, va_list);
index 0770c5ce222e4bb9c05a5706f5c4410a6639025b..e85d80bd05ee75f42048492526645938722ed0c5 100644 (file)
@@ -27,7 +27,7 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <compat.h>
+#include <missing.h>
 
 int
 main (int argc, char *argv[])
index 07e43cb8a692741fdbca9d49f11a3ab13b7cf4d8..d83174c9dd72b73fb5807b22f541d134cd2bfdd0 100644 (file)
 #include <pathnames.h>
 #include <limits.h>
 
-#include <compat.h>
+#include <missing.h>
 #include <alloc.h>
 #include <error.h>
 #include <fileops.h>
 #include <list.h>
-#include <missing.h>
 
 #ifdef __TANDEM
 # define ROOT_UID       65535
index 27677cab5d3c5d400df4fb85fa3713f1fba481a5..9b51f4f823ea181fde16b2f44ccfc66602efe058 100644 (file)
@@ -22,7 +22,7 @@
 #endif
 #include <stdarg.h>
 
-#include <compat.h>
+#include <missing.h>
 
 /*
  * Dummy versions of the execve() family of syscalls.  We don't need
index 9e1afbf0f37566b1931d3af8de780595b622b89c..3553dbbc7a90a2356f6849064136c9898bf59220 100644 (file)
@@ -34,7 +34,7 @@
 #endif /* HAVE_UNISTD_H */
 #include <termios.h>
 
-#include <compat.h>
+#include <missing.h>
 
 #if !defined(TIOCGSIZE) && defined(TIOCGWINSZ)
 # define TIOCGSIZE     TIOCGWINSZ