26 const unsigned int si,
31 const unsigned int slen
33 if(subpart==NULL || slen<1)
return(subpart);
35 if(roiname==NULL ||
strnlen(roiname, 1)==0)
return((
char*)NULL);
36 if(dlm==NULL ||
strnlen(dlm, 1)==0)
return((
char*)NULL);
43 char *p=strpbrk(sp, dlm);
46 if(si==i) {
strlcat(subpart, sp, slen); free(s);
return(subpart);}
47 free(s);
return((
char*)NULL);
50 if(si==i) {
strlcat(subpart, sp, slen); free(s);
return(subpart);}
54 if(si==i) {
strlcat(subpart, sp, slen); free(s);
return(subpart);}
114 const unsigned int in,
117 const unsigned int count
119 if(roiname==NULL)
return(roiname);
120 if(field==NULL)
return((
char*)NULL);
121 unsigned int slen=strlen(roiname);
122 unsigned int flen=strlen(field);
123 if(count < (slen+flen+2))
return((
char*)NULL);
125 if(flen==0) {
strlcpy(roiname,
"_", count);
return(roiname);}
126 else {
strlcpy(roiname, field, count);
return(roiname);}
129 char *c, subpart[slen+1], tmp[slen+1];
131 strcpy(tmp, roiname); strcpy(roiname,
"");
135 if(i>0)
strlcat(roiname,
"_", count);
136 strlcat(roiname, field, count);
138 if(i>0 || i==in)
strlcat(roiname,
"_", count);
139 strlcat(roiname, subpart, count);
143 if(i>0)
strlcat(roiname,
"_", count);
144 strlcat(roiname, field, count);
187 const char *test_str,
191 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
192 if(verbose>0) printf(
"%s()\n", __func__);
195 if((roiname==NULL || strlen(roiname)<1) && (test_str==NULL || strlen(test_str)<1)) {
199 if(roiname==NULL || strlen(roiname)<1) {
203 if(test_str==NULL || strlen(test_str)<1) {
210 len=strlen(roiname); i=strlen(test_str);
if(i>len) len=i;
211 char subn1[len+1], subn2[len+1];
212 int roisubnr=0, refsubnr=0;
221 if(verbose>3) printf(
"roisubnr := %d\nrefsubnr := %d\n", roisubnr, refsubnr);
222 if(roisubnr==0 && refsubnr==0)
return(1);
223 if(roisubnr==0 || refsubnr==0)
return(0);
224 if(refsubnr>1 && roisubnr!=refsubnr)
return(0);
229 for(i=0; i<refsubnr; i++) {
231 if(!strcmp(subn1,
".")) strcpy(subn1,
"");
233 if(!strcmp(subn2,
".")) strcpy(subn2,
"");
234 if(verbose>3) printf(
" '%s' vs '%s'\n", subn1, subn2);
243 if(
roinameSubpart(test_str,
" _-", 0, subn2, len+1)==NULL)
return(0);
244 if(!strcmp(subn2,
".")) strcpy(subn2,
"");
245 for(i=0; i<roisubnr; i++) {
246 if(
roinameSubpart(roiname,
" _-", i, subn1, len+1)==NULL)
continue;
247 if(!strcmp(subn1,
".")) strcpy(subn1,
"");
char * roinameSubpart(const char *roiname, const char *dlm, const unsigned int si, char *subpart, const unsigned int slen)