|
From: Patrick M. <ume...@us...> - 2008-07-14 20:50:53
|
Update of /cvsroot/radmind/radmind In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv15994 Modified Files: lmerge.c Log Message: Added -T option to only merge transcripts, not files. [Patch #2014521] Thanks to Eric Garver from the University of Michigan for the patch. Index: lmerge.c =================================================================== RCS file: /cvsroot/radmind/radmind/lmerge.c,v retrieving revision 1.56 retrieving revision 1.57 diff -C2 -d -r1.56 -r1.57 *** lmerge.c 24 Apr 2008 18:32:02 -0000 1.56 --- lmerge.c 14 Jul 2008 20:50:50 -0000 1.57 *************** *** 179,182 **** --- 179,183 ---- int c, i, j, cmpval, err = 0, tcount = 0, candidate = 0; int force = 0, ofd, fileloc = 0, match = 0; + int merge_trans_only = 0; char *file = NULL; char npath[ 2 * MAXPATHLEN ]; *************** *** 195,199 **** mode_t mask; ! while ( ( c = getopt( argc, argv, "D:fInu:Vv" ) ) != EOF ) { switch( c ) { case 'D': --- 196,200 ---- mode_t mask; ! while ( ( c = getopt( argc, argv, "D:fInTu:Vv" ) ) != EOF ) { switch( c ) { case 'D': *************** *** 224,227 **** --- 225,231 ---- verbose = 1; break; + case 'T': + merge_trans_only = 1; + break; default: err++; *************** *** 232,235 **** --- 236,242 ---- tcount = argc - ( optind + 1 ); /* "+ 1" accounts for dest tran */ + if ( merge_trans_only && force ) { + err++; + } if ( noupload && ( tcount > 2 ) ) { err++; *************** *** 247,251 **** if ( err ) { ! fprintf( stderr, "Usage: %s [-vIV] [ -D path ] [ -u umask ] ", argv[ 0 ] ); fprintf( stderr, "transcript... dest\n" ); --- 254,258 ---- if ( err ) { ! fprintf( stderr, "Usage: %s [-vIVT] [ -D path ] [ -u umask ] ", argv[ 0 ] ); fprintf( stderr, "transcript... dest\n" ); *************** *** 253,257 **** argv[ 0 ] ); fprintf( stderr, "transcript1 transcript2\n" ); ! fprintf( stderr, " %s -n [-vIV] [ -D path ] [ -u umask ] ", argv[ 0 ] ); fprintf( stderr, "transcript1 transcript2 dest\n" ); --- 260,264 ---- argv[ 0 ] ); fprintf( stderr, "transcript1 transcript2\n" ); ! fprintf( stderr, " %s -n [-vIVT] [ -D path ] [ -u umask ] ", argv[ 0 ] ); fprintf( stderr, "transcript1 transcript2 dest\n" ); *************** *** 366,372 **** exit( 2 ); } ! if ( mkdir( npath, (mode_t)0777 ) != 0 ) { ! perror( npath ); ! exit( 2 ); } } --- 373,382 ---- exit( 2 ); } ! /* don't bother creating file/tname if only merging trans */ ! if ( !merge_trans_only ) { ! if ( mkdir( npath, (mode_t)0777 ) != 0 ) { ! perror( npath ); ! exit( 2 ); ! } } } *************** *** 474,480 **** goto skipline; } ! /* output non-files */ ! if ( *trans[ candidate ]->t_argv[ 0 ] != 'f' ! && *trans[ candidate ]->t_argv[ 0 ] != 'a' ) { goto outputline; } --- 484,493 ---- goto skipline; } ! /* output non-files, or if we're only merging transcripts ! * and there is no file linking necessary ! */ ! if (( *trans[ candidate ]->t_argv[ 0 ] != 'f' ! && *trans[ candidate ]->t_argv[ 0 ] != 'a') ! || merge_trans_only ) { goto outputline; } *************** *** 681,687 **** exit( 2 ); } ! if ( rename( opath, npath ) != 0 ) { ! perror( npath ); ! exit( 2 ); } } --- 694,705 ---- exit( 2 ); } ! /* don't try and move file/tname if doing client only merge, ! * it was never created. ! */ ! if ( !merge_trans_only ) { ! if ( rename( opath, npath ) != 0 ) { ! perror( npath ); ! exit( 2 ); ! } } } |