fast_excel 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +1 -7
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile +1 -1
  5. data/examples/example.rb +2 -0
  6. data/examples/example_date_time.rb +38 -0
  7. data/fast_excel.gemspec +2 -2
  8. data/lib/fast_excel/binding/format.rb +17 -0
  9. data/lib/fast_excel/binding/workbook.rb +39 -17
  10. data/lib/fast_excel/binding/worksheet.rb +57 -13
  11. data/lib/fast_excel/binding.rb +7 -7
  12. data/lib/fast_excel.rb +27 -20
  13. data/libxlsxwriter/.github/FUNDING.yml +1 -0
  14. data/libxlsxwriter/.github/ISSUE_TEMPLATE.md +85 -0
  15. data/libxlsxwriter/.github/PULL_REQUEST_TEMPLATE.md +130 -0
  16. data/libxlsxwriter/.github/workflows/cmake_actions.yml +48 -0
  17. data/libxlsxwriter/.github/workflows/code_style.yml +23 -0
  18. data/libxlsxwriter/.github/workflows/coverity.yml +22 -0
  19. data/libxlsxwriter/.github/workflows/make_actions.yml +52 -0
  20. data/libxlsxwriter/.github/workflows/valgrind.yml +23 -0
  21. data/libxlsxwriter/.github/workflows/windows_build.yml +54 -0
  22. data/libxlsxwriter/.github/workflows/zig_build.yml +22 -0
  23. data/libxlsxwriter/.gitignore +16 -1
  24. data/libxlsxwriter/.indent.pro +24 -0
  25. data/libxlsxwriter/CMakeLists.txt +156 -56
  26. data/libxlsxwriter/CONTRIBUTING.md +2 -2
  27. data/libxlsxwriter/Changes.txt +344 -2
  28. data/libxlsxwriter/LICENSE.txt +66 -8
  29. data/libxlsxwriter/Makefile +151 -54
  30. data/libxlsxwriter/Package.swift +42 -0
  31. data/libxlsxwriter/Readme.md +4 -2
  32. data/libxlsxwriter/build.zig +324 -0
  33. data/libxlsxwriter/build.zig.zon +11 -0
  34. data/libxlsxwriter/cmake/FindMINIZIP.cmake +3 -3
  35. data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +6 -0
  36. data/libxlsxwriter/include/xlsxwriter/app.h +2 -1
  37. data/libxlsxwriter/include/xlsxwriter/chart.h +236 -32
  38. data/libxlsxwriter/include/xlsxwriter/chartsheet.h +7 -7
  39. data/libxlsxwriter/include/xlsxwriter/comment.h +76 -0
  40. data/libxlsxwriter/include/xlsxwriter/common.h +111 -50
  41. data/libxlsxwriter/include/xlsxwriter/content_types.h +8 -1
  42. data/libxlsxwriter/include/xlsxwriter/core.h +1 -1
  43. data/libxlsxwriter/include/xlsxwriter/custom.h +1 -1
  44. data/libxlsxwriter/include/xlsxwriter/drawing.h +11 -20
  45. data/libxlsxwriter/include/xlsxwriter/format.h +121 -8
  46. data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
  47. data/libxlsxwriter/include/xlsxwriter/metadata.h +49 -0
  48. data/libxlsxwriter/include/xlsxwriter/packager.h +27 -16
  49. data/libxlsxwriter/include/xlsxwriter/relationships.h +1 -1
  50. data/libxlsxwriter/include/xlsxwriter/shared_strings.h +1 -1
  51. data/libxlsxwriter/include/xlsxwriter/styles.h +13 -7
  52. data/libxlsxwriter/include/xlsxwriter/table.h +51 -0
  53. data/libxlsxwriter/include/xlsxwriter/theme.h +1 -1
  54. data/libxlsxwriter/include/xlsxwriter/third_party/emyg_dtoa.h +26 -0
  55. data/libxlsxwriter/include/xlsxwriter/third_party/ioapi.h +27 -25
  56. data/libxlsxwriter/include/xlsxwriter/third_party/md5.h +45 -0
  57. data/libxlsxwriter/include/xlsxwriter/third_party/zip.h +155 -153
  58. data/libxlsxwriter/include/xlsxwriter/utility.h +70 -8
  59. data/libxlsxwriter/include/xlsxwriter/vml.h +55 -0
  60. data/libxlsxwriter/include/xlsxwriter/workbook.h +218 -47
  61. data/libxlsxwriter/include/xlsxwriter/worksheet.h +2770 -241
  62. data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +12 -8
  63. data/libxlsxwriter/include/xlsxwriter.h +4 -2
  64. data/libxlsxwriter/libxlsxwriter.podspec +8 -5
  65. data/libxlsxwriter/src/Makefile +58 -21
  66. data/libxlsxwriter/src/app.c +5 -2
  67. data/libxlsxwriter/src/chart.c +396 -81
  68. data/libxlsxwriter/src/chartsheet.c +22 -22
  69. data/libxlsxwriter/src/comment.c +443 -0
  70. data/libxlsxwriter/src/content_types.c +40 -1
  71. data/libxlsxwriter/src/core.c +2 -2
  72. data/libxlsxwriter/src/custom.c +1 -1
  73. data/libxlsxwriter/src/drawing.c +160 -40
  74. data/libxlsxwriter/src/format.c +109 -25
  75. data/libxlsxwriter/src/hash_table.c +1 -1
  76. data/libxlsxwriter/src/metadata.c +283 -0
  77. data/libxlsxwriter/src/packager.c +794 -94
  78. data/libxlsxwriter/src/relationships.c +1 -1
  79. data/libxlsxwriter/src/shared_strings.c +2 -4
  80. data/libxlsxwriter/src/styles.c +353 -58
  81. data/libxlsxwriter/src/table.c +304 -0
  82. data/libxlsxwriter/src/theme.c +1 -1
  83. data/libxlsxwriter/src/utility.c +143 -43
  84. data/libxlsxwriter/src/vml.c +1062 -0
  85. data/libxlsxwriter/src/workbook.c +567 -77
  86. data/libxlsxwriter/src/worksheet.c +6668 -1462
  87. data/libxlsxwriter/src/xmlwriter.c +95 -5
  88. data/libxlsxwriter/third_party/dtoa/Makefile +42 -0
  89. data/libxlsxwriter/third_party/dtoa/emyg_dtoa.c +461 -0
  90. data/libxlsxwriter/third_party/dtoa/emyg_dtoa.h +26 -0
  91. data/libxlsxwriter/third_party/md5/Makefile +42 -0
  92. data/libxlsxwriter/third_party/md5/md5.c +291 -0
  93. data/libxlsxwriter/third_party/md5/md5.h +45 -0
  94. data/libxlsxwriter/third_party/minizip/Makefile +3 -8
  95. data/libxlsxwriter/third_party/minizip/Makefile.orig +8 -4
  96. data/libxlsxwriter/third_party/minizip/MiniZip64_Changes.txt +1 -1
  97. data/libxlsxwriter/third_party/minizip/configure.ac +1 -1
  98. data/libxlsxwriter/third_party/minizip/crypt.h +13 -16
  99. data/libxlsxwriter/third_party/minizip/ioapi.c +31 -57
  100. data/libxlsxwriter/third_party/minizip/ioapi.h +31 -23
  101. data/libxlsxwriter/third_party/minizip/iowin32.c +29 -45
  102. data/libxlsxwriter/third_party/minizip/iowin32.h +4 -4
  103. data/libxlsxwriter/third_party/minizip/miniunz.c +29 -56
  104. data/libxlsxwriter/third_party/minizip/minizip.c +38 -49
  105. data/libxlsxwriter/third_party/minizip/mztools.c +1 -7
  106. data/libxlsxwriter/third_party/minizip/unzip.c +202 -342
  107. data/libxlsxwriter/third_party/minizip/unzip.h +74 -74
  108. data/libxlsxwriter/third_party/minizip/zip.c +165 -218
  109. data/libxlsxwriter/third_party/minizip/zip.h +164 -154
  110. data/libxlsxwriter/third_party/tmpfileplus/Makefile +3 -3
  111. data/libxlsxwriter/version.txt +1 -1
  112. data/test/auto_width_test.rb +20 -0
  113. data/test/default_format_test.rb +1 -1
  114. data/test/validations_test.rb +3 -3
  115. data/test/worksheet_test.rb +6 -1
  116. metadata +33 -7
  117. data/libxlsxwriter/.travis.yml +0 -37
