DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T g

⟦60a426acc⟧ TextFile

    Length: 5016 (0x1398)
    Types: TextFile
    Names: »general.c«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦e83f91978⟧ »EurOpenD22/isode/osimis-2.0.tar.Z« 
        └─⟦d846658bd⟧ 
            └─⟦this⟧ »osimis/smap/general.c« 

TextFile

/*
 * Copyright (c) 1988 University College London
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted
 * provided that the above copyright notice and this paragraph are
 * duplicated in all such forms and that any documentation,
 * advertising materials, and other materials related to such
 * distribution and use acknowledge that the software was developed
 * by the Department of Computer Science, University College London.
 * The name of the University may not be used to
 * endorse or promote products derived from this software without
 * specific prior written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */

/* various peripheral routines */

/*
 * By George Pavlou, October 1988
 */

#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include "isode/psap.h"
#include "objectS.h"


char  *tprot2str (tProtocol)
int tProtocol;
{
    static char buf[6];

    switch (tProtocol) {
	case 0:
	    strcpy(buf, "undef");
	    break;
	case 1:
	    strcpy(buf, "tp0");
	    break;
	case 2:
	    strcpy(buf, "tp1");
	    break;
	case 3:
	    strcpy(buf, "tp2");
	    break;
	case 4:
	    strcpy(buf, "tp3");
	    break;
	case 5:
	    strcpy(buf, "tp4");
	    break;
	default:
	    advise (NULLCP, "tprot2str: unknown tProtocol %d", tProtocol);
	    return (NULLCP);
    }

    return (buf);
}


int  host2indx (host, hosts, nofhosts)
char host[], *hosts[];
int  nofhosts;
{
    int i;

    for (i = 0; i < nofhosts; i++)
	if (strcmp(host, hosts[i]) == 0)
	    break;

    if (i >= nofhosts)
	return (-1);
    return (i);
}


char  *utct2disptime (utct)
UTCtime  *utct;
{
    static char buf[TIMELEN+1];
    static char *month[] = {
	"illegal month",
	"Jan",  "Feb",  "Mar",  "Apr",  "May",  "Jun",
	"Jul",  "Aug",  "Sep",  "Oct",  "Nov",  "Dec"
    };
    register char *cp;

    cp = utct2str(utct);
    strncpy(buf, cp+2, 2);                      /* month */
    buf[2] = '\0';
    strncpy(buf, month[atoi(buf)], 3);
    strncpy(buf+4,  cp+4,  2);                  /* day */
    strncpy(buf+7,  cp+6,  2);                  /* hour */
    strncpy(buf+10, cp+8,  2);                  /* min */
    strncpy(buf+13, cp+10, 2);                  /* sec */
    strncpy(buf+16, "19",  2);
    strncpy(buf+18, cp,    2);                  /* year */
    buf[3] = buf[6] = buf[15] = ' ';
    buf[9] = buf[12] = ':';
    buf[20] = '\0';

    return (buf);
}


/*  converts time in secs to time in
 *  "month day hours:minutes:seconds year"
 */

char  *secs2disptime (secs)
long  *secs;
{
    register char *cp;
    int  i;
    char *ctime();

    cp = ctime(secs);
    for (i = 0; i < 4; i++)
	*(cp+20+i) = *(cp+24+i);
    *(cp+24) = '\0';
    return (cp+4);
}


static NAddrHostMap naddrhostmap [] = {
    "X.25 23421920030035",  "London",
    "X.25 23421920030028",  "London",
    "X.25 23426020017299",  "Nottingham",
    "X.25 31344152401010",  "Palo Alto",
    "X.25 242211000163",    "Oslo",
    "X.25 5052334300013",   "Melbourne"
};
#define NADDRS 6


char  *naddr2host (naddr)
char  *naddr;
{
    static char buf[HOSTLEN+1];
    register char *cp;
    int len = 0, i;

    if (strncmp(naddr, "TCP", 3) == 0 || strncmp(naddr, "NSAP", 4) == 0) {
	cp = naddr+5;
	if (isalpha(*cp)) {
	    while (*cp != '.' && *cp++ != ' ')
		if (++len >= 12)
		    break;
	    strncpy(buf, naddr+5, len);
	    buf[len] = '\0';
	}
	else {
	    struct hostent *h; u_long ip_addr;

	    while (*cp != ' ' && *cp++ != '\0');
	    if (*--cp == ' ')
		cp = '\0';
	    ip_addr = inet_addr(naddr+5);
	    if ((h = gethostbyaddr((char *) &ip_addr, 4, AF_INET)) != NULL) {
	        cp = h->h_name;
		while (*cp != '.' && *cp++ != '\0')
		    if (++len >= 12)
			break;
		strncpy(buf, h->h_name, len);
		buf[len] = '\0';
	    }
	    else {
		strncpy(buf, naddr+5, 12);
		buf[12] = '\0';
	    }
	}
    }
    else
    if (strncmp(naddr, "X.25", 4) == 0) {
	for (i = 0; i < NADDRS; i++)
	    if (strcmp(naddr, naddrhostmap[i].naddr) == 0)
		break;
	if (i < NADDRS) {
	    strncpy(buf, naddrhostmap[i].host, 12);
		buf[10] = '\0';
	}
	else
	    strncpy(buf, "unknown X.25", 12);
    }
    else
	strncpy(buf, "unknown", 12);		/* unknown address type */

    return (buf);
}


char  *cept2rhost (Cept, l_host)
T_ConnectionEndpointS  *Cept;
char  *l_host;
{
    char *cp, *getmyname(), *naddr2host();

    if (strcmp(cp = naddr2host(Cept->destTAddr.naddr), l_host) != 0 &&
			strcmp(cp, "localhost") != 0)
	return (cp);

    if (strlen(cp = naddr2host(Cept->sourceTAddr.naddr, l_host)) != 0)
	return (cp);

    strncpy(cp, l_host, 12);
    return (cp);
}


/* gets hostname in short form */

char  *getmyname ()
{
    char *gethostname();
    static char  buf[32];
    register char  *cp = buf;

    gethostname(buf, 32);
    while (*cp++ != '.');
    *--cp = '\0';

    return (buf);
}