freebsd-dev/eBones/krb/k_gethostname.c
Geoff Rehmet 60643d379b Initial import of eBones.
(Including all changes for FreeBSD - importing the original eBones distribution
would be too complex at this stage, since I don't have access to Piero's 
CVS.)
(If you want to include eBones in your system, don't forget to include
MAKE_EBONES in /etc/make.conf.)
(This stuff is now also suppable from braae.ru.ac.za.)

Bones originally from MIT SIPB.
Original port to FreeBSD 1.x  by Piero Serini.
Moved to FreeBSD 2.0 by Doug Rabson and Geoff Rehmet.
Nice bug fixes from Doug Rabson.
1994-09-30 14:50:09 +00:00

66 lines
1.6 KiB
C

/*
* Copyright 1987, 1988 by the Massachusetts Institute of Technology.
* For copying and distribution information, please see the file
* <Copyright.MIT>.
*
* from: k_gethostname.c,v 4.1 88/12/01 14:04:42 jtkohl Exp $
* $Id: k_gethostname.c,v 1.2 1994/07/19 19:25:36 g89r4222 Exp $
*/
#ifndef lint
static char rcsid[] =
"$Id: k_gethostname.c,v 1.2 1994/07/19 19:25:36 g89r4222 Exp $";
#endif /* lint */
#ifndef PC
#ifndef BSD42
/* teach me how to k_gethostname for your system here */
#endif
#endif
#ifdef PC
#include <stdio.h>
typedef long in_name;
#include "custom.h" /* where is this file? */
extern get_custom();
#define LEN 64 /* just a guess */
#endif /* PC */
/*
* Return the local host's name in "name", up to "namelen" characters.
* "name" will be null-terminated if "namelen" is big enough.
* The return code is 0 on success, -1 on failure. (The calling
* interface is identical to gethostname(2).)
*
* Currently defined for BSD 4.2 and PC. The BSD version just calls
* gethostname(); the PC code was taken from "kinit.c", and may or may
* not work.
*/
k_gethostname(name, namelen)
char *name;
{
#ifdef BSD42
return gethostname(name, namelen);
#endif
#ifdef PC
char buf[LEN];
char b1, b2, b3, b4;
register char *ptr;
get_custom(); /* should check for errors,
* return -1 on failure */
ptr = (char *) &(custom.c_me);
b1 = *ptr++;
b2 = *ptr++;
b3 = *ptr++;
b4 = *ptr;
(void) sprintf(buf,"PC address %d.%d.%d.%d",b1,b2,b3,b4);
if (strlen(buf) > namelen)
fprintf(stderr, "gethostname: namelen too small; truncating");
strnpcy(name, buf, namelen);
return 0;
#endif
}