]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/libparse/binio.c
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / libparse / binio.c
1 /*
2  * /src/NTP/ntp4-dev/libntp/binio.c,v 4.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
3  *
4  * binio.c,v 4.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A
5  *
6  * $Created: Sun Jul 20 12:55:33 1997 $
7  *
8  * Copyright (c) 1997-2005 by Frank Kardel <kardel <AT> ntp.org>
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  * 3. Neither the name of the author nor the names of its contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  *
34  */
35
36 #include <config.h>
37 #include "binio.h"
38
39 long
40 get_lsb_short(
41         unsigned char **bufpp
42         )
43 {
44   long retval;
45
46   retval  = *((*bufpp)++);
47   retval |= *((*bufpp)++) << 8;
48
49   return (retval & 0x8000) ? (~0xFFFF | retval) : retval;
50 }
51
52 void
53 put_lsb_short(
54         unsigned char **bufpp,
55         long val
56         )
57 {
58   *((*bufpp)++) = (unsigned char) (val        & 0xFF);
59   *((*bufpp)++) = (unsigned char) ((val >> 8) & 0xFF);
60 }
61
62 long
63 get_lsb_long(
64         unsigned char **bufpp
65         )
66 {
67   long retval;
68
69   retval  = *((*bufpp)++);
70   retval |= *((*bufpp)++) << 8;
71   retval |= *((*bufpp)++) << 16;
72   retval |= (u_long)*((*bufpp)++) << 24;
73
74   return retval;
75 }
76
77 void
78 put_lsb_long(
79         unsigned char **bufpp,
80         long val
81         )
82 {
83   *((*bufpp)++) = (unsigned char)(val         & 0xFF);
84   *((*bufpp)++) = (unsigned char)((val >> 8)  & 0xFF);
85   *((*bufpp)++) = (unsigned char)((val >> 16) & 0xFF);
86   *((*bufpp)++) = (unsigned char)((val >> 24) & 0xFF);
87 }
88
89 long
90 get_msb_short(
91         unsigned char **bufpp
92         )
93 {
94   long retval;
95
96   retval  = *((*bufpp)++) << 8;
97   retval |= *((*bufpp)++);
98
99   return (retval & 0x8000) ? (~0xFFFF | retval) : retval;
100 }
101
102 void
103 put_msb_short(
104         unsigned char **bufpp,
105         long val
106         )
107 {
108   *((*bufpp)++) = (unsigned char)((val >> 8) & 0xFF);
109   *((*bufpp)++) = (unsigned char)( val       & 0xFF);
110 }
111
112 long
113 get_msb_long(
114         unsigned char **bufpp
115         )
116 {
117   long retval;
118
119   retval  = (u_long)*((*bufpp)++) << 24;
120   retval |= *((*bufpp)++) << 16;
121   retval |= *((*bufpp)++) << 8;
122   retval |= *((*bufpp)++);
123
124   return retval;
125 }
126
127 void
128 put_msb_long(
129         unsigned char **bufpp,
130         long val
131         )
132 {
133   *((*bufpp)++) = (unsigned char)((val >> 24) & 0xFF);
134   *((*bufpp)++) = (unsigned char)((val >> 16) & 0xFF);
135   *((*bufpp)++) = (unsigned char)((val >> 8 ) & 0xFF);
136   *((*bufpp)++) = (unsigned char)( val        & 0xFF);
137 }
138
139 /*
140  * binio.c,v
141  * Revision 4.2  1999/02/21 12:17:34  kardel
142  * 4.91f reconcilation
143  *
144  * Revision 4.1  1998/06/28 16:47:50  kardel
145  * added {get,put}_msb_{short,long} functions
146  *
147  * Revision 4.0  1998/04/10 19:46:16  kardel
148  * Start 4.0 release version numbering
149  *
150  * Revision 1.1  1998/04/10 19:27:46  kardel
151  * initial NTP VERSION 4 integration of PARSE with GPS166 binary support
152  *
153  * Revision 1.1  1997/10/06 21:05:46  kardel
154  * new parse structure
155  *
156  */