From e9a2e9ff4c0a6e94360f0384f5a5acaeed78e71f Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Tue, 14 Nov 2000 01:58:37 +0000 Subject: [PATCH] Changed sbbs_t::fnopen to straight c and moved it from main.cpp to misc.c. --- src/sbbs3/misc.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/sbbs3/sbbs.h | 2 +- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/src/sbbs3/misc.c b/src/sbbs3/misc.c index 05c7a56da9..6da3930055 100644 --- a/src/sbbs3/misc.c +++ b/src/sbbs3/misc.c @@ -58,6 +58,46 @@ int nopen(char *str, int access) mswait(55); return(file); } +/****************************************************************************/ +/* This function performs an nopen, but returns a file stream with a buffer */ +/* allocated. */ +/****************************************************************************/ +FILE * fnopen(int *fd, char *str, int access) +{ + char mode[128]; + int file; + FILE * stream; + + if((file=nopen(str,access))==-1) + return(NULL); + + if(fd!=NULL) + *fd=file; + + if(access&O_APPEND) { + if(access&O_RDONLY) + strcpy(mode,"a+"); + else + strcpy(mode,"a"); + } else if(access&O_CREAT) { + if(access&O_TRUNC) + strcpy(mode,"w"); + else + strcpy(mode,"w+"); + } else { + if(access&O_WRONLY || (access&O_RDWR)==O_RDWR) + strcpy(mode,"r+"); + else + strcpy(mode,"r"); + } + stream=fdopen(file,mode); + if(stream==NULL) { + close(file); + return(NULL); + } + setvbuf(stream,NULL,_IOFBF,FNOPEN_BUF_SIZE); + return(stream); +} /****************************************************************************/ /* Returns the number of characters in 'str' not counting ctrl-ax codes */ diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 1c137eec89..3548d798fb 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -492,7 +492,6 @@ public: /* misc.cpp */ int nopen(char *str, int access); - FILE * fnopen(int *file, char *str,int access); void errormsg(int line, char *file, char action, char *object ,ulong access, char *extinfo=NULL); int mv(char *src, char *dest, char copy); /* fast file move/copy function */ @@ -726,6 +725,7 @@ extern "C" { /* misc.c */ int nopen(char *str, int access); + FILE * fnopen(int *file, char *str, int access); int bstrlen(char *str); void strip_ctrl(char *str); void strip_exascii(char *str); -- GitLab