📄 db_byteorder.c
字号:
/*- * See the file LICENSE for redistribution information. * * Copyright (c) 1996-2002 * Sleepycat Software. All rights reserved. */#include "db_config.h"#ifndef lintstatic const char revid[] = "$Id: db_byteorder.c,v 11.8 2002/02/01 18:15:29 bostic Exp $";#endif /* not lint */#ifndef NO_SYSTEM_INCLUDES#include <sys/types.h>#endif#include "db_int.h"/* * __db_isbigendian -- * Return 1 if big-endian (Motorola and Sparc), not little-endian * (Intel and Vax). We do this work at run-time, rather than at * configuration time so cross-compilation and general embedded * system support is simpler. * * PUBLIC: int __db_isbigendian __P((void)); */int__db_isbigendian(){ union { /* From Harbison & Steele. */ long l; char c[sizeof(long)]; } u; u.l = 1; return (u.c[sizeof(long) - 1] == 1);}/* * __db_byteorder -- * Return if we need to do byte swapping, checking for illegal * values. * * PUBLIC: int __db_byteorder __P((DB_ENV *, int)); */int__db_byteorder(dbenv, lorder) DB_ENV *dbenv; int lorder;{ int is_bigendian; is_bigendian = __db_isbigendian(); switch (lorder) { case 0: break; case 1234: if (is_bigendian) return (DB_SWAPBYTES); break; case 4321: if (!is_bigendian) return (DB_SWAPBYTES); break; default: __db_err(dbenv, "unsupported byte order, only big and little-endian supported"); return (EINVAL); } return (0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -