Mercurial > repos > dawe > srf2fastq
diff srf2fastq/io_lib-1.12.2/io_lib/find.c @ 0:d901c9f41a6a default tip
Migrated tool version 1.0.1 from old tool shed archive to new tool shed repository
author | dawe |
---|---|
date | Tue, 07 Jun 2011 17:48:05 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srf2fastq/io_lib-1.12.2/io_lib/find.c Tue Jun 07 17:48:05 2011 -0400 @@ -0,0 +1,103 @@ +/* + * Copyright (c) Medical Research Council 1994. All rights reserved. + * + * Permission to use, copy, modify and distribute this software and its + * documentation for any purpose is hereby granted without fee, provided that + * this copyright and notice appears in all copies. + * + * This file was written by James Bonfield, Simon Dear, Rodger Staden, + * as part of the Staden Package at the MRC Laboratory of Molecular + * Biology, Hills Road, Cambridge, CB2 2QH, United Kingdom. + * + * MRC disclaims all warranties with regard to this software. + */ + +#include "io_lib/misc.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +/* 19/3/99 johnt - added Corba support */ +#ifdef USE_CORBA +#include "stcorba.h" +#endif + +#ifdef USE_BIOLIMS +#include "spBiolims.h" +#endif + +char *myfind(char *file, char* searchpath, int (*found) (char *) ) +{ + static char wholePath[1024]; + char *path; + char *f; + + f = NULL; + if (found(file)) { + strcpy(wholePath,file); + f = wholePath; + } else if (searchpath != NULL) { + char *paths; + char *next; + + paths = (char *) malloc(strlen(searchpath)+1); + strcpy(paths,searchpath); + + path = paths; + next = strchr(path,':'); + while( next && (*(next+1) == ':' )){ + /* 26/03/99 johnt - allow : to be entered into path by using :: */ + memmove(next,next+1,strlen(next+1)+1); /* shuffle up data [including \0]*/ + next = strchr(next+1,':'); + } + if(next) + *next = '\0'; + + while (path!= NULL) { + +#ifdef USE_CORBA + /* 19/03/99 johnt - if it is a corba path - look there */ + if( !strncmp( CORBATAG,path,strlen(CORBATAG))){ + if(corba_found(wholePath,path+strlen(CORBATAG),file)){ + f = wholePath; + break; + } + } + else +#endif +#ifdef USE_BIOLIMS + if( !strncmp( BIOLIMS_TAG,path,strlen(BIOLIMS_TAG))){ + if(biolims_found(wholePath,path+strlen(BIOLIMS_TAG),file)){ + f = wholePath; + break; + } + } + else +#endif + { + (void) strcpy(wholePath,path); + (void) strcat(wholePath,"/"); + (void) strcat(wholePath,file); + if (found(wholePath)) { + f = wholePath; + break; + } + } + path = next; + if( path ){ + path++; + next = strchr(path,':'); + while( next && (*(next+1) == ':' )){ + /* 26/03/99 johnt - allow : to be entered into path by using :: */ + memmove(next,next+1,strlen(next+1)+1); /* shuffle up data */ + next = strchr(next+1,':'); + } + if(next) + *next='\0'; + } + } + free(paths); + } + + return f; +}