diff options
author | Neil Brown <neilb@suse.de> | 2006-12-14 17:33:14 +1100 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2006-12-14 17:33:14 +1100 |
commit | 350f29f90d1f6bb3ddfafea368327911f9e8b27c (patch) | |
tree | eada62e3fadcadb4c3de3df72098687b0bd625f8 /util.c | |
parent | 3d3dd91e3837d5eb6eeaa876c39153f2b0a4929d (diff) | |
download | mdadm-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.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -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) |