Handle config.guess and config.sub with DOS EOLs
[platform/upstream/rpm.git] / system.h
index 25573b9..570cef1 100644 (file)
--- a/system.h
+++ b/system.h
@@ -1,5 +1,7 @@
 /**
  * \file system.h
+ *
+ *  Some misc low-level API
  */
 
 #ifndef        H_SYSTEM
@@ -9,11 +11,6 @@
 #include "config.h"
 #endif
 
-#include <sys/types.h>
-
-#include <sys/stat.h>
-#include <stdio.h>
-
 #ifdef HAVE_SYS_PARAM_H
 #include <sys/param.h>
 #endif
@@ -32,50 +29,6 @@ extern char ** environ;
 #endif
 #endif
 
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-#  include <sys/time.h>
-# else
-#  include <time.h>
-# endif
-#endif
-
-/* Since major is a function on SVR4, we can't use `ifndef major'.  */
-#if MAJOR_IN_MKDEV
-#include <sys/mkdev.h>
-#define HAVE_MAJOR
-#endif
-#if MAJOR_IN_SYSMACROS
-#include <sys/sysmacros.h>
-#define HAVE_MAJOR
-#endif
-#ifdef major                   /* Might be defined in sys/types.h.  */
-#define HAVE_MAJOR
-#endif
-
-#ifndef HAVE_MAJOR
-#define major(dev)  (((dev) >> 8) & 0xff)
-#define minor(dev)  ((dev) & 0xff)
-#define makedev(maj, min)  (((maj) << 8) | (min))
-#endif
-#undef HAVE_MAJOR
-
-#ifdef HAVE_UTIME_H
-#include <utime.h>
-#endif
-
-#ifdef HAVE_STRING_H
-# if !STDC_HEADERS && HAVE_MEMORY_H
-#  include <memory.h>
-# endif
-# include <string.h>
-#else
-# include <strings.h>
-#endif
-
 #if !defined(HAVE_STPCPY)
 char * stpcpy(char * dest, const char * src);
 #endif
@@ -84,50 +37,18 @@ char * stpcpy(char * dest, const char * src);
 char * stpncpy(char * dest, const char * src, size_t n);
 #endif
 
-#include <errno.h>
-#ifndef errno
-extern int errno;
-#endif
-
-#if HAVE___SECURE_GETENV
+#if HAVE_SECURE_GETENV
+#define        getenv(_s)      secure_getenv(_s)
+#elif HAVE___SECURE_GETENV
 #define        getenv(_s)      __secure_getenv(_s)
 #endif
 
-#ifdef STDC_HEADERS
-/* FIX: shrug */
-#define getopt system_getopt
-#include <stdlib.h>
-#undef getopt
-#else /* not STDC_HEADERS */
-char *getenv (const char *name);
-#if ! HAVE_REALPATH
-char *realpath(const char *path, char resolved_path []);
-#endif
-#endif /* STDC_HEADERS */
-
-/* XXX solaris2.5.1 has not */
-#if !defined(EXIT_FAILURE)
-#define        EXIT_FAILURE    1
-#endif
-
 #ifdef HAVE_FCNTL_H
 #include <fcntl.h>
 #else
 #include <sys/file.h>
 #endif
 
-#if !defined(SEEK_SET)
-#define SEEK_SET 0
-#define SEEK_CUR 1
-#define SEEK_END 2
-#endif
-#if !defined(F_OK) 
-#define F_OK 0
-#define X_OK 1
-#define W_OK 2
-#define R_OK 4
-#endif
-
 #ifdef HAVE_DIRENT_H
 # include <dirent.h>
 # define NLENGTH(direct) (strlen((direct)->d_name))
@@ -145,20 +66,6 @@ char *realpath(const char *path, char resolved_path []);
 # endif /* HAVE_NDIR_H */
 #endif /* HAVE_DIRENT_H */
 
-#include <ctype.h>
-
-#if HAVE_SYS_MMAN_H
-#include <sys/mman.h>
-#endif
-
-#if HAVE_SYS_WAIT_H
-#include <sys/wait.h>
-#endif
-
-#if HAVE_GETOPT_H
-#include <getopt.h>
-#endif
-
 #if HAVE_LIMITS_H
 #include <limits.h>
 #endif
@@ -173,46 +80,10 @@ char *realpath(const char *path, char resolved_path []);
 #endif
 #endif
 
-#if WITH_SELINUX
-#include <selinux/selinux.h>
-#else
-typedef        char * security_context_t;
-
-#define        freecon(_c)
-
-#define        getfilecon(_fn, _c)     (-1)
-#define        lgetfilecon(_fn, _c)    (-1)
-#define        fgetfilecon(_fd, _c)    (-1)
-
-#define        setfilecon(_fn, _c)     (-1)
-#define        lsetfilecon(_fn, _c)    (-1)
-#define        fsetfilecon(_fd, _c)    (-1)
-
-#define        security_check_context(_c)      (0)
-
-#define        is_selinux_enabled()    (0)
-
-#define matchpathcon_init(_fn)                 (-1)
-#define matchpathcon_fini()                    (0)
-#define matchpathcon(_fn, _fm, _c)             (-1)
-
-#define rpm_execcon(_v, _fn, _av, _envp)       (0)
+#if defined(HAVE_FDATASYNC) && !HAVE_DECL_FDATASYNC
+extern int fdatasync(int fildes);
 #endif
 
-#if WITH_CAP
-#include <sys/capability.h>
-#else
-typedef void * cap_t;
-#endif
-
-#if WITH_ACL
-#include <acl/libacl.h>
-#endif
-
-#if HAVE_MCHECK_H
-#include <mcheck.h>
-#endif /* HAVE_MCHECK_H */
-
 #include "rpmio/rpmutil.h"
 /* compatibility macros to avoid a mass-renaming all over the codebase */
 #define xmalloc(_size) rmalloc((_size))
