Mercurial > repos > nick > duplex
view mafft/core/setdirection.c @ 18:e4d75f9efb90 draft
planemo upload commit b'4303231da9e48b2719b4429a29b72421d24310f4\n'-dirty
author | nick |
---|---|
date | Thu, 02 Feb 2017 18:44:31 -0500 |
parents | |
children |
line wrap: on
line source
#include "mltaln.h" #define DEBUG 0 char *directionfile; static int show_R_ = 1; void arguments( int argc, char *argv[] ) { int c; inputfile = NULL; directionfile = NULL; show_R_ = 1; while( --argc > 0 && (*++argv)[0] == '-' ) { while ( (c = *++argv[0]) ) { switch( c ) { case 'd': directionfile = *++argv; fprintf( stderr, "directionfile = %s\n", directionfile ); --argc; goto nextoption; case 'i': inputfile = *++argv; fprintf( stderr, "inputfile = %s\n", inputfile ); --argc; goto nextoption; case 'r': show_R_ = 0; break; default: fprintf( stderr, "illegal option %c\n", c ); argc = 0; break; } } nextoption: ; } if( argc != 0 ) { fprintf( stderr, "options: Check source file !\n" ); exit( 1 ); } } int main( int argc, char *argv[] ) { FILE *infp; FILE *difp; int nlenmin; char **name; char **seq; char *tmpseq; char line[100]; int *nlen; int i; arguments( argc, argv ); if( inputfile ) { infp = fopen( inputfile, "r" ); if( !infp ) { fprintf( stderr, "Cannot open %s\n", inputfile ); exit( 1 ); } } else infp = stdin; if( directionfile ) { difp = fopen( directionfile, "r" ); if( !difp ) { fprintf( stderr, "Cannot open %s\n", directionfile ); exit( 1 ); } } else { fprintf( stderr, "Give directionfile!\n" ); } dorp = NOTSPECIFIED; getnumlen_casepreserve( infp, &nlenmin ); fprintf( stderr, "%d x %d - %d %c\n", njob, nlenmax, nlenmin, dorp ); seq = AllocateCharMtx( njob, nlenmax+1 ); tmpseq = AllocateCharVec( MAX( B, nlenmax )+1 ); name = AllocateCharMtx( njob, B+1 ); nlen = AllocateIntVec( njob ); readData_pointer_casepreserve( infp, name, nlen, seq ); for( i=0; i<njob; i++ ) { fgets( line, 99, difp ); if( line[0] != '_' ) { fprintf( stderr, "Format error!\n" ); exit( 1 ); } if( line[1] == 'R' ) { sreverse( tmpseq, seq[i] ); strcpy( seq[i], tmpseq ); strncpy( tmpseq, name[i]+1, B-3 ); tmpseq[B-3] = 0; if( show_R_ ) { strcpy( name[i]+1, "_R_" ); strcpy( name[i]+4, tmpseq ); } else { strcpy( name[i]+1, tmpseq ); } } else if( line[1] == 'F' ) { ; } else { fprintf( stderr, "Format error!\n" ); exit( 1 ); } } for( i=0; i<njob; i++ ) { fprintf( stdout, ">%s\n", name[i]+1 ); fprintf( stdout, "%s\n", seq[i] ); } free( nlen ); FreeCharMtx( seq ); FreeCharMtx( name ); free( tmpseq ); return( 0 ); }