This is sp_dist.c in view mode; [Download] [Up]
/*
* Stolen from "The UNIX Programming Environment" by Kernighan and Pike.
*
* Work out the distance between the strings 's' and 't' according
* to the rough metric that
*
* Identical = 0
* Interchanged characters = 1
* Wrong character/extra character/missing character = 2
* Forget it = 3
*
*/
int
sp_dist(s, t)
char *s;
char *t;
{
while (*s++ == *t){
if (*t++ == '\0'){
/* identical */
return 0;
}
}
if (*--s){
if (*t){
if (s[1]&&t[1]&&*s == t[1]&&*t == s[1]&&!strcmp(s+2, t+2)){
/* Interchanged chars. */
return 1;
}
if (!strcmp(s+1, t+1)){
/* Wrong char. */
return 2;
}
}
if (!strcmp(s+1, t)){
/* Extra char in 't'. */
return 2;
}
}
if (!strcmp(s, t+1)){
/* Extra char in 's'. */
return 2;
}
/* Forget it. */
return 3;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.