The big Assuan error code removal.
[gnupg.git] / common / ChangeLog
1 2006-09-06  Werner Koch  <wk@g10code.com>
2
3         * maperror.c: Removed.
4
5         * util.h (out_of_core): New.
6
7 2006-09-04  Werner Koch  <wk@g10code.com>
8
9         * http.c (http_get_header): New.
10         (capitalize_header_name, store_header): New.
11         (parse_response): Store headers away.
12         (send_request): Return GPG_ERR_NOT_FOUND if connect_server failed.
13         * http.h: New flag HTTP_FLAG_NEED_HEADER.
14
15 2006-08-21  Werner Koch  <wk@g10code.com>
16
17         * Makefile.am (libcommon_a_SOURCES): Added keyserver.h
18
19         * openpgpdefs.h: New.  Stripped from ..g10/packet.h.
20
21 2006-08-16  Werner Koch  <wk@g10code.com>
22
23         * keyserver.h: Moved from ../include to here.
24
25         * http.c: Include srv.h.
26
27         * srv.c, srv.h: New. Taken from GnuPG 1.4
28
29 2006-08-14  Werner Koch  <wk@g10code.com>
30
31         * http.h (struct http_context_s): Moved to implementation.
32         * http.c (http_open): Changed call to return a context.
33         (http_open_document): Ditto.
34         (http_get_read_ptr, http_get_read_ptr, http_get_status_code): New.
35         (do_parse_uri): Replaced strlwr by straight code to ease
36         standalone use of this file.
37         (http_wait_response): Removed arg STATUS_CODE as it is available
38         through an accessor function. Adjusted caller.
39         (http_escape_string): New.
40
41         * estream.c (es_read_line): Renamed to ..
42         (doreadline): .. this.  Changed all callers.
43         (es_read_line): New.  This is theusual limited getline variabnt as
44         used at several places.  Here taken and adjusted from xreadline.c
45         (es_free): New.
46
47 2006-08-11  Werner Koch  <wk@g10code.com>
48
49         * http.c: Major internal changes to optionallly support GNUTLS and
50         ESTREAM.
51         (http_open): Move initialization of the stream ...
52         (send_request): .. here.
53         (http_register_tls_callback): New.
54
55         * estream.c (es_writen): Try to seek only is a seek function has
56         been registered.
57
58 2006-08-09  Werner Koch  <wk@g10code.com>
59
60         * http.c, http.h: New.  Taken from gnupg 1.4.5, merged with
61         changes done for the Dirmngr project (by g10 Code) and cleaned up
62         some stuff.
63         (make_header_line): New. Change all caller to make user of the new
64         * Makefile.am (libcommon_a_SOURCES): Added http.c and http.h.
65
66 2006-05-23  Werner Koch  <wk@g10code.com>
67
68         * gettime.c (isotimestamp): New.
69
70         * ttyio.c (tty_get_ttyname): Posixly correct usage of ctermid.
71
72         * dns-cert.c: New.  Taken from 1.4.3's util/cert.c.
73         * dns-cert.h: New.
74
75 2006-05-22  Werner Koch  <wk@g10code.com>
76
77         * pka.c: New. Taked from 1.4.3.
78         * pka.h: New.
79         * Makefile.am: Added pka.
80
81 2006-05-19  Werner Koch  <wk@g10code.com>
82
83         * yesno.c (answer_is_yes_no_default, answer_is_yes_no_quit):
84         Updated from 1.4.3.
85         (answer_is_okay_cancel): new.  From 1.4.3.
86
87         * miscellaneous.c (match_multistr): New.  Taken from 1.4.3.
88
89         * ttyio.c (tty_enable_completion, tty_disable_completion): New
90         dummy functions.
91         * ttyio.h: Add prototypes and stubs.
92
93 2006-04-19  Werner Koch  <wk@g10code.com>
94
95         * iobuf.c (iobuf_get_fd): New.  Taken from 1.4.3.
96         (iobuf_is_pipe_filename): New.
97         (pop_filter): Made static.
98         (iobuf_skip_rest): New.  Orginal patch by Florian
99         Weimer.  Added new argument PARTIAL.
100         (block_filter): Remove the old gpg indeterminate length mode.
101         (block_filter): Properly handle a partial body stream
102         that ends with a 5-byte length that happens to be zero.
103         (iobuf_set_block_mode, iobuf_in_block_mode): Removed as
104         superfluous.
105         (iobuf_get_filelength): New arg OVERFLOW.
106         (iobuf_get_filelength) [W32]: Use GetFileSizeEx if available
107         * miscellaneous.c (is_file_compressed): Take care of OVERFLOW.
108
109 2006-04-18  Werner Koch  <wk@g10code.com>
110
111         * homedir.c (w32_shgetfolderpath): New.  Taken from gpg 1.4.3.
112         (default_homedir): Use it.
113
114 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
115
116         * signal.c (get_signal_name): Check value of HAVE_DECL_SYS_SIGLIST
117         instead of just if it is defined.
118
119 2005-09-28  Marcus Brinkmann  <marcus@g10code.de>
120
121         * Makefile.am (AM_CFLAGS): Add $(LIBASSUAN_CFLAGS).
122
123 2005-07-04  Marcus Brinkmann  <marcus@g10code.de>
124
125         * simple-pwquery.h (simple_pwclear): New prototype.
126         * simple-pwquery.c (simple_pwclear): New function.
127
128 2005-06-15  Werner Koch  <wk@g10code.com>
129
130         * miscellaneous.c (make_printable_string): Made P a void*.
131
132         * sexputil.c (keygrip_from_canon_sexp, cmp_simple_canon_sexp):
133         Fixed signed/unsigned pointer mismatch.
134         (make_simple_sexp_from_hexstr): Ditto.  This is all too ugly; I
135         wonder why gcc-4's default is to warn about them and forcing us to
136         use cast the warning away.
137         * iobuf.c (block_filter): Ditto.
138         (iobuf_flush): Ditto.
139         (iobuf_read_line): Ditto.
140         (iobuf_read): Make BUFFER a void *.
141         (iobuf_write): Make BUFFER a const void *.
142         * ttyio.c (tty_print_utf8_string2): Ditto.
143         * estream.c (estream_cookie_mem): Make MEMORY unsigned char*.
144         (es_write): Make BUFFER a void *.
145         (es_writen): Ditto.
146         (es_func_fd_read, es_func_fd_write, es_func_mem_read) 
147         (es_func_mem_write): Ditto.
148         (es_read, es_readn): Ditto.
149         (es_func_mem_write): Made MEMORY_NEW an unsigned char *.
150         * estream.h (es_cookie_read_function_t)
151         (es_cookie_write_function_t): Changed buffer arg to void*.
152
153 2005-06-03  Werner Koch  <wk@g10code.com>
154
155         * estream.c: Use HAVE_CONFIG_H and not USE_CONFIG_H!
156         (es_func_fd_read, es_func_fd_write): Protect against EINTR.
157         
158 2005-06-01  Werner Koch  <wk@g10code.com>
159
160         * Makefile.am (AM_CPPFLAGS): Added.
161
162         * util.h: Add some includes for gnulib.
163         (ttyname, isascii): Define them inline.
164         * fseeko.c, ftello.c: Removed.
165         * strsep.c, mkdtemp.c: Removed.
166         * ttyname.c, isascii.c: Removed.
167
168 2005-05-31  Werner Koch  <wk@g10code.com>
169
170         * dynload.h: s/__inline__/inline/.
171
172 2005-05-13  Werner Koch  <wk@g10code.com>
173
174         * signal.c (got_fatal_signal): Print the signal number if we can't
175         get a name for it.
176         (get_signal_name): Return NULL if no name is available. Fixed
177         conditional for sys_siglist to the correct one.
178
179 2005-04-17  Werner Koch  <wk@g10code.com>
180
181         * sexputil.c (cmp_simple_canon_sexp): New.
182         (make_simple_sexp_from_hexstr): New.
183
184 2005-04-07  Werner Koch  <wk@g10code.com>
185
186         * sexputil.c: New.
187
188 2005-04-11  Marcus Brinkmann  <marcus@g10code.de>
189
190         * simple-pwquery.c (simple_pwquery): Use spwq_secure_free.
191
192 2005-03-03  Werner Koch  <wk@g10code.com>
193
194         * Makefile.am (AM_CFLAGS): Added PTH_CFLAGS.  Noted by Kazu Yamamoto.
195
196 2005-02-25  Werner Koch  <wk@g10code.com>
197
198         * xasprintf.c (xtryasprintf): New.
199
200 2005-01-26  Moritz Schulte  <moritz@g10code.com>
201
202         * Makefile.am (libcommon_a_SOURCES): New source files: estream.c,
203         estream.h.
204         * estream.c, estream.h: New files.
205
206 2005-01-03  Werner Koch  <wk@g10code.com>
207
208         * asshelp.c (send_pinentry_environment): Fixed changed from
209         2004-12-18; cut+paste error for lc-messages.
210
211 2004-12-21  Werner Koch  <wk@g10code.com>
212
213         * simple-pwquery.c (agent_open) [W32]: Implement for W32.
214         (readline) [W32]: Use recv instead of read.
215         (writen) [W32]: Use send instead of write.
216         (my_stpcpy): Define a stpcpy replacement so that this file
217         continues to be self-contained.
218         (agent_send_all_options) [W32]: Don't call ttyname.
219
220 2004-12-21  Marcus Brinkmann  <marcus@g10code.de>
221
222         * simple-pwquery.h (simple_query): Add prototype.
223         * simple-pwquery.c (simple_query): New function.
224
225 2004-12-21  Werner Koch  <wk@g10code.com>
226
227         * signal.c (got_fatal_signal, got_usr_signal)
228         (got_fatal_signal) [DOSISH]: Don't build.
229         * simple-gettext.c: Include sysutils.h 
230
231         * homedir.c: New. Use CSIDL_APPDATA for W32 as the default home
232         directory.
233         * Makefile.am (libcommon_a_SOURCES): Add it.
234         (EXTRA_DIST): Removed mkerror and mkerrtok.
235
236 2004-12-20  Werner Koch  <wk@g10code.com>
237
238         * sysutils.h [W32]: Define sleep.
239         * util.h: Add prototype for mkdtemp.
240
241         * membuf.c (put_membuf): Wipe out buffer after a failed realloc.
242
243 2004-12-19  Werner Koch  <wk@g10code.com>
244
245         * maperror.c (map_assuan_err_with_source): Oops, args were swapped.
246
247 2004-12-18  Werner Koch  <wk@g10code.com>
248
249         * maperror.c (map_assuan_err): Renamed to ..
250         (map_assuan_err_with_source): .. this and add arg SOURCE.c
251         * asshelp.c (send_pinentry_environment, send_one_option): Add arg
252         ERRSOURCE.
253
254 2004-12-15  Werner Koch  <wk@g10code.com>
255
256         * sysutils.h [W32]: Prototypes for registry functions.
257         * w32reg.c: Include sysutils.h
258
259         * simple-pwquery.c [W32]: Dummy code to allow a build.
260
261         * exechelp.c [W32]: Implemented for W32 .
262
263         * ttyname.c: New.
264
265         * asshelp.c (send_one_option): New.
266         (send_pinentry_environment): Cleaned up and made sure that empty
267         values are not send.
268
269 2004-12-07  Werner Koch  <wk@g10code.com>
270
271         * asshelp.c (send_pinentry_environment) [W32]: Do not use ttyname.
272
273 2004-12-06  Werner Koch  <wk@g10code.com>
274
275         * exechelp.h, exechelp.c: New.  Based on code from ../sm/import.c.
276
277 2004-12-03  Werner Koch  <wk@g10code.com>
278
279         * strsep.c: Fixed copyright comments.
280
281 2004-11-26  Werner Koch  <wk@g10code.com>
282
283         * simple-gettext.c: New taken from gnupg 1.3.x
284
285         * simple-pwquery.c [_WIN32]: Include winsock2.h.
286         (agent_open): Disable it until we have our AF_UNIX implementation
287         ready.
288         * fseeko.c, ftello.c: Include sys/types for the sake of W32.
289
290 2004-11-23  Werner Koch  <wk@g10code.com>
291
292         * b64enc.c: Include stdio.h and string.h
293
294 2004-08-18  Werner Koch  <wk@g10code.de>
295
296         * simple-pwquery.c (simple_pwquery): Handle gpg-error style return
297         code for canceled.
298
299 2004-07-20  Werner Koch  <wk@g10code.de>
300
301         * maperror.c: Removed header ksba.h.  Not required anymore.
302
303 2004-06-14  Werner Koch  <wk@gnupg.org>
304
305         * xreadline.c: New.  Based on the iobuf_read_line function.
306
307 2004-05-12  Werner Koch  <wk@gnupg.org>
308
309         * util.h (xtrycalloc_secure,xtrymalloc_secure): New.
310
311 2004-05-11  Werner Koch  <wk@gnupg.org>
312
313         * sysutils.c (disable_core_dumps): Only set the current limit.
314         (enable_core_dumps): New.
315
316 2004-04-13  Werner Koch  <wk@gnupg.org>
317
318         * simple-pwquery.c (copy_and_escape): Relaxed quoting.
319
320 2004-04-05  Werner Koch  <wk@gnupg.org>
321
322         * errors.h (STATUS_NEWSIG): New.
323
324 2004-03-11  Werner Koch  <wk@gnupg.org>
325
326         * dynload.h [__MINGW32__]: Define RTLD_LAZY.
327
328 2004-03-09  Werner Koch  <wk@gnupg.org>
329
330         * maperror.c (map_assuan_err): Map the Locale_Problem item.
331
332 2004-03-03  Werner Koch  <wk@gnupg.org>
333
334         * asshelp.c, asshelp.h: New.
335         (send_pinentry_environment): New. Code taken from ../sm/call-agent.c.
336
337 2004-02-19  Werner Koch  <wk@gnupg.org>
338
339         * simple-pwquery.c (agent_open): Don't mangle INFOSTR.
340
341 2004-02-17  Werner Koch  <wk@gnupg.org>
342
343         * simple-pwquery.c (agent_open): Ignore an empty GPG_AGENT_INFO.
344
345         * errors.h: Added STATUS_IMPORT_OK.
346
347 2004-02-10  Werner Koch  <wk@gnupg.org>
348
349         * b64enc.c: New.  Based on code from ../sm/base64.c.
350
351 2004-01-30  Marcus Brinkmann  <marcus@g10code.de>
352
353         * Makefile.am (libcommon_a_SOURCES): Add xasprintf.c.
354         * miscellaneous.c (xasprintf): Moved to ...
355         * xasprintf (xasprintf): ... here.  New file.
356         This allows to use xasprintf without sucking in gpg-error.
357
358 2004-01-27  Werner Koch  <wk@gnupg.org>
359
360         * sexp-parse.h: New; moved from../agent.
361
362         * util.h (xtoi_4): New.
363
364 2003-12-23  Werner Koch  <wk@gnupg.org>
365
366         * maperror.c (map_assuan_err): Prepared for a new error code.
367
368 2003-12-17  Werner Koch  <wk@gnupg.org>
369
370         * gettime.c (asctimestamp): Add a note on a non-avoidable gcc warning.
371
372         * util.h [!HAVE_VASPRINTF]: Add printf format attribute to the
373         replacement function.
374
375         * miscellaneous.c (xasprintf): New.
376
377 2003-11-14  Werner Koch  <wk@gnupg.org>
378
379         * mkdtemp.c (mkdtemp): Use gcry_create_nonce.
380
381         * cryptmiss.c: Removed.
382
383 2003-11-13  Werner Koch  <wk@gnupg.org>
384
385         * util.h (vasprintf): Also fixed the prototype.
386
387         * vasprintf.c (vasprintf): ARGS should not be a pointer.  Fixed
388         segv on Solaris.  Reported by Andrew J. Schorr.
389
390 2003-11-12  Werner Koch  <wk@gnupg.org>
391
392         * maperror.c (map_ksba_err, map_gcry_err, map_kbx_err): Removed.
393
394 2003-10-31  Werner Koch  <wk@gnupg.org>
395
396         * util.h (gnupg_isotime_t): New.
397         (gnupg_copy_time): New.
398
399         * gettime.c (gnupg_get_isotime): New.
400
401 2003-09-23  Werner Koch  <wk@gnupg.org>
402
403         * iobuf.c (check_special_filename): Replaced is isdigit by digitp
404         to avoid passing negative values and potential locale problems.
405         Problem noted by Christian Biere.
406
407         * util.h (ascii_isspace): New.
408
409 2003-09-18  Werner Koch  <wk@gnupg.org>
410
411         * ttyio.c (tty_fprintf): New.
412         (tty_print_string, tty_print_utf8_string2)
413         (tty_print_utf8_string): Made P argument const byte*.
414
415 2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
416
417         * maperror.c (map_ksba_err): Map -1.  Use gpg_err_make to set
418         the error source.
419
420 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
421
422         * dynload.h. New. W32 wrapper around the dynload mechanism.
423         
424 2003-07-15  Werner Koch  <wk@gnupg.org>
425
426         * simple-pwquery.c, simple-pwquery.h:  New; moved from ../agent.  
427         * Makefile.am (libsimple_pwquery_a_LIBADD): New.
428
429 2003-06-25  Werner Koch  <wk@gnupg.org>
430
431         * maperror.c (map_to_assuan_status): Directly map 0 to 0.
432
433 2003-06-17  Werner Koch  <wk@gnupg.org>
434
435         * gettime.c (scan_isodatestr,add_days_to_timestamp,strtimevalue)
436         (strtimestamp,asctimestamp): New.  Code taken from gnupg 1.3.2
437         mischelp.c.
438
439         * yesno.c: New.  Code taken from gnupg 1.3.2 mischelp.c
440
441         * miscellaneous.c: New.
442
443         * util.h: Include utf8conf.h
444
445 2003-06-16  Werner Koch  <wk@gnupg.org>
446
447         * gettime.c (make_timestamp): New.
448
449         * ttyio.c: New. Taken from gnupg 1.2.
450         * ttyio.h: Move from ../include.
451
452 2003-06-13  Werner Koch  <wk@gnupg.org>
453
454         * util.h (seterr): Removed macro.
455         (xmalloc_secure,xcalloc_secure): New.
456
457 2003-06-11  Werner Koch  <wk@gnupg.org>
458
459         * iobuf.c (iobuf_writebyte,iobuf_write): Return error code from
460         iobuf_flush.
461         (iobuf_writestr): Ditto.
462
463 2003-06-10  Werner Koch  <wk@gnupg.org>
464
465         * iobuf.c, iobuf.h: New. Taken from current gnupg 1.3 CVS.  Run
466         indent on it and adjusted error handling to libgpg-error style.
467         Replaced IOBUF by iobuf_t. Renamed malloc functions.
468
469 2003-06-04  Werner Koch  <wk@gnupg.org>
470
471         * errors.h: Removed all error codes.  We keep the status codes for
472         now.
473         * Makefile.am: Do not create errors.c anymore; remove it from the
474         sources.
475
476         * maperror.c: Don't include error.h.  Change all error codes to
477         libgpg-error style.
478         (map_assuan_err): Changed to new Assuan error code convention.
479         (map_to_assuan_status): Likewise.
480         (map_gcry_err,map_kbx_err): Not needed.  For now dummy functions.
481
482         * membuf.c, membuf.h: New.  Code taken from ../sm/call-agent.h.
483         * Makefile.am: Added above.
484
485 2003-04-29  Werner Koch  <wk@gnupg.org>
486
487         * util.h (fopencokokie): Removed prototype and struct.
488
489         * fopencookie.c: Removed.
490
491         * maperror.c: Use system assuan.h
492
493 2002-10-31  Neal H. Walfield  <neal@g10code.de>
494
495         * isascii.c: New file.
496         * putc_unlocked.c: Likewise.
497
498 2002-10-28  Neal H. Walfield  <neal@g10code.de>
499
500         * signal.c (caught_fatal_sig): Remove superfluous zero
501         initializer.
502         (caught_sigusr1): Likewise.
503
504 2002-09-04  Neal H. Walfield  <neal@g10code.de>
505
506         * vasprintf.c (vasprintf) [va_copy]: Use va_copy.
507         [!va_copy && __va_copy]: Use __va_copy.
508         [!va_copy && !__va_copy]: Only now fall back to using memcpy.
509
510 2002-08-21  Werner Koch  <wk@gnupg.org>
511
512         * errors.h: Added STATUS_IMPORT_PROBLEM.
513
514 2002-08-20  Werner Koch  <wk@gnupg.org>
515
516         * vasprintf.c: Hack to handle NULL for %s.
517
518 2002-08-09  Werner Koch  <wk@gnupg.org>
519
520         * signal.c: New. Taken from GnuPG 1.1.91.
521
522 2002-07-23  Werner Koch  <wk@gnupg.org>
523
524         * util.h (_IO_cookie_io_functions_t): Fixed typo.  Noted by
525         Richard Lefebvre.
526
527 2002-07-22  Werner Koch  <wk@gnupg.org>
528
529         * fseeko.c, ftello.c: New.
530
531 2002-06-28  Werner Koch  <wk@gnupg.org>
532
533         * maperror.c (map_to_assuan_status): Map more errorcodes to Bad
534         Certificate.
535
536 2002-06-26  Werner Koch  <wk@gnupg.org>
537
538         * maperror.c (map_to_assuan_status): Map EOF to No_Data_Available.
539
540 2002-06-10  Werner Koch  <wk@gnupg.org>
541
542         * errors.h (gnupg_error_token): Add new prototype.
543         (STATUS_ERROR): New.
544
545         * mkerrtok: New.
546         * Makefile.am: Use it to create the new error token function.
547
548 2002-06-04  Werner Koch  <wk@gnupg.org>
549
550         * maperror.c (map_to_assuan_status): Map Bad_CA_Certificate.
551
552 2002-05-23  Werner Koch  <wk@gnupg.org>
553
554         * no-pth.c, Makefile.am: Removed.
555
556 2002-05-22  Werner Koch  <wk@gnupg.org>
557
558         * mkdtemp.c: Replaced byte by unsigned char because it is no longer
559         defined in gcrypt.h.
560
561 2002-05-21  Werner Koch  <wk@gnupg.org>
562
563         * maperror.c (map_gcry_err): Add libgcrypt's new S-expression errors.
564         (map_ksba_err): Add a few mappings.
565
566 2002-05-14  Werner Koch  <wk@gnupg.org>
567
568         * gettime.c: New.
569
570 2002-05-03  Werner Koch  <wk@gnupg.org>
571
572         * errors.h: Added STARUS_EXPSIG and STATUS_EXPKEYSIG.
573
574 2002-04-15  Werner Koch  <wk@gnupg.org>
575
576         * cryptmiss.c: New.
577
578 2002-02-14  Werner Koch  <wk@gnupg.org>
579
580         * maperror.c: Add more assuan<->gnupg mappings.
581
582 2002-02-12  Werner Koch  <wk@gnupg.org>
583
584         * fopencookie.c: Dummy function.
585
586         * vasprintf.c: New.  Taken from binutils-2.9.1 and dropped all non
587         ANSI-C stuff.  Merged with asprintf version.
588
589         * no-pth.c: New.
590
591 2002-01-23  Werner Koch  <wk@gnupg.org>
592
593         * mkdtemp.c: Copied from gnupg-1.0.6c and changed to use libgcrypt.
594
595 2002-01-19  Werner Koch  <wk@gnupg.org>
596
597         * sysutils.c: New.  This is the misc.c file from gnupg 1.0.6 with
598         the OpenPGP stuff removed.
599         * sysutils.h: New.
600         
601 2002-01-15  Werner Koch  <wk@gnupg.org>
602
603         * maperror.c: Add mapping for Not_Trusted. 
604
605 2002-01-11  Werner Koch  <wk@gnupg.org>
606
607         * maperror.c (map_assuan_err): Codes for CRL
608
609 2002-01-08  Werner Koch  <wk@gnupg.org>
610
611         * util.h (spacep): New.
612
613 2002-01-02  Werner Koch  <wk@gnupg.org>
614
615         * maperror.c (map_to_assuan_status): New.  Merged from ../agent
616         and ../sm.
617
618 2001-12-20  Werner Koch  <wk@gnupg.org>
619
620         * maperror.c (map_gcry_err): Add some mappings.
621
622 2001-12-18  Werner Koch  <wk@gnupg.org>
623
624         * Makefile.am (AM_CPPFLAGS): Include flags for gcrypt and ksba
625
626 2001-12-14  Werner Koch  <wk@gnupg.org>
627
628         * util.h (digitp, hexdigitp): New ctype like macros.
629         (atoi_1,atoi_2,atoi_4,xtoi_1,xtoi_2): New.
630         
631         
632  Copyright 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
633
634  This file is free software; as a special exception the author gives
635  unlimited permission to copy and/or distribute it, with or without
636  modifications, as long as this notice is preserved.
637
638  This file is distributed in the hope that it will be useful, but
639  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
640  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
641                 
642