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 );
! }
}
}
|