Ejemplo n.º 1
0
OBJECT * read_netstring( FILE * f )
{
    unsigned long len;
    static char * buf = NULL;
    static unsigned long buf_len = 0;

    if ( fscanf( f, " %9lu", &len ) != 1 )
        return NULL;
    if ( fgetc( f ) != (int)'\t' )
        return NULL;

    if ( len > 1024 * 64 )
        return NULL;  /* sanity check */

    if ( len > buf_len )
    {
        unsigned long new_len = buf_len * 2;
        if ( new_len < len )
            new_len = len;
        buf = (char *)BJAM_REALLOC( buf, new_len + 1 );
        if ( buf )
            buf_len = new_len;
    }

    if ( !buf )
        return NULL;

    if ( fread( buf, 1, len, f ) != len )
        return NULL;
    if ( fgetc( f ) != (int)'\n' )
        return NULL;

    buf[ len ] = 0;
    return object_new( buf );
}
Ejemplo n.º 2
0
/*
 * exec_init() - global initialization
 */
void exec_init( void )
{
    int i;
    if ( globs.jobs > cmdtab_size )
    {
        cmdtab = BJAM_REALLOC( cmdtab, globs.jobs * sizeof( *cmdtab ) );
        memset( cmdtab + cmdtab_size, 0, ( globs.jobs - cmdtab_size ) * sizeof( *cmdtab ) );
        wait_fds = BJAM_REALLOC( wait_fds, WAIT_FDS_SIZE * sizeof ( *wait_fds ) );
        for ( i = cmdtab_size; i < globs.jobs; ++i )
        {
            GET_WAIT_FD( i )[ OUT ].fd = -1;
            GET_WAIT_FD( i )[ OUT ].events = POLLIN;
            if ( globs.pipe_action )
            {
                GET_WAIT_FD( i )[ ERR ].fd = -1;
                GET_WAIT_FD( i )[ ERR ].events = POLLIN;
            }
        }
        cmdtab_size = globs.jobs;
    }
}
Ejemplo n.º 3
0
/*
 * exec_init() - global initialization
 */
void exec_init( void )
{
    if ( globs.jobs > cmdtab_size )
    {
        cmdtab = BJAM_REALLOC( cmdtab, globs.jobs * sizeof( *cmdtab ) );
        memset( cmdtab + cmdtab_size, 0, ( globs.jobs - cmdtab_size ) * sizeof( *cmdtab ) );
        cmdtab_size = globs.jobs;
    }
    if ( globs.jobs > MAXIMUM_WAIT_OBJECTS && !process_queue.read_okay )
    {
        process_queue.read_okay = CreateEvent( NULL, FALSE, FALSE, NULL );
        process_queue.write_okay = CreateEvent( NULL, FALSE, TRUE, NULL );
    }
}
Ejemplo n.º 4
0
static void string_reserve_internal( string * self, size_t capacity )
{
    if ( self->value == self->opt )
    {
        self->value = (char *)BJAM_MALLOC_ATOMIC( capacity +
            JAM_STRING_MAGIC_SIZE );
        self->value[ 0 ] = 0;
        strncat( self->value, self->opt, sizeof(self->opt) );
        assert( strlen( self->value ) <= self->capacity && "Regression test" );
    }
    else
    {
        self->value = (char *)BJAM_REALLOC( self->value, capacity +
            JAM_STRING_MAGIC_SIZE );
    }
#ifndef NDEBUG
    memcpy( self->value + capacity, self->magic, JAM_STRING_MAGIC_SIZE );
#endif
    self->capacity = capacity;
}