Exemple #1
0
char *GetARName( ar_header *header, file_list *list, unsigned long *loc )
/***********************************************************************/
{
    char            *buf;
    char            *name;
    unsigned long   val;
    size_t          len;

    name = NULL;
    if( header->name[0] == '/' ) {
        val = GetARValue( &header->name[1], AR_NAME_LEN - 1 );
        buf = list->strtab + val;
        len = strlen( buf );
    } else if( header->name[0] == '#' && header->name[1] == '1' && header->name[2] == '/') {
        len = GetARValue( &header->name[3], AR_NAME_LEN - 3 );
        buf = CacheRead( list, *loc, len );
        *loc += len;
    } else {
        len = AR_NAME_LEN;
        buf = memchr( header->name, '/', len );
        if( buf != NULL ) {
            len = buf - header->name;
        }
        buf = header->name;
    }
    if( len > 0 ) {
        name = ChkToString( buf, len );
    }
    return( name );
}
Exemple #2
0
static void SetSymAlias( symbol *sym, char *target, size_t targetlen )
/********************************************************************/
{
    SET_SYM_TYPE( sym, SYM_ALIAS );
    sym->p.alias = ChkToString( target, targetlen );
    sym->u.aliaslen = targetlen;
    sym->info |= SYM_DEFINED;           /* an alias can't be undefined */
    sym->info &= ~SYM_WAS_LAZY;
}