5#include "tpcclibConfig.h"
30 const char *region_name,
36 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
37 if(verbose>0) printf(
"%s()\n", __func__);
39 if(d==NULL || d->
tacNr<1) {
44 int ri, len, match_nr=0;
47 if(region_name==NULL) {
48 for(ri=0; ri<d->
tacNr; ri++) d->
c[ri].
sw=1;
54 if(reset!=0)
for(ri=0; ri<d->
tacNr; ri++) d->
c[ri].
sw=0;
57 len=strlen(region_name);
58 char local_name[len+1];
59 if(len>1) len=
strncpyClean(local_name, region_name, len+1);
60 else strcpy(local_name, region_name);
64 for(ri=0; ri<d->
tacNr; ri++) {
65 if(strlen(d->
c[ri].
name)==0) {d->
c[ri].
sw=1; match_nr++;
continue;}
73 for(ri=0; ri<d->
tacNr; ri++) {
76 d->
c[ri].
sw=1; match_nr++;
continue;
87 if(sscanf(local_name,
"%d", &n)!=1 || n<1 || n>d->
tacNr) {
91 d->
c[n-1].
sw=1; match_nr=1;
110 if(d==NULL || d->
tacNr<1)
return(0);
112 for(ri=n=0; ri<d->
tacNr; ri++)
if(d->
c[ri].
sw!=0) n++;
126 if(d==NULL || d->
tacNr<1)
return(-1);
127 for(
int i=0; i<d->
tacNr; i++)
if(d->
c[i].
sw!=0)
return(i);
143 int ri, len, min_len, i;
145 if(d==NULL || d->
tacNr<1)
return -1;
147 for(ri=0, i=-1, min_len=9999; ri<d->
tacNr; ri++) {
148 if(d->
c[ri].
sw==0)
continue;
149 len=strlen(d->
c[ri].
name);
153 if(len<min_len) {min_len=len; i=ri;}
155 if(i<0)
return -2;
else return i;
176 const char *test_str,
180 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
181 if(verbose>0) printf(
"%s()\n", __func__);
184 if((tacname==NULL || strlen(tacname)<1) && (test_str==NULL || strlen(test_str)<1)) {
return 1;}
186 if(tacname==NULL || strlen(tacname)<1) {
190 if(test_str==NULL || strlen(test_str)<1) {
198 int ni, tacsubnr=0, refsubnr=0;
202 printf(
"tacsubnr := %d\nsubnames :=", tacsubnr);
203 for(ni=0; ni<tacsubnr; ni++) printf(
" '%s'", tacsub[ni]);
205 printf(
"refsubnr := %d\nsubnames :=", refsubnr);
206 for(ni=0; ni<refsubnr; ni++) printf(
" '%s'", refsub[ni]);
209 if(tacsubnr==0 && refsubnr==0)
return(1);
210 if(tacsubnr==0 || refsubnr==0)
return(0);
215 if(tacsubnr!=refsubnr)
return(0);
216 for(ni=0; ni<refsubnr; ni++) {
217 if(strlen(refsub[ni])==0 && strlen(tacsub[ni])==0)
continue;
218 if( strlen(refsub[ni])<1 ||
fncasematch(tacsub[ni], refsub[ni])==0 ) {
227 if(
fncasematch(tacsub[0], refsub[0])==0 )
return(0);
else return(1);
230 for(ni=0; ni<tacsubnr; ni++)
if(
fncasematch(tacsub[ni], refsub[0]))
return(1);
int tacNameSplit(const char *rname, char *name1, char *name2, char *name3, unsigned int max_name_len)
int fncasematch(const char *fname, const char *key)
int roinameMatch(const char *roiname, const char *test_str, TPCSTATUS *status)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
int strncpyClean(char *s1, const char *s2, int maxlen)
char * strcasestr(const char *haystack, const char *needle)
char name[MAX_TACNAME_LEN+1]
int verbose
Verbose level, used by statusPrint() etc.
int tacSelectedTACs(TAC *d)
int tacSelectTACs(TAC *d, const char *region_name, int reset, TPCSTATUS *status)
int tacFirstSelected(TAC *d)
int tacSelectBestReference(TAC *d)
#define MAX_TACNAME_LEN
Max length of TAC ID name (not including trailing zero)
@ TPCERROR_NO_DATA
File contains no data.
Header file for library libtpcift.
Header file for library libtpctac.