comparison lib/swig/swigwin-2.0.11/CCache/hash.c @ 1899:b3009adc0e2f

Adding swig, gitignore, hgignore
author Nomad
date Mon, 21 Oct 2013 10:42:27 +0200
parents
children
comparison
equal deleted inserted replaced
1867:eb580660bbbb 1899:b3009adc0e2f
1 /*
2 Copyright (C) Andrew Tridgell 2002
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 */
18 /*
19 simple front-end functions to mdfour code
20 */
21
22 #include "ccache.h"
23
24 static struct mdfour md;
25
26 void hash_buffer(const char *s, int len)
27 {
28 mdfour_update(&md, (unsigned char *)s, len);
29 }
30
31 void hash_start(void)
32 {
33 mdfour_begin(&md);
34 }
35
36 void hash_string(const char *s)
37 {
38 hash_buffer(s, strlen(s));
39 }
40
41 void hash_int(int x)
42 {
43 hash_buffer((char *)&x, sizeof(x));
44 }
45
46 /* add contents of a file to the hash */
47 void hash_file(const char *fname)
48 {
49 char buf[1024];
50 int fd, n;
51
52 fd = open(fname, O_RDONLY|O_BINARY);
53 if (fd == -1) {
54 cc_log("Failed to open %s\n", fname);
55 fatal("hash_file");
56 }
57
58 while ((n = read(fd, buf, sizeof(buf))) > 0) {
59 hash_buffer(buf, n);
60 }
61 close(fd);
62 }
63
64 /* return the hash result as a static string */
65 char *hash_result(void)
66 {
67 unsigned char sum[16];
68 static char ret[53];
69 int i;
70
71 hash_buffer(NULL, 0);
72 mdfour_result(&md, sum);
73
74 for (i=0;i<16;i++) {
75 sprintf(&ret[i*2], "%02x", (unsigned)sum[i]);
76 }
77 sprintf(&ret[i*2], "-%u", (unsigned)md.totalN);
78
79 return ret;
80 }