summaryrefslogtreecommitdiff
path: root/lib_generic/string.c
diff options
context:
space:
mode:
authorwdenk <wdenk>2004-03-14 00:59:59 +0000
committerwdenk <wdenk>2004-03-14 00:59:59 +0000
commitc3f9d4939af90eb8e30119601c86c05bde6c7345 (patch)
tree90854c0902fd963de17ee275e3836629892a060f /lib_generic/string.c
parent0e6d798cb313580acd06ba01626687a557c5159f (diff)
* Patch by Yuli Barcohen, 4 Mar 2004:
Fix problems with GCC 3.3.x which changed handling of global variables explicitly initialized to zero (now in .bss instead of .data as before). * Patch by Leon Kukovec, 02 Mar 2004: add strswab() to fix IDE LBA capacity, firmware and model numbers on little endian machines * Patch by Masami Komiya, 02 Mar 2004: - Remove get_ticks() from NFS code - Add verification of RPC transaction ID * Patch by Pierre Aubert, 02 Mar 2004: cleanup for IDE and USB drivers for MPC5200
Diffstat (limited to 'lib_generic/string.c')
-rw-r--r--lib_generic/string.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib_generic/string.c b/lib_generic/string.c
index d06a645017..5ba8d7cb51 100644
--- a/lib_generic/string.c
+++ b/lib_generic/string.c
@@ -364,6 +364,33 @@ char * strsep(char **s, const char *ct)
}
#endif
+#ifndef __HAVE_ARCH_STRSWAB
+/**
+ * strswab - swap adjacent even and odd bytes in %NUL-terminated string
+ * s: address of the string
+ *
+ * returns the address of the swapped string or NULL on error. If
+ * string length is odd, last byte is untouched.
+ */
+char *strswab(const char *s)
+{
+ char *p;
+
+ if ((NULL == s) || ('\0' == *s)) {
+ return (NULL);
+ }
+
+ for (p = ((char *)s + 1); '\0' != *p; p += 2) {
+ char tmp;
+ tmp = *(p-1);
+ *(p-1) = *p;
+ *p = tmp;
+ }
+
+ return (char *) s;
+}
+#endif
+
#ifndef __HAVE_ARCH_MEMSET
/**
* memset - Fill a region of memory with the given value