[BACK]Return to spellprog.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / spell

Diff for /src/usr.bin/spell/spellprog.c between version 1.2 and 1.3

version 1.2, 2002/03/02 16:20:33 version 1.3, 2002/06/03 17:53:32
Line 396 
Line 396 
                 for (sp = cp; --sp >= word && !vowel(*sp);)                  for (sp = cp; --sp >= word && !vowel(*sp);)
                         ;       /* nothing */                          ;       /* nothing */
                 if (sp < word)                  if (sp < word)
                         return(0);                          return (0);
                 if ((*t->p1)(ep-t->n1, t->d1, t->a1, lev+1))                  if ((*t->p1)(ep-t->n1, t->d1, t->a1, lev+1))
                         return(1);                          return (1);
                 if (t->p2 != NULL) {                  if (t->p2 != NULL) {
                         deriv[lev] = deriv[lev+1] = '\0';                          deriv[lev] = deriv[lev+1] = '\0';
                         return((*t->p2)(ep-t->n2, t->d2, t->a2, lev));                          return ((*t->p2)(ep-t->n2, t->d2, t->a2, lev));
                 }                  }
                 return(0);                  return (0);
 next:           ;  next:           ;
         }          }
         return(0);          return (0);
 }  }
   
 int  int
 nop(void)  nop(void)
 {  {
   
         return(0);          return (0);
 }  }
   
 int  int
 strip(char *ep, char *d, char *a, int lev)  strip(char *ep, char *d, char *a, int lev)
 {  {
   
         return(trypref(ep, a, lev) || suffix(ep, lev));          return (trypref(ep, a, lev) || suffix(ep, lev));
 }  }
   
 int  int
Line 428 
Line 428 
 {  {
   
         if (lev > DLEV + 1)          if (lev > DLEV + 1)
                 return(0);                  return (0);
         if (*ep == 's' && ep[-1] == 's')          if (*ep == 's' && ep[-1] == 's')
                 return(0);                  return (0);
         return(strip(ep, d, a, lev));          return (strip(ep, d, a, lev));
 }  }
   
 int  int
Line 439 
Line 439 
 {  {
   
         if (!isupper(*word))    /* must be proper name */          if (!isupper(*word))    /* must be proper name */
                 return(0);                  return (0);
         return(trypref(ep,a,lev));          return (trypref(ep,a,lev));
 }  }
   
 int  int
Line 448 
Line 448 
 {  {
   
         *ep++ = 'e';          *ep++ = 'e';
         return(strip(ep ,"", d, lev));          return (strip(ep ,"", d, lev));
 }  }
   
 int  int
Line 468 
Line 468 
 {  {
   
         if (ep[-1] == 'i')          if (ep[-1] == 'i')
                 return(i_to_y(ep, d, a, lev));                  return (i_to_y(ep, d, a, lev));
         else          else
                 return(strip(ep, d, a, lev));                  return (strip(ep, d, a, lev));
 }  }
   
 int  int
Line 478 
Line 478 
 {  {
   
         if (skipv(skipv(ep-1)) < word)          if (skipv(skipv(ep-1)) < word)
                 return(0);                  return (0);
         ep[-1] = 't';          ep[-1] = 't';
         return(strip(ep, d, a, lev));          return (strip(ep, d, a, lev));
 }  }
   
 int  int
Line 488 
Line 488 
 {  {
   
         *ep++ = 'l';          *ep++ = 'l';
         return(y_to_e(ep, d, a, lev));          return (y_to_e(ep, d, a, lev));
 }  }
   
 int  int
Line 499 
Line 499 
                 ep[-1] = 'y';                  ep[-1] = 'y';
                 a = d;                  a = d;
         }          }
         return(strip(ep, "", a, lev));          return (strip(ep, "", a, lev));
 }  }
   
 int  int
Line 507 
Line 507 
 {  {
   
         if (lev > DLEV)          if (lev > DLEV)
                 return(0);                  return (0);
   
         switch (ep[-1]) {          switch (ep[-1]) {
         default:          default:
                 return(0);                  return (0);
         case 'i':          case 'i':
                 return(i_to_y(ep, d, a, lev));                  return (i_to_y(ep, d, a, lev));
         case 's':          case 's':
         case 'h':          case 'h':
         case 'z':          case 'z':
         case 'x':          case 'x':
                 return(strip(ep, d, a, lev));                  return (strip(ep, d, a, lev));
         }          }
 }  }
   
Line 528 
Line 528 
   
         ep[-2] = 'e';          ep[-2] = 'e';
         ep[-1] = 'r';          ep[-1] = 'r';
         return(strip(ep, d, a, lev));          return (strip(ep, d, a, lev));
 }  }
   
 int  int
