home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 4: GNU Archives / Linux Cubed Series 4 - GNU Archives.iso / gnu / sharutil.2 / sharutil / sharutils-4.2 / lib / system.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-29  |  4.0 KB  |  213 lines

  1. /* Shared definitions for GNU shar utilities.
  2.    Copyright (C) 1994, 1995 Free Software Foundation, Inc.
  3.  
  4.    This program is free software; you can redistribute it and/or modify
  5.    it under the terms of the GNU General Public License as published by
  6.    the Free Software Foundation; either version 2, or (at your option)
  7.    any later version.
  8.  
  9.    This program is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.    GNU General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU General Public License
  15.    along with this program; if not, write to the Free Software Foundation,
  16.    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17. */
  18.  
  19. #ifdef HAVE_CONFIG_H
  20. # include <config.h>
  21. #endif
  22.  
  23. /* AIX requires this to be the first thing in the file.  */
  24. #if defined (_AIX) && !defined (__GNUC__)
  25.  #pragma alloca
  26. #endif
  27.  
  28. #ifdef    __GNUC__
  29. # undef    alloca
  30. # define alloca(n) __builtin_alloca (n)
  31. #else
  32. # ifdef HAVE_ALLOCA_H
  33. #  include <alloca.h>
  34. # else
  35. #  ifndef _AIX
  36. extern char *alloca ();
  37. #  endif
  38. # endif
  39. #endif
  40.  
  41. #if __STDC__
  42. # define voidstar void *
  43. #else
  44. # define voidstar char *
  45. #endif
  46.  
  47. #ifdef STDC_HEADERS
  48. # include <stdlib.h>
  49. #else
  50. char *getenv ();
  51. #endif
  52.  
  53. /* Some systems do not define EXIT_*, even with STDC_HEADERS.  */
  54. #ifndef EXIT_SUCCESS
  55. # define EXIT_SUCCESS 0
  56. #endif
  57. #ifndef EXIT_FAILURE
  58. # define EXIT_FAILURE 1
  59. #endif
  60.  
  61. #if HAVE_STRING_H
  62. # include <string.h>
  63. # if !STDC_HEADERS && HAVE_MEMORY_H
  64. #  include <memory.h>
  65. # endif
  66. #else
  67. # include <strings.h>
  68. #endif
  69. #if !HAVE_MEMCPY
  70. # ifndef memcpy
  71. #  define memcpy(D, S, N) bcopy (S, D, N)
  72. # endif
  73. #endif
  74. #if !HAVE_STRCHR
  75. # ifndef strchr
  76. #  define strchr index
  77. # endif
  78. #endif
  79.  
  80. /* Other header files.  */
  81.  
  82. #include <stdio.h>
  83.  
  84. #include <errno.h>
  85. #ifndef errno
  86. extern int errno;
  87. #endif
  88.  
  89. #include <sys/types.h>
  90.  
  91. #ifdef HAVE_SYS_WAIT_H
  92. # include <sys/wait.h>
  93. #endif
  94.  
  95. /* Get definitions for the file permission bits.  */
  96.  
  97. #include <sys/stat.h>
  98.  
  99. #ifdef STAT_MACROS_BROKEN
  100. # undef S_ISDIR
  101. # undef S_ISREG
  102. #endif
  103.  
  104. #ifndef S_IFMT
  105. # define S_IFMT 0170000
  106. #endif
  107. #if !defined(S_ISDIR) && defined(S_IFDIR)
  108. # define S_ISDIR(Mode) (((Mode) & S_IFMT) == S_IFDIR)
  109. #endif
  110. #if !defined(S_ISREG) && defined(S_IFREG)
  111. # define S_ISREG(Mode) (((Mode) & S_IFMT) == S_IFREG)
  112. #endif
  113.  
  114. #ifndef S_IRWXU
  115. # define S_IRWXU 0700
  116. #endif
  117. #ifndef S_IRUSR
  118. # define S_IRUSR 0400
  119. #endif
  120. #ifndef S_IWUSR
  121. # define S_IWUSR 0200
  122. #endif
  123. #ifndef S_IXUSR
  124. # define S_IXUSR 0100
  125. #endif
  126.  
  127. #ifndef S_IRWXG
  128. # define S_IRWXG 0070
  129. #endif
  130. #ifndef S_IRGRP
  131. # define S_IRGRP 0040
  132. #endif
  133. #ifndef S_IWGRP
  134. # define S_IWGRP 0020
  135. #endif
  136. #ifndef S_IXGRP
  137. # define S_IXGRP 0010
  138. #endif
  139.  
  140. #ifndef S_IRWXO
  141. # define S_IRWXO 0007
  142. #endif
  143. #ifndef S_IROTH
  144. # define S_IROTH 0004
  145. #endif
  146. #ifndef S_IWOTH
  147. # define S_IWOTH 0002
  148. #endif
  149. #ifndef S_IXOTH
  150. # define S_IXOTH 0001
  151. #endif
  152.  
  153. /* System functions.  Even if we usually avoid declaring them, we cannot
  154.    avoid them all.  */
  155.  
  156. #ifdef HAVE_UNISTD_H
  157. # include <unistd.h>
  158. #endif
  159.  
  160. FILE *fdopen ();
  161. long ftell ();
  162. FILE *popen ();
  163.  
  164. /* GNU small library functions.  */
  165.  
  166. #ifndef __P
  167. # if PROTOTYPES
  168. #  define __P(Args) Args
  169. # else
  170. #  define __P(Args) ()
  171. # endif
  172. #endif
  173.  
  174. #if HAVE_LOCALE_H
  175. # include <locale.h>
  176. #else
  177. # define setlocale(Category, Locale)
  178. #endif
  179.  
  180. #include <libintl.h>
  181.  
  182. #define _(Str) gettext (Str)
  183. #ifdef gettext_noop
  184. # define N_(Str) gettext_noop (Str)
  185. #else
  186. # define N_(Str) (Str)
  187. #endif
  188.  
  189.  
  190. #if HAVE_BASENAME
  191. char *basename ();
  192. #else
  193. char *basename __P ((const char *));
  194. #endif
  195. void error __P ((int, int, const char *, ...));
  196. char *xgetcwd __P ((void));
  197. voidstar xmalloc __P ((size_t));
  198. voidstar xrealloc __P ((voidstar, size_t));
  199. char *xstrdup __P ((const char *));
  200. char *stpcpy __P ((char *, const char *));
  201.  
  202. /* Global functions of the shar package.  */
  203.  
  204. void copy_file_encoded __P ((FILE *, FILE *));
  205. char *get_submitter __P ((char *));
  206.  
  207. /* Debugging the memory allocator.  */
  208.  
  209. #if WITH_DMALLOC
  210. # define MALLOC_FUNC_CHECK
  211. # include <dmalloc.h>
  212. #endif
  213.