File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / ntp / libparse / binio.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:08:38 2012 UTC (12 years, 1 month ago) by misho
Branches: ntp, MAIN
CVS tags: v4_2_6p5p0, v4_2_6p5, HEAD
ntp 4.2.6p5

    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:  */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>