[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.2

1.1       deraadt     1: /*
1.2     ! deraadt     2:  *
        !             3:  * getput.h
        !             4:  *
        !             5:  * Author: Tatu Ylonen <ylo@cs.hut.fi>
        !             6:  *
        !             7:  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
        !             8:  *                    All rights reserved
        !             9:  *
        !            10:  * Created: Wed Jun 28 22:36:30 1995 ylo
        !            11:  *
        !            12:  * Macros for storing and retrieving data in msb first and lsb first order.
        !            13:  *
        !            14:  */
1.1       deraadt    15:
1.2     ! deraadt    16: /* RCSID("$Id: getput.h,v 1.1 1999/09/26 20:53:36 deraadt 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) | \
                     24:                       ((unsigned long)(unsigned char)(cp)[1] << 16) | \
                     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 */