1 /*-
2  * See the file LICENSE for redistribution information.
3  *
4  * Copyright (c) 1996, 1997
5  *	Sleepycat Software.  All rights reserved.
6  */
7 /*
8  * Copyright (c) 1998 by Sun Microsystems, Inc.
9  * All rights reserved.
10  */
11 
12 #include "config.h"
13 
14 #pragma ident	"%Z%%M%	%I%	%E% SMI"
15 
16 #ifndef lint
17 static const char sccsid[] = "@(#)db_byteorder.c	10.4 (Sleepycat) 9/4/97";
18 static const char sccsi2[] = "%W% (Sun) %G%";
19 #endif /* not lint */
20 
21 #ifndef NO_SYSTEM_INCLUDES
22 #include <sys/types.h>
23 
24 #ifdef HAVE_ENDIAN_H
25 #include <endian.h>
26 #if BYTE_ORDER == BIG_ENDIAN
27 #define	WORDS_BIGENDIAN	1
28 #endif
29 #endif
30 
31 #include <errno.h>
32 #endif
33 
34 #include "db_int.h"
35 #include "common_ext.h"
36 
37 /*
38  * __db_byteorder --
39  *	Return if we need to do byte swapping, checking for illegal
40  *	values.
41  *
42  * PUBLIC: int __db_byteorder __P((DB_ENV *, int));
43  */
44 int
45 __db_byteorder(dbenv, lorder)
46 	DB_ENV *dbenv;
47 	int lorder;
48 {
49 	switch (lorder) {
50 	case 0:
51 		break;
52 	case 1234:
53 #if defined(WORDS_BIGENDIAN)
54 		return (DB_SWAPBYTES);
55 #else
56 		break;
57 #endif
58 	case 4321:
59 #if defined(WORDS_BIGENDIAN)
60 		break;
61 #else
62 		return (DB_SWAPBYTES);
63 #endif
64 	default:
65 		__db_err(dbenv,
66 		    "illegal byte order, only big and little-endian supported");
67 		return (EINVAL);
68 	}
69 	return (0);
70 }
71