@@ -0,0 +1,42 @@
1
+ ###############################################################################
2
+ #
3
+ # Simplied Makefile to build the openwall md5 library for libxlsxwriter.
4
+ #
5
+
6
+ # Keep the output quiet by default.
7
+ Q=@
8
+ ifdef V
9
+ Q=
10
+ endif
11
+
12
+ UNAME := $(shell uname)
13
+
14
+ # Check for MinGW/MinGW64/Cygwin environments.
15
+ ifneq (,$(findstring MINGW, $(UNAME)))
16
+ MING_LIKE = y
17
+ endif
18
+ ifneq (,$(findstring MSYS, $(UNAME)))
19
+ MING_LIKE = y
20
+ endif
21
+ ifneq (,$(findstring CYGWIN, $(UNAME)))
22
+ MING_LIKE = y
23
+ endif
24
+
25
+ FPIC = -fPIC
26
+
27
+ # Change make options on MinGW/MinGW64/Cygwin.
28
+ ifdef MING_LIKE
29
+ FPIC =
30
+ CC = gcc
31
+ endif
32
+
33
+ all: md5.o md5.so
34
+
35
+ %.o : %.c
36
+ $(Q)$(CC) -c $(CFLAGS) $(TARGET_ARCH) $<
37
+
38
+ %.so : %.c
39
+ $(Q)$(CC) $(FPIC) -c $(CFLAGS) $(TARGET_ARCH) $< -o $@
40
+
41
+ clean:
42
+ $(Q)rm -f *.o *.so
@@ -0,0 +1,291 @@
1
+ /*
2
+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
3
+ * MD5 Message-Digest Algorithm (RFC 1321).
4
+ *
5
+ * Homepage:
6
+ * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
7
+ *
8
+ * Author:
9
+ * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
10
+ *
11
+ * This software was written by Alexander Peslyak in 2001. No copyright is
12
+ * claimed, and the software is hereby placed in the public domain.
13
+ * In case this attempt to disclaim copyright and place the software in the
14
+ * public domain is deemed null and void, then the software is
15
+ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
16
+ * general public under the following terms:
17
+ *
18
+ * Redistribution and use in source and binary forms, with or without
19
+ * modification, are permitted.
20
+ *
21
+ * There's ABSOLUTELY NO WARRANTY, express or implied.
22
+ *
23
+ * (This is a heavily cut-down "BSD license".)
24
+ *
25
+ * This differs from Colin Plumb's older public domain implementation in that
26
+ * no exactly 32-bit integer data type is required (any 32-bit or wider
27
+ * unsigned integer data type will do), there's no compile-time endianness
28
+ * configuration, and the function prototypes match OpenSSL's. No code from
29
+ * Colin Plumb's implementation has been reused; this comment merely compares
30
+ * the properties of the two independent implementations.
31
+ *
32
+ * The primary goals of this implementation are portability and ease of use.
33
+ * It is meant to be fast, but not as fast as possible. Some known
34
+ * optimizations are not included to reduce source code size and avoid
35
+ * compile-time configuration.
36
+ */
37
+
38
+ #ifndef HAVE_OPENSSL
39
+
40
+ #include <string.h>
41
+
42
+ #include "md5.h"
43
+
44
+ /*
45
+ * The basic MD5 functions.
46
+ *
47
+ * F and G are optimized compared to their RFC 1321 definitions for
48
+ * architectures that lack an AND-NOT instruction, just like in Colin Plumb's
49
+ * implementation.
50
+ */
51
+ #define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z))))
52
+ #define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y))))
53
+ #define H(x, y, z) (((x) ^ (y)) ^ (z))
54
+ #define H2(x, y, z) ((x) ^ ((y) ^ (z)))
55
+ #define I(x, y, z) ((y) ^ ((x) | ~(z)))
56
+
57
+ /*
58
+ * The MD5 transformation for all four rounds.
59
+ */
60
+ #define STEP(f, a, b, c, d, x, t, s) \
61
+ (a) += f((b), (c), (d)) + (x) + (t); \
62
+ (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
63
+ (a) += (b);
64
+
65
+ /*
66
+ * SET reads 4 input bytes in little-endian byte order and stores them in a
67
+ * properly aligned word in host byte order.
68
+ *
69
+ * The check for little-endian architectures that tolerate unaligned memory
70
+ * accesses is just an optimization. Nothing will break if it fails to detect
71
+ * a suitable architecture.
72
+ *
73
+ * Unfortunately, this optimization may be a C strict aliasing rules violation
74
+ * if the caller's data buffer has effective type that cannot be aliased by
75
+ * MD5_u32plus. In practice, this problem may occur if these MD5 routines are
76
+ * inlined into a calling function, or with future and dangerously advanced
77
+ * link-time optimizations. For the time being, keeping these MD5 routines in
78
+ * their own translation unit avoids the problem.
79
+ */
80
+ #if defined(__i386__) || defined(__x86_64__) || defined(__vax__)
81
+ #define SET(n) \
82
+ (*(MD5_u32plus *)&ptr[(n) * 4])
83
+ #define GET(n) \
84
+ SET(n)
85
+ #else
86
+ #define SET(n) \
87
+ (ctx->block[(n)] = \
88
+ (MD5_u32plus)ptr[(n) * 4] | \
89
+ ((MD5_u32plus)ptr[(n) * 4 + 1] << 8) | \
90
+ ((MD5_u32plus)ptr[(n) * 4 + 2] << 16) | \
91
+ ((MD5_u32plus)ptr[(n) * 4 + 3] << 24))
92
+ #define GET(n) \
93
+ (ctx->block[(n)])
94
+ #endif
95
+
96
+ /*
97
+ * This processes one or more 64-byte data blocks, but does NOT update the bit
98
+ * counters. There are no alignment requirements.
99
+ */
100
+ static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
101
+ {
102
+ const unsigned char *ptr;
103
+ MD5_u32plus a, b, c, d;
104
+ MD5_u32plus saved_a, saved_b, saved_c, saved_d;
105
+
106
+ ptr = (const unsigned char *)data;
107
+
108
+ a = ctx->a;
109
+ b = ctx->b;
110
+ c = ctx->c;
111
+ d = ctx->d;
112
+
113
+ do {
114
+ saved_a = a;
115
+ saved_b = b;
116
+ saved_c = c;
117
+ saved_d = d;
118
+
119
+ /* Round 1 */
120
+ STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
121
+ STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
122
+ STEP(F, c, d, a, b, SET(2), 0x242070db, 17)
123
+ STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22)
124
+ STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7)
125
+ STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12)
126
+ STEP(F, c, d, a, b, SET(6), 0xa8304613, 17)
127
+ STEP(F, b, c, d, a, SET(7), 0xfd469501, 22)
128
+ STEP(F, a, b, c, d, SET(8), 0x698098d8, 7)
129
+ STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12)
130
+ STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17)
131
+ STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22)
132
+ STEP(F, a, b, c, d, SET(12), 0x6b901122, 7)
133
+ STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
134
+ STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
135
+ STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
136
+
137
+ /* Round 2 */
138
+ STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
139
+ STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
140
+ STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14)
141
+ STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20)
142
+ STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5)
143
+ STEP(G, d, a, b, c, GET(10), 0x02441453, 9)
144
+ STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14)
145
+ STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20)
146
+ STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5)
147
+ STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9)
148
+ STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14)
149
+ STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20)
150
+ STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5)
151
+ STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
152
+ STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
153
+ STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
154
+
155
+ /* Round 3 */
156
+ STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
157
+ STEP(H2, d, a, b, c, GET(8), 0x8771f681, 11)
158
+ STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16)
159
+ STEP(H2, b, c, d, a, GET(14), 0xfde5380c, 23)
160
+ STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4)
161
+ STEP(H2, d, a, b, c, GET(4), 0x4bdecfa9, 11)
162
+ STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16)
163
+ STEP(H2, b, c, d, a, GET(10), 0xbebfbc70, 23)
164
+ STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4)
165
+ STEP(H2, d, a, b, c, GET(0), 0xeaa127fa, 11)
166
+ STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16)
167
+ STEP(H2, b, c, d, a, GET(6), 0x04881d05, 23)
168
+ STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4)
169
+ STEP(H2, d, a, b, c, GET(12), 0xe6db99e5, 11)
170
+ STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
171
+ STEP(H2, b, c, d, a, GET(2), 0xc4ac5665, 23)
172
+
173
+ /* Round 4 */
174
+ STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
175
+ STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
176
+ STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15)
177
+ STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21)
178
+ STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6)
179
+ STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10)
180
+ STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15)
181
+ STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21)
182
+ STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6)
183
+ STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10)
184
+ STEP(I, c, d, a, b, GET(6), 0xa3014314, 15)
185
+ STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21)
186
+ STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6)
187
+ STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
188
+ STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
189
+ STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
190
+
191
+ a += saved_a;
192
+ b += saved_b;
193
+ c += saved_c;
194
+ d += saved_d;
195
+
196
+ ptr += 64;
197
+ } while (size -= 64);
198
+
199
+ ctx->a = a;
200
+ ctx->b = b;
201
+ ctx->c = c;
202
+ ctx->d = d;
203
+
204
+ return ptr;
205
+ }
206
+
207
+ void MD5_Init(MD5_CTX *ctx)
208
+ {
209
+ ctx->a = 0x67452301;
210
+ ctx->b = 0xefcdab89;
211
+ ctx->c = 0x98badcfe;
212
+ ctx->d = 0x10325476;
213
+
214
+ ctx->lo = 0;
215
+ ctx->hi = 0;
216
+ }
217
+
218
+ void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
219
+ {
220
+ MD5_u32plus saved_lo;
221
+ unsigned long used, available;
222
+
223
+ saved_lo = ctx->lo;
224
+ if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo)
225
+ ctx->hi++;
226
+ ctx->hi += size >> 29;
227
+
228
+ used = saved_lo & 0x3f;
229
+
230
+ if (used) {
231
+ available = 64 - used;
232
+
233
+ if (size < available) {
234
+ memcpy(&ctx->buffer[used], data, size);
235
+ return;
236
+ }
237
+
238
+ memcpy(&ctx->buffer[used], data, available);
239
+ data = (const unsigned char *)data + available;
240
+ size -= available;
241
+ body(ctx, ctx->buffer, 64);
242
+ }
243
+
244
+ if (size >= 64) {
245
+ data = body(ctx, data, size & ~(unsigned long)0x3f);
246
+ size &= 0x3f;
247
+ }
248
+
249
+ memcpy(ctx->buffer, data, size);
250
+ }
251
+
252
+ #define OUT(dst, src) \
253
+ (dst)[0] = (unsigned char)(src); \
254
+ (dst)[1] = (unsigned char)((src) >> 8); \
255
+ (dst)[2] = (unsigned char)((src) >> 16); \
256
+ (dst)[3] = (unsigned char)((src) >> 24);
257
+
258
+ void MD5_Final(unsigned char *result, MD5_CTX *ctx)
259
+ {
260
+ unsigned long used, available;
261
+
262
+ used = ctx->lo & 0x3f;
263
+
264
+ ctx->buffer[used++] = 0x80;
265
+
266
+ available = 64 - used;
267
+
268
+ if (available < 8) {
269
+ memset(&ctx->buffer[used], 0, available);
270
+ body(ctx, ctx->buffer, 64);
271
+ used = 0;
272
+ available = 64;
273
+ }
274
+
275
+ memset(&ctx->buffer[used], 0, available - 8);
276
+
277
+ ctx->lo <<= 3;
278
+ OUT(&ctx->buffer[56], ctx->lo)
279
+ OUT(&ctx->buffer[60], ctx->hi)
280
+
281
+ body(ctx, ctx->buffer, 64);
282
+
283
+ OUT(&result[0], ctx->a)
284
+ OUT(&result[4], ctx->b)
285
+ OUT(&result[8], ctx->c)
286
+ OUT(&result[12], ctx->d)
287
+
288
+ memset(ctx, 0, sizeof(*ctx));
289
+ }
290
+
291
+ #endif
@@ -0,0 +1,45 @@
1
+ /*
2
+ * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
3
+ * MD5 Message-Digest Algorithm (RFC 1321).
4
+ *
5
+ * Homepage:
6
+ * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
7
+ *
8
+ * Author:
9
+ * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
10
+ *
11
+ * This software was written by Alexander Peslyak in 2001. No copyright is
12
+ * claimed, and the software is hereby placed in the public domain.
13
+ * In case this attempt to disclaim copyright and place the software in the
14
+ * public domain is deemed null and void, then the software is
15
+ * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
16
+ * general public under the following terms:
17
+ *
18
+ * Redistribution and use in source and binary forms, with or without
19
+ * modification, are permitted.
20
+ *
21
+ * There's ABSOLUTELY NO WARRANTY, express or implied.
22
+ *
23
+ * See md5.c for more information.
24
+ */
25
+
26
+ #ifdef HAVE_OPENSSL
27
+ #include <openssl/md5.h>
28
+ #elif !defined(_MD5_H)
29
+ #define _MD5_H
30
+
31
+ /* Any 32-bit or wider unsigned integer data type will do */
32
+ typedef unsigned int MD5_u32plus;
33
+
34
+ typedef struct {
35
+ MD5_u32plus lo, hi;
36
+ MD5_u32plus a, b, c, d;
37
+ unsigned char buffer[64];
38
+ MD5_u32plus block[16];
39
+ } MD5_CTX;
40
+
41
+ extern void MD5_Init(MD5_CTX *ctx);
42
+ extern void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
43
+ extern void MD5_Final(unsigned char *result, MD5_CTX *ctx);
44
+
45
+ #endif
@@ -32,18 +32,13 @@ CC = gcc
32
32
  CFLAGS += -DUSE_FILE32API
