/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
**
*/
/*
** osd.h
*/
# ifndef OSD_H
# define OSD_H
/* Macro to substitute for ## because VAX C currently doesn't allow it. */
# ifdef __STDC__
/* Use an intermediate paste macro so PASTE macro arguments will get */
/* evaluated. Therefore, PASTE(PASTE(a,b),c) will work. */
/*@notfunction@*/
# define IPASTE(L,R) L ## R
/*@notfunction@*/
# define PASTE(L,R) IPASTE(L,R)
# else
/*@notfunction@*/
# define PASTE(L,R ) L/**/R
# endif
/* Macro to substitute for # because VAX C currently doesn't allow it. */
# ifdef __STDC__
/*@notfunction@*/
# define ISTR(x) # x
/*@notfunction@*/
# define STR(x) ISTR(x)
# else
/*@notfunction@*/
# define ISTR(x) "x"
/*@notfunction@*/
# define STR(x) ISTR(x)
# endif
/*
** MAXPATHLEN defines the longest permissable path length.
**
** POSIX defines PATHMAX in limits.h
*/
# ifdef PATH_MAX
/*@constant size_t MAXPATHLEN; @*/
# define MAXPATHLEN PATH_MAX
# else
/*@constant size_t MAXPATHLEN; @*/
# define MAXPATHLEN 1024
# endif
typedef enum {
OSD_FILEFOUND,
OSD_FILENOTFOUND,
OSD_PATHTOOLONG
} filestatus;
extern /*@only@*/ cstring LSLRootName (cstring p_filespec) /*@*/ ;
extern filestatus
osd_getPath (cstring p_path, cstring p_file, /*@out@*/ cstring *p_returnPath)
/*@modifies *p_returnPath@*/ ;
extern filestatus
osd_getExePath (cstring p_path, cstring p_file, /*@out@*/ cstring *p_returnPath)
/*@modifies *p_returnPath@*/ ;
extern bool osd_fileExists (cstring p_filespec) /*@*/ ;
extern /*@observer@*/ cstring
osd_getEnvironment (cstring p_env, /*@returned@*/ cstring p_def) /*@*/ ;
extern filestatus osd_findOnLarchPath (cstring p_file, /*@out@*/ cstring *p_returnPath)
/*@modifies *p_returnPath@*/ ;
extern void osd_setTempError (void) /*@modifies internalState@*/ ;
extern /*@observer@*/ cstring osd_getHomeDir (void) /*@*/ ;
extern /*@observer@*/ cstring osd_getEnvironmentVariable (cstring) ;
/*@constant int CALL_SUCCESS@*/
# define CALL_SUCCESS 0
extern int osd_system (cstring p_cmd) /*@modifies fileSystem@*/ ;
extern cstring osd_absolutePath (cstring p_cwd, cstring p_filename) /*@*/ ;
extern /*@only@*/ cstring osd_outputPath (cstring p_filename) /*@*/ ;
extern void osd_initMod (void) /*@modifies internalState@*/ ;
extern void osd_destroyMod (void) /*@modifies internalState@*/ ;
extern bool osd_equalCanonicalPrefix (cstring p_dirpath, cstring p_prefixpath) /*@*/ ;
extern int osd_unlink (cstring) /*@modifies fileSystem@*/ ;
extern cstring osd_fixDefine (cstring);
extern bool osd_fileIsReadable (cstring);
extern bool osd_isConnectChar (char) /*@*/ ;
extern /*@observer@*/ cstring osd_getCurrentDirectory (void) /*@*/ ;
# ifdef WIN32
extern int osd_getPid (void) ;
# else
extern int /*pid_t*/ osd_getPid (void) ;
# endif
# ifdef WIN32
/* Win32 doesn't support ISO C99 correctly... */
# define snprintf _snprintf
# endif
/*
** Win32 convention?
*/
# if defined(__IBMC__) && defined(OS2)
# define S_IFMT (unsigned short)0xFFFF
# endif
# if defined (OS2) || defined (MSDOS) || defined (WIN32)
/*@constant observer cstring INCLUDEPATH_VAR@*/
# define INCLUDEPATH_VAR cstring_makeLiteralTemp ("INCLUDE")
# else
/*@constant observer cstring INCLUDEPATH_VAR@*/
# define INCLUDEPATH_VAR cstring_makeLiteralTemp ("CPATH")
# endif
#if defined (VMS)
/*
** VMS is here, but hasn't been tested for many releases. Not sure if this works.
*/
/*
** Connection string inserted between directory and filename to make a
** full path name.
*/
# define CONNECTSTR ":"
# define CONNECTCHAR ':'
/* Directory separator character for search list. */
/*@constant static char PATH_SEPARATOR; @*/
# define PATH_SEPARATOR ':'
# elif defined(MSDOS) || defined(OS2) || defined(WIN32)
/* Connection string inserted between directory and filename to make a */
/* full path name. */
/*@constant observer char *CONNECTSTR@*/
# define CONNECTSTR "\\"
/*@constant char CONNECTCHAR@*/
# define CONNECTCHAR '\\'
# define HASALTCONNECTCHAR
/*@constant char ALTCONNECTCHAR@*/
# define ALTCONNECTCHAR '/'
/* Directory separator character for search list. */
/*@constant char PATH_SEPARATOR; @*/
# define PATH_SEPARATOR ';'
#else
/* Connection string inserted between directory and filename to make a */
/* full path name. */
/*@constant observer char *CONNECTSTR@*/
# define CONNECTSTR "/"
/*@constant char CONNECTCHAR; @*/
# define CONNECTCHAR '/'
/* Directory separator character for search list. */
/*@constant char PATH_SEPARATOR; @*/
# define PATH_SEPARATOR ':'
#endif
# ifdef P_tmpdir
# if defined(OS2) && defined(__IBMC__)
/*@constant observer char *DEFAULT_TMPDIR; @*/
# define DEFAULT_TMPDIR "."
# else
/*@constant observer char *DEFAULT_TMPDIR; @*/
# define DEFAULT_TMPDIR P_tmpdir
# endif
# else
# ifdef WIN32
/*@constant observer char *DEFAULT_TMPDIR; @*/
# define DEFAULT_TMPDIR "\\WINDOWS\\TEMP\\"
# else
/*@constant observer char *DEFAULT_TMPDIR; @*/
# define DEFAULT_TMPDIR "/tmp/"
# endif /* WIN32 */
# endif /* P_tmpdir */
# else
# error "Multiple include"
# endif
\
syntax highlighted by Code2HTML, v. 0.9.1