This is utils.h in view mode; [Download] [Up]
/* * -- utils.h */ #ifndef _utils_ #define _utils_ #include <pthread.h> #include <sys/stat.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <dirent.h> #include <stdio.h> #if __STDC__ # include <stdarg.h> #else # include <varargs.h> /* It's a BSD system */ #endif #ifdef __cplusplus extern "C" { #endif extern int fprintf_r( FILE *stream, const char *format, ... ); extern int printf_r( const char *format, ... ); extern void * malloc_r( size_t bytes ); extern void free_r( void *ptr ); extern struct dirent * readdir_r( DIR *dir ); extern DIR * opendir_r( const char *name ); extern int closedir_r( DIR *dp ); extern void print_system_counters( void ); extern int create_joinable( pthread_t *th, thread_proc_t proc, void *arg ); extern char * strchr_r( const char *s, int c ); extern char * strrchr_r( const char *s, int c ); extern char * strcpy_r( char *dest, const char *src ); extern char * strncpy_r( char *dest, const char *src, size_t n ); extern size_t strlen_r( const char *s ); extern int strcmp_r( const char *s1, const char *s2 ); extern int strncmp_r( const char *s1, const char *s2, size_t p ); extern long strtol_r( const char *nptr, char **endptr, int base ); extern char * strerror_r( int errno ); extern char * strcat_r( char *dest, const char *src ); extern char * strncat_r( char *dest, const char *src, size_t n ); extern int stat_r( const char *file_name, struct stat *buf ); extern int fstat_r( int filedes, struct stat *buf ); extern int lstat_r( const char *file_name, struct stat *buf ); #define THREAD_SUCCESS ((void *)SUCCESS) #define THREAD_FAILURE ((void *)FAILURE) #define CHECK(status,msg) \ { \ if( status != SUCCESS ) \ { \ fprintf_r(stderr, "%s at line %d in %s:", msg, __LINE__, __FILE__ ); \ fprintf_r(stderr, "%s!\n", sys_errlist[status] ); \ pthread_exit( THREAD_FAILURE ); \ } \ } /* * If you are not using a thread-safe standard library, you can compile your * program using the _THREAD_SAFE_ definition. This will redefine a few of the * more common standard library routines to the thread-safe counter parts * defined in this module. */ #ifdef _THREAD_SAFE_ #define fprintf fprintf_r #define printf printf_r #define malloc malloc_r #define free free_r #define readdir readdir_r #define opendir opendir_r #define closedir closedir_r #define strchr strchr_r #define strrcjr strrchr_r #define strcpy strcpy_r #define strncpy strncpy_r #define strlen strlen_r #define strcmp strcmp_r #define strncmp strncmp_r #define strtol strtol_r #define strerror strerror_r #define strcat strcat_r #define strncat strncat_r #define stat stat_r #define fstat fstat_r #define lstat lstat_r #endif /* _THREAD_SAFE_ */ #ifdef __cplusplus } #endif #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.