new version of tcoffee 8.99 not yet compiled for ia32 linux (currently compiled for...
[jabaws.git] / binaries / src / tcoffee / t_coffee_source / pb_util_read_seq_util.c
diff --git a/binaries/src/tcoffee/t_coffee_source/pb_util_read_seq_util.c b/binaries/src/tcoffee/t_coffee_source/pb_util_read_seq_util.c
new file mode 100644 (file)
index 0000000..43a6867
--- /dev/null
@@ -0,0 +1,374 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdarg.h>
+#include <ctype.h>
+
+#include "io_lib_header.h"
+#include "util_lib_header.h"
+#include "define_header.h"
+
+
+/*
+*      Prototypes
+*/
+
+
+void           fatal(char *,...);
+void           error(char *,...);
+void           warning(char *,...);
+char           *rtrim(char *);
+char           *blank_to_(char *);     /* DES change blanks to _ */
+char           *upstr(char *);
+char           *lowstr(char *);
+void           getstr(char *,char *);
+double         getreal(char *,double,double,double);
+int            getint(char *,int,int,int);
+void           do_system(void);
+Boolean                linetype(char *,char *);
+Boolean        blankline(char *);
+void           get_path(char *,char *);
+
+/*
+*      ckalloc()
+*
+*      Tries to allocate "bytes" bytes of memory. Exits program if failed.
+*      Return value:
+*              Generic pointer to the newly allocated memory.
+*/
+
+void *ckalloc(size_t bytes)
+{
+       register void *ret;
+        extern void *vcalloc (size_t nelem, size_t elsize);
+       
+       if( (ret = vcalloc(bytes, sizeof(char))) == NULL)
+/*
+       if( (ret = vmalloc(bytes)) == NULL)
+*/
+               fatal("Out of memory\n");
+       else
+               return ret;     
+       return ret;
+}
+
+/*
+*      ckvrealloc()
+*
+*      Tries to vreallocate "bytes" bytes of memory. Exits program if failed.
+*      Return value:
+*              Generic pointer to the re-allocated memory.
+*/
+
+void *ckvrealloc(void *ptr, size_t bytes)
+{
+       register void *ret;
+        extern void *vrealloc (void *ptr, size_t size);
+       
+       if( (ret = vrealloc(ptr, bytes)) == NULL)
+               fatal("Out of memory\n");
+       else
+               return ret;     
+       return ret;
+}
+
+/*
+*      ckfree()
+*
+*      Tries to free memory allocated by ckalloc.
+*      Return value:
+*              None.
+*/
+
+void ckfree(void *ptr)
+{
+       vfree(ptr);
+}
+
+
+/*
+*      fatal()
+*
+*      Prints error msg to stderr and exits.
+*      Variadic parameter list can be passed.
+*
+*      Return values:
+*              none
+*/
+
+void fatal( char *msg,...)
+{
+       va_list ap;
+       
+       va_start(ap,msg);
+       fprintf(stderr,"\n\nFATAL ERROR: ");
+       vfprintf(stderr,msg,ap);
+       fprintf(stderr,"\n\n");
+       va_end(ap);
+       myexit(EXIT_FAILURE);
+}
+
+/*
+*      error()
+*
+*      Prints error msg to stderr.
+*      Variadic parameter list can be passed.
+*
+*      Return values:
+*              none
+*/
+
+void error( char *msg,...)
+{
+       va_list ap;
+       
+       va_start(ap,msg);
+       fprintf(stderr,"\n\nERROR: ");
+       vfprintf(stderr,msg,ap);
+       fprintf(stderr,"\n\n");
+       va_end(ap);
+}
+
+/*
+*      warning()
+*
+*      Prints warning msg to stderr.
+*      Variadic parameter list can be passed.
+*
+*      Return values:
+*              none
+*/
+
+void warning( char *msg,...)
+{
+       va_list ap;
+       
+       va_start(ap,msg);
+       fprintf(stderr,"\n\nWARNING: ");
+       vfprintf(stderr,msg,ap);
+       fprintf(stderr,"\n\n");
+       va_end(ap);
+}
+
+
+/*
+*      rtrim()
+*
+*      Removes trailing blanks from a string
+*
+*      Return values:
+*              Pointer to the processed string
+*/
+
+char * rtrim(char *str)
+{
+       register int p;
+
+       p = strlen(str) - 1;
+       
+       while ( isspace(str[p]) )
+               p--;
+               
+       str[p + 1] = EOS;
+       
+       return str;
+}
+
+
+/*
+*      blank_to_()
+*
+*      Replace blanks in a string with underscores
+*
+*       Also replaces , ; : ( or ) with _
+*
+*      Return value:
+*              Pointer to the processed string
+*/
+
+char * blank_to_(char *str)
+{
+       int i,p;
+
+       
+       p = strlen(str) - 1;
+       for(i=0;i<=p;i++) 
+         {
+           if( strrchr(";,():",str[i]))str[i]='_';
+           else if (isspace(str[i]));
+         }
+       return str;
+}
+
+
+/*
+*      upstr()
+*
+*      Converts string str to uppercase.
+*      Return values:
+*              Pointer to the converted string.
+*/
+
+char * upstr(char *str)
+{
+       register char *s = str;
+       
+       while( (*s = toupper(*s)) )
+               s++;
+               
+       return str;
+}
+
+/*
+*      lowstr()
+*
+*      Converts string str to lower case.
+*      Return values:
+*              Pointer to the converted string.
+*/
+
+char * lowstr(char *str)
+{
+       register char *s = str;
+       
+       while( (*s = tolower(*s)) )
+               s++;
+               
+       return str;
+}
+
+void getstr(char *instr,char *outstr)
+{      
+       fprintf(stdout,"%s: ",instr);
+       fgets(outstr, 100, stdin);
+}
+
+double getreal(char *instr,double minx,double maxx,double def)
+{
+       int status;
+       double ret;
+       char line[MAXLINE];     
+       
+       while(TRUE) {
+               fprintf(stdout,"%s (%.1lf-%.1lf)   [%.1lf]: ",instr,minx,maxx,def);
+               fgets(line, MAXLINE, stdin);
+               status=sscanf(line,"%lf",&ret);
+               if(status == EOF) return def;
+               if(ret>maxx) {
+                       fprintf(stderr,"ERROR: Max. value=%.1lf\n\n",maxx);
+                       continue;
+               }
+               if(ret<minx) {
+                       fprintf(stderr,"ERROR: Min. value=%.1lf\n\n",minx);
+                       continue;
+               }
+               break;
+       }
+       return ret;
+}
+
+
+int getint(char *instr,int minx,int maxx, int def)
+{
+       int ret,status;
+       char line[MAXLINE];     
+
+       while(TRUE) {
+               fprintf(stdout,"%s (%d..%d)    [%d]: ",
+               instr,(pint)minx,(pint)maxx,(pint)def);
+               fgets(line, MAXLINE, stdin);
+               status=sscanf(line,"%d",&ret);
+               if(status == EOF) return def;
+               if(ret>maxx) {
+                       fprintf(stderr,"ERROR: Max. value=%d\n\n",(pint)maxx);
+                       continue;
+               }
+               if(ret<minx) {
+                       fprintf(stderr,"ERROR: Min. value=%d\n\n",(pint)minx);
+                       continue;
+               }
+               break;
+       }
+       return ret;
+}
+
+void do_system()
+{
+       char line[MAXLINE];
+       
+       getstr("\n\nEnter system command",line);
+       if(*line != EOS)
+               system(line);
+       fprintf(stdout,"\n\n");
+}
+
+
+Boolean linetype(char *line,char *code)
+{
+       return( strncmp(line,code,strlen(code)) == 0 );
+}
+
+Boolean blankline(char *line)
+{
+       int i;
+
+       for(i=0;line[i]!='\n' && line[i]!=EOS;i++) {
+               if( isdigit(line[i]) ||
+                   isspace(line[i]) ||
+                   (line[i] == '*') ||
+                    (line[i] == '.')) 
+                       ;
+               else
+                       return FALSE;
+       }
+       return TRUE;
+}
+
+
+void get_path(char *str,char *path)
+{
+       register int i;
+       
+       strcpy(path,str);
+       for(i=strlen(path)-1;i>-1;--i) {
+               if(str[i]==DIRDELIM) {
+                       i = -1;
+                       break;
+               }
+               if(str[i]=='.') break;
+       }
+       if(i<0)
+               strcat(path,".");
+       else
+               path[i+1]=EOS;
+}
+/******************************COPYRIGHT NOTICE*******************************/
+/*© Centro de Regulacio Genomica */
+/*and */
+/*Cedric Notredame */
+/*Fri Feb 18 08:27:45 CET 2011 - Revision 596. */
+/*All rights reserved.*/
+/*This file is part of T-COFFEE.*/
+/**/
+/*    T-COFFEE is free software; you can redistribute it and/or modify*/
+/*    it under the terms of the GNU General Public License as published by*/
+/*    the Free Software Foundation; either version 2 of the License, or*/
+/*    (at your option) any later version.*/
+/**/
+/*    T-COFFEE is distributed in the hope that it will be useful,*/
+/*    but WITHOUT ANY WARRANTY; without even the implied warranty of*/
+/*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the*/
+/*    GNU General Public License for more details.*/
+/**/
+/*    You should have received a copy of the GNU General Public License*/
+/*    along with Foobar; if not, write to the Free Software*/
+/*    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*/
+/*...............................................                                                                                      |*/
+/*  If you need some more information*/
+/*  cedric.notredame@europe.com*/
+/*...............................................                                                                                                                                     |*/
+/**/
+/**/
+/*     */
+/******************************COPYRIGHT NOTICE*******************************/