From a3eff0e97175ca038cef970e0165de2b16852a25 Mon Sep 17 00:00:00 2001 From: solar Date: Sun, 5 Feb 2006 15:35:11 +0000 Subject: [PATCH] Initial checkin. --- platform/example/_PDCLIB/getenv.c | 48 +++++++++++++++++++++++++++++++ platform/example/_PDCLIB/system.c | 48 +++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 platform/example/_PDCLIB/getenv.c create mode 100644 platform/example/_PDCLIB/system.c diff --git a/platform/example/_PDCLIB/getenv.c b/platform/example/_PDCLIB/getenv.c new file mode 100644 index 0000000..aa2817a --- /dev/null +++ b/platform/example/_PDCLIB/getenv.c @@ -0,0 +1,48 @@ +/* $Id$ */ + +/* Release $Name$ */ + +/* getenv( 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 getenv() fit for use with POSIX kernels. +*/ + +#include +#include + +#ifndef REGTEST + +extern char * * environ; + +char * getenv( const char * name ) +{ + size_t len = strlen( name ); + size_t index = 0; + while ( environ[ index ] != NULL ) + { + if ( strncmp( environ[ index ], name, len ) == 0 ) + { + return environ[ index ] + len + 1; + } + index++; + } + return NULL; +} + +#endif + +#ifdef TEST +#include <_PDCLIB_test.h> + +int main() +{ + BEGIN_TESTS; + TESTCASE( strcmp( getenv( "SHELL" ), "/bin/sh" ) == 0 ); + return TEST_RESULTS; +} + +#endif diff --git a/platform/example/_PDCLIB/system.c b/platform/example/_PDCLIB/system.c new file mode 100644 index 0000000..41c3671 --- /dev/null +++ b/platform/example/_PDCLIB/system.c @@ -0,0 +1,48 @@ +/* $Id$ */ + +/* Release $Name$ */ + +/* system( 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 system() fit for use with POSIX kernels. +*/ + +#include +#include + +int system( const char * string ) +{ + char * const argv[] = { "sh", "-c", (char * const)string, NULL }; + if ( string != NULL ) + { + int pid = fork(); + if ( pid == 0 ) + { + execve( "/bin/sh", argv, NULL ); + } + else if ( pid > 0 ) + { + while( wait( NULL ) != pid ); + } + } + return -1; +} + +#ifdef TEST +#include <_PDCLIB_test.h> +#include <_PDCLIB_config.h> + +#define SHELLCOMMAND "echo 'SUCCESS testing system()'" + +int main() +{ + BEGIN_TESTS; + TESTCASE( system( SHELLCOMMAND ) ); + return TEST_RESULTS; +} + +#endif -- 2.40.0