|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T a
Length: 2147 (0x863) Types: TextFile Names: »abbrev.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Tools/tables/abbrev/abbrev.c«
/* abbrev.c: abbreviates domains */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Tools/tables/abbrev/RCS/abbrev.c,v 5.0 90/09/20 16:31:50 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Tools/tables/abbrev/RCS/abbrev.c,v 5.0 90/09/20 16:31:50 pp Exp Locker: pp $ * * $Log: abbrev.c,v $ * Revision 5.0 90/09/20 16:31:50 pp * rcsforce : 5.0 public release * */ #include <stdio.h> extern char *strdup (); static int LineCount; static char *myname; static char *aliases[100]; static int maxalias = 0; static int bitmap; static void do_alias (); /* --------------------- Begin Routines -------------------------------- */ main (ac,av) int ac; char *av []; { char buffer [BUFSIZ]; register char *alias, *name; register int i; myname = av [0]; if (ac < 2) { fprintf (stderr, "Usage: %s Domain...\n", myname); exit (1); } for (i = 1; i < ac; i++) { (void) sprintf (buffer, "X.%s", av[i]); aliases[maxalias++] = strdup (buffer); } LineCount = 0; while (fgets (buffer, sizeof buffer, stdin) != NULL) { LineCount++; alias = &buffer [0]; printf ("%s", alias); if (*alias == '#' || *alias == '\n') continue; alias [strlen (alias) - 1] = '\0'; for (name = alias; *name != '\00'; name++) if (*name == ':' || *name == '#') break; if (*name == '#') continue; if (*name == '\0') { fprintf (stderr, "%s: Syntax Error [%s] ", myname, alias); fprintf (stderr, "at line %d - Ignored\n", LineCount); continue; } *name++ = '\0'; bitmap = 0; for (i = 0; i < maxalias; i++) do_alias (alias, name, aliases[i]); } exit (0); } /* --------------------- Static Routines ------------------------------- */ static void do_alias (alias, name, domain) register char *alias, *name, *domain; { register char *a, *d; int dn = -1; a = &alias [strlen (alias) - 1]; d = &domain [strlen (domain) - 1]; for (; a != alias && *a == *d; a--, d--) if (*a == '.') { dn ++; if (bitmap & (1 << dn)) continue; bitmap |= (1 << dn); *a = '\00'; printf ("%s:%s\n", alias, name); *a = '.'; } }