xref: /plan9-contrib/sys/src/libc/port/beget.c (revision b928b27a41e220ecec6259d0639b59761ac5616a)
1*b928b27aSDavid du Colombier #include <u.h>
2*b928b27aSDavid du Colombier #include <libc.h>
3*b928b27aSDavid du Colombier 
4*b928b27aSDavid du Colombier u16int
be16get(uchar * t,uchar ** r)5*b928b27aSDavid du Colombier be16get(uchar *t,  uchar **r)
6*b928b27aSDavid du Colombier {
7*b928b27aSDavid du Colombier 	if(r != nil)
8*b928b27aSDavid du Colombier 		*r = t+2;
9*b928b27aSDavid du Colombier 	return (u16int)t[0]<<8 | (u16int)t[1];
10*b928b27aSDavid du Colombier }
11*b928b27aSDavid du Colombier 
12*b928b27aSDavid du Colombier u32int
be24get(uchar * t,uchar ** r)13*b928b27aSDavid du Colombier be24get(uchar *t,  uchar **r)
14*b928b27aSDavid du Colombier {
15*b928b27aSDavid du Colombier 	if(r != nil)
16*b928b27aSDavid du Colombier 		*r = t+3;
17*b928b27aSDavid du Colombier 	return (u32int)t[1]<<16 | (u32int)t[2]<<8 | (u32int)t[3];
18*b928b27aSDavid du Colombier }
19*b928b27aSDavid du Colombier 
20*b928b27aSDavid du Colombier u32int
be32get(uchar * t,uchar ** r)21*b928b27aSDavid du Colombier be32get(uchar *t,  uchar **r)
22*b928b27aSDavid du Colombier {
23*b928b27aSDavid du Colombier 	if(r != nil)
24*b928b27aSDavid du Colombier 		*r = t+4;
25*b928b27aSDavid du Colombier 	return (u32int)t[0]<<24 | (u32int)t[1]<<16 | (u32int)t[2]<<8 | (u32int)t[3];
26*b928b27aSDavid du Colombier }
27*b928b27aSDavid du Colombier 
28*b928b27aSDavid du Colombier u64int
be64get(uchar * t,uchar ** r)29*b928b27aSDavid du Colombier be64get(uchar *t,  uchar **r)
30*b928b27aSDavid du Colombier {
31*b928b27aSDavid du Colombier 	if(r != nil)
32*b928b27aSDavid du Colombier 		*r = t+8;
33*b928b27aSDavid du Colombier 	return (u64int)t[0]<<56 | (u64int)t[1]<<48 | (u64int)t[2]<<40 | (u64int)t[3]<<32 |
34*b928b27aSDavid du Colombier 		(u64int)t[4]<<24 | (u64int)t[5]<<16 | (u64int)t[6]<<8 | (u64int)t[7];
35*b928b27aSDavid du Colombier }
36*b928b27aSDavid du Colombier 
37*b928b27aSDavid du Colombier uchar*
be16put(uchar * t,u16int r)38*b928b27aSDavid du Colombier be16put(uchar *t, u16int r)
39*b928b27aSDavid du Colombier {
40*b928b27aSDavid du Colombier 	*t++ = r>>8;
41*b928b27aSDavid du Colombier 	*t++ = r;
42*b928b27aSDavid du Colombier 	return t;
43*b928b27aSDavid du Colombier }
44*b928b27aSDavid du Colombier 
45*b928b27aSDavid du Colombier uchar*
be32put(uchar * t,u32int r)46*b928b27aSDavid du Colombier be32put(uchar *t, u32int r)
47*b928b27aSDavid du Colombier {
48*b928b27aSDavid du Colombier 	*t++ = r>>24;
49*b928b27aSDavid du Colombier 	*t++ = r>>16;
50*b928b27aSDavid du Colombier 	*t++ = r>>8;
51*b928b27aSDavid du Colombier 	*t++ = r;
52*b928b27aSDavid du Colombier 	return t;
53*b928b27aSDavid du Colombier }
54*b928b27aSDavid du Colombier 
55*b928b27aSDavid du Colombier uchar*
be24put(uchar * t,u32int r)56*b928b27aSDavid du Colombier be24put(uchar *t, u32int r)
57*b928b27aSDavid du Colombier {
58*b928b27aSDavid du Colombier 	*t++ = r>>16;
59*b928b27aSDavid du Colombier 	*t++ = r>>8;
60*b928b27aSDavid du Colombier 	*t++ = r;
61*b928b27aSDavid du Colombier 	return t;
62*b928b27aSDavid du Colombier }
63*b928b27aSDavid du Colombier 
64*b928b27aSDavid du Colombier uchar*
be64put(uchar * t,u64int r)65*b928b27aSDavid du Colombier be64put(uchar *t, u64int r)
66*b928b27aSDavid du Colombier {
67*b928b27aSDavid du Colombier 	*t++ = r>>56;
68*b928b27aSDavid du Colombier 	*t++ = r>>48;
69*b928b27aSDavid du Colombier 	*t++ = r>>40;
70*b928b27aSDavid du Colombier 	*t++ = r>>32;
71*b928b27aSDavid du Colombier 	*t++ = r>>24;
72*b928b27aSDavid du Colombier 	*t++ = r>>16;
73*b928b27aSDavid du Colombier 	*t++ = r>>8;
74*b928b27aSDavid du Colombier 	*t++ = r;
75*b928b27aSDavid du Colombier 	return t;
76*b928b27aSDavid du Colombier }
77*b928b27aSDavid du Colombier 
78