/***************************************************************************** * (c) Copyright 1992 Wide Area Information Servers, Inc * * of California. All rights reserved. * * * * This notice is intended as a precaution against inadvertent publication * * and does not constitute an admission or acknowledgement that publication * * has occurred or constitute a waiver of confidentiality. * * * * Wide Area Information Server software is the proprietary and * * confidential property of Wide Area Information Servers, Inc. * *****************************************************************************/ /*-------------------------------------------------------------------------- */ #ifndef futil_h #define futil_h #include "cdialect.h" #include "cutil.h" /*-------------------------------------------------------------------------- */ /* the maximum length of any filename in the system */ #define MAX_FILENAME_LEN (255L) /* arguments for fseek, which aren't defined on all systems */ #ifndef SEEK_SET #define SEEK_SET (0L) #define SEEK_CUR (1L) #define SEEK_END (2L) #endif /* ndef SEEK_SET */ /* allow NeXT's to check if the file's mode indicates it's a directory */ #if (defined(NeXT) && !(defined(S_ISDIR))) #define S_ISDIR(f_mode) ((f_mode) & S_IFDIR) #endif /*-------------------------------------------------------------------------- */ /* the following functions are "safe" versions of the standard fileio utilities. They should be called through the macros rather than actually calling the functions themselves */ /* Replaced by locked_{fopen,fclose} */ #if 0 #define safeFOpen(name,mode) doSafeFOpen((name),(mode)) #define safeFClose(file) { doSafeFClose((FILE*)(file)); \ (file) = NULL;} #endif #define safeFSeek(file,offset,whereFrom) \ doSafeFSeek((file),(offset),(whereFrom)) #define safeFTell(file) doSafeFTell((file)) #define safeRename(path1,path2) doSafeRename((path1),(path2)) #if 0 FILE* doSafeFOpen(char* fileName,char* mode); long doSafeFClose(FILE* file); #endif long doSafeFSeek(FILE* file,long offset,long wherefrom); long doSafeFTell(FILE* file); /* these functions read and write arbitrary numbers of bytes in an architecture independent fashion */ long writeBytes(long value,long numBytes,FILE* stream); long readBytes(long numBytes,FILE *stream); long readBytesFromMemory(long numBytes,unsigned char* block); /* these routines help manage unix style path names */ char *truename(char *filename,char *full_path); char *pathnameName(char *pathname); char *pathnameDirectory(char *pathname,char *destination); char *mergePathnames(char *pathname,char *directory); /* set and get characteristics of a file or directory*/ boolean directoryP(char* f); boolean fileP(char* f); boolean probeFile(char *filename); boolean probeFilePossiblyCompressed(char *filename); boolean touchFile(char *filename); long fileLength(FILE* stream); void getFileDates(char* filename,time_t* createDate,time_t* modDate); /* miscellanious routines */ char *currentUserName(void); boolean readStringFromFile(FILE* stream,char* array,long array_length); #if 0 FILE* openTempFile(char* dir,char* root,char* fullName,char* mode); #endif void growFile(FILE* file,long len); /*-------------------------------------------------------------------------- */ #endif /* ndef futil_h */