First steps towards supporting W32.
[gnupg.git] / tools / ChangeLog
1 2007-06-06  Werner Koch  <wk@g10code.com>
2
3         * Makefile.am (bin_PROGRAMS) [W32]: Do not build gpgparsemail.
4
5         * gpgconf-comp.c [W32]: Do not include pwd.h and grp.h.
6         (key_matches_user_or_group) [W32]: For now always return false.
7
8         * symcryptrun.c (i18n_init): Remove.
9         * gpgconf.c (i18n_init): Remove.
10         * gpg-connect-agent.c (i18n_init): Remove.
11
12 2007-05-19  Marcus Brinkmann  <marcus@g10code.de>
13
14         * symcryptrun.c (confucius_get_pass): Free ORIG_CODESET on error.
15
16 2007-05-08  Werner Koch  <wk@g10code.com>
17
18         * sockprox.c: New.  It needs to be build manually. By Moritz
19         Schulte.
20
21 2007-04-20  Werner Koch  <wk@g10code.com>
22
23         * symcryptrun.c (my_gcry_logger): Removed.
24         (main): Call setup_libgcrypt_logging.
25
26 2007-04-03  Werner Koch  <wk@g10code.com>
27
28         * gpgconf-comp.c: Allow changing of --allow-mark-trusted.
29
30         * gpg-connect-agent.c (main): New option --decode and commands
31         decode and undecode.
32         (read_and_print_response): Implement option.
33
34 2007-03-20  Werner Koch  <wk@g10code.com>
35
36         * gpgconf-comp.c (gc_options_gpgsm): Add p12-charset.
37
38 2007-03-07  Werner Koch  <wk@g10code.com>
39
40         * applygnupgdefaults: New.
41         * Makefile.am (sbin_SCRIPTS): Add it
42
43 2007-03-06  Werner Koch  <wk@g10code.com>
44
45         * gpgconf-comp.c: Include pwd.h and grp.h.
46         (GC_OPT_FLAG_NO_CHANGE): New.
47         (gc_component_change_options): Implement it.
48         (gc_options_gpg_agent): Add options for all ttl values and
49         min-passphrase-length.  Apply new flag to some of them.
50         (gc_process_gpgconf_conf, key_matches_user_or_group): New.
51         (gc_component_change_options): Factor some code out to ..
52         (change_one_value): .. new. 
53         (gc_component_retrieve_options): Allow -1 for COMPONENT to iterate
54         over al components.
55         * gpgconf.c (main): New commands --check-config and
56         --apply-defaults.  Call gc_process_gpgconf_conf.
57
58 2007-01-31  Werner Koch  <wk@g10code.com>
59
60         * Makefile.am (symcryptrun_LDADD): Add LIBICONV.
61         (gpgkey2ssh_LDADD): Ditto.
62
63 2006-12-13  David Shaw  <dshaw@jabberwocky.com>
64
65         * Makefile.am (gpgsplit_LDADD): Link to LIBINTL if we're using the
66         built-in code.
67
68 2006-12-07  David Shaw  <dshaw@jabberwocky.com>
69
70         * Makefile.am: Link to iconv for jnlib dependency.
71
72 2006-11-23  Werner Koch  <wk@g10code.com>
73
74         * Makefile.am (gpg_connect_agent_LDADD): Add NETLIBS.
75
76 2006-11-21  Werner Koch  <wk@g10code.com>
77
78         * gpgconf-comp.c (list_one_option): Cast print size_t arg.
79
80 2006-11-17  Werner Koch  <wk@g10code.com>
81
82         * gpgconf-comp.c: Made disable-keypad a basic option.
83
84 2006-11-03  Werner Koch  <wk@g10code.com>
85
86         * symcryptrun.c: Include signal.h and include pth.h only if test
87         asserts that it exists.
88
89 2006-10-23  Werner Koch  <wk@g10code.com>
90
91         * gpgconf-comp.c <gpgsm>: Add --cipher-algo.
92
93 2006-10-20  Werner Koch  <wk@g10code.com>
94
95         * gpgsm-gencert.sh: Enhanced the main menu. 
96
97 2006-10-12  Werner Koch  <wk@g10code.com>
98
99         * Makefile.am (gpg-zip, gpgsplit): Do not install due to a
100         conflict with gpg1.
101
102 2006-10-11  Werner Koch  <wk@g10code.com>
103
104         * gpgsm-gencert.sh: Allow generation of card keys.
105
106 2006-10-08  Werner Koch  <wk@g10code.com>
107
108         * Makefile.am (gpgkey2ssh_LDADD): Add LIBINTL. Suggested by
109         Andreas Metzler.
110
111 2006-09-22  Werner Koch  <wk@g10code.com>
112
113         * no-libgcrypt.c: Changed license to a simple all permissive one.
114
115 2006-09-20  Werner Koch  <wk@g10code.com>
116
117         * Makefile.am: Changes to allow parallel make runs.
118
119 2006-09-12  Werner Koch  <wk@g10code.com>
120
121         Replaced all call gpg_error_from_errno(errno) by
122         gpg_error_from_syserror().
123
124         * gpg-connect-agent.c (read_and_print_response): With verbosity
125         level 2 also print comment lines.
126
127 2006-09-06  Werner Koch  <wk@g10code.com>
128
129         * gpg-connect-agent.c: Switch everything to new Assuan error code
130         style.
131
132         * no-libgcrypt.c (out_of_core): Reanmed to ...
133         (out_of_memory): .. this to avoid name clash with util.h.
134
135 2006-08-21  Werner Koch  <wk@g10code.com>
136
137         * gpgsplit.c: New. Taken from 1.4. Adjusted to GnuPG2.
138
139         * Makefile.am (noinst_PROGRAMS): New.
140
141 2006-06-09  Marcus Brinkmann  <marcus@g10code.de>
142
143         * Makefile.am (gpgconf_LDADD): Add $(GPG_ERROR_LIBS).
144         (gpgkey2ssh_LDADD): Add ../jnlib/libjnlib.a.
145
146 2006-05-23  Werner Koch  <wk@g10code.com>
147
148         * gpgparsemail.c: Include config.h if available
149         (stpcpy): Conditional include it.
150
151         * gpgconf-comp.c (hextobyte): Removed as it is now availble in
152         jnlib.
153
154 2005-12-20  Werner Koch  <wk@g10code.com>
155
156         * gpgconf-comp.c (gc_options_gpg): Add allow-pka-lookup.
157
158 2005-12-14  Werner Koch  <wk@g10code.com>
159
160         * Makefile.am (bin_PROGRAMS): Build gpgparsemail.
161
162         * gpgparsemail.c (pkcs7_begin): New.
163         (parse_message, message_cb): Add support of direct pkcs signatures.
164
165 2005-10-19  Werner Koch  <wk@g10code.com>
166
167         * gpgconf-comp.c (gc_options_scdaemon): New option --disable-keypad.
168
169 2005-09-22  Werner Koch  <wk@g10code.com>
170
171         * rfc822parse.c (parse_field): Tread Content-Disposition special.
172
173 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
174
175         * Makefile.am (watchgnupg_LDADD): New variable.
176
177         * Makefile.am (gpgconf_LDADD): Add ../gl/libgnu.a after
178         ../common/libcommon.a.
179         (symcryptrun_LDADD, gpg_connect_agent_LDADD, gpgkey2ssh_LDADD):
180         Likewise.
181
182 2005-09-29  Marcus Brinkmann  <marcus@g10code.de>
183
184         * Makefile.am (AM_CFLAGS): Add $(LIBGCRYPT_CFLAGS).
185
186 2005-09-06  Werner Koch  <wk@g10code.com>
187
188         * rfc822parse.c, rfc822parse.h:  Changed license to LGPL.
189
190 2005-08-01  Werner Koch  <wk@g10code.com>
191
192         * gpgsm-gencert.sh: Allow entering a keygrip to generate a CSR from
193         an existing key.
194
195 2005-07-21  Werner Koch  <wk@g10code.com>
196
197         * gpgsm-gencert.sh: Reworked to allow for multiple email addresses
198         as well as DNsanmes and URi.  Present the parameter file before
199         creating the certificate.
200
201 2005-07-04  Marcus Brinkmann  <marcus@g10code.de>
202
203         * symcryptrun.c (SYMC_BAD_PASSPHRASE, SYMC_CANCELED): New symbols,
204         use instead constants.
205         (hash_string): New function copied from simple-gettext.c.
206         (confucius_get_pass): Take new argument CACHEID.
207         (confucius_process): Calculate cacheid and pass it to
208         confucius_get_pass.  Clear passphrase from cache if necessary.
209
210 2005-06-16  Werner Koch  <wk@g10code.com>
211
212         * gpg-connect-agent.c (read_and_print_response): Made LINELEN a
213         size_t.
214
215 2005-06-04  Marcus Brinkmann  <marcus@g10code.de>
216
217         * symcryptrun.c (main): Allow any number of arguments, don't use
218         first argument as input file name.  Pass extra arguments to
219         confucius_main.
220         (confucius_main): Accept new arguments argc and argv and pass them
221         to confucius_process.
222         (confucius_process): Accept new arguments argc and argv and pass
223         them to the confucius process.
224
225 2005-06-01  Werner Koch  <wk@g10code.com>
226
227         * symcryptrun.c: Include mkdtemp.h. 
228
229 2005-05-31  Werner Koch  <wk@g10code.com>
230
231         * watchgnupg.c: Make sure that PF_LCOAL and AF_LOCAL are defines.
232         Noted by Ray Link.
233
234 2005-05-28  Moritz Schulte  <moritz@g10code.com>
235
236         * gpgkey2ssh.c: New file.
237         * Makefile.am (bin_PROGRAMS): Added gpgkey2ssh.
238
239 2005-05-20  Werner Koch  <wk@g10code.com>
240
241         * gpg-connect-agent.c (add_definq, show_definq, clear_definq)
242         (handle_inquire): New.
243         (read_and_print_response): Handle INQUIRE command.
244         (main): Implement control commands.
245
246 2005-04-21  Werner Koch  <wk@g10code.com>
247
248         * symcryptrun.c (main): Optionally allow the input file as command
249         line argument.
250
251         * gpgconf-comp.c: Add gpgsm option disable-trusted-cert-crl-check.
252
253 2005-04-20  Werner Koch  <wk@g10code.com>
254
255         * gpgconf-comp.c: Add gpg-agent:disable-scdaemon.
256
257 2005-04-19  Marcus Brinkmann  <marcus@g10code.de>
258
259         * symcryptrun.c: Add --input option.
260
261 2005-04-15  Marcus Brinkmann  <marcus@g10code.de>
262
263         * symcryptrun.c (TEMP_FAILURE_RETRY): Define if not defined.
264
265         * symcryptrun.c (remove_file): New function.
266         (confucius_copy_file): Accept new argument PLAIN and shred the
267         file if it is set on error.
268
269         * Makefile.am: Define symcryptrun make variable depending on
270         BUILD_SYMCRYPTUN.
271         (bin_PROGRAMS): Add ${symcryptrun} instead symcryptrun.
272         (symcryptrun_LDADD): Use $(LIBUTIL_LIBS) instead of -lutil.
273
274 2005-04-11  Werner Koch  <wk@g10code.com>
275
276         * symcryptrun.c (confucius_mktmpdir): Changed to use mkdtmp(3).
277
278 2005-04-11  Marcus Brinkmann  <marcus@g10code.de>
279
280         * symcryptrun.c: Implement config file parsing.
281         
282         * Makefile.am (bin_PROGRAMS): Add symcryptrun.
283         (symcryptrun_SOURCES, symcryptrun_LDADD): New variables.
284         * symcryptrun.c: New file.
285
286 2005-03-31  Werner Koch  <wk@g10code.com>
287
288         * gpg-connect-agent.c (start_agent): Use PATHSEP_C instead of ':'.
289
290 2005-03-09  Werner Koch  <wk@g10code.com>
291
292         * gpgconf-comp.c <dirmngr>: Add honor-http-proxy.
293
294 2005-02-25  Werner Koch  <wk@g10code.com>
295
296         * no-libgcrypt.c (gcry_strdup): New.
297
298 2005-02-24  Werner Koch  <wk@g10code.com>
299
300         * gpg-connect-agent.c: New.
301         * Makefile.am: Add it. 
302
303 2004-12-21  Werner Koch  <wk@g10code.com>
304
305         * gpgconf-comp.c (get_config_pathname) [DOSISH]: Detect absolute
306         pathnames with a drive letter.
307
308 2004-12-15  Werner Koch  <wk@g10code.com>
309
310         * Makefile.am (bin_PROGRAMS) [W32]: Do not build watchgnupg.
311
312         * gpgconf-comp.c (gpg_agent_runtime_change) [W32]: No way yet to
313         send a signal.  Disable.
314         (change_options_file, change_options_program) [W32]: No link(2),
315         so we disable it.
316         (gc_component_change_options): Use rename instead of link.
317
318 2004-12-13  Werner Koch  <wk@g10code.com>
319
320         * gpgconf-comp.c <ignore-ocsp-service-url>: Fixed typo.
321
322 2004-11-24  Werner Koch  <wk@g10code.com>
323
324         * gpgconf-comp.c <dirmngr>: Add --ignore-http-dp, --ignore-ldap-dp
325         and --ignore-ocsp-service-url.
326
327 2004-11-23  Werner Koch  <wk@g10code.com>
328
329         * gpgconf-comp.c <dirmngr>: Add the proxy options.
330         <gpgsm>: Add --prefer-system-daemon.
331
332 2004-11-11  Werner Koch  <wk@g10code.com>
333
334         * watchgnupg.c (main): Fixed test for read error.
335
336 2004-10-22  Werner Koch  <wk@g10code.com>
337
338         * Makefile.am (bin_SCRIPTS): Add gpgsm-gencert.sh
339
340         * gpgsm-gencert.sh: Fixed copyright; its part of GnuPG thus FSF.
341
342 2004-10-01  Werner Koch  <wk@g10code.com>
343
344         * gpgconf-comp.c: Made all strings for --log-file read the same.
345         
346 2004-10-01  Werner Koch  <wk@g10code.com>
347
348         * gpgconf-comp.c (my_dgettext): Also switch codeset and directory
349         for the other used domains (i.e. dirmngr).
350
351         * gpgconf.c (main): Fixed translation markers.
352
353 2004-09-30  Werner Koch  <wk@g10code.com>
354
355         * gpgconf.c (i18n_init): Always use LC_ALL.
356
357         * Makefile.am: Adjusted for gettext 0.14.
358
359 2004-09-29  Werner Koch  <wk@g10code.com>
360
361         * gpgconf-comp.c: Made the entries fro GROUPs translatable.
362         Include i18n.h.
363         (my_dgettext): Hack to use the gnupg2 domain.
364
365 2004-08-09  Moritz Schulte  <moritz@g10code.com>
366
367         * gpgsm-gencert.sh: New file.
368
369 2004-06-16  Werner Koch  <wk@gnupg.org>
370
371         * rfc822parse.c (rfc822parse_get_field): Add arg VALUEOFF.
372
373 2004-06-14  Werner Koch  <wk@gnupg.org>
374
375         * no-libgcrypt.c (gcry_realloc, gcry_xmalloc, gcry_xcalloc): New.
376
377         * gpgconf-comp.c (retrieve_options_from_program) 
378         (retrieve_options_from_file, change_options_file) 
379         (change_options_program, gc_component_change_options): Replaced
380         getline by read_line and test for allocation failure.
381
382 2004-05-21  Marcus Brinkmann  <marcus@g10code.de>
383
384         * gpgconf-comp.c (gc_options_dirmngr): Remove CRL group, put its
385         only option "max-replies" into LDAP group.
386         (gc_component): Change description of dirmngr to "Directory
387         Manager".
388
389         * gpgconf-comp.c (gc_component_change_options): Move the
390         per-process backup file into a standard location.
391
392 2004-05-03  Werner Koch  <wk@gnupg.org>
393
394         * gpgconf-comp.c: Add --allow-mark-trusted for the gpg-agent.
395
396 2004-04-30  Werner Koch  <wk@gnupg.org>
397
398         * gpgconf-comp.c: Added more runtime flags for the gpg-agent
399         backend.
400
401 2004-04-29  Marcus Brinkmann  <marcus@g10code.de>
402
403         * gpgconf-comp.c (change_options_program): Turn on utf8-strings in
404         the gpgconf specific part of the config file for the GnuPG
405         backend.
406
407 2004-04-28  Werner Koch  <wk@gnupg.org>
408
409         * gpgconf-comp.c: Add --ocsp-signer for the dirmngr backend.
410
411 2004-04-20  Marcus Brinkmann  <marcus@g10code.de>
412
413         * gpgconf-comp.c (gc_options_gpg_agent): Change type of
414         ignore-cache-for-signing option to GC_ARG_TYPE_NONE.
415
416 2004-04-07  Werner Koch  <wk@gnupg.org>
417
418         * gpgconf-comp.c (my_dgettext): Switch the codeset once to utf-8.
419         Allow building with out NLS.
420
421 2004-03-23  Marcus Brinkmann  <marcus@g10code.de>
422
423         * gpgconf-comp.c (gc_options_dirmngr): Set GC_OPT_FLAG_ARG_OPT for
424         "LDAP Server".
425         (change_options_file): Remove assertion that tests that this flag
426         is not present.  Handle an empty string in OPTION->new_value.
427
428         * gpgconf.c (main): Remove obsolete warning.
429
430 2004-03-23  Werner Koch  <wk@gnupg.org>
431
432         * gpgconf-comp.c (gc_options_gpg): New.
433         (gc_component_t, gc_component): Add GC_BACKEND_GPG.
434         (gc_options_dirmngr): Add allow-ocsp.
435
436 2004-03-23  Marcus Brinkmann  <marcus@g10code.de>
437
438         * gpgconf-comp.c (gc_flag): Add missing flags.
439
440         * gpgconf-comp.c: Include <signal.h>.
441         (gc_backend): Add new member runtime_change.
442         (gpg_agent_runtime_change): New function.
443         (gc_component_change_options): New variable runtime.  Initialize
444         it.  If an option is changed that has the GC_OPT_FLAG_RUNTIME bit
445         set, also set the corresponding runtime variable.  Finally, call
446         the runtime_change callback of the backend if needed.   
447
448 2004-03-16  Werner Koch  <wk@gnupg.org>
449
450         * gpgconf-comp.c (gc_options_gpg_agent): Implemented.
451         (gc_options_gpgsm, gc_options_scdaemon): Implemented.
452         (gc_backend_t): Add GC_BACKEND_SCDAEMON.
453
454 2004-03-12  Marcus Brinkmann  <marcus@g10code.de>
455
456         * gpgconf-comp.c (gc_component_change_options): Set the filenames
457         of the option's backend, not of the component.
458         Also use GC_BACKEND_NR, not GC_COMPONENT_NR.
459
460 2004-03-09  Werner Koch  <wk@gnupg.org>
461
462         * gpgconf-comp.c [_riscos_]: Removed special code for RISC OS; we
463         don't want to clutter our code with system dependent stuff.
464
465 2004-03-08  Marcus Brinkmann  <marcus@g10code.de>
466
467         * gpgconf-comp.c (retrieve_options_from_file): Quote each string
468         in the list, not only the first.
469
470 2004-02-26  Marcus Brinkmann  <marcus@g10code.de>
471
472         * gpgconf-comp.c (gc_component_list_options): Do not print empty
473         groups.
474
475         * gpgconf-comp.c (option_check_validity): Check if option is
476         active.
477         (change_options_file): Implement.
478
479         * gpgconf-comp.c (retrieve_options_from_program): Remove broken
480         string handling.
481
482         * gpgconf-comp.c (change_options_program): Support all types of
483         options, including list types.
484
485         * README.gpgconf: Fix description of arguments.
486         * gpgconf-comp.c (option_check_validity): Rewritten to properly
487         support optional arguments in lists.
488
489         * README.gpgconf: Add info about optional arg and arg type 0.
490         * gpgconf-comp.c (gc_component_change_options): Parse list of
491         arg type 0 options.
492         (option_check_validity): Add new argument NEW_VALUE_NR.  Perform
493         rigorous validity checks.
494         (change_options_program): Disable an option also if we have a new
495         value for it.
496
497 2004-02-25  Marcus Brinkmann  <marcus@g10code.de>
498
499         * gpgconf-comp.c (gc_component_list_options): Correct output for
500         lists of arg type none.
501         (struct gc_option): Add new member new_flags.
502         (option_check_validity): Check OPTION->new_flags beside
503         OPTION->new_value.  Add new argument FLAGS.
504         (gc_component_change_options): Support default flag correctly.
505         (change_options_program): Likewise.
506
507 2004-02-24  Marcus Brinkmann  <marcus@g10code.de>
508
509         * README.gpgconf: Revert last change.  Add new flags "default",
510         "default desc" and "no arg desc".  Add new field ARGDEF.  Add new
511         field FLAG to backend interface.
512         * gpgconf-comp.c (struct gc_option): Make flags of type unsigned
513         long.
514         (gc_component_list_options): Adjust type for flags.
515         Add default argument field.
516         (retrieve_options_from_program): Use "1" as value for non-option
517         arguments, not "Y".
518         (gc_component_change_options): Read in flags from input.
519
520 2004-02-23  Marcus Brinkmann  <marcus@g10code.de>
521
522         * README.gpgconf: Change meaning of type 0 options value if it is
523         the empty string or "0".
524
525         * gpgconf.h (struct): Add member runtime.
526         * gpgconf.c: Add new option oRuntime.
527         (main): Same here.
528
529         * gpgconf-comp.c (hextobyte): New function.
530         (percent_deescape): New function.
531         (get_config_pathname): Percent deescape pathname if taken from
532         option (default) value.  Use default value only if it exists and
533         is not empty.  Use empty string otherwise.  Don't include leading
534         quote in pathname.
535         (change_options_program): Percent deescape string before writing
536         it out.
537         
538         * gpgconf-comp.c (gc_component_list_options): Do not skip groups
539         on output.
540
541 2004-02-18  Werner Koch  <wk@gnupg.org>
542
543         * gpgconf-comp.c: Added empty components for gpgsm and scdaemon.
544
545 2004-02-12  Werner Koch  <wk@gnupg.org>
546
547         * watchgnupg.c (main): Implement option "--".
548         (print_version): New.
549
550         * Makefile.am: Include cmacros.am for common flags.
551
552 2004-02-03  Werner Koch  <wk@gnupg.org>
553
554         * addgnupghome: Try to use getent, so that it also works for NIS
555         setups.
556
557 2004-01-31  Marcus Brinkmann  <marcus@g10code.de>
558
559         * gpgconf-comp.c: Some bug fixes, parse only defaults from the
560         program, and read the current values from the configuration file
561         directly.
562
563 2004-01-30  Marcus Brinkmann  <marcus@g10code.de>
564
565         * gpgconf-comp.c (gc_error): New function, use it instead of
566         error() throughout.
567
568         * gpgconf-comp.c: Use xmalloc, libcommon's asctimestamp and
569         gnupg_get_time, fix error() invocation and use getline()
570         consistently.
571         
572 2004-01-30  Werner Koch  <wk@gnupg.org>
573
574         * addgnupghome: Also set the group of copied files. 
575
576 2004-01-30  Werner Koch  <wk@gnupg.org>
577
578         * Makefile.am (sbin_SCRIPTS): New, to install addgnupghome.
579         (EXTRA_DIST): Added rfc822parse.c rfc822parse.h gpgparsemail.c
580         which might be useful for debugging.
581
582 2004-01-29  Werner Koch  <wk@gnupg.org>
583
584         * addgnupghome: New.
585
586 2004-01-29  Marcus Brinkmann  <marcus@g10code.de>
587
588         * gpgconf-list.c: File removed.
589         * README.gpgconf: New file.
590         * gpgconf-comp.c: New file.
591         * Makefile.am (gpgconf_SOURCES): Remove gpgconf-list.c, add
592         gpgconf-comp.c.
593
594 2004-01-16  Werner Koch  <wk@gnupg.org>
595
596         * watchgnupg.c (main): Need to use FD_ISSET for the client
597         descriptors too; aiiih.  Set the listening socket to non-blocking.
598
599 2004-01-10  Werner Koch  <wk@gnupg.org>
600
601         * Makefile.am: Use GPG_ERROR_CFLAGS
602         
603 2004-01-05  Werner Koch  <wk@gnupg.org>
604
605         * Manifest: New.
606         * gpgconf.c, gpgconf.h, gpgconf-list.c: New. A skeleton for now.
607         * no-libgcrypt.c: New.
608         * Makefile.am: Add above.
609
610 2003-12-23  Werner Koch  <wk@gnupg.org>
611
612         * Makefile.am: New.
613         * watchgnupg.c: New.
614
615
616  Copyright 2003, 2004, 2005 Free Software Foundation, Inc.
617
618  This file is free software; as a special exception the author gives
619  unlimited permission to copy and/or distribute it, with or without
620  modifications, as long as this notice is preserved.
621
622  This file is distributed in the hope that it will be useful, but
623  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
624  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.