Subversion Repositories wimsdev

Rev

Rev 8123 | Rev 12248 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8123 Rev 11124
Line 54... Line 54...
54
    int i1,i2,j,k,t,v;
54
    int i1,i2,j,k,t,v;
55
    unsigned char c,d;
55
    unsigned char c,d;
56
 
56
 
57
    if(items<=0) return -1;
57
    if(items<=0) return -1;
58
    k=sufcomp(0,str);
58
    k=sufcomp(0,str);
-
 
59
    if(k==0) return 0;
59
    if(k==0) return 0; if(k>0) return -1;
60
    if(k>0) return -1;
60
    j=items-1; k=sufcomp(j,str);
61
    j=items-1; k=sufcomp(j,str);
61
    if(k==0) return j;
62
    if(k==0) return j;
62
    if(k>0) for(i1=0,i2=j;i2>i1+1;) {
63
    if(k>0) for(i1=0,i2=j;i2>i1+1;) {
63
      j=i1+(i2-i1)/2; k=sufcomp(j,str);
64
      j=i1+(i2-i1)/2; k=sufcomp(j,str);
64
      if(k==0) return j;
65
      if(k==0) return j;
Line 67... Line 68...
67
    }
68
    }
68
    if(k>0 && j>0) j--;
69
    if(k>0 && j>0) j--;
69
    backcheck:
70
    backcheck:
70
    v=j;for(t=0;t<suf[j].olen && t<sufwordlen
71
    v=j;for(t=0;t<suf[j].olen && t<sufwordlen
71
      && suf[j].original[t]==str[sufwordlen-t-1];t++);
72
      && suf[j].original[t]==str[sufwordlen-t-1];t++);
-
 
73
    if(t<sufminlen) return -1;
72
    if(t<sufminlen) return -1; if(t>=suf[j].olen) return j;
74
    if(t>=suf[j].olen) return j;
73
    for(j--,c=str[sufwordlen-1],d=str[sufwordlen-t];
75
    for(j--,c=str[sufwordlen-1],d=str[sufwordlen-t];
74
      j>=0 && suf[j].original[0]==c && suf[j].olen>t
76
      j>=0 && suf[j].original[0]==c && suf[j].olen>t
75
      && suf[j].original[t-1]==d;j--);
77
      && suf[j].original[t-1]==d;j--);
76
    if(j>=0 && suf[j].original[0]==c &&
78
    if(j>=0 && suf[j].original[0]==c &&
77
       strncmp((char*)suf[j].original,(char*)suf[v].original,suf[j].olen)==0)
79
       strncmp((char*)suf[j].original,(char*)suf[v].original,suf[j].olen)==0)