Minor code edits. Add curly brackets in various places, add or rewrite various comments, fix indentation, etc.

darcs-hash:20070121150114-ac50b-4fd6965cb2c557178923f8afa944835166e08423.gz
This commit is contained in:
axel 2007-01-22 01:01:14 +10:00
parent a1ec38f53b
commit 66c045c439
5 changed files with 115 additions and 27 deletions

View file

@ -140,15 +140,15 @@ extern wchar_t *program_name;
*/
#define N_(wstr) wstr
/*
Print a stack trace to stderr
*/
void show_stackframe();
/**
Take an array_list_t containing wide strings and converts them to a
single null-terminated wchar_t **. The array is allocated using
halloc, and uses the \c context parameter as context. If \c context
is not noll, all elements of the \c array_list_t are also
registered to \c context using \c halloc_register().
malloc, and needs to be fred's by the caller.
*/
wchar_t **list_to_char_arr( array_list_t *l );

97
env.c
View file

@ -202,7 +202,9 @@ static void clear_hash_entry( void *key, void *data )
{
var_entry_t *entry = (var_entry_t *)data;
if( entry->export )
{
has_changed = 1;
}
free( (void *)key );
free( (void *)data );
@ -257,8 +259,12 @@ static int is_locale( const wchar_t *key )
{
int i;
for( i=0; locale_variable[i]; i++ )
{
if( wcscmp(locale_variable[i], key ) == 0 )
{
return 1;
}
}
return 0;
}
@ -303,10 +309,13 @@ static void handle_locale()
for( i=2; locale_variable[i]; i++ )
{
const wchar_t *val = env_get( locale_variable[i] );
if( val )
{
wsetlocale( cat[i], val );
}
}
}
if( wcscmp( wsetlocale( LC_MESSAGES, (void *)0 ), old ) != 0 )
{
@ -318,8 +327,10 @@ static void handle_locale()
strings should be reloaded. We do both and hope for the
best.
*/
extern int _nl_msg_cat_cntr;
++_nl_msg_cat_cntr;
_nl_msg_cat_cntr++;
dcgettext( "fish", "Changing language to English", LC_MESSAGES );
if( is_interactive )
@ -343,18 +354,25 @@ static void universal_callback( int type,
wchar_t *str=0;
if( is_locale( name ) )
{
handle_locale();
}
switch( type )
{
case SET:
case SET_EXPORT:
{
str=L"SET";
break;
}
case ERASE:
{
str=L"ERASE";
break;
}
}
if( str )
{
@ -404,19 +422,27 @@ static void setup_path()
al_init( &l );
if( path )
{
tokenize_variable_array( path, &l );
}
for( j=0; path_el[j]; j++ )
{
int has_el=0;
for( i=0; i<al_get_count( &l); i++ )
{
wchar_t * el = (wchar_t *)al_get( &l, i );
size_t len = wcslen( el );
while( (len > 0) && (el[len-1]==L'/') )
{
len--;
if( (wcslen( path_el[j] ) == len) && (wcsncmp( el, path_el[j], len)==0) )
}
if( (wcslen( path_el[j] ) == len) &&
(wcsncmp( el, path_el[j], len)==0) )
{
has_el = 1;
}
@ -456,6 +482,7 @@ static void setup_path()
static void env_set_defaults()
{
if( !env_get( L"USER" ) )
{
struct passwd *pw = getpwuid( getuid());
@ -463,6 +490,7 @@ static void env_set_defaults()
env_set( L"USER", unam, ENV_GLOBAL );
free( unam );
}
if( !env_get( L"HOME" ) )
{
wchar_t *unam = env_get( L"USER" );
@ -473,6 +501,7 @@ static void env_set_defaults()
free( dir );
free( unam_narrow );
}
}
void env_init()
@ -541,13 +570,17 @@ void env_init()
key = str2wcs(*p);
if( !key )
{
continue;
}
val = wcschr( key, L'=' );
if( val == 0 )
{
env_set( key, L"", ENV_EXPORT );
}
else
{
*val = L'\0';
@ -557,7 +590,9 @@ void env_init()
while( *pos )
{
if( *pos == L':' )
{
*pos = ARRAY_SEP;
}
pos++;
}
@ -609,7 +644,9 @@ void env_destroy()
b_destroy( &export_buffer );
while( &top->env != global )
{
env_pop();
}
hash_destroy( &env_read_only );
@ -624,8 +661,8 @@ void env_destroy()
}
/**
Find the scope hashtable containing the variable with the specified
key
Search all visible scopes in order for the specified key. Return
the first scope in which it was found.
*/
static env_node_t *env_get_node( const wchar_t *key )
{
@ -643,10 +680,14 @@ static env_node_t *env_get_node( const wchar_t *key )
}
if( env->new_scope )
{
env = global_env;
}
else
{
env = env->next;
}
}
return 0;
}
@ -693,13 +734,15 @@ int env_set( const wchar_t *key,
}
}
/*
Do not actually create a umask variable, on env_get, it will be calculated dynamically
Do not actually create a umask variable, on env_get, it will
be calculated dynamically
*/
return 0;
}
/*
Zero element arrays are internaly not coded as null but as this placeholder string
Zero element arrays are internaly not coded as null but as this
placeholder string
*/
if( !val )
{
@ -716,7 +759,9 @@ int env_set( const wchar_t *key,
env_universal_get_export( key );
}
else
{
export = (var_mode & ENV_EXPORT );
}
env_universal_set( key, val, export );
is_universal = 1;
@ -732,15 +777,15 @@ int env_set( const wchar_t *key,
key );
if( e->export )
{
has_changed_new = 1;
}
}
if( (var_mode & ENV_LOCAL) ||
(var_mode & ENV_GLOBAL) )
{
node = ( var_mode & ENV_GLOBAL )?global_env:top;
}
else
{
@ -770,7 +815,9 @@ int env_set( const wchar_t *key,
env_universal_get_export( key );
}
else
{
export = (var_mode & ENV_EXPORT );
}
env_universal_set( key, val, export );
is_universal = 1;
@ -788,8 +835,9 @@ int env_set( const wchar_t *key,
*/
node = top;
while( node->next && !node->new_scope )
{
node = node->next;
}
}
}
}
@ -806,7 +854,9 @@ int env_set( const wchar_t *key,
Try to reuse previous key string
*/
if( !k )
{
k = wcsdup(key);
}
old_entry = (var_entry_t *)v;
if( old_entry && old_entry->size >= val_len )
@ -827,7 +877,9 @@ int env_set( const wchar_t *key,
sizeof(wchar_t )*(val_len+1));
if( !entry )
{
DIE_MEM();
}
entry->size = val_len;
@ -848,7 +900,9 @@ int env_set( const wchar_t *key,
}
if( free_val )
{
free((void *)val);
}
has_changed = has_changed_old || has_changed_new;
}
@ -895,7 +949,9 @@ static int try_remove( env_node_t *n,
wchar_t *old_key, *old_val;
if( n == 0 )
{
return 0;
}
hash_remove( &n->env,
key,
@ -919,13 +975,19 @@ static int try_remove( env_node_t *n,
}
if( var_mode & ENV_LOCAL )
{
return 0;
}
if( n->new_scope )
{
return try_remove( global_env, key, var_mode );
}
else
{
return try_remove( n->next, key, var_mode );
}
}
int env_remove( const wchar_t *key, int var_mode )
@ -1018,7 +1080,10 @@ wchar_t *env_get( const wchar_t *key )
}
if( i!=0)
{
sb_append( &dyn_var, ARRAY_SEP_STR );
}
sb_append( &dyn_var, next );
}
@ -1060,14 +1125,20 @@ wchar_t *env_get( const wchar_t *key )
return 0;
}
else
{
return res->val;
}
}
if( env->new_scope )
{
env = global_env;
}
else
{
env = env->next;
}
}
if( !proc_had_barrier)
{
proc_had_barrier=1;
@ -1081,8 +1152,10 @@ wchar_t *env_get( const wchar_t *key )
return 0;
}
else
{
return item;
}
}
int env_exist( const wchar_t *key, int mode )
{
@ -1118,14 +1191,20 @@ int env_exist( const wchar_t *key, int mode )
}
if( mode & ENV_LOCAL )
{
break;
}
if( env->new_scope )
{
env = global_env;
}
else
{
env = env->next;
}
}
}
if( ! (mode & ENV_LOCAL) && ! (mode & ENV_GLOBAL) )
{

13
exec.c
View file

@ -272,12 +272,15 @@ static int handle_child_io( io_data_t *io, int exit_on_error )
switch( io->io_mode )
{
case IO_CLOSE:
{
if( close(io->fd) )
{
debug( 0, _(L"Failed to close file descriptor %d"), io->fd );
wperror( L"close" );
}
break;
}
case IO_FILE:
{
if( (tmp=wopen( io->param1.filename,
@ -827,10 +830,14 @@ void exec( job_t *j )
if( block_io )
{
if( j->io )
{
j->io = io_add( io_duplicate( j, block_io), j->io );
}
else
{
j->io=io_duplicate( j, block_io);
}
}
io_data_t *input_redirect;
@ -868,7 +875,7 @@ void exec( job_t *j )
if( !setup_child_process( j, 0 ) )
{
/*
launch_process never returns
launch_process _never_ returns
*/
launch_process( j->first_process );
}
@ -1195,7 +1202,9 @@ void exec( job_t *j )
}
if( exec_error )
{
break;
}
switch( p->type )
{
@ -1360,7 +1369,6 @@ void exec( job_t *j )
proc_set_last_status( job_get_flag( j, JOB_NEGATE )?(!p->status):p->status );
}
break;
}
/*
@ -1376,7 +1384,6 @@ void exec( job_t *j )
print correct output to stdout and stderr, and
then exit.
*/
p->pid = getpid();
setup_child_process( j, p );
do_builtin_io( sb_out->used ? (wchar_t *)sb_out->buff : 0, sb_err->used ? (wchar_t *)sb_err->buff : 0 );

View file

@ -568,6 +568,7 @@ void signal_set_handlers()
exit(1);
}
#ifdef SIGWINCH
act.sa_flags = SA_SIGINFO;
act.sa_sigaction= &handle_winch;
if( sigaction( SIGWINCH, &act, 0 ) )
@ -575,6 +576,7 @@ void signal_set_handlers()
wperror( L"sigaction" );
exit(1);
}
#endif
act.sa_flags = SA_SIGINFO;
act.sa_sigaction= &handle_hup;