X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=platform%2Fexample%2Ffunctions%2Fstdio%2Fremove.c;fp=platform%2Fexample%2Ffunctions%2Fstdio%2Fremove.c;h=0e66f4c65c6cb3124f51fcbc8105fe793174f405;hb=393020b6e48719d27699dea6b29e53025bbd5123;hp=0000000000000000000000000000000000000000;hpb=f408c1fd633015089d2a0fc6bc31c9f61eeae0a9;p=pdclib diff --git a/platform/example/functions/stdio/remove.c b/platform/example/functions/stdio/remove.c new file mode 100644 index 0000000..0e66f4c --- /dev/null +++ b/platform/example/functions/stdio/remove.c @@ -0,0 +1,64 @@ +/* $Id$ */ + +/* remove( const char * ) + + This file is part of the Public Domain C Library (PDCLib). + Permission is granted to use, modify, and / or redistribute at will. +*/ + +/* This is an example implementation of remove() fit for use with POSIX kernels. +*/ + +#include + +#ifndef REGTEST + +#include "/usr/include/errno.h" + +extern int unlink( const char * pathname ); + +int remove( const char * pathname ) +{ + int rc; + 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.) + */ + case EACCES: + case EFAULT: + case EIO: + case EISDIR: + case ELOOP: + case ENAMETOOLONG: + case ENOENT: + case ENOMEM: + case ENOTDIR: + case EPERM: + case EROFS: + _PDCLIB_errno = _PDCLIB_EIO; + break; + default: + _PDCLIB_errno = _PDCLIB_EUNKNOWN; + break; + } + } + return rc; +} + +#endif + +#ifdef TEST +#include <_PDCLIB_test.h> + +int main( void ) +{ + /* Testing covered by ftell.c (and several others) */ + return TEST_RESULTS; +} + +#endif +