33
33
  endif
34
34
 
35
- # Fix for modified zconf.h on Gentoo.
36
- ifneq (,$(findstring gentoo, $(UNAME)))
37
- CFLAGS += -DOF=_Z_OF
38
- endif
39
-
40
35
  all: ioapi.o zip.o ioapi.so zip.so
41
36
 
42
37
  %.o : %.c
43
- $(Q)$(CC) -c $(CFLAGS) $<
38
+ $(Q)$(CC) -c $(CFLAGS) $(TARGET_ARCH) $<
44
39
 
45
40
  %.so : %.c
46
- $(Q)$(CC) $(FPIC) -c $(CFLAGS) $< -o $@
41
+ $(Q)$(CC) $(FPIC) -c $(CFLAGS) $(TARGET_ARCH) $< -o $@
47
42
 
48
43
  clean:
49
- $(Q)/bin/rm -f *.o *.so
44
+ $(Q)rm -f *.o *.so
@@ -1,5 +1,5 @@
1
1
  CC=cc
2
- CFLAGS=-O -I../..
2
+ CFLAGS := $(CFLAGS) -O -I../..
3
3
 
4
4
  UNZ_OBJS = miniunz.o unzip.o ioapi.o ../../libz.a
5
5
  ZIP_OBJS = minizip.o zip.o ioapi.o ../../libz.a
