]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/ntp/libparse/binio.c
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.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 "binio.h"
37
38 long
39 get_lsb_short(
40         unsigned char **bufpp
41         )
42 {
43   long retval;
44
45   retval  = *((*bufpp)++);
46   retval |= *((*bufpp)++) << 8;
47
48   return (retval & 0x8000) ? (~0xFFFF | retval) : retval;
49 }
50
51 void
52 put_lsb_short(
53         unsigned char **bufpp,
54         long val
55         )
56 {
57   *((*bufpp)++) = (unsigned char) (val        & 0xFF);
58   *((*bufpp)++) = (unsigned char) ((val >> 8) & 0xFF);
59 }
60
61 long
62 get_lsb_long(
63         unsigned char **bufpp
64         )
65 {
66   long retval;
67
68   retval  = *((*bufpp)++);
69   retval |= *((*bufpp)++) << 8;
70   retval |= *((*bufpp)++) << 16;
71   retval |= *((*bufpp)++) << 24;
72
73   return retval;
74 }
75
76 void
77 put_lsb_long(
78         unsigned char **bufpp,
79         long val
80         )
81 {
82   *((*bufpp)++) = (unsigned char)(val         & 0xFF);
83   *((*bufpp)++) = (unsigned char)((val >> 8)  & 0xFF);
84   *((*bufpp)++) = (unsigned char)((val >> 16) & 0xFF);
85   *((*bufpp)++) = (unsigned char)((val >> 24) & 0xFF);
86 }
87
88 long
89 get_msb_short(
90         unsigned char **bufpp
91         )
92 {
93   long retval;
94
95   retval  = *((*bufpp)++) << 8;
96   retval |= *((*bufpp)++);
97
98   return (retval & 0x8000) ? (~0xFFFF | retval) : retval;
99 }
100
101 void
102 put_msb_short(
103         unsigned char **bufpp,
104         long val
105         )
106 {
107   *((*bufpp)++) = (unsigned char)((val >> 8) & 0xFF);
108   *((*bufpp)++) = (unsigned char)( val       & 0xFF);
109 }
110
111 long
112 get_msb_long(
113         unsigned char **bufpp
114         )
115 {
116   long retval;
117
118   retval  = *((*bufpp)++) << 24;
119   retval |= *((*bufpp)++) << 16;
120   retval |= *((*bufpp)++) << 8;
121   retval |= *((*bufpp)++);
122
123   return retval;
124 }
125
126 void
127 put_msb_long(
128         unsigned char **bufpp,
129         long val
130         )
131 {
132   *((*bufpp)++) = (unsigned char)((val >> 24) & 0xFF);
133   *((*bufpp)++) = (unsigned char)((val >> 16) & 0xFF);
134   *((*bufpp)++) = (unsigned char)((val >> 8 ) & 0xFF);
135   *((*bufpp)++) = (unsigned char)( val        & 0xFF);
136 }
137
138 /*
139  * binio.c,v
140  * Revision 4.2  1999/02/21 12:17:34  kardel
141  * 4.91f reconcilation
142  *
143  * Revision 4.1  1998/06/28 16:47:50  kardel
144  * added {get,put}_msb_{short,long} functions
145  *
146  * Revision 4.0  1998/04/10 19:46:16  kardel
147  * Start 4.0 release version numbering
148  *
149  * Revision 1.1  1998/04/10 19:27:46  kardel
150  * initial NTP VERSION 4 integration of PARSE with GPS166 binary support
151  *
152  * Revision 1.1  1997/10/06 21:05:46  kardel
153  * new parse structure
154  *
155  */