PERFORCE change 149055 for review

Konrad Jankowski konrad at FreeBSD.org
Tue Sep 2 09:25:56 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=149055

Change 149055 by konrad at vspredator on 2008/09/02 09:25:40

	Throw out the endianness dance from libc's collate.c

Affected files ...

.. //depot/projects/soc2008/konrad_collation/libc/locale/collate.c#11 edit

Differences ...

==== //depot/projects/soc2008/konrad_collation/libc/locale/collate.c#11 (text+ko) ====

@@ -54,9 +54,6 @@
 
 #include "libc_private.h"
 
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-static void wntohl(wchar_t *, int);
-#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
 void __collate_err(int ex, const char *f) __dead2;
 
 #undef __collate_load_error
@@ -113,14 +110,6 @@
 	}
 	if (fread(&info, sizeof(info), 1, fp) != 1)
 		goto error_close_and_return;
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-	for(z = 0; z < info.directive_count; z++) {
-		info.undef_pri.pri[z] = ntohl(info.undef_pri.pri[z]);
-		info.subst_count[z] = ntohl(info.subst_count[z]);
-	}
-	info.chain_count = ntohl(info.chain_count);
-	info.large_pri_count = ntohl(info.large_pri_count);
-#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
 	if ((chains = info.chain_count) < 0) {
 #ifdef LOCALE_DEBUG
 		fprintf(stderr, "__collate_load_tables: wrong chain count (%d)\n",
@@ -181,42 +170,6 @@
 	else
 		TMP->__large_char_pri_table = NULL;
 
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-	{
-		struct __collate_st_char_pri *p = TMP->__char_pri_table;
-		for(i = UCHAR_MAX + 1; i-- > 0; p++) {
-			for(z = 0; z < info.directive_count; z++)
-				p->pri[z] = ntohl(p->pri[z]);
-		}
-	}
-	for(z = 0; z < info.directive_count; z++)
-		if (info.subst_count[z] > 0) {
-			struct __collate_st_subst *p =
-			    TMP->__substitute_table[z];
-			for(i = info.subst_count[z]; i-- > 0; p++) {
-				p->val = ntohl(p->val);
-				wntohl(p->str, STR_LEN);
-			}
-		}
-	{
-		struct __collate_st_chain_pri *p = TMP->__chain_pri_table;
-
-		for(i = chains; i-- > 0; p++) {
-			wntohl(p->str, STR_LEN);
-			for(z = 0; z < info.directive_count; z++)
-				p->pri.pri[z] = ntohl(p->pri.pri[z]);
-		}
-	}
-	if (info.large_pri_count > 0) {
-		struct __collate_st_large_char_pri *p =
-		    TMP->__large_char_pri_table;
-		for(i = info.large_pri_count; i-- > 0; p++) {
-			p->val = ntohl(p->val);
-			for(z = 0; z < info.directive_count; z++)
-				p->pri.pri[z] = ntohl(p->pri.pri[z]);
-		}
-	}
-#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
 	(void)strcpy(TMP->__encoding, encoding);
 	(void)memcpy(&TMP->__info, &info, sizeof(info));
 	__collate_data = TMP;
@@ -854,15 +807,6 @@
 	return len;
 }
 
-#if _BYTE_ORDER == _LITTLE_ENDIAN
-static void
-wntohl(wchar_t *str, int len)
-{
-	for(; *str && len > 0; str++, len--)
-		*str = ntohl(*str);
-}
-#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
-
 #ifdef COLLATE_DEBUG
 static char *
 show(int c)
@@ -898,7 +842,6 @@
 __collate_print_tables()
 {
 	int i, z;
-	locale_t loc = __current_locale();
 
 	printf("Info: p=%d s=%d f=0x%02x m=%d dc=%d up=%d us=%d pc=%d "
 	    "sc=%d cc=%d lc=%d\n",


More information about the p4-projects mailing list