Added fseterr(3).

This commit is contained in:
Jonas 'Sortie' Termansen 2012-03-12 00:53:14 +01:00
parent 366cc2549a
commit d564574cd0
4 changed files with 14 additions and 0 deletions

View File

@ -19,6 +19,7 @@ typedef struct _FILE
size_t (*write_func)(const void* ptr, size_t size, size_t nmemb, void* user);
int (*seek_func)(void* user, off_t offset, int whence);
off_t (*tell_func)(void* user);
void (*seterr_func)(void* user);
void (*clearerr_func)(void* user);
int (*eof_func)(void* user);
int (*error_func)(void* user);

View File

@ -87,6 +87,12 @@ static off_t fdio_tell(void* user)
return lseek(fdio->fd, 0, SEEK_CUR);
}
static void fdio_seterr(void* user)
{
fdio_t* fdio = (fdio_t*) user;
fdio->flags |= FDIO_ERROR;
}
static void fdio_clearerr(void* user)
{
fdio_t* fdio = (fdio_t*) user;
@ -143,6 +149,7 @@ int fdio_install(FILE* fp, const char* mode, int fd)
fp->write_func = fdio_write;
fp->seek_func = fdio_seek;
fp->tell_func = fdio_tell;
fp->seterr_func = fdio_seterr;
fp->clearerr_func = fdio_clearerr;
fp->eof_func = fdio_eof;
fp->error_func = fdio_error;

View File

@ -104,6 +104,11 @@ int fseek(FILE* fp, long offset, int whence)
return fseeko(fp, offset, whence);
}
void fseterr(FILE* fp)
{
if ( fp->seterr_func ) { fp->seterr_func(fp->user); }
}
void clearerr(FILE* fp)
{
if ( fp->clearerr_func ) { fp->clearerr_func(fp->user); }

View File

@ -159,6 +159,7 @@ extern char* tempnam(const char* dir, const char* pfx);
#define fpending __fpending
#define flushlbf _flushlbf
#define fsetlocking __fsetlocking
void fseterr(FILE* fp);
void fregister(FILE* fp);
void funregister(FILE* fp);
FILE* fnewfile(void);