diff --git a/engine/common/common.h b/engine/common/common.h index edc61b2c6..464086704 100644 --- a/engine/common/common.h +++ b/engine/common/common.h @@ -317,7 +317,7 @@ typedef struct vfsfile_s { #define VFS_READ(vf,buffer,buflen) (vf->ReadBytes(vf,buffer,buflen)) #define VFS_WRITE(vf,buffer,buflen) (vf->WriteBytes(vf,buffer,buflen)) #define VFS_FLUSH(vf) do{if(vf->Flush)vf->Flush(vf);}while(0) -#define VFS_GETS(vf,buffer,buflen) (Sys_Error("VFS_GETS not implemented"),false) //:( +int VFS_GETS(vfsfile_t *vf, char *buffer, int buflen); void FS_Remove(char *fname, int relativeto); vfsfile_t *FS_OpenVFS(char *filename, char *mode, int relativeto); diff --git a/engine/common/fs.c b/engine/common/fs.c index 8200b3005..fac64fb0b 100644 --- a/engine/common/fs.c +++ b/engine/common/fs.c @@ -37,6 +37,36 @@ vfsfile_t *FS_OpenVFSLoc(flocation_t *loc, char *mode); +int VFS_GETS(vfsfile_t *vf, char *buffer, int buflen) +{ + char in; + char *out = buffer; + int len; + len = buflen-1; + if (len == 0) + return NULL; + while (len > 0) + { + if (!VFS_READ(vf, &in, 1)) + { + *out = '\0'; + return buffer; + } + if (in == '\n') + break; + *out++ = in; + len--; + } + *out = '\0'; + + return buffer; +} + + + + + + char gamedirfile[MAX_OSPATH];