home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / kerberosIV / include / lsb_addr_comp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-01-23  |  1.3 KB  |  44 lines

  1. /*
  2.  * $Source: /mit/kerberos/src/include/RCS/lsb_addr_comp.h,v $
  3.  * $Author: jtkohl $
  4.  * $Header: lsb_addr_comp.h,v 4.0 89/01/23 15:44:46 jtkohl Exp $
  5.  *
  6.  * Copyright 1988 by the Massachusetts Institute of Technology.
  7.  *
  8.  * For copying and distribution information, please see the file
  9.  * <mit-copyright.h>.
  10.  *
  11.  * Comparison macros to emulate LSBFIRST comparison results of network
  12.  * byte-order quantities
  13.  */
  14.  
  15. #include <mit-copyright.h>
  16. #ifndef LSB_ADDR_COMP_DEFS
  17. #define LSB_ADDR_COMP_DEFS
  18.  
  19. #include "osconf.h"
  20.  
  21. #ifdef LSBFIRST
  22. #define lsb_net_ulong_less(x,y) ((x < y) ? -1 : ((x > y) ? 1 : 0))
  23. #define lsb_net_ushort_less(x,y) ((x < y) ? -1 : ((x > y) ? 1 : 0))
  24. #else
  25. /* MSBFIRST */
  26. #define u_char_comp(x,y) \
  27.         (((x)>(y))?(1):(((x)==(y))?(0):(-1)))
  28. /* This is gross, but... */
  29. #define lsb_net_ulong_less(x, y) long_less_than((u_char *)&x, (u_char *)&y)
  30. #define lsb_net_ushort_less(x, y) short_less_than((u_char *)&x, (u_char *)&y)
  31.  
  32. #define long_less_than(x,y) \
  33.         (u_char_comp((x)[3],(y)[3])?u_char_comp((x)[3],(y)[3]): \
  34.      (u_char_comp((x)[2],(y)[2])?u_char_comp((x)[2],(y)[2]): \
  35.       (u_char_comp((x)[1],(y)[1])?u_char_comp((x)[1],(y)[1]): \
  36.        (u_char_comp((x)[0],(y)[0])))))
  37. #define short_less_than(x,y) \
  38.       (u_char_comp((x)[1],(y)[1])?u_char_comp((x)[1],(y)[1]): \
  39.        (u_char_comp((x)[0],(y)[0])))
  40.  
  41. #endif /* LSBFIRST */
  42.  
  43. #endif /*  LSB_ADDR_COMP_DEFS */
  44.