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 ); }
/* * 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; } }
/* * 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 ); } }
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; }