This is an automated email from the git hooks/post-receive script. malex-guest pushed a commit to branch master in repository gmap.
commit 4c0bafddf60ffb47c49b673691d34e923d30123c Author: Alexandre Mestiashvili <[email protected]> Date: Fri Feb 26 12:03:19 2016 +0100 Imported Upstream version 2015-12-31.v8 --- ChangeLog | 14 ++++ src/stage3hr.c | 177 ++++++++++++++++++++++++++------------------------ src/substring.c | 20 +++--- util/gmap_build.pl.in | 35 +++++----- 4 files changed, 135 insertions(+), 111 deletions(-) diff --git a/ChangeLog b/ChangeLog index c2032b1..37cee49 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2016-02-18 twu + + * stage3hr.c: Applied revision 184528 from trunk to check for stage2pairs + being NULL + + * gmap_build.pl.in: Applied revision 184521 from trunk to add quotes around + bindir programs + + * stage3hr.c: Applied revision 184518 from trunk to fix creating stage 2 + pairs for circular chromosomes + + * substring.c: Fixed overflow bug from using this->genomiclength instead of + querylength + 2016-02-04 twu * stage2.c: Fixed termination condition for while loop diff --git a/src/stage3hr.c b/src/stage3hr.c index fc15b26..03a1e21 100644 --- a/src/stage3hr.c +++ b/src/stage3hr.c @@ -1,4 +1,4 @@ -static char rcsid[] = "$Id: stage3hr.c 182190 2016-01-12 22:51:09Z twu $"; +static char rcsid[] = "$Id: stage3hr.c 184529 2016-02-18 19:28:56Z twu $"; #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -5341,53 +5341,57 @@ Stage3end_substrings_run_gmap_plus (T this, char *queryuc_ptr, int querylength, } } - knownsplice_limit_high = ((Pair_T) stage2pairs->first)->genomepos + this->chroffset; - stage2pairs = List_reverse(stage2pairs); - knownsplice_limit_low = ((Pair_T) stage2pairs->first)->genomepos + this->chroffset; - - if ((pairarray = Stage3_compute(&pairs,&npairs,&goodness,&cdna_direction,&sensedir, - &matches,&nmatches_posttrim,&max_match_length, - &ambig_end_length_5,&ambig_end_length_3, - &ambig_splicetype_5,&ambig_splicetype_3, - &ambig_prob_5,&ambig_prob_3, - &unknowns,&mismatches,&qopens,&qindels,&topens,&tindels, - &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob, - stage2pairs,all_stage2_starts,all_stage2_ends, + if (stage2pairs == NULL) { + hit = (T) NULL; + } else { + knownsplice_limit_high = ((Pair_T) stage2pairs->first)->genomepos + this->chroffset; + stage2pairs = List_reverse(stage2pairs); + knownsplice_limit_low = ((Pair_T) stage2pairs->first)->genomepos + this->chroffset; + + if ((pairarray = Stage3_compute(&pairs,&npairs,&goodness,&cdna_direction,&sensedir, + &matches,&nmatches_posttrim,&max_match_length, + &ambig_end_length_5,&ambig_end_length_3, + &ambig_splicetype_5,&ambig_splicetype_3, + &ambig_prob_5,&ambig_prob_3, + &unknowns,&mismatches,&qopens,&qindels,&topens,&tindels, + &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob, + stage2pairs,all_stage2_starts,all_stage2_ends, #ifdef END_KNOWNSPLICING_SHORTCUT - cutoff_level,/*queryptr*/watsonp ? queryuc_ptr : queryrc, - watsonp ? query_compress_fwd : query_compress_rev, + cutoff_level,/*queryptr*/watsonp ? queryuc_ptr : queryrc, + watsonp ? query_compress_fwd : query_compress_rev, #endif - /*queryseq_ptr*/queryuc_ptr,queryuc_ptr,querylength,/*skiplength*/0, + /*queryseq_ptr*/queryuc_ptr,queryuc_ptr,querylength,/*skiplength*/0, #ifdef EXTRACT_GENOMICSEG - /*query_subseq_offset*/0, + /*query_subseq_offset*/0, #else - /*query_subseq_offset*/0, + /*query_subseq_offset*/0, #endif - this->chrnum,this->chroffset,this->chrhigh, - knownsplice_limit_low,knownsplice_limit_high,/*plusp*/true,genestrand, - /*jump_late_p*/false,maxpeelback,pairpool,dynprogL,dynprogM,dynprogR, - /*sense_try*/0,/*sense_filter*/0, - oligoindices_minor,diagpool,cellpool)) == NULL) { - hit = (T) NULL; + this->chrnum,this->chroffset,this->chrhigh, + knownsplice_limit_low,knownsplice_limit_high,/*plusp*/true,genestrand, + /*jump_late_p*/false,maxpeelback,pairpool,dynprogL,dynprogM,dynprogR, + /*sense_try*/0,/*sense_filter*/0, + oligoindices_minor,diagpool,cellpool)) == NULL) { + hit = (T) NULL; - } else { - nsegments = Pair_gsnap_nsegments(&nmismatches_whole,&nindels,&nintrons,&nindelbreaks, - pairarray,npairs); - start = subtract_bounded(this->chroffset + Pair_genomepos(&(pairarray[0])), - /*minusterm*/Pair_querypos(&(pairarray[0])),this->chroffset); - end = add_bounded(this->chroffset + Pair_genomepos(&(pairarray[npairs-1])), - /*plusterm*/querylength - 1 - Pair_querypos(&(pairarray[npairs-1])),this->chrhigh); + } else { + nsegments = Pair_gsnap_nsegments(&nmismatches_whole,&nindels,&nintrons,&nindelbreaks, + pairarray,npairs); + start = subtract_bounded(this->chroffset + Pair_genomepos(&(pairarray[0])), + /*minusterm*/Pair_querypos(&(pairarray[0])),this->chroffset); + end = add_bounded(this->chroffset + Pair_genomepos(&(pairarray[npairs-1])), + /*plusterm*/querylength - 1 - Pair_querypos(&(pairarray[npairs-1])),this->chrhigh); - if ((hit = Stage3end_new_gmap(nmismatches_whole,nmatches_posttrim,max_match_length, - ambig_end_length_5,ambig_end_length_3, - ambig_splicetype_5,ambig_splicetype_3, - ambig_prob_5,ambig_prob_3,min_splice_prob, - pairarray,npairs,nsegments,nintrons,nindelbreaks, - /*left*/start,/*genomiclength*/end - start + 1, - /*plusp*/true,genestrand,first_read_p, - /*accession*/NULL,querylength,this->chrnum,this->chroffset,this->chrhigh,this->chrlength, - cdna_direction,sensedir,/*gmap_source*/GMAP_VIA_SUBSTRINGS)) == NULL) { - FREE_OUT(pairarray); + if ((hit = Stage3end_new_gmap(nmismatches_whole,nmatches_posttrim,max_match_length, + ambig_end_length_5,ambig_end_length_3, + ambig_splicetype_5,ambig_splicetype_3, + ambig_prob_5,ambig_prob_3,min_splice_prob, + pairarray,npairs,nsegments,nintrons,nindelbreaks, + /*left*/start,/*genomiclength*/end - start + 1, + /*plusp*/true,genestrand,first_read_p, + /*accession*/NULL,querylength,this->chrnum,this->chroffset,this->chrhigh,this->chrlength, + cdna_direction,sensedir,/*gmap_source*/GMAP_VIA_SUBSTRINGS)) == NULL) { + FREE_OUT(pairarray); + } } } @@ -5558,10 +5562,10 @@ Stage3end_substrings_run_gmap_minus (T this, char *queryuc_ptr, int querylength, querypos = Substring_querystart(substring); seglength = Substring_queryend(substring) - querypos; - /* Don't understand why it isn't this->chrlength - 1, but it + /* Don't understand why it isn't this->chrhigh - 1, but it looks like the minus coordinates for substrings are +1 higher than they should be */ - genomepos = (this->chrlength + 1) - Substring_alignstart_trim_chr(substring); + genomepos = (this->chrhigh + 1) - Substring_alignstart_trim(substring); Genome_get_segment_blocks_right(gsequence_orig,gsequence_alt,/*left*/Substring_alignend_trim(substring), seglength,this->chrhigh,/*revcomp*/true); @@ -5586,54 +5590,57 @@ Stage3end_substrings_run_gmap_minus (T this, char *queryuc_ptr, int querylength, } } - - knownsplice_limit_low = ((Pair_T) stage2pairs->first)->genomepos + this->chroffset; - stage2pairs = List_reverse(stage2pairs); - knownsplice_limit_high = ((Pair_T) stage2pairs->first)->genomepos + this->chroffset; + if (stage2pairs == NULL) { + hit = (T) NULL; + } else { + knownsplice_limit_low = ((Pair_T) stage2pairs->first)->genomepos + this->chroffset; + stage2pairs = List_reverse(stage2pairs); + knownsplice_limit_high = ((Pair_T) stage2pairs->first)->genomepos + this->chroffset; - if ((pairarray = Stage3_compute(&pairs,&npairs,&goodness,&cdna_direction,&sensedir, - &matches,&nmatches_posttrim,&max_match_length, - &ambig_end_length_5,&ambig_end_length_3, - &ambig_splicetype_5,&ambig_splicetype_3, - &ambig_prob_5,&ambig_prob_3, - &unknowns,&mismatches,&qopens,&qindels,&topens,&tindels, - &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob, - stage2pairs,all_stage2_starts,all_stage2_ends, + if ((pairarray = Stage3_compute(&pairs,&npairs,&goodness,&cdna_direction,&sensedir, + &matches,&nmatches_posttrim,&max_match_length, + &ambig_end_length_5,&ambig_end_length_3, + &ambig_splicetype_5,&ambig_splicetype_3, + &ambig_prob_5,&ambig_prob_3, + &unknowns,&mismatches,&qopens,&qindels,&topens,&tindels, + &ncanonical,&nsemicanonical,&nnoncanonical,&min_splice_prob, + stage2pairs,all_stage2_starts,all_stage2_ends, #ifdef END_KNOWNSPLICING_SHORTCUT - cutoff_level,/*queryptr*/watsonp ? queryuc_ptr : queryrc, - watsonp ? query_compress_fwd : query_compress_rev, + cutoff_level,/*queryptr*/watsonp ? queryuc_ptr : queryrc, + watsonp ? query_compress_fwd : query_compress_rev, #endif - /*queryseq_ptr*/queryuc_ptr,queryuc_ptr,querylength,/*skiplength*/0, + /*queryseq_ptr*/queryuc_ptr,queryuc_ptr,querylength,/*skiplength*/0, #ifdef EXTRACT_GENOMICSEG - /*query_subseq_offset*/0, + /*query_subseq_offset*/0, #else - /*query_subseq_offset*/0, -#endif - this->chrnum,this->chroffset,this->chrhigh, - knownsplice_limit_low,knownsplice_limit_high,/*plusp*/false,genestrand, - /*jump_late_p*/true,maxpeelback,pairpool,dynprogL,dynprogM,dynprogR, - /*sense_try*/0,/*sense_filter*/0, - oligoindices_minor,diagpool,cellpool)) == NULL) { - hit = (T) NULL; - - } else { - nsegments = Pair_gsnap_nsegments(&nmismatches_whole,&nindels,&nintrons,&nindelbreaks, - pairarray,npairs); - start = add_bounded(this->chroffset + Pair_genomepos(&(pairarray[0])), - /*plusterm*/Pair_querypos(&(pairarray[0])),this->chrhigh); - end = subtract_bounded(this->chroffset + Pair_genomepos(&(pairarray[npairs-1])), - /*minusterm*/querylength - 1 - Pair_querypos(&(pairarray[npairs-1])),this->chroffset); - if ((hit = Stage3end_new_gmap(nmismatches_whole,nmatches_posttrim,max_match_length, - ambig_end_length_5,ambig_end_length_3, - ambig_splicetype_5,ambig_splicetype_3, - ambig_prob_5,ambig_prob_3,min_splice_prob, - pairarray,npairs,nsegments,nintrons,nindelbreaks, - /*left*/end,/*genomiclength*/start - end + 1, - /*plusp*/false,genestrand,first_read_p, - /*accession*/NULL,querylength,this->chrnum,this->chroffset,this->chrhigh,this->chrlength, - cdna_direction,sensedir,/*gmap_source*/GMAP_VIA_SUBSTRINGS)) == NULL) { - FREE_OUT(pairarray); + /*query_subseq_offset*/0, +#endif + this->chrnum,this->chroffset,this->chrhigh, + knownsplice_limit_low,knownsplice_limit_high,/*plusp*/false,genestrand, + /*jump_late_p*/true,maxpeelback,pairpool,dynprogL,dynprogM,dynprogR, + /*sense_try*/0,/*sense_filter*/0, + oligoindices_minor,diagpool,cellpool)) == NULL) { + hit = (T) NULL; + + } else { + nsegments = Pair_gsnap_nsegments(&nmismatches_whole,&nindels,&nintrons,&nindelbreaks, + pairarray,npairs); + start = add_bounded(this->chroffset + Pair_genomepos(&(pairarray[0])), + /*plusterm*/Pair_querypos(&(pairarray[0])),this->chrhigh); + end = subtract_bounded(this->chroffset + Pair_genomepos(&(pairarray[npairs-1])), + /*minusterm*/querylength - 1 - Pair_querypos(&(pairarray[npairs-1])),this->chroffset); + if ((hit = Stage3end_new_gmap(nmismatches_whole,nmatches_posttrim,max_match_length, + ambig_end_length_5,ambig_end_length_3, + ambig_splicetype_5,ambig_splicetype_3, + ambig_prob_5,ambig_prob_3,min_splice_prob, + pairarray,npairs,nsegments,nintrons,nindelbreaks, + /*left*/end,/*genomiclength*/start - end + 1, + /*plusp*/false,genestrand,first_read_p, + /*accession*/NULL,querylength,this->chrnum,this->chroffset,this->chrhigh,this->chrlength, + cdna_direction,sensedir,/*gmap_source*/GMAP_VIA_SUBSTRINGS)) == NULL) { + FREE_OUT(pairarray); + } } } diff --git a/src/substring.c b/src/substring.c index c82905c..69aa9f1 100644 --- a/src/substring.c +++ b/src/substring.c @@ -1,4 +1,4 @@ -static char rcsid[] = "$Id: substring.c 182190 2016-01-12 22:51:09Z twu $"; +static char rcsid[] = "$Id: substring.c 184487 2016-02-18 03:28:42Z twu $"; #ifdef HAVE_CONFIG_H #include <config.h> #endif @@ -1043,7 +1043,7 @@ Substring_print_ends (T this, int chrnum) { if (this == NULL) { printf("NA "); } else { - printf("#%d:%u..%u ",chrnum,this->alignstart,this->alignend); + printf("#%d:%llu..%llu ",chrnum,(unsigned long long) this->alignstart,(unsigned long long) this->alignend); } return; } @@ -1690,7 +1690,7 @@ embellish_genomic_sam (char *genomic_diff, char *query, int querystart, int quer if (exactp == true) { /* No need to mark mismatches */ } else { - for (k = 0, i = queryend, j = queryend; i < querylength && j < genomiclength; k++, i++, j++) { + for (k = 0, i = queryend, j = queryend; i < querylength /*&& j < genomiclength*/; k++, i++, j++) { if (query[i] == genomic_diff[j]) { result[i] = genomic_diff[j]; assert(result[i] == 'A' || result[i] == 'C' || result[i] == 'G' || result[i] == 'T' || result[i] == 'N'); @@ -2309,14 +2309,15 @@ Substring_display_prep (T this, char *queryuc_ptr, int querylength, this->nmismatches_refdiff = 0; } else { + /* Was this->genomiclength, but fails for large insertions */ #ifdef HAVE_ALLOCA - gbuffer = (char *) ALLOCA((this->genomiclength+1) * sizeof(char)); + gbuffer = (char *) ALLOCA((querylength+1) * sizeof(char)); #else - if (this->genomiclength < MAX_READLENGTH) { + if (querylength < MAX_READLENGTH) { gbuffer = gbuffer_alloc; allocp = false; } else { - gbuffer = (char *) MALLOC((this->genomiclength+1) * sizeof(char)); + gbuffer = (char *) MALLOC((querylength+1) * sizeof(char)); allocp = true; } #endif @@ -2380,14 +2381,15 @@ Substring_display_prep (T this, char *queryuc_ptr, int querylength, this->nmismatches_refdiff = 0; } else { + /* Was this->genomiclength, but fails for large insertions */ #ifdef HAVE_ALLOCA - gbuffer = (char *) ALLOCA((this->genomiclength+1) * sizeof(char)); + gbuffer = (char *) ALLOCA((querylength+1) * sizeof(char)); #else - if (this->genomiclength < MAX_READLENGTH) { + if (querylength < MAX_READLENGTH) { gbuffer = gbuffer_alloc; allocp = false; } else { - gbuffer = (char *) MALLOC((this->genomiclength+1) * sizeof(char)); + gbuffer = (char *) MALLOC((querylength+1) * sizeof(char)); allocp = true; } #endif diff --git a/util/gmap_build.pl.in b/util/gmap_build.pl.in index 830b6a0..3bc13c0 100644 --- a/util/gmap_build.pl.in +++ b/util/gmap_build.pl.in @@ -1,5 +1,5 @@ #! @PERL@ -# $Id: gmap_build.pl.in 173897 2015-09-12 00:11:59Z twu $ +# $Id: gmap_build.pl.in 184522 2016-02-18 17:51:14Z twu $ use warnings; @@ -8,13 +8,14 @@ my $package_version = "@PACKAGE_VERSION@"; use IO::File; use File::Copy; +#use File::Basename; use Getopt::Long; -Getopt::Long::Configure(qw(no_auto_abbrev no_ignore_case_always)); +Getopt::Long::Configure(qw(no_auto_abbrev no_ignore_case_always)); # Default values -my $bindir = "@BINDIR@"; +my $bindir = "@BINDIR@"; # dirname(__FILE__) my $sampling = 3; my $sleeptime = 2; @@ -174,7 +175,7 @@ $genomecompfile = compress_genome($nmessages_flag,$bindir,$dbdir,$dbname,$gmap_p unshuffle_genome($bindir,$dbdir,$dbname,$genomecompfile); -$index_cmd = "$bindir/gmapindex -k $kmersize -q $sampling $nmessages_flag -d $dbname -F \"$dbdir\" -D \"$dbdir\""; +$index_cmd = "\"$bindir/gmapindex\" -k $kmersize -q $sampling $nmessages_flag -d $dbname -F \"$dbdir\" -D \"$dbdir\""; if (count_index_offsets($index_cmd,$genomecompfile) == 1) { $index_cmd .= " -H"; @@ -198,7 +199,7 @@ exit; ##################################################################################### sub check_compiler_assumptions { - if (system("$bindir/gmapindex -9") != 0) { + if (system("\"$bindir/gmapindex\" -9") != 0) { print STDERR "There is a mismatch between this computer system and the one where gmapindex was compiled. Exiting.\n"; exit(9); } @@ -233,12 +234,12 @@ sub create_coords { if (defined($mdfile)) { # MD file cannot specify that a chromosome is circular - $cmd = "$bindir/md_coords -o \"$coordsfile\" $mdfile"; + $cmd = "\"$bindir/md_coords\" -o \"$coordsfile\" $mdfile"; } else { if (defined($fasta_pipe)) { - $cmd = "$fasta_pipe | $bindir/fa_coords $circular_flag $contigs_mapped_flag -o \"$coordsfile\""; + $cmd = "$fasta_pipe | \"$bindir/fa_coords\" $circular_flag $contigs_mapped_flag -o \"$coordsfile\""; } else { - $cmd = "$bindir/fa_coords $gunzip_flag $circular_flag $contigs_mapped_flag -o \"$coordsfile\""; + $cmd = "\"$bindir/fa_coords\" $gunzip_flag $circular_flag $contigs_mapped_flag -o \"$coordsfile\""; } if (defined($chrnamefile)) { $cmd .= " -n $chrnamefile"; @@ -259,9 +260,9 @@ sub make_gmap_process_pipe { my ($fasta_pipe, $gunzip_flag, $bindir, $coordsfile, $fasta_sources) = @_; if (defined($fasta_pipe)) { - return "$fasta_pipe | $bindir/gmap_process -c \"$coordsfile\""; + return "$fasta_pipe | \"$bindir/gmap_process\" -c \"$coordsfile\""; } else { - return "$bindir/gmap_process $gunzip_flag -c \"$coordsfile\" -f \"$fasta_sources\""; + return "\"$bindir/gmap_process\" $gunzip_flag -c \"$coordsfile\" -f \"$fasta_sources\""; } } @@ -270,7 +271,7 @@ sub make_contig { $bindir, $dbdir, $dbname, $gmap_process_pipe) = @_; my ($cmd, $rc); - $cmd = "$gmap_process_pipe | $bindir/gmapindex $nmessages_flag -d $dbname -D \"$dbdir\" -A $chr_order_flag"; + $cmd = "$gmap_process_pipe | \"$bindir/gmapindex\" $nmessages_flag -d $dbname -D \"$dbdir\" -A $chr_order_flag"; print STDERR "Running $cmd\n"; if (($rc = system($cmd)) != 0) { die "$cmd failed with return code $rc"; @@ -284,7 +285,7 @@ sub compress_genome { my $genomecompfile = "$dbdir/$dbname.genomecomp"; my ($cmd, $rc); - $cmd = "$gmap_process_pipe | $bindir/gmapindex $nmessages_flag -d $dbname -F \"$dbdir\" -D \"$dbdir\" -G"; + $cmd = "$gmap_process_pipe | \"$bindir/gmapindex\" $nmessages_flag -d $dbname -F \"$dbdir\" -D \"$dbdir\" -G"; print STDERR "Running $cmd\n"; if (($rc = system($cmd)) != 0) { die "$cmd failed with return code $rc"; @@ -297,7 +298,7 @@ sub unshuffle_genome { my ($bindir, $dbdir, $dbname, $genomecompfile) = @_; my ($cmd, $rc); - $cmd = "cat \"$genomecompfile\" | $bindir/gmapindex -d $dbname -U > \"$dbdir/$dbname.genomebits128\""; + $cmd = "cat \"$genomecompfile\" | \"$bindir/gmapindex\" -d $dbname -U > \"$dbdir/$dbname.genomebits128\""; print STDERR "Running $cmd\n"; if (($rc = system($cmd)) != 0) { die "$cmd failed with return code $rc"; @@ -310,7 +311,7 @@ sub unshuffle_genome { #sub full_ASCII_genome { # make_contig(); # -# $cmd = "$bindir/gmap_process $gunzip_flag -c $dbdir/$dbname.coords $genome_fasta | $bindir/gmapindex $nmessages_flag -d $dbname -F $dbdir -D $dbdir -l -G"; +# $cmd = "\"$bindir/gmap_process\" $gunzip_flag -c $dbdir/$dbname.coords $genome_fasta | \"$bindir/gmapindex\" $nmessages_flag -d $dbname -F $dbdir -D $dbdir -l -G"; # print STDERR "Running $cmd\n"; # if (($rc = system($cmd)) != 0) { # die "$cmd failed with return code $rc"; @@ -370,7 +371,7 @@ sub make_enhanced_suffix_array { my ($cmd, $rc); # Suffix array - $cmd = "$bindir/gmapindex -d $dbname -F \"$dbdir\" -D \"$dbdir\" -S"; + $cmd = "\"$bindir/gmapindex\" -d $dbname -F \"$dbdir\" -D \"$dbdir\" -S"; print STDERR "Running $cmd\n"; if (($rc = system($cmd)) != 0) { die "$cmd failed with return code $rc"; @@ -378,7 +379,7 @@ sub make_enhanced_suffix_array { sleep($sleeptime); # LCP and child arrays - $cmd = "$bindir/gmapindex -d $dbname -F \"$dbdir\" -D \"$dbdir\" -L"; + $cmd = "\"$bindir/gmapindex\" -d $dbname -F \"$dbdir\" -D \"$dbdir\" -L"; print STDERR "Running $cmd\n"; if (($rc = system($cmd)) != 0) { die "$cmd failed with return code $rc"; @@ -386,7 +387,7 @@ sub make_enhanced_suffix_array { sleep($sleeptime); # Compressed suffix array - # $cmd = "$bindir/gmapindex -d $dbname -F \"$dbdir\" -D \"$dbdir\" -C"; + # $cmd = "\"$bindir/gmapindex\" -d $dbname -F \"$dbdir\" -D \"$dbdir\" -C"; # print STDERR "Running $cmd\n"; # if (($rc = system($cmd)) != 0) { # die "$cmd failed with return code $rc"; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/gmap.git _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
