Esempio n. 1
0
_WCRTLINK char *getenv( const char *name )
{
    char        **envp;
    char        *p;

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

            while( *p != '\0' ) {   /* simple check is sufficient for p, not s */
                if ( _mbterm( s ) ) {
                    if( *p == '=' )  return( p + 1 );
                    break;
                }
                if ( _mbctoupper( _mbsnextc( p ) ) != _mbctoupper( _mbsnextc( s ) ) )
                    break;
                p = _mbsinc( p );   /* skip over character */
                s = _mbsinc( s );   /* skip over character */
            }
        }
    }
    return( NULL );                 /* not found */
}
Esempio n. 2
0
_WCRTLINK unsigned char _FFAR *_NEARFAR(_mbstok_r,_fmbstok_r)( unsigned char _FFAR *str, const unsigned char _FFAR *delim, unsigned char _FFAR **ptr )
{
    unsigned char _FFAR *   string_start;
    int                     count;
    int                     char_len;

//    if( !__IsDBCS )  return( strtok( str, delim ) );

    if( str == NULL ) {
        str = *ptr;
        if( str == NULL )
            return( NULL );
    }

    /*** Skip characters until we reach one not in 'delim' ***/
    #ifdef __FARFUNC__
        while( !_fmbterm(str) && _fmbschr(delim,_fmbsnextc(str))!=NULL )
            str = _fmbsinc( str );
    #else
        while( !_mbterm(str) && _mbschr(delim,_mbsnextc(str))!=NULL )
            str = _mbsinc( str );
    #endif
    if( _NEARFAR(_mbterm,_fmbterm)(str) )  return( NULL );
    string_start = str;

    /*** Skip characters until we reach one in 'delim' ***/
    #ifdef __FARFUNC__
        while( !_fmbterm(str) && _fmbschr(delim,_fmbsnextc(str))==NULL )
            str = _fmbsinc( str );
    #else
        while( !_mbterm(str) && _mbschr(delim,_mbsnextc(str))==NULL )
            str = _mbsinc( str );
    #endif

    /*** Handle the next token ***/
    if( !_NEARFAR(_mbterm,_fmbterm)(str) ) {
        char_len = _NEARFAR(_mbclen,_fmbclen)( str ); /* get char length */
        for( count=0; count<char_len; count++ )
            str[count] = '\0';                  /* replace delim with NULL */
        str += char_len;                        /* start of next token */
        *ptr = str; /* save next start */
        return( string_start );                 /* return next token start */
    } else {
        *ptr = NULL;/* no more tokens */
        return( string_start );                 /* return same token */
    }
}
Esempio n. 3
0
_WCRTLINK unsigned char _FFAR *_NEARFAR(_mbschr,_fmbschr)( const unsigned char _FFAR *string, unsigned int ch )
{
    char                mbc[MB_LEN_MAX+1];

//    if( !__IsDBCS && !ch&0xFF00 )  return( strchr( string, ch ) );

    /*** Search for the specified character ***/
    _mbvtop( ch, mbc );
    mbc[_mbclen(mbc)] = '\0';
    #ifdef __FARFUNC__
        while( !_fmbterm(string) && _fmbccmp(string,mbc)!=0 )
            string = _fmbsinc( string );        /* skip over character */
    #else
        while( !_mbterm(string) && _mbccmp(string,mbc)!=0 )
            string = _mbsinc( string );         /* skip over character */
    #endif

    /*** Return character address, or NULL if not found ***/
    if( !_NEARFAR(_mbterm,_fmbterm)(string) || ch==0 )
        return( (unsigned char _FFAR*) string );
    else
        return( NULL );
}