summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-12-14 17:33:14 +1100
committerNeil Brown <neilb@suse.de>2006-12-14 17:33:14 +1100
commit350f29f90d1f6bb3ddfafea368327911f9e8b27c (patch)
treeeada62e3fadcadb4c3de3df72098687b0bd625f8 /util.c
parent3d3dd91e3837d5eb6eeaa876c39153f2b0a4929d (diff)
downloadmdadm-350f29f90d1f6bb3ddfafea368327911f9e8b27c.tar.gz
mdadm-350f29f90d1f6bb3ddfafea368327911f9e8b27c.tar.xz
mdadm-350f29f90d1f6bb3ddfafea368327911f9e8b27c.zip
Centralise code for copying uuid
Rather than opencoding the byteswap all the time.
Diffstat (limited to 'util.c')
-rw-r--r--util.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/util.c b/util.c
index ffb113c..c21bf51 100644
--- a/util.c
+++ b/util.c
@@ -246,6 +246,25 @@ int same_uuid(int a[4], int b[4], int swapuuid)
return 0;
}
}
+void copy_uuid(void *a, int b[4], int swapuuid)
+{
+ if (swapuuid) {
+ /* parse uuids are hostendian.
+ * uuid's from some superblocks are big-ending
+ * if there is a difference, we need to swap..
+ */
+ unsigned char *ac = (unsigned char *)a;
+ unsigned char *bc = (unsigned char *)b;
+ int i;
+ for (i=0; i<16; i+= 4) {
+ ac[i+0] = bc[i+3];
+ ac[i+1] = bc[i+2];
+ ac[i+2] = bc[i+1];
+ ac[i+3] = bc[i+0];
+ }
+ } else
+ memcpy(a, b, 16);
+}
#ifndef MDASSEMBLE
int check_ext2(int fd, char *name)