This is bigram.c in view mode; [Download] [Up]
/* bigram -- list bigrams for locate Usage: bigram < text > bigrams Use 'code' to encode a file using this output. Author: James A. Woods (jaw@riacs.edu) Modified by David MacKenzie (djm@ai.mit.edu) Public domain. */ #include <stdio.h> #if defined(HAVE_STRING_H) || defined(STDC_HEADERS) #include <string.h> #else #include <strings.h> #endif #ifdef STDC_HEADERS #include <stdlib.h> #endif #include <sys/types.h> #include "pathmax.h" char *xmalloc (); static int prefix_length (); /* The name this program was run with. */ char *program_name; static char *path; static char *oldpath; void main (argc, argv) int argc; char **argv; { register int count, j; unsigned line_length; int path_max; program_name = argv[0]; path_max = PATH_MAX; path = xmalloc (path_max + 2); oldpath = xmalloc (path_max + 2); path[path_max] = '\0'; strcpy (oldpath, " "); while (fgets (path, path_max, stdin) != NULL) { line_length = strlen (path); if (line_length == 0) fprintf (stderr, "%s: null line in input\n", argv[0]); else if (path[line_length - 1] != '\n') fprintf (stderr, "%s: long line in input; truncating to `%s'\n", argv[0], path); else path[line_length - 1] = '\0'; /* Remove newline. */ count = prefix_length (oldpath, path); /* Output post-residue bigrams only. */ for (j = count; path[j] != '\0'; j += 2) { if (path[j + 1] == '\0') break; putchar (path[j]); putchar (path[j + 1]); putchar ('\n'); } strcpy (oldpath, path); } exit (0); } /* Return length of longest common prefix of strings S1 and S2. */ static int prefix_length (s1, s2) char *s1, *s2; { register char *start; for (start = s1; *s1 == *s2; s1++, s2++) if (*s1 == '\0') break; return s1 - start; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.