db_byteorder.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*-
  2.  * See the file LICENSE for redistribution information.
  3.  *
  4.  * Copyright (c) 1996, 1997, 1998, 1999, 2000
  5.  * Sleepycat Software.  All rights reserved.
  6.  */
  7. #include "db_config.h"
  8. #ifndef lint
  9. static const char revid[] = "$Id: db_byteorder.c,v 11.4 2000/11/30 00:58:31 ubell Exp $";
  10. #endif /* not lint */
  11. #ifndef NO_SYSTEM_INCLUDES
  12. #include <sys/types.h>
  13. #ifdef HAVE_ENDIAN_H
  14. #include <endian.h>
  15. #if BYTE_ORDER == BIG_ENDIAN
  16. #define WORDS_BIGENDIAN 1
  17. #endif
  18. #endif
  19. #endif
  20. #include "db_int.h"
  21. #include "common_ext.h"
  22. /*
  23.  * __db_byteorder --
  24.  * Return if we need to do byte swapping, checking for illegal
  25.  * values.
  26.  *
  27.  * PUBLIC: int __db_byteorder __P((DB_ENV *, int));
  28.  */
  29. int
  30. __db_byteorder(dbenv, lorder)
  31. DB_ENV *dbenv;
  32. int lorder;
  33. {
  34. switch (lorder) {
  35. case 0:
  36. break;
  37. case 1234:
  38. #if defined(WORDS_BIGENDIAN)
  39. return (DB_SWAPBYTES);
  40. #else
  41. break;
  42. #endif
  43. case 4321:
  44. #if defined(WORDS_BIGENDIAN)
  45. break;
  46. #else
  47. return (DB_SWAPBYTES);
  48. #endif
  49. default:
  50. __db_err(dbenv,
  51.     "unsupported byte order, only big and little-endian supported");
  52. return (EINVAL);
  53. }
  54. return (0);
  55. }