summaryrefslogtreecommitdiff
path: root/refer/hunt3.c
diff options
context:
space:
mode:
Diffstat (limited to 'refer/hunt3.c')
-rw-r--r--refer/hunt3.c70
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);
+}