diff options
Diffstat (limited to 'refer/hunt3.c')
-rw-r--r-- | refer/hunt3.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/refer/hunt3.c b/refer/hunt3.c new file mode 100644 index 0000000000000..85f2050394259 --- /dev/null +++ b/refer/hunt3.c @@ -0,0 +1,70 @@ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + + +/* + * Copyright (c) 1980 Regents of the University of California. + * All rights reserved. The Berkeley software License Agreement + * specifies the terms and conditions for redistribution. + */ + +/* + * Copyright (c) 1983, 1984 1985, 1986, 1987, 1988, Sun Microsystems, Inc. + * All Rights Reserved. + */ + +/* from OpenSolaris "hunt3.c 1.4 05/06/02 SMI" */ + +/* + * Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany + * + * Sccsid @(#)hunt3.c 1.3 (gritter) 10/22/05 + */ + +#include <locale.h> +#include "refer..c" +#define BSIZ 250 + +int +getq(char **v) +{ + static char buff[BSIZ]; + static int eof = 0; + extern char *sinput; + char *p; + int c, n = 0, las = 0; + if (eof) return(-1); + p = buff; + while ( (c = (sinput ? *sinput++ : getchar()) ) > 0) + { + if (c== '\n') + break; + if (isalpha(c) || isdigit(c)) + { + if (las==0) + { + v[n++] = p; + las=1; + } + if (las++ <= 6) + *p++ = c; + } + else + { + if (las>0) + *p++ = 0; + las=0; + } + } + *p=0; + if (p > buff + BSIZ) + fprintf(stderr, "query long than %d characters\n", BSIZ); + assert(p < buff + BSIZ); + if (sinput==0 && c<= 0) eof=1; +# if D1 + fprintf(stderr, "no. keys %d\n",n); + for(c=0; c<n; c++) + fprintf(stderr, "keys X%sX\n", v[c]); +# endif + return(n); +} |