nonposix.h revision 104862
1/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 2 Written by Eli Zaretskii (eliz@is.elta.co.il) 3 4This file is part of groff. 5 6groff is free software; you can redistribute it and/or modify it under 7the terms of the GNU General Public License as published by the Free 8Software Foundation; either version 2, or (at your option) any later 9version. 10 11groff is distributed in the hope that it will be useful, but WITHOUT ANY 12WARRANTY; without even the implied warranty of MERCHANTABILITY or 13FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14for more details. 15 16You should have received a copy of the GNU General Public License along 17with groff; see the file COPYING. If not, write to the Free Software 18Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 19 20/* This header file compartmentalize all idiosyncrasies of non-Posix 21 systems, such as MS-DOS, MS-Windows, etc. */ 22 23#if defined _MSC_VER 24# ifndef _WIN32 25# define _WIN32 26# endif 27#endif 28 29#if defined(__MSDOS__) \ 30 || (defined(_WIN32) && !defined(_UWIN) && !defined(__CYGWIN__)) 31 32/* Binary I/O nuisances. Note: "setmode" is right for DJGPP and 33 Borland; Windows compilers might need _setmode or some such. */ 34# include <fcntl.h> 35# include <io.h> 36# ifdef HAVE_UNISTD_H 37# include <unistd.h> 38# endif 39# ifdef _MSC_VER 40# define POPEN_RT "rt" 41# define POPEN_WT "wt" 42# define popen(c,m) _popen(c,m) 43# define pclose(p) _pclose(p) 44# define getpid() (1) 45# define mkdir(p,m) _mkdir(p) 46# define setmode(f,m) _setmode(f,m) 47# define WAIT(s,p,m) _cwait(s,p,m) 48# define creat(p,m) _creat(p,m) 49# endif 50# define SET_BINARY(f) do {if (!isatty(f)) setmode(f,O_BINARY);} while(0) 51# define FOPEN_RB "rb" 52# define FOPEN_WB "wb" 53# define FOPEN_RWB "wb+" 54# ifndef O_BINARY 55# ifdef _O_BINARY 56# define O_BINARY (_O_BINARY) 57# endif 58# endif 59 60/* The system shell. Groff assumes a Unixy shell, but non-Posix 61 systems don't have standard places where it lives, and might not 62 have it installed to begin with. We want to give them some leeway. */ 63# define BSHELL (system_shell_name()) 64# define BSHELL_DASH_C (system_shell_dash_c()) 65# define IS_BSHELL(s) (is_system_shell(s)) 66 67/* The separator for directories in PATH and other environment 68 variables. */ 69# define PATH_SEP ";" 70 71/* Characters that separate directories in a path name. */ 72# define DIR_SEPS "/\\:" 73 74/* How to tell if the argument is an absolute file name. */ 75# define IS_ABSOLUTE(f) \ 76 ((f)[0] == '/' || (f)[0] == '\\' || (f)[0] && (f)[1] == ':') 77 78/* The executable extension. */ 79# define EXE_EXT ".exe" 80 81/* The system null device. */ 82# define NULL_DEV "NUL" 83 84/* Prototypes. */ 85# ifdef __cplusplus 86 extern "C" { 87# endif 88 const char * system_shell_name(void); 89 const char * system_shell_dash_c(void); 90 int is_system_shell(const char *); 91# ifdef __cplusplus 92 } 93# endif 94 95#endif 96 97/* Defaults, for Posix systems. */ 98 99#ifndef FOPEN_RB 100# define FOPEN_RB "r" 101#endif 102#ifndef FOPEN_WB 103# define FOPEN_WB "w" 104#endif 105#ifndef FOPEN_RWB 106# define FOPEN_RWB "w+" 107#endif 108#ifndef POPEN_RT 109# define POPEN_RT "r" 110#endif 111#ifndef POPEN_WT 112# define POPEN_WT "w" 113#endif 114#ifndef O_BINARY 115# define O_BINARY 0 116#endif 117#ifndef BSHELL 118# define BSHELL "/bin/sh" 119#endif 120#ifndef BSHELL_DASH_C 121# define BSHELL_DASH_C "-c" 122#endif 123#ifndef IS_BSHELL 124# define IS_BSHELL(s) ((s) && strcmp(s,BSHELL) == 0) 125#endif 126#ifndef PATH_SEP 127# define PATH_SEP ":" 128#endif 129#ifndef DIR_SEPS 130# define DIR_SEPS "/" 131#endif 132#ifndef IS_ABSOLUTE 133# define IS_ABSOLUTE(f) ((f)[0] == '/') 134#endif 135#ifndef EXE_EXT 136# define EXE_EXT "" 137#endif 138#ifndef NULL_DEV 139# define NULL_DEV "/dev/null" 140#endif 141#ifndef GS_NAME 142# define GS_NAME "gs" 143#endif 144#ifndef WAIT 145# define WAIT(s,p,m) wait(s) 146#endif 147#ifndef _WAIT_CHILD 148# define _WAIT_CHILD 0 149#endif 150