X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=bcftools%2Fbcf.c;h=87ff6c7435abc65758017bf3f6307df803e0606c;hb=74e6aebb5c07d14cdccc5f8abb40fd4a00b2be86;hp=e3daaeb5786916085d2725e703d01e1d18a6e2dd;hpb=ec294adf095b60c90e57e31f3af1335138c5a22a;p=samtools.git diff --git a/bcftools/bcf.c b/bcftools/bcf.c index e3daaeb..87ff6c7 100644 --- a/bcftools/bcf.c +++ b/bcftools/bcf.c @@ -323,6 +323,31 @@ int bcf_append_info(bcf1_t *b, const char *info, int l) return 0; } +int remove_tag(char *str, char *tag, char delim) +{ + char *tmp = str, *p; + int len_diff = 0, ori_len = strlen(str); + while ( *tmp && (p = strstr(tmp,tag)) ) + { + if ( p>str ) + { + if ( *(p-1)!=delim ) { tmp=p+1; continue; } // shared substring + p--; + } + char *q=p+1; + while ( *q && *q!=delim ) q++; + if ( p==str && *q ) q++; + len_diff += q-p; + if ( ! *q ) { *p = 0; break; } + else + memmove(p,q,ori_len-(int)(q-p)+1); + } + if ( len_diff==ori_len ) + str[0]='.', str[1]=0, len_diff--; + + return len_diff; +} + int bcf_cpy(bcf1_t *r, const bcf1_t *b) { char *t1 = r->str;