ROBOhdrs/doCtagsExec [ Functions ]
NAME
doCtagsExec
SYNOPSIS
* static FILE * doCtagsExec(char *fname)
SOURCE
static FILE * doCtagsExec( char *fname ) { int fd[2], pid; FILE *incoming = NULL; char *mybin, *bin = "ctags"; mybin = ( ctagsBin[0] ? ctagsBin : bin ); if ( pipe( fd ) == -1 ) { fprintf( stderr, "pipe failed\n" ); exit( 1 ); } if ( ( pid = fork( ) ) == 0 ) { close( 1 ); dup( fd[1] ); close( fd[0] ); if ( execlp( mybin, mybin, "-x", fname, NULL ) == -1 ) { fprintf( stderr, "execlp failed\n" ); exit( 1 ); } } else if ( pid == -1 ) { fprintf( stderr, "fork failed\n" ); exit( 1 ); } else { close( 0 ); dup( fd[0] ); close( fd[1] ); if ( ( incoming = fdopen( 0, "r" ) ) == NULL ) { fprintf( stderr, "fdopen failed\n" ); exit( 1 ); } } return incoming; }