@@ -16,10 +16,14 @@ minizip: $(ZIP_OBJS)
16
16
  $(CC) $(CFLAGS) -o $@ $(ZIP_OBJS)
17
17
 
18
18
  test: miniunz minizip
19
- ./minizip test readme.txt
19
+ @rm -f test.*
20
+ @echo hello hello hello > test.txt
21
+ ./minizip test test.txt
20
22
  ./miniunz -l test.zip
21
- mv readme.txt readme.old
23
+ @mv test.txt test.old
22
24
  ./miniunz test.zip
25
+ @cmp test.txt test.old
26
+ @rm -f test.*
23
27
 
24
28
  clean:
25
- /bin/rm -f *.o *~ minizip miniunz
29
+ /bin/rm -f *.o *~ minizip miniunz test.*
@@ -1,5 +1,5 @@
1
1
 
2
- MiniZip 1.1 was derrived from MiniZip at version 1.01f
2
+ MiniZip 1.1 was derived from MiniZip at version 1.01f
3
3
 
4
4
  Change in 1.0 (Okt 2009)
5
5
  - **TODO - Add history**
@@ -1,7 +1,7 @@
1
1
  # -*- Autoconf -*-
2
2
  # Process this file with autoconf to produce a configure script.
3
3
 
4
- AC_INIT([minizip], [1.2.8], [bugzilla.redhat.com])
4
+ AC_INIT([minizip], [1.3.0], [bugzilla.redhat.com])
5
5
  AC_CONFIG_SRCDIR([minizip.c])
