/******************************COPYRIGHT NOTICE*******************************/ /* (c) Centro de Regulacio Genomica */ /* and */ /* Cedric Notredame */ /* 12 Aug 2014 - 22:07. */ /*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*******************************/ #include #include #include #include #include #include #include "io_lib_header.h" #include "util_lib_header.h" #include "define_header.h" #include "pb_util_read_seq_util.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(retmaxx) { fprintf(stderr,"ERROR: Max. value=%d\n\n",(pint)maxx); continue; } if(ret-1;--i) { if(str[i]==DIRDELIM) { i = -1; break; } if(str[i]=='.') break; } if(i<0) strcat(path,"."); else path[i+1]=EOS; }