Annotation of OpenXM_contrib/gnuplot/stdfn.h, Revision 1.1
1.1 ! maekawa 1: /*
! 2: * $Id: stdfn.h,v 1.23 1998/06/18 14:55:18 ddenholm Exp $
! 3: *
! 4: */
! 5:
! 6: /* GNUPLOT - stdfn.h */
! 7:
! 8: /*[
! 9: * Copyright 1986 - 1993, 1998 Thomas Williams, Colin Kelley
! 10: *
! 11: * Permission to use, copy, and distribute this software and its
! 12: * documentation for any purpose with or without fee is hereby granted,
! 13: * provided that the above copyright notice appear in all copies and
! 14: * that both that copyright notice and this permission notice appear
! 15: * in supporting documentation.
! 16: *
! 17: * Permission to modify the software is granted, but not the right to
! 18: * distribute the complete modified source code. Modifications are to
! 19: * be distributed as patches to the released version. Permission to
! 20: * distribute binaries produced by compiling modified sources is granted,
! 21: * provided you
! 22: * 1. distribute the corresponding source modifications from the
! 23: * released version in the form of a patch file along with the binaries,
! 24: * 2. add special version identification to distinguish your version
! 25: * in addition to the base release version number,
! 26: * 3. provide your name and address as the primary contact for the
! 27: * support of your modified version, and
! 28: * 4. retain our contact information in regard to use of the base
! 29: * software.
! 30: * Permission to distribute the released version of the source code along
! 31: * with corresponding source modifications in the form of a patch file is
! 32: * granted with same provisions 2 through 4 for binary distributions.
! 33: *
! 34: * This software is provided "as is" without express or implied warranty
! 35: * to the extent permitted by applicable law.
! 36: ]*/
! 37:
! 38: /* get prototypes or declarations for string and stdlib functions and deal
! 39: with missing functions like strchr. */
! 40:
! 41: /* we will assume the ANSI/Posix/whatever situation as default.
! 42: the header file is called string.h and the index functions are called
! 43: strchr, strrchr. Exceptions have to be listed explicitly */
! 44:
! 45: #ifndef STDFN_H
! 46: #define STDFN_H
! 47:
! 48: #include <ctype.h>
! 49: #include <stdio.h>
! 50:
! 51: #include "syscfg.h"
! 52:
! 53: #ifndef NO_STRING_H
! 54: # include <string.h>
! 55: #else
! 56: # include <strings.h>
! 57: #endif
! 58:
! 59: #ifdef HAVE_BCOPY
! 60: # ifdef NO_MEMCPY
! 61: # define memcpy(d,s,n) bcopy((s),(d),(n))
! 62: # endif
! 63: # ifdef NO_MEMMOVE
! 64: # define memmove(d,s,n) bcopy((s),(d),(n))
! 65: # endif
! 66: #endif /* HAVE_BCOPY */
! 67:
! 68: #ifdef NO_STRCHR
! 69: # ifdef strchr
! 70: # undef strchr
! 71: # endif
! 72: #ifdef HAVE_INDEX
! 73: # define strchr index
! 74: #endif
! 75: # ifdef strrchr
! 76: # undef strrchr
! 77: # endif
! 78: # ifdef HAVE_RINDEX
! 79: # define strrchr rindex
! 80: # endif
! 81: #endif
! 82:
! 83: #ifdef NO_STDLIB_H
! 84: # ifdef HAVE_MALLOC_H
! 85: # include <malloc.h>
! 86: # else
! 87: void free();
! 88: char *malloc();
! 89: char *realloc();
! 90: # endif /* HAVE_MALLOC_H */
! 91: char *getenv();
! 92: int system();
! 93: double atof();
! 94: int atoi();
! 95: long atol();
! 96: double strtod();
! 97: #else /* !NO_STDLIB_H */
! 98: # include <stdlib.h>
! 99: # ifndef VMS
! 100: # ifndef EXIT_FAILURE
! 101: # define EXIT_FAILURE (1)
! 102: # endif
! 103: # ifndef EXIT_SUCCESS
! 104: # define EXIT_SUCCESS (0)
! 105: # endif
! 106: # else /* VMS */
! 107: # ifdef VAXC /* replacement values suppress some messages */
! 108: # ifdef EXIT_FAILURE
! 109: # undef EXIT_FAILURE
! 110: # endif
! 111: # ifdef EXIT_SUCCESS
! 112: # undef EXIT_SUCCESS
! 113: # endif
! 114: # endif /* VAXC */
! 115: # ifndef EXIT_FAILURE
! 116: # define EXIT_FAILURE 0x10000002
! 117: # endif
! 118: # ifndef EXIT_SUCCESS
! 119: # define EXIT_SUCCESS 1
! 120: # endif
! 121: # endif /* VMS */
! 122: #endif /* !NO_STDLIB_H */
! 123:
! 124: #ifdef HAVE_UNISTD_H
! 125: # include <unistd.h>
! 126: #else
! 127: # ifdef HAVE_LIBC_H /* NeXT uses libc instead of unistd */
! 128: # include <libc.h>
! 129: # endif
! 130: #endif /* HAVE_UNISTD_H */
! 131:
! 132: #ifndef NO_ERRNO_H
! 133: # include <errno.h>
! 134: #endif
! 135: # ifdef EXTERN_ERRNO
! 136: extern int errno;
! 137: #endif
! 138:
! 139: #ifndef NO_SYS_TYPES_H
! 140: # include <sys/types.h>
! 141: #endif
! 142:
! 143: #ifdef HAVE_SYS_STAT_H
! 144: # include <sys/stat.h>
! 145:
! 146: /* This is all taken from GNU fileutils lib/filemode.h */
! 147:
! 148: #if !S_IRUSR
! 149: # if S_IREAD
! 150: # define S_IRUSR S_IREAD
! 151: # else
! 152: # define S_IRUSR 00400
! 153: # endif
! 154: #endif
! 155:
! 156: #if !S_IWUSR
! 157: # if S_IWRITE
! 158: # define S_IWUSR S_IWRITE
! 159: # else
! 160: # define S_IWUSR 00200
! 161: # endif
! 162: #endif
! 163:
! 164: #if !S_IXUSR
! 165: # if S_IEXEC
! 166: # define S_IXUSR S_IEXEC
! 167: # else
! 168: # define S_IXUSR 00100
! 169: # endif
! 170: #endif
! 171:
! 172: #ifdef STAT_MACROS_BROKEN
! 173: # undef S_ISBLK
! 174: # undef S_ISCHR
! 175: # undef S_ISDIR
! 176: # undef S_ISFIFO
! 177: # undef S_ISLNK
! 178: # undef S_ISMPB
! 179: # undef S_ISMPC
! 180: # undef S_ISNWK
! 181: # undef S_ISREG
! 182: # undef S_ISSOCK
! 183: #endif /* STAT_MACROS_BROKEN. */
! 184:
! 185: #if !defined(S_ISBLK) && defined(S_IFBLK)
! 186: # define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
! 187: #endif
! 188: #if !defined(S_ISCHR) && defined(S_IFCHR)
! 189: # define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
! 190: #endif
! 191: #if !defined(S_ISDIR) && defined(S_IFDIR)
! 192: # define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
! 193: #endif
! 194: #if !defined(S_ISREG) && defined(S_IFREG)
! 195: # define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
! 196: #endif
! 197: #if !defined(S_ISFIFO) && defined(S_IFIFO)
! 198: # define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
! 199: #endif
! 200: #if !defined(S_ISLNK) && defined(S_IFLNK)
! 201: # define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
! 202: #endif
! 203: #if !defined(S_ISSOCK) && defined(S_IFSOCK)
! 204: # define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
! 205: #endif
! 206: #if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
! 207: # define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
! 208: # define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
! 209: #endif
! 210: #if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
! 211: # define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
! 212: #endif
! 213:
! 214: #endif /* HAVE_SYS_STAT_H */
! 215:
! 216: #ifndef NO_LIMITS_H
! 217: # include <limits.h>
! 218: #else
! 219: # ifdef HAVE_VALUES_H
! 220: # include <values.h>
! 221: # endif /* HAVE_VALUES_H */
! 222: #endif /* !NO_LIMITS_H */
! 223:
! 224: #ifdef NO_TIME_H
! 225: # ifndef time_t /* should be #defined by config.h, then... */
! 226: # define time_t long
! 227: # endif
! 228: #else
! 229: # include <time.h> /* ctime etc, should also define time_t and struct tm */
! 230: #endif
! 231:
! 232: #if defined(PIPES) && (defined(VMS) || (defined(OSK) && defined(_ANSI_EXT))) || defined(PIPES) && defined(AMIGA_SC_6_1)
! 233: FILE *popen __PROTO((char *, char *));
! 234: int pclose __PROTO((FILE *));
! 235: #endif
! 236:
! 237: #ifndef NO_FLOAT_H
! 238: # include <float.h>
! 239: #endif
! 240:
! 241: #ifndef NO_LOCALE_H
! 242: # include <locale.h>
! 243: #endif
! 244:
! 245: #ifndef NO_MATH_H
! 246: # include <math.h>
! 247: #endif
! 248:
! 249: #ifndef HAVE_STRNICMP
! 250: # ifdef HAVE_STRNCASECMP
! 251: # define strnicmp strncasecmp
! 252: # else
! 253: int strnicmp __PROTO((char *, char *, int));
! 254: # endif
! 255: #endif
! 256:
! 257: /* Argument types for select() */
! 258: #ifdef SELECT_TYPE_ARG1
! 259: # define gp_nfds_t SELECT_TYPE_ARG1
! 260: #else
! 261: # define gp_nfds_t int
! 262: #endif /* 1 */
! 263: #ifdef SELECT_TYPE_ARG234
! 264: # define gp_fd_set_p SELECT_TYPE_ARG234
! 265: #else
! 266: # ifndef __EMX__
! 267: # define gp_fd_set_p (int *)
! 268: # else
! 269: # define gp_fd_set_p (fd_set *)
! 270: # endif
! 271: #endif /* 234 */
! 272: #ifdef SELECT_TYPE_ARG5
! 273: # define gp_timeval_p SELECT_TYPE_ARG5
! 274: #else
! 275: # define gp_timeval_p (struct timeval *)
! 276: #endif /* 5 */
! 277:
! 278: #ifndef GP_GETCWD
! 279: # if defined(HAVE_GETCWD)
! 280: # define GP_GETCWD(path,len) getcwd (path, len)
! 281: # else
! 282: # define GP_GETCWD(path,len) getwd (path)
! 283: # endif
! 284: #endif
! 285:
! 286: #ifndef GP_SLEEP
! 287: # ifdef __ZTC__
! 288: # define GP_SLEEP(delay) usleep ((unsigned long) (delay))
! 289: # else
! 290: # define GP_SLEEP(delay) sleep ((unsigned int) (delay))
! 291: # endif
! 292: #endif
! 293:
! 294: /* Misc. defines */
! 295:
! 296: /* Null character */
! 297: #define NUL ('\0')
! 298:
! 299: /* Definitions for debugging */
! 300: /* #define NDEBUG */
! 301: #include <assert.h>
! 302:
! 303: #ifdef DEBUG
! 304: # define DEBUG_WHERE do { fprintf(stderr,"%s:%d ",__FILE__,__LINE__); } while (0)
! 305: # define FPRINTF(a) do { DEBUG_WHERE; fprintf a; } while (0)
! 306: #else
! 307: # define DEBUG_WHERE /* nought */
! 308: # define FPRINTF(a) /* nought */
! 309: #endif /* DEBUG */
! 310:
! 311: #endif /* STDFN_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>