diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2010-04-13 10:36:21 +0200 |
---|---|---|
committer | Andreas Schwab <schwab@redhat.com> | 2010-04-13 14:01:08 +0200 |
commit | 4f7ee9b3d798442cdd85b8223df80272af9507cd (patch) | |
tree | 31d1e8921f8051013ba454b9b87c5f17c5de0aed | |
parent | 973dc1b24b6e0ee01d3e90b17f9b6d53ee1baa68 (diff) |
Avoid multiarch memcmp in tzdata-update
-rw-r--r-- | fedora/tzdata-update.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/fedora/tzdata-update.c b/fedora/tzdata-update.c index 988fb55636..33bb8c67e3 100644 --- a/fedora/tzdata-update.c +++ b/fedora/tzdata-update.c @@ -397,6 +397,16 @@ char buffer[32768], data[32768]; size_t datasize; char zonename[1024]; +static int +simple_memcmp (const char *s1, const char *s2, size_t n) +{ + int ret = 0; + + while (n-- + && (ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) == 0); + return ret; +} + ssize_t readall (int fd, void *buf, size_t len) { @@ -455,7 +465,8 @@ update (const char *filename) if (ret <= 0 || (size_t) ret == sizeof (buffer)) return; /* Don't update the file unnecessarily. */ - if ((size_t) ret == datasize && memcmp (buffer, data, datasize) == 0) + if ((size_t) ret == datasize + && simple_memcmp (buffer, data, datasize) == 0) return; size_t len = strlen (filename); char tempfilename[len + sizeof (".tzupdate")]; @@ -507,7 +518,7 @@ main (int argc, char **argv) while (p != NULL) { while (*p == ' ' || *p == '\t') p++; - if (memcmp (p, "ZONE", 4) == 0) + if (simple_memcmp (p, "ZONE", 4) == 0) { p += 4; while (*p == ' ' || *p == '\t') p++; |