locate.bigram.c (17972) | locate.bigram.c (18300) |
---|---|
1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * James A. Woods. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 19 unchanged lines hidden (view full) --- 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * | 1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * James A. Woods. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 19 unchanged lines hidden (view full) --- 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * |
36 * $Id: locate.bigram.c,v 1.5 1996/08/30 03:06:15 peter Exp $ | 36 * $Id: locate.bigram.c,v 1.1 1996/09/13 13:23:48 wosch Exp wosch $ |
37 */ 38 39#ifndef lint 40static char copyright[] = 41"@(#) Copyright (c) 1989, 1993\n\ 42 The Regents of the University of California. All rights reserved.\n"; 43#endif /* not lint */ 44 --- 21 unchanged lines hidden (view full) --- 66main(void) 67{ 68 register u_char *cp; 69 register u_char *oldpath = buf1, *path = buf2; 70 register u_int i, j; 71 72 while (fgets(path, sizeof(buf2), stdin) != NULL) { 73 | 37 */ 38 39#ifndef lint 40static char copyright[] = 41"@(#) Copyright (c) 1989, 1993\n\ 42 The Regents of the University of California. All rights reserved.\n"; 43#endif /* not lint */ 44 --- 21 unchanged lines hidden (view full) --- 66main(void) 67{ 68 register u_char *cp; 69 register u_char *oldpath = buf1, *path = buf2; 70 register u_int i, j; 71 72 while (fgets(path, sizeof(buf2), stdin) != NULL) { 73 |
74 /* skip empty lines */ 75 if (*path == '\n') 76 continue; | 74 /* 75 * We don't need remove newline character '\n'. 76 * '\n' is less than ASCII_MIN and will be later 77 * ignored at output. 78 */ |
77 | 79 |
78 /* Squelch characters that would botch the decoding. */ 79 for (cp = path; *cp != '\0'; cp++) { 80 /* chop newline */ 81 if (*cp == '\n') 82 *cp = '\0'; 83 /* range */ 84 else if (*cp < ASCII_MIN || *cp > ASCII_MAX) 85 *cp = '?'; 86 } | |
87 88 /* skip longest common prefix */ | 80 81 /* skip longest common prefix */ |
89 for (cp = path; *cp == *oldpath && *cp != '\0'; cp++, oldpath++); | 82 for (cp = path; *cp == *oldpath; cp++, oldpath++) 83 if (*cp == '\0') 84 break; |
90 | 85 |
91 while (*cp != '\0' && *(cp+1) != '\0') { 92 bigram[*cp][*(cp+1)]++; | 86 while (*cp != '\0' && *(cp + 1) != '\0') { 87 bigram[(u_int)*cp][(u_int)*(cp + 1)]++; |
93 cp += 2; 94 } 95 96 /* swap pointers */ 97 if (path == buf1) { 98 path = buf2; 99 oldpath = buf1; 100 } else { 101 path = buf1; 102 oldpath = buf2; 103 } 104 } 105 | 88 cp += 2; 89 } 90 91 /* swap pointers */ 92 if (path == buf1) { 93 path = buf2; 94 oldpath = buf1; 95 } else { 96 path = buf1; 97 oldpath = buf2; 98 } 99 } 100 |
106 /* output, (paranoid) boundary check */ | 101 /* output, boundary check */ |
107 for (i = ASCII_MIN; i <= ASCII_MAX; i++) 108 for (j = ASCII_MIN; j <= ASCII_MAX; j++) 109 if (bigram[i][j] != 0) | 102 for (i = ASCII_MIN; i <= ASCII_MAX; i++) 103 for (j = ASCII_MIN; j <= ASCII_MAX; j++) 104 if (bigram[i][j] != 0) |
110 printf("%4u %c%c\n", bigram[i][j], i, j); | 105 (void)printf("%4u %c%c\n", bigram[i][j], i, j); |
111 112 exit(0); 113} | 106 107 exit(0); 108} |