summaryrefslogtreecommitdiff
path: root/contrib/texinfo/lib/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/texinfo/lib/system.h')
-rw-r--r--contrib/texinfo/lib/system.h131
1 files changed, 116 insertions, 15 deletions
diff --git a/contrib/texinfo/lib/system.h b/contrib/texinfo/lib/system.h
index 109e3933cb37..4ca1837a92e8 100644
--- a/contrib/texinfo/lib/system.h
+++ b/contrib/texinfo/lib/system.h
@@ -1,7 +1,7 @@
-/* system.h: System-dependent declarations. Include this first.
- $Id: system.h,v 1.5 1997/07/31 20:34:36 karl Exp $
+/* system.h: system-dependent declarations; include this first.
+ $Id: system.h,v 1.14 1999/07/17 21:11:34 karl Exp $
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 98, 99 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -37,7 +37,22 @@
#ifdef HAVE_LOCALE_H
#include <locale.h>
#endif
+#ifndef HAVE_SETLOCALE
+#define setlocale(category,locale) /* empty */
+#endif
+
+/* For gettext (NLS). */
#include <libintl.h>
+#define _(String) gettext (String)
+#define N_(String) (String)
+
+#ifdef STDC_HEADERS
+#define getopt system_getopt
+#include <stdlib.h>
+#undef getopt
+#else
+extern char *getenv ();
+#endif
/* Don't use bcopy! Use memmove if source and destination may overlap,
memcpy otherwise. */
@@ -51,18 +66,6 @@
char *memchr ();
#endif
-#ifdef STDC_HEADERS
-#define getopt system_getopt
-#include <stdlib.h>
-#undef getopt
-#else
-extern char *getenv ();
-#endif
-
-#ifndef HAVE_STRERROR
-extern char *strerror ();
-#endif
-
#include <errno.h>
#ifndef errno
extern int errno;
@@ -71,7 +74,29 @@ extern int errno;
#include <perror.h>
#endif
+#ifndef HAVE_DECL_STRERROR
+extern char *strerror ();
+#endif
+
+#ifndef HAVE_DECL_STRCASECMP
+extern int strcasecmp ();
+#endif
+
+#ifndef HAVE_DECL_STRNCASECMP
+extern int strncasecmp ();
+#endif
+
+#ifndef HAVE_DECL_STRCOLL
+extern int strcoll ();
+#endif
+
#include <sys/stat.h>
+#if STAT_MACROS_BROKEN
+# undef S_ISDIR
+#endif
+#if !defined(S_ISDIR) && defined(S_IFDIR)
+# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
+#endif
#ifdef HAVE_SYS_FILE_H
#include <sys/file.h>
@@ -89,6 +114,77 @@ extern int errno;
#endif /* not HAVE_FCNTL_H */
#endif /* not O_RDONLY */
+/* MS-DOS and similar non-Posix systems have some peculiarities:
+ - they distinguish between binary and text files;
+ - they use both `/' and `\\' as directory separator in file names;
+ - they can have a drive letter X: prepended to a file name;
+ - they have a separate root directory on each drive;
+ - their filesystems are case-insensitive;
+ - directories in environment variables (like INFOPATH) are separated
+ by `;' rather than `:';
+ - text files can have their lines ended either with \n or with \r\n pairs;
+
+ These are all parameterized here except the last, which is
+ handled by the source code as appropriate (mostly, in info/). */
+#ifndef O_BINARY
+# ifdef _O_BINARY
+# define O_BINARY _O_BINARY
+# else
+# define O_BINARY 0
+# endif
+#endif /* O_BINARY */
+
+#if O_BINARY
+# include <io.h>
+# ifdef __MSDOS__
+# include <limits.h>
+# ifdef __DJGPP__
+# define HAVE_LONG_FILENAMES(dir) (pathconf (dir, _PC_NAME_MAX) > 12)
+# define NULL_DEVICE "/dev/null"
+# else /* !__DJGPP__ */
+# define HAVE_LONG_FILENAMES(dir) (0)
+# define NULL_DEVICE "NUL"
+# endif /* !__DJGPP__ */
+# define SET_SCREEN_SIZE_HELPER terminal_prep_terminal()
+# define DEFAULT_INFO_PRINT_COMMAND ">PRN"
+# else /* !__MSDOS__ */
+# define setmode(f,m) _setmode(f,m)
+# define HAVE_LONG_FILENAMES(dir) (1)
+# define NULL_DEVICE "NUL"
+# endif /* !__MSDOS__ */
+# define SET_BINARY(f) do {if (!isatty(f)) setmode(f,O_BINARY);} while(0)
+# define FOPEN_RBIN "rb"
+# define FOPEN_WBIN "wb"
+# define IS_SLASH(c) ((c) == '/' || (c) == '\\')
+# define HAVE_DRIVE(n) ((n)[0] && (n)[1] == ':')
+# define IS_ABSOLUTE(n) (IS_SLASH((n)[0]) || ((n)[0] && (n)[1] == ':'))
+# define FILENAME_CMP strcasecmp
+# define FILENAME_CMPN strncasecmp
+# define PATH_SEP ";"
+# define STRIP_DOT_EXE 1
+# define DEFAULT_TMPDIR "c:/"
+# define PIPE_USE_FORK 0
+#else /* not O_BINARY */
+# define SET_BINARY(f) (void)0
+# define FOPEN_RBIN "r"
+# define FOPEN_WBIN "w"
+# define IS_SLASH(c) ((c) == '/')
+# define HAVE_DRIVE(n) (0)
+# define IS_ABSOLUTE(n) ((n)[0] == '/')
+# define FILENAME_CMP strcmp
+# define FILENAME_CMPN strncmp
+# define HAVE_LONG_FILENAMES(dir) (1)
+# define PATH_SEP ":"
+# define STRIP_DOT_EXE 0
+# ifdef VMS
+# define DEFAULT_TMPDIR "sys$scratch:"
+# else
+# define DEFAULT_TMPDIR "/tmp/"
+# endif
+# define NULL_DEVICE "/dev/null"
+# define PIPE_USE_FORK 1
+#endif /* not O_BINARY */
+
#ifdef HAVE_PWD_H
#include <pwd.h>
#endif
@@ -98,5 +194,10 @@ struct passwd *getpwnam ();
/* Our library routines not included in any system library. */
extern void *xmalloc (), *xrealloc ();
extern char *xstrdup ();
+extern void xexit ();
+extern char *substring ();
+
+/* For convenience. */
+#define STREQ(s1,s2) (strcmp (s1, s2) == 0)
#endif /* TEXINFO_SYSTEM_H */