|
|
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 = '.';
}
}