@@ -221,150 +92,39 @@ typedef void * cap_t;
 #define xstrdup(_str) rstrdup((_str))
 #define _free(_ptr) rfree((_ptr))
 
-/* Retrofit glibc __progname */
-#if defined __GLIBC__ && __GLIBC__ >= 2
-#if __GLIBC_MINOR__ >= 1
-#define        __progname      __assert_program_name
-#endif
-#define        setprogname(pn)
+/* To extract program's name: use calls (reimplemented or shipped with system):
+   - void setprogname(const char *pn)
+   - const char *getprogname(void)
+
+   setprogname(*pn) must be the first call in main() in order to set the name
+   as soon as possible. */
+#if defined(HAVE_SETPROGNAME) /* BSD'ish systems */
+# include <stdlib.h> /* Make sure this header is included */
+# define xsetprogname(pn) setprogname(pn)
+# define xgetprogname(pn) getprogname(pn)
+#elif defined(HAVE___PROGNAME) /* glibc and others */
+# define xsetprogname(pn)
+  extern const char *__progname;
+# define xgetprogname(pn) __progname
 #else
-#define        __progname      program_name
-#define        setprogname(pn) \
-  { if ((__progname = strrchr(pn, '/')) != NULL) __progname++; \
-    else __progname = pn;              \
-  }
-#endif
-extern const char *__progname;
-
-#if HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-#if HAVE_PWD_H
-#include <pwd.h>
+# error "Did not find any sutable implementation of xsetprogname/xgetprogname"
 #endif
 
 /* Take care of NLS matters.  */
-
-#if HAVE_LOCALE_H
-# include <locale.h>
-#endif
-#if !HAVE_SETLOCALE
-# define setlocale(Category, Locale) /* empty */
-#endif
-
 #if ENABLE_NLS
+# include <locale.h>
 # include <libintl.h>
 # define _(Text) dgettext (PACKAGE, Text)
 #else
-# undef bindtextdomain
-# define bindtextdomain(Domain, Directory) /* empty */
-# undef textdomain
-# define textdomain(Domain) /* empty */
 # define _(Text) Text
-# undef dgettext
-# define dgettext(DomainName, Text) Text
 #endif
 
 #define N_(Text) Text
 
 /* ============== from misc/miscfn.h */
 
-#if !defined(USE_GNU_GLOB) 
-#if HAVE_FNMATCH_H
-#include <fnmatch.h>
-#endif
-
-#if HAVE_GLOB_H 
-#include <glob.h>
-#endif
-#else
-#include "misc/glob.h"
 #include "misc/fnmatch.h"
-#endif
-
-#if ! HAVE_S_IFSOCK
-#define S_IFSOCK (0xc000)
-#endif
-
-#if ! HAVE_S_ISLNK
-#define S_ISLNK(mode) ((mode & 0xf000) == S_IFLNK)
-#endif
-
-#if ! HAVE_S_ISSOCK
-#define S_ISSOCK(mode) ((mode & 0xf000) == S_IFSOCK)
-#endif
-
-#if NEED_STRINGS_H
-#include <strings.h>
-#endif
-
-#if ! HAVE_SETENV
-extern int setenv(const char *name, const char *value, int replace);
-extern void unsetenv(const char *name);
-#endif
-
-#if HAVE_POLL_H
-#include <poll.h>
-#else
-#if HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-#endif
 
-#if ! HAVE_LCHOWN
-#define lchown chown
-#endif
-
-#if HAVE_GETMNTINFO || HAVE_GETMNTINFO_R || HAVE_MNTCTL
-# define GETMNTENT_ONE 0
-# define GETMNTENT_TWO 0
-# if HAVE_SYS_MNTCTL_H
-#  include <sys/mntctl.h>
-# endif
-# if HAVE_SYS_VMOUNT_H
-#  include <sys/vmount.h>
-# endif
-# if HAVE_SYS_MOUNT_H
-#  include <sys/mount.h>
-# endif
-#elif HAVE_MNTENT_H || !(HAVE_GETMNTENT) || HAVE_STRUCT_MNTTAB
-# if HAVE_MNTENT_H
-#  include <stdio.h>
-#  include <mntent.h>
-#  define our_mntent struct mntent
-#  define our_mntdir mnt_dir
-# elif HAVE_STRUCT_MNTTAB
-#  include <stdio.h>
-#  include <mnttab.h>
-   struct our_mntent {
-       char * our_mntdir;
-   };
-   struct our_mntent *getmntent(FILE *filep);
-#  define our_mntent struct our_mntent
-# else
-#  include <stdio.h>
-   struct our_mntent {
-       char * our_mntdir;
-   };
-   struct our_mntent *getmntent(FILE *filep);
-#  define our_mntent struct our_mntent
-# endif
-# define GETMNTENT_ONE 1
-# define GETMNTENT_TWO 0
-#elif HAVE_SYS_MNTTAB_H
-# include <stdio.h>
-# include <sys/mnttab.h>
-# define GETMNTENT_ONE 0
-# define GETMNTENT_TWO 1
-# define our_mntent struct mnttab
-# define our_mntdir mnt_mountp
-#else /* if !HAVE_MNTCTL */
-# error Neither mntent.h, mnttab.h, or mntctl() exists. I cannot build on this system.
-#endif
-
-#ifndef MOUNTED
-#define MOUNTED "/etc/mnttab"
-#endif
+#include <dlfcn.h>
 
 #endif /* H_SYSTEM */