X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=platform%2Fexample%2Ffunctions%2Fstdio%2Fremove.c;h=389df301be224d6945d6b8a250f7e31a82ca7543;hb=ce0e5d8cd76b50f239fb8e95170502b146247b35;hp=0e66f4c65c6cb3124f51fcbc8105fe793174f405;hpb=393020b6e48719d27699dea6b29e53025bbd5123;p=pdclib diff --git a/platform/example/functions/stdio/remove.c b/platform/example/functions/stdio/remove.c index 0e66f4c..389df30 100644 --- a/platform/example/functions/stdio/remove.c +++ b/platform/example/functions/stdio/remove.c @@ -13,20 +13,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 +51,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; } }