1 2003-09-14 Marcus Brinkmann <marcus@g10code.de>
3 * gpg/t-thread1.c (main): Call init_gpgme here.
4 (initialize_gpgme): Function removed.
6 * gpg/t-thread1.c: New file.
7 * gpg/Makefile.am (TESTS): Add t-thread1.c.
8 (t_thread1_LDADD): New variable.
9 (LDADD): Remove GPG Error lib.
10 * gpgsm/Makefile.am (LDADD): Likewise.
12 * gpg/t-import.c (main): Likewise.
13 * gpg/t-keylist-sig.c (main): Likewise.
14 * gpg/t-keylist.c (main): Likewise.
15 * gpg/t-sign.c (main): Likewise.
16 * gpg/t-signers.c (main): Likewise.
17 * gpg/t-trustlist.c (main): Likewise.
18 * gpgsm/t-support.h: Include <stdlib.h> and <locale.h>.
19 (init_gpgme): New function.
20 * gpg/t-support.h: Likewise.
21 * gpgsm/t-verify.c (main): Call init_gpgme.
22 * gpgsm/t-decrypt.c (main): Likewise.
23 * gpgsm/t-encrypt.c (main): Likewise.
24 * gpgsm/t-export.c (main): Likewise.
25 * gpgsm/t-genkey.c (main): Likewise.
26 * gpgsm/t-import.c (main): Likewise.
27 * gpgsm/t-keylist.c (main): Likewise.
28 * gpgsm/t-sign.c (main): Likewise.
29 * gpg/t-verify.c (main): Call init_gpgme.
30 * gpg/t-decrypt-verify.c (main): Likewise.
31 * gpg/t-decrypt.c (main): Likewise.
32 * gpg/t-edit.c (main): Likewise.
33 * gpg/t-encrypt-sign.c (main): Likewise.
34 * gpg/t-encrypt-sym.c (main): Likewise.
35 * gpg/t-encrypt.c (main): Likewise.
36 * gpg/t-eventloop.c (main): Likewise.
37 * gpg/t-export.c (main): Likewise.
38 * gpg/t-genkey.c (main): Likewise.
40 2003-08-14 Marcus Brinkmann <marcus@g10code.de>
42 * gpg/t-sign.c (check_result): Change output format for signature
43 class to unsigned int.
44 * gpg/t-signers.c (check_result): Likewise.
45 * gpg/t-encrypt-sign.c (check_result): Likewise.
46 * gpgsm/t-sign.c (check_result): Likewise.
48 2003-07-31 Marcus Brinkmann <marcus@g10code.de>
50 * gpg/t-verify.c (check_result): Change type of SUMMARY to
52 * gpg/t-decrypt-verify.c (check_verify_result): Likewise.
53 * gpg/t-keylist-sig.c (keys): Change type of member CLASS to
55 * t-data.c (read_cb): Change type of AMOUNT to unsigned int.
56 * t-version.c (version): Remove unused variable.
58 2003-07-22 Marcus Brinkmann <marcus@g10code.de>
60 * Makefile.am (AM_CPPFLAGS): New variable.
61 (LDADD): Add @GPG_ERROR_LIBS@.
62 * gpg/Makefile.am (AM_CPPFLAGS): New variable.
63 (LDADD): Add @GPG_ERROR_LIBS@.
64 * gpgsm/Makefile.am (AM_CPPFLAGS): New variable.
65 (LDADD): Add @GPG_ERROR_LIBS@.
67 2003-06-06 Marcus Brinkmann <marcus@g10code.de>
69 Everywhere: Use libgpg-error error codes.
71 * gpg/Makefile.am (noinst_HEADERS): New variable.
72 * gpg/t-support.h: New file.
73 * gpgsm/Makefile.am (noinst_HEADERS): New variable.
74 * gpgsm/t-support.h: New file.
76 2003-05-29 Marcus Brinkmann <marcus@g10code.de>
78 * gpg/t-encrypt-sym.c (main): Adapt to new syntax.
79 * gpg/t-encrypt.c (main): Likewise.
80 * gpg/t-eventloop.c (main): Likewise.
81 * gpg/t-encrypt-sign.c (main): Likewise.
82 * gpgsm/t-export.c (main): Likewise.
83 * gpgsm/t-encrypt.c (main): Likewise.
85 2003-05-28 Marcus Brinkmann <marcus@g10code.de>
87 * gpg/t-eventloop.c (main): Rewrite recipient management.
88 * gpg/t-encrypt-sign.c (main): Likewise.
89 * gpg/t-encrypt.c (main): Likewise.
90 * gpg/t-export.c (main): Likewise.
91 * gpgsm/t-encrypt.c (main): Likewise.
92 * gpgsm/t-export.c (main): Likewise.
94 2003-05-27 Marcus Brinkmann <marcus@g10code.de>
96 * gpg/Makefile.am (TESTS): Order t-keylist and t-keylist-sig after
98 * gpg/t-edit.c (edit_fnc): Fix primary UID for keylisting tests.
99 * gpg/t-keylist.c: Change order of user IDs.
100 * gpg/t-keylist-sig.c: Likewise.
101 * gpg/t-import.c: Add support for gpg in CVS.
103 2003-05-27 Marcus Brinkmann <marcus@g10code.de>
105 * t-data.c: Remove TEST_OUT_CB.
107 * gpg/t-trustlist.c (main): Access ITEM directly.
109 * (t-decrypt-verify.c, t-decrypt.c, t-edit.c, t-encrypt-sign.c,
110 t-encrypt-sym.c, t-sign.c, t-signers.c): Include <unistd.h>.
111 (passphrase_cb): Rewritten.
112 * t-edit.c (edit_fnc): Rewritten.
114 2003-05-04 Marcus Brinkmann <marcus@g10code.de>
116 * gpg/t-keylist-sig.c (main): Remove timestamp check.
118 * gpgsm/t-keylist.c: Add check for timestamp.
120 * gpg/Makefile.am (TESTS): Add t-keylist-sig.
121 * gpg/t-keylist-sig.c: New file.
123 2003-04-30 Marcus Brinkmann <marcus@g10code.de>
125 * gpg/t-eventloop.c (main): Do not call print_op_info.
126 (print_op_info): Function removed.
128 * gpg/t-keylist.c: Rewritten.
129 * gpgsm/t-keylist.c (main): Rewritten.
130 * gpg/t-edit.c (main): Do not use gpgme_key_get_as_xml. Use
131 gpgme_key_unref instead gpgme_key_release.
132 * gpg/t-signers.c (main): Use gpgme_key_unref instead
135 2003-04-29 Marcus Brinkmann <marcus@g10code.de>
137 * gpg/t-trustlist.c: Rewritten.
139 * gpg/t-verify.c (main): Rewritten.
140 * gpg/t-decrypt-verify.c: Rewritten.
141 * gpgsm/t-verify.c (main): Rewritten.
143 2003-04-28 Marcus Brinkmann <marcus@g10code.de>
145 * gpgsm/t-decrypt.c (main): Rewritten.
147 * gpg/t-decrypt.c: Rewritten.
149 * gpg/t-signers.c: Rewritten.
151 2003-04-27 Marcus Brinkmann <marcus@g10code.de>
153 * gpg/t-encrypt-sign.c (check_result): Rewritten.
155 * gpg/t-sign.c: Rewritten.
156 * gpgsm/t-sign.c: Rewritten.
157 * gpg/t-encrypt.c: Check for invalid recipients.
158 * gpgsm/t-encrypt.c: Likewise.
160 * gpg/t-import.c (check_result): Really use FPR.
161 * gpgsm/t-import.c (check_result): Rewritten.
163 2003-04-25 Marcus Brinkmann <marcus@g10code.de>
165 * gpg/t-import.c: Rewritten.
167 * gpgsm/t-genkey.c: Rewritten.
168 * gpgsm/Makefile.am (noinst_PROGRAMS): Add t-genkey.
169 * gpg/t-genkey.c: Include <stdlib.h>.
170 (main): Check result->fpr before checking its length.
172 2003-04-24 Marcus Brinkmann <marcus@g10code.de>
174 * gpg/t-genkey.c: Rewritten to match new semantics.
176 2003-02-06 Marcus Brinkmann <marcus@g10code.de>
178 * gpg/t-decrypt.c (passphrase_cb): Fix to new prototype.
179 * gpg/t-decrypt-verify.c (passphrase_cb): Likewise.
180 * gpg/t-edit.c (passphrase_cb): Likewise.
181 * gpg/t-encrypt-sign.c (passphrase_cb): Likewise.
182 * gpg/t-encrypt-sym.c (passphrase_cb): Likewise.
183 * gpg/t-sign.c (passphrase_cb): Likewise.
184 * gpg/t-signers.c (passphrase_cb): Likewise.
186 2003-01-30 Marcus Brinkmann <marcus@g10code.de>
188 * t-engine-info.c: Use file_name instead path throughout.
190 * Makefile.am (TESTS): Add t-engine-info.
191 * t-engine-info.c: New file.
192 * gpg/t-encrypt.c (main): Don't print engine info.
193 * gpg/t-eventloop.c (main): Likewise.
194 * gpg/t-encrypt-sign.c (main): Likewise.
195 * gpgsm/t-encrypt.c (main): Likewise.
197 2002-12-24 Marcus Brinkmann <marcus@g10code.de>
199 * gpgsm/t-verify.c (main): Adjust caller of gpgme_op_verify.
200 * gpg/t-verify.c (main): Likewise.
201 * gpg/t-decrypt-verify.c (main): Likewise for
202 gpgme_op_decrypt_verify.
204 2002-12-23 Marcus Brinkmann <marcus@g10code.de>
206 * gpgsm/Makefile.am (./gpgsm.conf): Add a faked system time to
207 avoid certification's expiry.
208 * gpgsm/t-encrypt.c (main): Use the short certification name.
210 2002-11-19 Marcus Brinkmann <marcus@g10code.de>
212 * gpg/t-genkey.c (main): Add missing argument to gpgme_op_genkey
215 2002-10-09 Marcus Brinkmann <marcus@g10code.de>
217 * gpg/t-decrypt.c (print_data): Update to new gpgme_data_read
218 interface, and use gpgme_engine_check_version instead
220 * gpg/t-decrypt-verify.c (print_data): Likewise.
221 * gpg/t-edit.c (main): Likewise.
222 * gpg/t-encrypt.c (print_data): Likewise.
223 * gpg/t-encrypt-sign.c (print_data): Likewise.
224 * gpg/t-encrypt-sym.c (print_data): Likewise.
225 * gpg/t-eventloop.c (print_data): Likewise.
226 * gpg/t-export.c (print_data): Likewise.
227 * gpg/t-sign.c (print_data): Likewise.
228 * gpg/t-signers.c (print_data): Likewise.
229 * gpgsm/t-decrypt.c (print_data): Likewise.
230 * gpgsm/t-encrypt.c (print_data): Likewise.
231 * gpgsm/t-export.c (print_data): Likewise.
232 * gpgsm/t-sign.c (print_data): Likewise.
233 * gpg/t-verify.c (main): Likewise for gpgme_op_verify.
234 * gpgsm/t-verify.c (main): Likewise for gpgme_op_verify.
235 * t-data.c (read_once_test): Likewise.
236 (write_test): Update for new behaviour of data objects.
237 (main): Remove type test.
239 2002-09-30 Werner Koch <wk@gnupg.org>
241 * gpgsm/t-keylist.c (doit): Add arg SECRET.
242 (main): Add option --secret.
244 2002-09-28 Marcus Brinkmann <marcus@g10code.de>
246 * t-version.c: Include <string.h>. Reported by Stéphane Corthésy.
248 2002-09-02 Marcus Brinkmann <marcus@g10code.de>
250 * gpg/t-keylist.c (main): Test PATTERN for NULL before printing.
251 Reported by Dr. Stefan Dalibor <Dr.Stefan.Dalibor@bfa.de>.
253 2002-08-01 Marcus Brinkmann <marcus@g10code.de>
255 * gpg/t-edit.c: Also add a test for the expire command (testing
256 the passphrase callback).
258 2002-07-28 Marcus Brinkmann <marcus@g10code.de>
260 * gpg/t-edit.c: New file.
261 * gpg/Makefile (TESTS): Add t-edit.
263 2002-07-25 Marcus Brinkmann <marcus@g10code.de>
265 * gpg/t-encrypt-sym.c (main): Change type of I to size_t and
267 * gpg/t-verify.c (main): Likewise. Submitted by Stéphane
270 2002-07-03 Marcus Brinkmann <marcus@g10code.de>
272 * gpg/t-eventloop.c: New file.
273 * gpg/Makefile (TESTS): Add t-eventloop.
275 2002-06-26 Werner Koch <wk@gnupg.org>
277 * gpgsm/t-import.c (print_op_info): New.
278 (main): Print operation info.
280 2002-06-25 Werner Koch <wk@gnupg.org>
282 * gpgsm/Makefile.am (DISTCLEANFILES): new.
284 2002-06-25 Marcus Brinkmann <marcus@g10code.de>
286 * gpgsm/Makefile.am (TESTS): Add t-export.
287 gpgsm/t-export.c: New file.
289 2002-06-20 Werner Koch <wk@gnupg.org>
291 * gpgsm/t-sign.c (main): Also test a normal signature.
293 * gpg/Makefile (TESTS_ENVIRONMENT): Set GPG_AGENT_INFO empty.
294 * gpg/t-signers.c, gpg/t-sign.c, gpg/t-encrypt-sym.c
295 * gpg/t-encrypt-sign.c, gpg/t-decrypt.c
296 * gpg/t-decrypt-verify.c (main): Changed the GPG_AGENT_INFO check to
297 match the one in ../../gpgme/rungpg.c.
299 2002-06-12 Werner Koch <wk@gnupg.org>
301 * gpgsm/t-keylist.c (doit): Print operation info if available.
303 2002-06-10 Werner Koch <wk@gnupg.org>
305 * gpgsm/t-verify.c (print_sig_stat): Print the error token.
307 2002-06-04 Werner Koch <wk@gnupg.org>
309 * gpgsm/t-encrypt.c (main): Add a simple option parser and allow
310 to specify an encryption key.
312 2002-05-26 Marcus Brinkmann <marcus@g10code.de>
314 * gpg/Makefile.am (all-local): Remove dependency on ./secring.gpg.
315 (./secring.gpg): Remove target, and move all rules for this target
317 (./pubring.gpg): ... here. This was necessary because GnuPG 1.0.7
318 does create an empty secring.gpg file when importing public keys.
320 2002-05-08 Marcus Brinkmann <marcus@g10code.de>
322 * gpgsm/t-verify.c (validity_string): New.
323 (print_sig_stat): Print expire time and validity.
324 (status_string): Add new exipred stati.
326 2002-05-03 Werner Koch <wk@gnupg.org>
328 * gpg/t-verify.c (validity_string): New.
329 (print_sig_stat): Print expire time and validity.
330 (status_string): Add new exipred stati.
332 2002-04-05 Marcus Brinkmann <marcus@g10code,de>
334 * gpgsm/Makefile.am (./trustlist.txt): Put more into this file to
335 prevent use of gpg-agent.
336 (./gpg-agent.conf): Remove target.
337 (all-local): Remove ./gpg-agent.conf.
339 2002-04-05 Marcus Brinkmann <marcus@g10code.de>
341 * gpgsm/t-keylist.c (main): Use gpgme_engine_check_version instead
343 * gpgsm/t-encrypt.c (main): Likewise.
345 2002-03-06 Marcus Brinkmann <marcus@g10code.de>
347 * gpg/t-encrypt-sym.c: New file.
348 * gpg/Makefile.am (TESTS): Add t-encrypt-sym.
350 2002-03-05 Marcus Brinkmann <marcus@g10code.de>
352 * gpg/Makefile.am (CLEANFILES): Remove random_seed, which is now
355 2002-03-04 Werner Koch <wk@gnupg.org>
357 * gpg/Makefile.am (DISTCLEANFILES): Added.
359 2002-03-03 Marcus Brinkmann <marcus@g10code.de>
361 * gpg/t-verify.c (main): Add a few more sanity checks, and a check
362 for normal signatures.
364 2002-02-26 Marcus Brinkmann <marcus@g10code.de>
366 * gpg/t-encrypt-sign.c: New file.
367 * gpg/Makefile.am (TESTS): Add t-encrypt-sign.
369 2002-02-13 Werner Koch <wk@gnupg.org>
371 * gpgsm/Makefile.am (private-keys-v1.d): Don't
372 fail when the directory already exists.
374 2002-02-12 Marcus Brinkmann <marcus@g10code.de>
376 * gpg/Makefile.am (CLEANFILES): New target.
377 (distclean-local): Rename to ...
378 (clean-local): ... this.
380 2002-02-09 Marcus Brinkmann <marcus@g10code.de>
382 * gpgsm/Makefile.am (./private-keys-v1.d/$(key_id).key): Fix rule.
384 2002-02-09 Marcus Brinkmann <marcus@g10code.de>
386 * gpgsm/t-genkey.c: New file (not added to Makefile.am because of
389 2002-02-08 Marcus Brinkmann <marcus@g10code.de>
391 * gpgsm/Makefile.am (key_id): Update value.
392 (all-local): Add .key to keyid filename.
393 (./private-keys-v1.d/$(key_id)): Renamed to ...
394 (./private-keys-v1.d/$(key_id).key): ... this.
395 (all-local): Add ./gpgsm.conf, ./trustlist.txt.
396 (./gpgsm.conf, ./trustlist.txt): New target.
397 * gpgsm/567064FE6D14A17B2D811ABB407728BC558AA455: Renamed to ...
398 * gpgsm/32100C27173EF6E9C4E9A25D3D69F86D37A4F939: ... this.
400 2002-01-30 Marcus Brinkmann <marcus@g10code.de>
402 * gpg/t-import.c (print_op_info): New function.
405 2002-01-22 Marcus Brinkmann <marcus@g10code.de>
407 * gpg/t-signers.c (passphrase_cb): Change type of r_hd to void**.
408 * gpg/t-sign.c (passphrase_cb): Likewise.
409 * gpg/t-decrypt-verify.c (passphrase_cb): Likewise.
410 * gpg/t-decrypt.c (passphrase_cb): Likewise.
412 2001-12-19 Marcus Brinkmann <marcus@g10code.de>
414 * gpg/t-decrypt-verify.c: Don't include `mcheck.h'. Reported by
417 2001-12-19 Marcus Brinkmann <marcus@g10code.de>
419 * gpg/Makefile.am (EXTRA_DIST): Add missing line continuation.
421 2001-12-19 Marcus Brinkmann <marcus@g10code.de>
423 * gpgsm/Makefile.am (EXTRA_DIST): Add $(key_id).
425 2001-12-16 Marcus Brinkmann <marcus@g10code.de>
427 * gpgsm/Makefile: Rename `pubcerts.kbx' to `pubring.kbx'.
429 2001-12-15 Marcus Brinkmann <marcus@g10code.de>
431 * gpgsm/t-keylist.c (check_two_contexts): Set protocols.
433 2001-12-14 Marcus Brinkmann <marcus@g10code.de>
435 * gpgsm/t-sign.c: New file.
436 * gpgsm/Makefile.am (TESTS): Add t-sign.
438 2001-12-14 Marcus Brinkmann <marcus@g10code.de>
440 * gpgsm/t-decrypt.c: New file.
441 * gpgsm/567064FE6D14A17B2D811ABB407728BC558AA455: Likewise.
442 * gpgsm/Makefile.am (TESTS): Add t-decrypt.
443 (key_id): New variable.
444 (all-local): New target ./private-keys-v1.d/$(key_id) added.
445 (./private-keys-v1.d/$(key_id)): New target.
447 2001-12-14 Marcus Brinkmann <marcus@g10code.de>
449 * gpgsm/t-verify.c: New file.
450 * gpgsm/Makefile.am (TESTS): Add t-verify.
452 2001-12-14 Marcus Brinkmann <marcus@g10code.de>
454 * gpg/Makefile.am (GPG): Set to @GPG_PATH@.
455 (./pubring.gpg): Use $(GPG) instead gpg.
456 (./secring.gpg): Likewise.
458 * gpgsm/t-import.c (main): Remove third test case.
459 * gpgsm/Makefile.am (GPGSM): Set to @GPGSM@.
460 (all-local): New target.
461 (./pubcerts.kbx): Likewise.
462 * gpgsm/t-encrypt.c: New file.
463 * gpgsm/Makefile.am (TESTS): Add t-encrypt.
465 2001-12-14 Marcus Brinkmann <marcus@g10code.de>
467 * gpgsm/t-keylist.c: New file.
468 * gpgsm/Makefile.am (TESTS): Add t-keylist.
470 2001-12-13 Marcus Brinkmann <marcus@g10code.de>
472 * gpgsm/cert_dfn_pca01.der: New file.
473 * gpgsm/cert_dfn_pca15.der: Likewise.
474 * gpgsm/cert_g10code_test1.der: Likewise.
475 * gpgsm/t-import.c: Likewise.
476 * gpgsm/Makefile.am (EXTRADIST): Add new files.
477 (TESTS): Add t-import.
479 2001-11-22 Marcus Brinkmann <marcus@g10code.de>
481 * gpg/: New directory.
482 * Makefile.am, t-verify.c, t-encrypt.c, t-signers.c, t-trustlist.c,
483 t-sign.c, t-keylist.c, t-import.c, t-genkey.c, t-export.c,
484 t-decrypt-verify.c, t-decrypt.c, t-version.c, t-data.c, mkdemodirs.
485 cipher-1.asc, cipher-2.asc, geheim.txt, pubdemo.asc, pubkey-1.asc,
486 secdemo.asc, seckey-1.asc): Move to sub directory gpg/.
488 * gpg/Makefile.am (INCLUDES): Include gpgme/, not include/ and
490 (LDD): Correct relative path to gpgme library.
491 (TESTS): Remove t-version and t-data.
492 * gpg/t-verify.c, gpg/t-encrypt.c, gpg/t-signers.c, gpg/t-trustlist.c,
493 gpg/t-sign.c, gpg/t-keylist.c, gpg/t-import.c, gpg/t-genkey.c,
494 gpg/t-export.c, gpg/t-decrypt-verify.c, gpg/t-decrypt.c,
495 t-version.c, t-data.c): Include gpgme.h, not "../gpgme/gpgme.h".
497 * Makefile.am: New file.
498 * gpgsm/: New directory.
499 * gpgsm/Makefile.am: New file.
501 2001-11-16 Marcus Brinkmann <marcus@g10code.de>
503 * Makefile.am (TESTS): Add t-decrypt-verify.
504 * t-decrypt-verify.c: New file.
505 * cipher-2.asc: Likewise.
507 2001-11-02 Marcus Brinkmann <marcus@g10code.de>
509 * t-data.c: Include stddef.h.
510 (read_once_test): Change type of READ to size_t.
511 (read_test): Likewise.
512 (write_test): Likewise.
514 2001-10-29 Marcus Brinkmann <marcus@g10code.de>
516 * t-signers.c: New file.
517 * Makefile.am (TESTS): Add t-signers.
519 2001-10-22 Marcus Brinkmann <marcus@g10code.de>
521 * Makefile.am (TEST_ENVIRONMENT): Revert last change.
523 2001-10-22 Marcus Brinkmann <marcus@g10code.de>
525 * Makefile.am (TEST_ENVIRONMENT): Set environment to $(srcdir),
526 not current directory.
528 2001-10-22 Marcus Brinkmann <marcus@g10code.de>
530 * t-data.c (write_test): New function.
531 (main): Invoke write_test for all rounds except TEST_OUT_CB.
533 2001-10-22 Marcus Brinkmann <marcus@g10code.de>
535 * Makefile.am (INCLUDES): Remove spurious duplicate to silence
538 2001-10-16 Marcus Brinkmann <marcus@g10code.de>
540 * t-version.c: New file.
541 * t-data.c: Likewise.
542 * t-data-1.txt: Likewise.
543 * t-data-2.txt: Likewise.
544 * Makefile.am (TESTS): Add t-version, t-data.
546 2001-09-17 Werner Koch <wk@gnupg.org>
548 * t-keylist.c (check_two_contexts): New.
550 2001-09-03 Werner Koch <wk@gnupg.org>
552 * t-encrypt.c (print_op_info): New and use it after each operation..
554 2001-08-28 Werner Koch <wk@gnupg.org>
556 * t-sign.c (print_op_info): New and use it after each operation.
558 2001-03-15 Werner Koch <wk@gnupg.org>
560 * t-keylist.c (doit): List subkeys too, show caps.
562 2001-02-13 Werner Koch <wk@gnupg.org>
564 * t-verify.c (print_sig_stat): Repaled ulong by unsigned long
565 because we don't use the config stuff here.
567 2001-02-12 Werner Koch <wk@gnupg.org>
569 * tests/t-verify.c (print_sig_stat): Print info about the keys.
572 Copyright 2001 g10 Code GmbH
574 This file is free software; as a special exception the author gives
575 unlimited permission to copy and/or distribute it, with or without
576 modifications, as long as this notice is preserved.
578 This file is distributed in the hope that it will be useful, but
579 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
580 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.