6
6
  AM_INIT_AUTOMAKE([foreign])
7
7
  LT_INIT
@@ -32,12 +32,12 @@
32
32
  /***********************************************************************
33
33
  * Return the next byte in the pseudo-random sequence
34
34
  */
35
- static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
36
- {
35
+ static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab) {
37
36
  unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an
38
37
  * unpredictable manner on 16-bit systems; not a problem
39
38
  * with any known compiler so far, though */
40
39
 
40
+ (void)pcrc_32_tab;
41
41
  temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
42
42
  return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
43
43
  }
@@ -45,8 +45,7 @@ static int decrypt_byte(unsigned long* pkeys, const z_crc_t* pcrc_32_tab)
45
45
  /***********************************************************************
46
46
  * Update the encryption keys with the next byte of plain text
47
47
  */
48
- static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
49
- {
48
+ static int update_keys(unsigned long* pkeys, const z_crc_t* pcrc_32_tab, int c) {
50
49
  (*(pkeys+0)) = CRC32((*(pkeys+0)), c);
51
50
  (*(pkeys+1)) += (*(pkeys+0)) & 0xff;
52
51
  (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1;
@@ -62,8 +61,7 @@ static int update_keys(unsigned long* pkeys,const z_crc_t* pcrc_32_tab,int c)
62
61
  * Initialize the encryption keys and the random header according to
63
62
  * the given password.
64
63
  */
65
- static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcrc_32_tab)
66
- {
64
+ static void init_keys(const char* passwd, unsigned long* pkeys, const z_crc_t* pcrc_32_tab) {
67
65
  *(pkeys+0) = 305419896L;
68
66
  *(pkeys+1) = 591751049L;
69
67
  *(pkeys+2) = 878082192L;
@@ -77,24 +75,23 @@ static void init_keys(const char* passwd,unsigned long* pkeys,const z_crc_t* pcr
77
75
  (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab)))
78
76
 
79
77
  #define zencode(pkeys,pcrc_32_tab,c,t) \
80
- (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c))
78
+ (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), (Byte)t^(c))
81
79
 
82
80
  #ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED
83
81
 
84
82
  #define RAND_HEAD_LEN 12
85
83
  /* "last resort" source for second part of crypt seed pattern */
86
84
  # ifndef ZCR_SEED2
87
- # define ZCR_SEED2 3141592654UL /* use PI as default pattern */
85
+ # define ZCR_SEED2 3141592654UL /* use PI as default pattern */
88
86
  # endif
89
87
 
90
- static int crypthead(const char* passwd, /* password string */
91
- unsigned char* buf, /* where to write header */
92
- int bufSize,
93
- unsigned long* pkeys,
94
- const z_crc_t* pcrc_32_tab,
95
- unsigned long crcForCrypting)
96
- {
97
- int n; /* index in random header */
88
+ static unsigned crypthead(const char* passwd, /* password string */
89
+ unsigned char* buf, /* where to write header */
90
+ int bufSize,
91
+ unsigned long* pkeys,
92
+ const z_crc_t* pcrc_32_tab,
93
+ unsigned long crcForCrypting) {
94
+ unsigned n; /* index in random header */
98
95
  int t; /* temporary */
99
96
  int c; /* random byte */
100
97
  unsigned char header[RAND_HEAD_LEN-2]; /* random header */