From: Andrew M. <fit...@us...> - 2006-04-14 21:17:17
|
Update of /cvsroot/radmind/radmind In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16776 Modified Files: twhich.c Log Message: twhich -r: recursively twhich all path elements (patch #1470196) Index: twhich.c =================================================================== RCS file: /cvsroot/radmind/radmind/twhich.c,v retrieving revision 1.41 retrieving revision 1.42 diff -C2 -d -r1.41 -r1.42 *** twhich.c 12 Apr 2006 18:37:47 -0000 1.41 --- twhich.c 14 Apr 2006 21:17:13 -0000 1.42 *************** *** 31,103 **** */ ! int ! main( int argc, char **argv ) { - - int c, err = 0, defaultkfile = 1, cmp = 0; - int server = 0, displayall = 0, match = 0; - extern char *version; - char *kfile = _RADMIND_COMMANDFILE; - char *pattern; struct node *node; struct transcript *tran; extern struct transcript *tran_head; extern struct list *special_list; ! ! while (( c = getopt( argc, argv, "aIK:sV" )) != EOF ) { ! switch( c ) { ! case 'a': ! displayall = 1; ! break; ! ! case 'K': ! defaultkfile = 0; ! kfile = optarg; ! break; ! ! case 'I': ! case_sensitive = 0; ! break; ! ! case 's': ! server = 1; ! break; ! ! case 'V': ! printf( "%s\n", version ); ! exit( 0 ); ! ! default: ! err++; ! break; ! } ! } ! ! if (( argc - optind ) != 1 ) { ! err++; ! } ! ! pattern = argv[ argc - 1 ]; ! ! if ( server && defaultkfile ) { ! err++; ! } ! ! if ( err ) { ! fprintf( stderr, "Usage: %s [ -aIV ] [ -K command file ] file\n", ! argv[ 0 ] ); ! fprintf( stderr, "Usage: %s -s -K command [ -aIV ] file\n", ! argv[ 0 ] ); ! exit( 2 ); ! } ! ! /* initialize the transcripts */ ! edit_path = APPLICABLE; ! if ( server ) { ! transcript_init( kfile, K_SERVER ); ! } else { ! transcript_init( kfile, K_CLIENT ); ! } ! outtran = stdout; /* check special list */ --- 31,42 ---- */ ! static int ! twhich( char *pattern, int displayall ) { struct node *node; struct transcript *tran; extern struct transcript *tran_head; extern struct list *special_list; ! int cmp = 0, match = 0; /* check special list */ *************** *** 175,181 **** done: if ( match ) { ! exit( 0 ); } else { ! exit( 1 ); } } --- 114,206 ---- done: if ( match ) { ! return( 0 ); } else { ! return( 1 ); } } + + int + main( int argc, char **argv ) + { + int c, err = 0, defaultkfile = 1, rc = 0; + int server = 0, displayall = 0, recursive = 0; + extern char *version; + char *kfile = _RADMIND_COMMANDFILE; + char *pattern, *p; + + while (( c = getopt( argc, argv, "aIK:rsV" )) != EOF ) { + switch( c ) { + case 'a': + displayall = 1; + break; + + case 'K': + defaultkfile = 0; + kfile = optarg; + break; + + case 'I': + case_sensitive = 0; + break; + + case 'r': /* recursively twhich all path elements */ + recursive = 1; + break; + + case 's': + server = 1; + break; + + case 'V': + printf( "%s\n", version ); + exit( 0 ); + + default: + err++; + break; + } + } + + if (( argc - optind ) != 1 ) { + err++; + } + + pattern = argv[ argc - 1 ]; + + if ( server && defaultkfile ) { + err++; + } + + if ( err ) { + fprintf( stderr, "Usage: %s [ -aIV ] [ -K command file ] file\n", + argv[ 0 ] ); + fprintf( stderr, "Usage: %s -s -K command [ -aIV ] file\n", + argv[ 0 ] ); + exit( 2 ); + } + + /* initialize the transcripts */ + edit_path = APPLICABLE; + if ( server ) { + transcript_init( kfile, K_SERVER ); + } else { + transcript_init( kfile, K_CLIENT ); + } + outtran = stdout; + + if ( recursive ) { + for ( p = pattern; *p == '/'; p++ ) + ; + for ( p = strchr( p, '/' ); p != NULL; p = strchr( p, '/' )) { + *p = '\0'; + if ( twhich( pattern, displayall ) != 0 ) { + printf( "# %s: not found\n", pattern ); + } + + *p++ = '/'; + } + } + rc = twhich( pattern, displayall ); + + exit( rc ); + } |