[BACK]Return to getput.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Annotation of src/usr.bin/ssh/getput.h, Revision 1.4

1.1       deraadt     1: /*
1.3       markus      2:  *
1.2       deraadt     3:  * getput.h
1.3       markus      4:  *
1.2       deraadt     5:  * Author: Tatu Ylonen <ylo@cs.hut.fi>
1.3       markus      6:  *
1.2       deraadt     7:  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
                      8:  *                    All rights reserved
1.3       markus      9:  *
1.2       deraadt    10:  * Created: Wed Jun 28 22:36:30 1995 ylo
1.3       markus     11:  *
1.2       deraadt    12:  * Macros for storing and retrieving data in msb first and lsb first order.
1.3       markus     13:  *
1.2       deraadt    14:  */
1.1       deraadt    15:
1.4     ! markus     16: /* RCSID("$OpenBSD: getput.h,v 1.3 2000/04/14 10:30:31 markus Exp $"); */
1.1       deraadt    17:
                     18: #ifndef GETPUT_H
                     19: #define GETPUT_H
                     20:
                     21: /*------------ macros for storing/extracting msb first words -------------*/
                     22:
                     23: #define GET_32BIT(cp) (((unsigned long)(unsigned char)(cp)[0] << 24) | \
1.3       markus     24:                       ((unsigned long)(unsigned char)(cp)[1] << 16) | \
1.1       deraadt    25:                       ((unsigned long)(unsigned char)(cp)[2] << 8) | \
                     26:                       ((unsigned long)(unsigned char)(cp)[3]))
                     27:
                     28: #define GET_16BIT(cp) (((unsigned long)(unsigned char)(cp)[0] << 8) | \
                     29:                       ((unsigned long)(unsigned char)(cp)[1]))
                     30:
                     31: #define PUT_32BIT(cp, value) do { \
                     32:   (cp)[0] = (value) >> 24; \
                     33:   (cp)[1] = (value) >> 16; \
                     34:   (cp)[2] = (value) >> 8; \
                     35:   (cp)[3] = (value); } while (0)
                     36:
                     37: #define PUT_16BIT(cp, value) do { \
                     38:   (cp)[0] = (value) >> 8; \
                     39:   (cp)[1] = (value); } while (0)
                     40:
                     41: /*------------ macros for storing/extracting lsb first words -------------*/
                     42:
                     43: #define GET_32BIT_LSB_FIRST(cp) \
                     44:   (((unsigned long)(unsigned char)(cp)[0]) | \
                     45:   ((unsigned long)(unsigned char)(cp)[1] << 8) | \
                     46:   ((unsigned long)(unsigned char)(cp)[2] << 16) | \
                     47:   ((unsigned long)(unsigned char)(cp)[3] << 24))
                     48:
                     49: #define GET_16BIT_LSB_FIRST(cp) \
                     50:   (((unsigned long)(unsigned char)(cp)[0]) | \
                     51:   ((unsigned long)(unsigned char)(cp)[1] << 8))
                     52:
                     53: #define PUT_32BIT_LSB_FIRST(cp, value) do { \
                     54:   (cp)[0] = (value); \
                     55:   (cp)[1] = (value) >> 8; \
                     56:   (cp)[2] = (value) >> 16; \
                     57:   (cp)[3] = (value) >> 24; } while (0)
                     58:
                     59: #define PUT_16BIT_LSB_FIRST(cp, value) do { \
                     60:   (cp)[0] = (value); \
                     61:   (cp)[1] = (value) >> 8; } while (0)
                     62:
1.2       deraadt    63: #endif                         /* GETPUT_H */