X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=platform%2Fexample%2Ffunctions%2Fstdio%2Fremove.c;h=d3854ea6871e63c8f8c3fcb1e0507743c17201fc;hb=b1fc26afebd4d557ff89a44bc21767a8704c3809;hp=0e66f4c65c6cb3124f51fcbc8105fe793174f405;hpb=393020b6e48719d27699dea6b29e53025bbd5123;p=pdclib diff --git a/platform/example/functions/stdio/remove.c b/platform/example/functions/stdio/remove.c index 0e66f4c..d3854ea 100644 --- a/platform/example/functions/stdio/remove.c +++ b/platform/example/functions/stdio/remove.c @@ -1,5 +1,3 @@ -/* $Id$ */ - /* remove( const char * ) This file is part of the Public Domain C Library (PDCLib). @@ -13,20 +11,32 @@ #ifndef REGTEST +#include + #include "/usr/include/errno.h" +extern struct _PDCLIB_file_t * _PDCLIB_filelist; + extern int unlink( const char * pathname ); int remove( const char * pathname ) { int rc; + struct _PDCLIB_file_t * current = _PDCLIB_filelist; + while ( current != NULL ) + { + if ( ( current->filename != NULL ) && ( strcmp( current->filename, pathname ) == 0 ) ) + { + return EOF; + } + current = current->next; + } if ( ( rc = unlink( pathname ) ) == -1 ) { switch ( errno ) { - /* These are the values possible on a Linux machine. Adapt the - values and their mapping to PDCLib errno values at will. (This - is an example implementation, so we keep it very simple.) + /* See the comments on implementation-defined errno values in + <_PDCLIB_config.h>. */ case EACCES: case EFAULT: @@ -39,10 +49,11 @@ int remove( const char * pathname ) case ENOTDIR: case EPERM: case EROFS: - _PDCLIB_errno = _PDCLIB_EIO; + _PDCLIB_errno = _PDCLIB_ERROR; break; default: - _PDCLIB_errno = _PDCLIB_EUNKNOWN; + /* This should be something like EUNKNOWN. */ + _PDCLIB_errno = _PDCLIB_ERROR; break; } }