summaryrefslogtreecommitdiff
path: root/sys/boot/util.c
blob: cdfa8befa57b6d5e46155d3cfbadea29dff6c7fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <sys/param.h>
#include <sys/types.h>
#include <sys/errno.h>

#include <netinet/in.h>
#include <netinet/in_systm.h>

#include "config.h"

#include "../include/stdarg.h"

void
#ifdef __STDC__
panic(const char *fmt, ...)
#else
panic(fmt /*, va_alist */)
	char *fmt;
#endif
{
    va_list ap;

    va_start(ap, fmt);
    printf(fmt, ap);
    printf("\n");
    va_end(ap);
    machdep_stop();
}


/* Similar to inet_ntoa() */
char *
intoa(addr)
	n_long addr;
{
	register char *cp;
	register u_int byte;
	register int n;
	static char buf[sizeof(".xxx.xxx.xxx.xxx")];

	cp = &buf[sizeof buf];
	*--cp = '\0';

	n = 4;
	do {
		byte = addr & 0xff;
		*--cp = byte % 10 + '0';
		byte /= 10;
		if (byte > 0) {
			*--cp = byte % 10 + '0';
			byte /= 10;
			if (byte > 0)
				*--cp = byte + '0';
		}
		*--cp = '.';
		addr >>= 8;
	} while (--n > 0);

	return (cp + 1);
}

char *strerror(errnum)
     int errnum;
{
    char ebuf[1024] = "Unknown error: code ";
    char *p;
    int length;



    switch (errnum) {
    case EPERM:
	return "Permission Denied";
    case ENOENT:
	return "No such file or directory";
    case ESTALE:
	return "Stale NFS file handle";
    default:
	length = strlen(ebuf);
	p = ebuf+length;
	do {
	    *p++ = "0123456789"[errnum %10];
	} while (errnum /= 10);
	*p = '\0';
	return ebuf;
    }
}


/*
 * Convert Ethernet address to printable (loggable) representation.
 */
static char digits[] = "0123456789abcdef";
char *
ether_sprintf(ap)
        register u_char *ap;
{
	register i;
	static char etherbuf[18];
	register char *cp = etherbuf;

	for (i = 0; i < 6; i++) {
		*cp++ = digits[*ap >> 4];
		*cp++ = digits[*ap++ & 0xf];
		*cp++ = ':';
	}
	*--cp = 0;
	return (etherbuf);
}

void bzero(addr, len)
     char *addr;
     int len;
{
    while (len--)
	*addr++ = '\0';
}