示例#1
0
_WCRTLINK CHAR_TYPE *__F_NAME(getenv,_wgetenv)( const CHAR_TYPE *name )
{
#ifdef __NETWARE__
    name = name;
#else
    CHAR_TYPE       **envp;
    CHAR_TYPE       *p;

  #ifdef __WIDECHAR__
    if( _RWD_wenviron == NULL ) {
        __create_wide_environment();
    }
  #endif

    /*** Find the environment string ***/
    __ptr_check( name, 0 );
    envp = __F_NAME(_RWD_environ,_RWD_wenviron);
    if( (envp != NULL) && (name != NULL) ) {
        for( ; p = *envp; ++envp ) {
            const CHAR_TYPE     *s = name;

            while( !_TCSTERM( p ) ) {
                if( _TCSTERM( s ) ) {
                    if( _TCSNEXTC( p ) == STRING( '=' ) )
                        return( _TCSINC( p ) );
                    break;
                }
  #if defined(__UNIX__)
                if( _TCSCMP( p, s ) )
  #else
                if( _TCSICMP( p, s ) )
  #endif
                    break;
                p = _TCSINC( p );   /* skip over character */
                s = _TCSINC( s );   /* skip over character */
            }
        }
    }
#endif
    return( NULL );                 /* not found */
}
示例#2
0
int __F_NAME(__putenv,__wputenv)( const CHAR_TYPE *env_string )
{
#ifdef __NETWARE__
    env_string = env_string;
    return( -1 );
#else
    int                 index = -1;
    const CHAR_TYPE     *p;
    int                 delete_var;

    if( env_string == NULL || _TCSTERM( env_string ) )
        return( index );
    // handle NAME=STRING
    for( p = _TCSINC( env_string ); !_TCSTERM( p ); p = _TCSINC( p ) ) {    // (used under NT)
        if( _TCSNEXTC( p ) == STRING( '=' ) ) {
            break;
        }
    }
    if( _TCSTERM( p ) )
        return( index ); /* <name> with no '=' is illegal */
    delete_var = ( _TCSTERM( _TCSINC( p ) ) );
    index = __F_NAME(__findenv,__wfindenv)( env_string, delete_var );
    if( delete_var )
        return( 0 );
    if( index == -1 ) {
        return( index );
    }
    if( index > 0 ) {
        ((const CHAR_TYPE **)__F_NAME(_RWD_environ,_RWD_wenviron))[index - 1] = env_string;
  #ifndef __WIDECHAR__
        _RWD_env_mask[index - 1] = 0;     /* indicate not alloc'd */
  #endif
    }
    return( 0 );
#endif
}