home *** CD-ROM | disk | FTP | other *** search
- /* Copyright 1985, 1986, 1987, 1988 Chris Lewis
- All Rights Reserved
-
- Permission to copy and further distribute is freely given provided
- this copyright notice remains intact and that this software is not
- sold for profit.
-
- Project: Generic Troff drivers
- Module: utils.c
- Author: Chris Lewis
- Specs: Utility functions
- */
-
- #include "defs.h"
-
- #ifndef SVR3
- #ifndef lint
- static char SCCSid[] = "@(#)utils.c: 1.7 Copyright 89/07/17 10:58:36 Chris Lewis";
- #endif
- #else
- #ident "@(#)utils.c: 1.7 Copyright 89/07/17 10:58:36 Chris Lewis"
- #endif
-
- #ifdef DEBUG
- debugprintf(fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
- char *fmt;
- int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10; {
- char buf[BUFSIZ];
- sprintf(buf, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
- fprintf(diagFile, buf);
- }
- #endif
-
- char *skipblanks(p)
- register char *p; {
- while (*p && isspace(*p)) p++;
- return(p);
- }
-
- char *gettok(p, bp)
- register char *p, *bp; {
- p = skipblanks(p);
- while(*p && !isspace(*p)) *bp++ = *p++;
- *bp = '\0';
- return(p);
- }
-
- interp(buf, xlator, suffix)
- char *buf, *suffix; FUNC xlator; {
- register char *p, *ep;
- char token[512];
- p = gettok(buf, token);
- if (0 == strcmp(token, "include") || 0 == strcmp(token, "binclude")) {
- int binary;
- FILE *inc;
- binary = (token[0] == 'b') ? 1: 0;
- p = gettok(p, token);
- strcat(token, suffix);
- if (!(inc = fopen(token, "r"))) {
- char nbuf[512];
- if (token[0] != '/') {
- sprintf(nbuf, "%s/%s", LIBDIR, token);
- inc = fopen(nbuf, "r");
- }
- }
- if (!inc) {
- fprintf(stderr, "%s: cannot open file %s\n", progname, token);
- exit(1);
- } else {
- if (binary || !xlator)
- while ((binary = fread(token, 1, sizeof(token), inc)) > 0)
- fwrite(token, 1, binary, stdout);
- else
- (*xlator)(inc);
- fclose(inc);
- }
- }
-
- else {
- fprintf(stderr, "%s: unknown directive: %s\n", progname, token);
- exit(1);
- }
- }
-
- char nodename[25];
- getnodename() {
- FILE *uuname;
- int c;
- if ((uuname = popen("uuname -l", "r")) == NULL)
- strcpy(nodename, "<noname>");
- else {
- fscanf(uuname, "%s", nodename);
- pclose(uuname);
- }
- }
-