diff options
author | Carl Worth <cworth@cworth.org> | 2009-11-09 16:12:28 -0800 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2009-11-09 16:24:03 -0800 |
commit | 146549321044615d9aef2b30cedccda9c49f3f38 (patch) | |
tree | d12ae3b42b8bca295c8d9443f455690191db1a7a /sha1.c | |
parent | 8ae1c3c6e11f7c8d4066ef3d8affe4d07528807b (diff) |
libify: Move library sources down into lib directory.
A "make" invocation still works from the top-level, but not from
down inside the lib directory yet.
Diffstat (limited to 'sha1.c')
-rw-r--r-- | sha1.c | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/sha1.c b/sha1.c deleted file mode 100644 index ff4dd164..00000000 --- a/sha1.c +++ /dev/null @@ -1,115 +0,0 @@ -/* sha1.c - Interfaces to SHA-1 hash for the notmuch mail system - * - * Copyright © 2009 Carl Worth - * - * 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 Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/ . - * - * Author: Carl Worth <cworth@cworth.org> - */ - -#include "notmuch-private.h" - -#include "libsha1.h" - -/* Just some simple interfaces on top of libsha1 so that we can leave - * libsha1 as untouched as possible. */ - -static char * -_hex_of_sha1_digest (const unsigned char digest[SHA1_DIGEST_SIZE]) -{ - char *result, *r; - int i; - - result = xcalloc (SHA1_DIGEST_SIZE * 2 + 1, 1); - - for (r = result, i = 0; - i < SHA1_DIGEST_SIZE; - r += 2, i++) - { - sprintf (r, "%02x", digest[i]); - } - - return result; -} - -/* Create a hexadcimal string version of the SHA-1 digest of 'str' - * (including its null terminating character). - * - * This function returns a newly allocated string which the caller - * should free() when finished. - */ -char * -notmuch_sha1_of_string (const char *str) -{ - sha1_ctx sha1; - unsigned char digest[SHA1_DIGEST_SIZE]; - - sha1_begin (&sha1); - - sha1_hash ((unsigned char *) str, strlen (str) + 1, &sha1); - - sha1_end (digest, &sha1); - - return _hex_of_sha1_digest (digest); -} - -/* Create a hexadecimal string version of the SHA-1 digest of the - * contents of the named file. - * - * This function returns a newly allocated string which the caller - * should free() when finished. - * - * If any error occurs while reading the file, (permission denied, - * file not found, etc.), this function returns NULL. - */ -char * -notmuch_sha1_of_file (const char *filename) -{ - FILE *file; -#define BLOCK_SIZE 4096 - unsigned char block[BLOCK_SIZE]; - size_t bytes_read; - sha1_ctx sha1; - unsigned char digest[SHA1_DIGEST_SIZE]; - char *result; - - file = fopen (filename, "r"); - if (file == NULL) - return NULL; - - sha1_begin (&sha1); - - while (1) { - bytes_read = fread (block, 1, 4096, file); - if (bytes_read == 0) { - if (feof (file)) { - break; - } else if (ferror (file)) { - fclose (file); - return NULL; - } - } else { - sha1_hash (block, bytes_read, &sha1); - } - } - - sha1_end (digest, &sha1); - - result = _hex_of_sha1_digest (digest); - - fclose (file); - - return result; -} - |