Line 538 
Line 538 
         switch (ep[-2]) {          switch (ep[-2]) {
         case 'c':          case 'c':
         case 'r':          case 'r':
                 return(trypref(ep, a, lev));                  return (trypref(ep, a, lev));
         case 'a':          case 'a':
                 return(y_to_e(ep, d, a, lev));                  return (y_to_e(ep, d, a, lev));
         }          }
         return(0);          return (0);
 }  }
   
 /*  /*
Line 562 
Line 562 
                 case 'w':                  case 'w':
                         break;                          break;
                 default:                  default:
                         return(y_to_e(ep, d, a, lev));                          return (y_to_e(ep, d, a, lev));
                 }                  }
                 break;                  break;
         case 's':          case 's':
Line 571 
Line 571 
         case 'c':          case 'c':
         case 'g':          case 'g':
                 if (*ep == 'a')                  if (*ep == 'a')
                         return(0);                          return (0);
         case 'v':          case 'v':
         case 'z':          case 'z':
                 if (vowel(ep[-2]))                  if (vowel(ep[-2]))
                         break;                          break;
         case 'u':          case 'u':
                 if (y_to_e(ep, d, a, lev))                  if (y_to_e(ep, d, a, lev))
                         return(1);                          return (1);
                 if (!(ep[-2] == 'n' && ep[-1] == 'g'))                  if (!(ep[-2] == 'n' && ep[-1] == 'g'))
                         return(0);                          return (0);
         }          }
         return(VCe(ep, d, a, lev));          return (VCe(ep, d, a, lev));
 }  }
   
 /*  /*
Line 595 
Line 595 
   
         c = ep[-1];          c = ep[-1];
         if (c == 'e')          if (c == 'e')
                 return(0);                  return (0);
         if (!vowel(c) && vowel(ep[-2])) {          if (!vowel(c) && vowel(ep[-2])) {
                 c = *ep;                  c = *ep;
                 *ep++ = 'e';                  *ep++ = 'e';
                 if (trypref(ep, d, lev) || suffix(ep, lev))                  if (trypref(ep, d, lev) || suffix(ep, lev))
                         return(1);                          return (1);
                 ep--;                  ep--;
                 *ep = c;                  *ep = c;
         }          }
         return(strip(ep, d, a, lev));          return (strip(ep, d, a, lev));
 }  }
   
 char *  char *
Line 622 
Line 622 
                 for (cp = bp; cp < ep; cp++) {                  for (cp = bp; cp < ep; cp++) {
                         if (vowel(*cp)) {                          if (vowel(*cp)) {
                                 *wp = bp;                                  *wp = bp;
                                 return(*sp);                                  return (*sp);
                         }                          }
                 }                  }
 next:           ;  next:           ;
         }          }
         return(0);          return (0);
 }  }
   
 /*  /*
Line 645 
Line 645 
   
         deriv[lev] = a;          deriv[lev] = a;
         if (tryword(word, ep, lev))          if (tryword(word, ep, lev))
                 return(1);                  return (1);
         bp = word;          bp = word;
         pp = space;          pp = space;
         deriv[lev+1] = pp;          deriv[lev+1] = pp;
Line 658 
Line 658 
                         break;                          break;
                 }                  }
                 if (pp - space >= sizeof(space))                  if (pp - space >= sizeof(space))
                         return(0);                          return (0);
         }          }
         deriv[lev+1] = deriv[lev+2] = '\0';          deriv[lev+1] = deriv[lev+2] = '\0';
         return(val);          return (val);
 }  }
   
 int  int
Line 671 
Line 671 
         char duple[3];          char duple[3];
   
         if (ep-bp <= 1)          if (ep-bp <= 1)
                 return(0);                  return (0);
         if (vowel(*ep) && monosyl(bp, ep))          if (vowel(*ep) && monosyl(bp, ep))
                 return(0);                  return (0);
   
         i = dict(bp, ep);          i = dict(bp, ep);
         if (i == 0 && vowel(*ep) && ep[-1] == ep[-2] && monosyl(bp, ep-1)) {          if (i == 0 && vowel(*ep) && ep[-1] == ep[-2] && monosyl(bp, ep-1)) {
Line 685 
Line 685 
                 i = dict(bp, ep);                  i = dict(bp, ep);
         }          }
         if (vflag == 0 || i == 0)          if (vflag == 0 || i == 0)
                 return(i);                  return (i);
   
         /* Also tack on possible derivations. (XXX - warn on truncation?) */          /* Also tack on possible derivations. (XXX - warn on truncation?) */
         for (j = lev; j > 0; j--) {          for (j = lev; j > 0; j--) {
                 if (deriv[j])                  if (deriv[j])
                         strlcat(affix, deriv[j], sizeof(affix));                          strlcat(affix, deriv[j], sizeof(affix));
         }          }
         return(i);          return (i);
 }  }
   
 int  int
Line 700 
Line 700 
 {  {
   
         if (ep < bp + 2)          if (ep < bp + 2)
                 return(0);                  return (0);
         if (vowel(*--ep) || !vowel(*--ep) || ep[1] == 'x' || ep[1] == 'w')          if (vowel(*--ep) || !vowel(*--ep) || ep[1] == 'x' || ep[1] == 'w')
                 return(0);                  return (0);
         while (--ep >= bp)          while (--ep >= bp)
                 if (vowel(*ep))                  if (vowel(*ep))
                         return(0);                          return (0);
         return(1);          return (1);
 }  }
   
 char *  char *
Line 717 
Line 717 
                 s--;                  s--;
         while (s >= word && !vowel(*s))          while (s >= word && !vowel(*s))
                 s--;                  s--;
         return(s);          return (s);
 }  }
   
 int  int
Line 731 
Line 731 
         case 'o':          case 'o':
         case 'u':          case 'u':
         case 'y':          case 'y':
                 return(1);                  return (1);
         }          }
         return(0);          return (0);
 }  }
   
 /*  /*
Line 777 
Line 777 
   
         if ((d = strdup(s)) == NULL)          if ((d = strdup(s)) == NULL)
                 err(1, "strdup");                  err(1, "strdup");
         return(d);          return (d);
 }  }
   
 /*  /*
Line 800 
Line 800 
                         break;                          break;
         }          }
         *ep = c;          *ep = c;
         return(rval);          return (rval);
 }  }
   
 __dead void  __dead void

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3