summaryrefslogtreecommitdiff
path: root/lib/sha1.c
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2004-07-28 20:09:39 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2004-07-28 20:09:39 +0000
commit94185e124d75a9d732de29fa642123eaf8605e0c (patch)
tree0bd000dfad72a6b12284b2af641db7a71685824d /lib/sha1.c
parent4b7668c12a014b731213c5f20cebce91df25e977 (diff)
downloadcoreutils-94185e124d75a9d732de29fa642123eaf8605e0c.tar.xz
Don't include <sys/types.h> or <stdlib.h>; <stddef.h>
suffices with C89 or better. (alignof): New macro, portable to all C89 hosts. (UNALIGNED): Use it. Use uintptr_t if available, and assume everything is unaligned otherwise; this is more portable than assuming 'unsigned long int' will always work.
Diffstat (limited to 'lib/sha1.c')
-rw-r--r--lib/sha1.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/lib/sha1.c b/lib/sha1.c
index 52766bac5..d2647877e 100644
--- a/lib/sha1.c
+++ b/lib/sha1.c
@@ -1,7 +1,7 @@
/* sha.c - Functions to compute SHA1 message digest of files or
memory blocks according to the NIST specification FIPS-180-1.
- Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -28,9 +28,7 @@
#include "sha1.h"
-#include <sys/types.h>
-
-#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include "unlocked-io.h"
@@ -244,12 +242,11 @@ sha_process_bytes (const void *buffer, size_t len, struct sha_ctx *ctx)
if (len >= 64)
{
#if !_STRING_ARCH_unaligned
-/* To check alignment gcc has an appropriate operator. Other
- compilers don't. */
-# if __GNUC__ >= 2
-# define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0)
+# define alignof(type) offsetof (struct { char c; type x; }, x)
+# ifdef UINTPTR_MAX
+# define UNALIGNED_P(p) (((uintptr_t) p) % alignof (md5_uint32) != 0)
# else
-# define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0)
+# define UNALIGNED_P(p) 1
# endif
if (UNALIGNED_P (buffer))
while (len > 64)