X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fnfa.c;h=fe6362ea7f4841235151b441c2fe239b009a099b;hb=b925ea17d6f146a28d745b0d34e9eec6eafda21f;hp=dca14c6ddafe4599126b9b510fd8c9c69418502a;hpb=548d17fb92d2efaa1ef637b56fcec09a7261e842;p=yaz-moved-to-github.git diff --git a/src/nfa.c b/src/nfa.c index dca14c6..fe6362e 100644 --- a/src/nfa.c +++ b/src/nfa.c @@ -1,7 +1,7 @@ /* Copyright (C) 2006, Index Data ApS * See the file LICENSE for details. * - * $Id: nfa.c,v 1.9 2006-05-10 13:58:46 heikki Exp $ + * $Id: nfa.c,v 1.12 2006-07-14 13:06:38 heikki Exp $ */ /** @@ -113,7 +113,8 @@ yaz_nfa *yaz_nfa_init() { } void yaz_nfa_destroy(yaz_nfa *n) { - nmem_destroy(n->nmem); + if (n && n->nmem) + nmem_destroy(n->nmem); } @@ -443,7 +444,7 @@ yaz_nfa_converter *yaz_nfa_create_string_converter ( yaz_nfa_char *string, size_t length){ yaz_nfa_converter *c; - int i; + size_t i; c=create_null_converter(n); c->type=conv_string; c->string=nmem_malloc(n->nmem, length*sizeof(yaz_nfa_char)); @@ -595,7 +596,7 @@ int yaz_nfa_add_ascii_string_rule( yaz_nfa *n, nmem_malloc(n->nmem, from_len*sizeof(yaz_nfa_char)); yaz_nfa_char *to_buf= nmem_malloc(n->nmem, to_len*sizeof(yaz_nfa_char)); - int i; + size_t i; for (i=0;itype) { + case conv_none: + sprintf(onebuf,"(none)" ); + break; + case conv_string: + sprintf(onebuf,"(string '" ); + strcat(buf,onebuf); + cp=c->string; + len=c->strlen; + while (len--) { + onebuf[0]=*cp++; + onebuf[1]=0; + strcat(buf,onebuf); + } + strcat(buf,"')"); + onebuf[0]=0; + break; + case conv_backref: + sprintf(onebuf,"(backref %d) ",c->backref_no); + break; + case conv_range: + sprintf(onebuf,"(range %d) ",c->char_diff); + break; + } + strcat(buf,onebuf); + c=c->next; + } /* while */ + return buf; +} + /* * Local variables: