Doxygen Source Code Documentation
cs_addto_args.c File Reference
#include "cs.h"#include "string.h"Go to the source code of this file.
| Defines | |
| #define | BLEN 4096 | 
| Functions | |
| void | tokenize_string (char *sin, int *ntok, char ***stok) | 
| void | duplicate_string_list (int nin, char **sin, char ***sout) | 
| void | free_string_list (int nin, char **sin) | 
| void | appendto_string_list (int *nfirst, char ***sfirst, int nsecond, char **ssecond) | 
| void | prepend_string_to_args (char *sin, int argc, char *argv[], int *new_argc, char ***new_argv) | 
| void | append_string_to_args (char *sin, int argc, char *argv[], int *new_argc, char ***new_argv) | 
| void | addto_args (int argc, char *argv[], int *new_argc, char ***new_argv) | 
Define Documentation
| 
 | 
| 
 Definition at line 10 of file cs_addto_args.c. Referenced by addto_args(). | 
Function Documentation
| 
 | ||||||||||||||||||||
| 
 Definition at line 189 of file cs_addto_args.c. References append_string_to_args(), argc, BLEN, free, malloc, and realloc. Referenced by get_options(), initialize_program(), and main(). 
 00190 {
00191    int  ii , nsin , nall ;
00192    char lbuf[4096] ;
00193    char * sin , * cpt ;
00194 
00195    /*-- sanity checks --*/
00196 
00197    if( new_argc == NULL || new_argv == NULL ) return ;
00198 
00199    if( strcmp(argv[argc-1],"-@") != 0 ){ *new_argv = NULL; return; } /* do nothing */
00200 
00201    /* suck the standard input in */
00202 
00203    nall = BLEN ;
00204    sin  = (char *) malloc( sizeof(char) * nall ) ;  /* will hold stdin */
00205    nsin = 0 ;
00206 
00207    do{
00208       cpt = fgets( lbuf , BLEN , stdin ) ; /* read line */
00209       if( cpt == NULL ) break ;            /* end of file */
00210       ii = strlen(lbuf) ;
00211       if( ii+nsin >= nall-4 ){             /* make more sin space */
00212          nall += BLEN ;
00213          sin   = (char *) realloc( sin , sizeof(char) * nall ) ;
00214       }
00215       strcat(sin,lbuf) ; nsin = strlen(sin) ;  /* add to sin array */
00216    } while(1) ;
00217 
00218    if( nsin == 0 ){ *new_argv = NULL; free(sin); return; }  /* nothing was read */
00219 
00220    append_string_to_args( sin , argc-1 , argv , new_argc , new_argv ) ;  /* real work */
00221 
00222    free(sin) ; return ;
00223 }
 | 
| 
 | ||||||||||||||||||||||||
| 
 Definition at line 148 of file cs_addto_args.c. References appendto_string_list(), argc, duplicate_string_list(), free_string_list(), and tokenize_string(). Referenced by addto_args(), EDT_calcmask(), prepend_string_to_args(), and THD_open_3dcalc(). 
 00151 {
00152    int     n_argc , ii , ntok=0    ;
00153    char ** n_argv ,   ** stok=NULL ;
00154    char * cpt , * sss ;
00155 
00156    if( new_argc == NULL || new_argv == NULL ) return ;              /* error */
00157 
00158    if( sin == NULL || sin[0] == '\0' ){ *new_argv = NULL; return; } /* do nothing */
00159 
00160    tokenize_string( sin , &ntok , &stok ) ;
00161    if( stok == NULL || ntok < 1 ){ *new_argv = NULL; return; }      /* do nothing */
00162 
00163    /* copy input args to output */
00164 
00165    if( argc > 0 ){
00166       duplicate_string_list( argc , argv , &n_argv ) ;
00167       n_argc = argc ;
00168    } else {                                                    /* shouldn't happen */
00169       n_argv = NULL ;
00170       n_argc = 0 ;
00171    }
00172 
00173    /* append token list to output */
00174 
00175    appendto_string_list( &n_argc , &n_argv , ntok , stok ) ;
00176    free_string_list( ntok , stok ) ;
00177 
00178    *new_argc = n_argc ;  /* the results! */
00179    *new_argv = n_argv ;
00180    return ;
00181 }
 | 
| 
 | ||||||||||||||||||||
| 
 Definition at line 70 of file cs_addto_args.c. References malloc, and realloc. Referenced by append_string_to_args(), and prepend_string_to_args(). 
 00072 {
00073    int     nf=*nfirst , ii , ll ;
00074    char ** sf ;
00075 
00076    if( nsecond < 1 || ssecond == NULL ) return ;  /* nothing to do */
00077 
00078    if( *sfirst == NULL || nf == 0 )
00079       sf = (char **) malloc( sizeof(char *) * nsecond ) ;
00080    else
00081       sf = (char **) realloc( *sfirst , sizeof(char *)*(nf+nsecond) ) ;
00082 
00083    for( ii=0 ; ii < nsecond ; ii++ ){
00084       ll = strlen(ssecond[ii]) ;
00085       sf[nf+ii] = (char *) malloc( sizeof(char) * (ll+1) ) ;
00086       strcpy( sf[nf+ii] , ssecond[ii] ) ;
00087    }
00088 
00089    *nfirst = nf+nsecond ;
00090    *sfirst = sf         ; return ;
00091 }
 | 
