[prev in list] [next in list] [prev in thread] [next in thread]
List: pecl-cvs
Subject: [PECL-CVS] =?utf-8?q?svn:_/pecl/dbase/trunk/_dbf=5Fmisc.c?=
From: Christoph_Michael_Becker <cmb () php ! net>
Date: 2016-10-30 14:47:05
Message-ID: svn-cmb-1477838825-340801-155763213 () svn ! php ! net
[Download RAW message or body]
cmb Sun, 30 Oct 2016 14:47:05 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=340801
Log:
Fix (get|put)_double wrt. endianess
These functions are currently unused, but might be in the future to
support O (dBASE) and B (FoxPro) doubles, so we already fix them for
little-endian systems.
Changed paths:
U pecl/dbase/trunk/dbf_misc.c
Modified: pecl/dbase/trunk/dbf_misc.c
===================================================================
--- pecl/dbase/trunk/dbf_misc.c 2016-10-30 13:11:17 UTC (rev 340800)
+++ pecl/dbase/trunk/dbf_misc.c 2016-10-30 14:47:05 UTC (rev 340801)
@@ -12,6 +12,16 @@
#include "php_reentrancy.h"
+#if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || \
defined(__LITTLE_ENDIAN__)) +# if defined(__LITTLE_ENDIAN__)
+# undef WORDS_BIGENDIAN
+# else
+# if defined(__BIG_ENDIAN__)
+# define WORDS_BIGENDIAN
+# endif
+# endif
+#endif
+
/*
* routine to change little endian long to host long
*/
@@ -60,15 +70,15 @@
{
double ret;
unsigned char *dp = (unsigned char *)&ret;
+ int i;
- dp[7] = *cp++;
- dp[6] = *cp++;
- dp[5] = *cp++;
- dp[4] = *cp++;
- dp[3] = *cp++;
- dp[2] = *cp++;
- dp[1] = *cp++;
- dp[0] = *cp++;
+#ifdef WORDS_BIGENDIAN
+ for (i = 7; i >= 0; i--) {
+#else
+ for (i = 0; i <= 7; i++) {
+#endif
+ dp[i] = *cp++;
+ }
return ret;
}
@@ -76,15 +86,15 @@
void put_double(char *cp, double fval)
{
unsigned char *dp = (unsigned char *)&fval;
+ int i;
- cp[7] = *dp++;
- cp[6] = *dp++;
- cp[5] = *dp++;
- cp[4] = *dp++;
- cp[3] = *dp++;
- cp[2] = *dp++;
- cp[1] = *dp++;
- cp[0] = *dp++;
+#ifdef WORDS_BIGENDIAN
+ for (i = 7; i >= 0; i--) {
+#else
+ for (i = 0; i <= 7; i++) {
+#endif
+ cp[i] = *dp++;
+ }
}
void copy_fill(char *dp, char *sp, int len)
--
PECL CVS Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic