X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/a75743c0f06d1c6f42c3426691386dd43c69462d..0f4556f12c8f75078501c9d1338ae7648a97f975:/usr/src/usr.bin/refer/refer4.c diff --git a/usr/src/usr.bin/refer/refer4.c b/usr/src/usr.bin/refer/refer4.c index 42ceb517f9..a0838ec3a5 100644 --- a/usr/src/usr.bin/refer/refer4.c +++ b/usr/src/usr.bin/refer/refer4.c @@ -1,82 +1,86 @@ -# include "refer..c" -static gate= 0; -static char buff[LLINE]; -char *trimnl(); -output (s) - char *s; +#ifndef lint +static char *sccsid = "@(#)refer4.c 4.1 (Berkeley) 5/6/83"; +#endif + +#include "refer..c" +#define punctuat(c) (c=='.' || c=='?' || c=='!' || c==',' || c==';' || c==':') + +static gate = 0; +static char buff[BUFSIZ]; + +output(s) +char *s; { -if (gate) - fputs(buff,ftemp); -else - gate=1; -strcpy(buff,s); -if (strlen(buff)>LLINE) - err("one buff too big (%d)!", LLINE); + if (gate) + fputs(buff,ftemp); + else + gate = 1; + strcpy(buff, s); + if (strlen(buff) > BUFSIZ) + err("one buff too big (%d)!", BUFSIZ); } + append(s) - char *s; +char *s; { -char *p, *r; int lch; -trimnl(buff); -for (p=buff; *p; p++) - ; -lch = *--p; -/* - * Extended by Robert Henry, UC Berkeley, 14 May 81 - * to know about lines ending with - * the set [?!)"-}:], as well as the original [.,] - * all of which can occur in normal text. - * - * This prevents the punctuation from being seperated from - * the buried reference - */ -#define CASES \ - case '.': case ',':\ - case '?': case '!':\ - case ')': case '"':\ - case '-': case '}':\ - case ':' + char *p; + int lch; -switch (lch) - { - CASES: /* rrh */ - *p=0; - r="\\*(<"; - while (*r) *p++= *r++; - *p++ = lch; - *p=0; - } -strcat(buff,s); -switch(lch) - { - CASES: /* rrh */ - for(p=buff; *p; p++) - ; - if (*--p=='\n')*p=0; - r = "\\*(>"; - while (*r) *p++ = *r++; - *p++ = lch; - *p++ = '\n'; - *p=0; - } -if (strlen(buff)>LLINE) - err("output buff too long (%d)", LLINE); + trimnl(buff); + for (p = buff; *p; p++) + ; + lch = *--p; + if (postpunct && punctuat(lch)) + *p = NULL; + else /* pre-punctuation */ + switch (lch) { + case '.': + case '?': + case '!': + case ',': + case ';': + case ':': + *p++ = lch; + *p = NULL; + } + strcat(buff, s); + if (postpunct) + switch(lch) { + case '.': + case '?': + case '!': + case ',': + case ';': + case ':': + for(p = buff; *p; p++) + ; + if (*--p == '\n') + *p = NULL; + *p++ = lch; + *p++ = '\n'; + *p = NULL; + } + if (strlen(buff) > BUFSIZ) + err("output buff too long (%d)", BUFSIZ); } flout() { -if (gate) - fputs(buff,ftemp); -gate=0; + if (gate) + fputs(buff,ftemp); + gate = 0; } char * trimnl(ln) - char *ln; +char *ln; { -register char *p = ln; -while (*p) p++; -p--; -if (*p == '\n') *p=0; -return(ln); + register char *p = ln; + + while (*p) + p++; + p--; + if (*p == '\n') + *p = 0; + return(ln); }