| 
 | ||||||||||||||||
| 
 Definition at line 44 of file cs_addto_args.c. References malloc. Referenced by append_string_to_args(), and prepend_string_to_args(). 
 00045 {
00046    int ii , ll ;
00047    char ** s_out = NULL ;
00048 
00049    if( sout == NULL ) return ;
00050    if( nin < 1 || sin == NULL ){ *sout = NULL ; return ; }
00051 
00052    s_out = (char **) malloc( sizeof(char *) * nin ) ;
00053    for( ii=0 ; ii < nin ; ii++ ){
00054       ll = strlen(sin[ii]) ;
00055       s_out[ii] = (char *) malloc( sizeof(char) * (ll+1) );
00056       strcpy( s_out[ii] , sin[ii] ) ;
00057    }
00058 
00059    *sout = s_out ; return ;
00060 }
 | 
| 
 | ||||||||||||
| 
 Definition at line 62 of file cs_addto_args.c. References free. Referenced by append_string_to_args(), and prepend_string_to_args(). 
 | 
| 
 | ||||||||||||||||||||||||
| 
 Definition at line 99 of file cs_addto_args.c. References append_string_to_args(), appendto_string_list(), argc, duplicate_string_list(), free_string_list(), and tokenize_string(). Referenced by AFNI_parse_args(). 
 00102 {
00103    int     n_argc , ii , ntok=0    ;
00104    char ** n_argv ,   ** stok=NULL ;
00105    char * cpt , * sss ;
00106 
00107    if( new_argc == NULL || new_argv == NULL ) return ;              /* error */
00108 
00109    if( sin == NULL || sin[0] == '\0' ){ *new_argv = NULL; return; } /* do nothing */
00110 
00111    /*-- if no inputs after argv[0], prepend and append are identical --*/
00112 
00113    if( argc < 2 ){
00114       append_string_to_args( sin , argc , argv , new_argc , new_argv ) ;
00115       return ;
00116    }
00117 
00118    /*-- OK, must do it my way --*/
00119 
00120    tokenize_string( sin , &ntok , &stok ) ;
00121    if( stok == NULL || ntok < 1 ){ *new_argv = NULL; return; }      /* do nothing */
00122 
00123    /* copy first input arg to output */
00124 
00125    duplicate_string_list( 1 , argv , &n_argv ) ;
00126    n_argc = 1 ;
00127 
00128    /* append token list to output */
00129 
00130    appendto_string_list( &n_argc , &n_argv , ntok , stok ) ;
00131    free_string_list( ntok , stok ) ;
00132 
00133    /* append rest of input args to output */
00134 
00135    appendto_string_list( &n_argc , &n_argv , argc-1 , argv+1 ) ;
00136 
00137    *new_argc = n_argc ;  /* the results! */
00138    *new_argv = n_argv ;
00139    return ;
00140 }
 | 
| 
 | ||||||||||||||||
| 
 Definition at line 14 of file cs_addto_args.c. References free, malloc, and realloc. Referenced by append_string_to_args(), and prepend_string_to_args(). 
 00015 {
00016    int     n_tok , ii ;
00017    char ** s_tok , *cpt , *sss ;
00018 
00019    if( stok == NULL ) return ;
00020    if( ntok == NULL || sin == NULL || sin[0] == '\0' ){ *stok = NULL; return; }
00021 
00022    n_tok = 0 ;
00023    s_tok = (char **) malloc( sizeof(char *) ) ;
00024 
00025    /* break input into tokens, copy them in the new arg list */
00026 
00027    cpt = strtok( sin , " \t\n\r\f\v" ) ;
00028    if( cpt == NULL ){ free(s_tok); *stok = NULL; return; }     /* do nothing */
00029 
00030    while( cpt != NULL ){
00031       ii  = strlen(cpt) ;
00032       sss = (char *) malloc( sizeof(char) * (ii+1) ) ;
00033       strcpy(sss,cpt) ;
00034       n_tok++ ;
00035       s_tok = (char **) realloc( s_tok , sizeof(char *) * n_tok ) ;
00036       s_tok[n_tok-1] = sss ;
00037 
00038       cpt = strtok( NULL , " \t\n\r\f\v" ) ;
00039    }
00040 
00041    *ntok = n_tok ; *stok = s_tok ; return ;
00042 }
 | 
 
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
 
 
 
 
       
	   
	   
	   
	  