Code cleanup.
[gnupg.git] / common / ChangeLog
1 2010-03-22  Werner Koch  <wk@g10code.com>
2
3         * exechelp.c (create_inheritable_pipe_r)
4         (create_inheritable_pipe_w): Fold both into ...
5         (create_inheritable_pipe): .. New.  Change callers to use this.
6         (gnupg_create_inbound_pipe, gnupg_create_outbound_pipe): Factor
7         code out to ...
8         (do_create_pipe): .. New.
9
10         * init.c (parse_std_file_handles): Change to use rendezvous ids.
11
12 2010-03-15  Werner Koch  <wk@g10code.com>
13
14         * init.c (init_common_subsystems): Add args ARGCP and
15         ARGVP.  Change all callers to provide them.
16         (parse_std_file_handles): New.
17
18         * t-sysutils.c (rewind) [W32CE]: Provide a replacement.
19
20         * Makefile.am (module_tests) [W32CE]: Don't build t-exechelp for now.
21
22         * sysutils.c (gnupg_allow_set_foregound_window) [W32CE]: Don't
23         call AllowSetForegroundWindow.
24
25         * logging.c (isatty) [W32CE]: New.
26         (fun_writer, set_file_fd): Use estream even for the internal error
27         messages.
28         (log_string, log_flush): Make DUMMY_ARG_PTR static.
29
30 2010-03-15  Werner Koch  <wk@g10code.com>
31
32         * asshelp.c (send_pinentry_environment) [!HAVE_SETLOCALE]: Do not
33         define OLD_LC.
34         * http.c (connect_server) [!USE_DNS_SRV]: Mark SRVTAG unused.
35         * dns-cert.c (get_dns_cert) [!USE_DNS_CERT]: Mark args unused.
36         * pka.c (get_pka_info): Ditto.
37
38         * signal.c (pause_on_sigusr): Remove.  It was used in ancient gpg
39         version with shared memory IPC.  Last caller removed on 2006-04-18.
40         (do_block) [W32]: Mark arg unused.
41
42         * exechelp.c (w32_open_null): Use CreateFileW.
43
44         * init.c (init_common_subsystems): Add args ARGCP and ARGVP.
45         Change all callers to pass them.
46
47         * logging.c (S_IRGRP, S_IROTH, S_IWGRP, S_IWOTH) [W32]: New.
48         (fun_writer, set_file_fd) [W32]: Disable socket code.
49
50         * localename.c: Include gpg-error.h.
51
52         * util.h (GPG_ERR_NOT_ENABLED): Remove this temporary definition.
53
54 2010-03-12  Werner Koch  <wk@g10code.com>
55
56         * status.h (STATUS_ENTER): New.
57
58         * ttyio.c (tty_fprintf): Change to use estream.
59
60         * miscellaneous.c (print_utf8_string): Rename to print_utf8_buffer
61         and change FP arg to an estream.  Change all callers.
62         (print_utf8_string2): Ditto; new name is to print_utf8_buffer2.
63
64 2010-03-11  Werner Koch  <wk@g10code.com>
65
66         * miscellaneous.c (print_string): Remove.
67
68         * estream.c (es_setvbuf): Fix parameter check.
69         (es_set_buffering): Allow a SIZE of 0.
70         * asshelp.c (setup_libassuan_logging, my_libassuan_log_handler): New.
71         * logging.c (do_logv): Add arg IGNORE_ARG_PTR.  Change all callers.
72         (log_string): New.
73         (log_flush): New.
74         (set_file_fd): Simplify by using estreams es_stderr.
75
76         * estream.h (es_stdout, es_stderr, es_stdin): New.
77
78 2010-03-10  Werner Koch  <wk@g10code.com>
79
80         * estream.c (es_func_fp_read, es_func_fp_write, es_func_fp_seek)
81         (es_func_fp_destroy): Allow a NULL FP to implement a dummy stream.
82         (do_fpopen): Ditto.
83         (es_vfprintf_unlocked): New.
84         (es_fprintf_unlocked): Make public.
85         (es_fputs_unlocked): New.
86
87         * logging.h: Replace FILE* by estream_t.
88         * logging.c: Remove USE_FUNWRITER cpp conditional because we now
89         use estream.
90         (my_funopen_hook_ret_t, my_funopen_hook_size_t): Replace by
91         ssize_t.
92         (log_get_stream): Change to return an estream_t.
93         (set_file_fd): Always close the log stream because it can't be
94         assigned to stderr or stdout directly.  Use a dummy estream as
95         last resort log stream.
96         (log_test_fd, log_get_fd): Use es_fileno.
97         (log_get_stream): Assert that we have a log stream.
98         (do_logv): Use estream functions and lock the output.
99
100 2010-03-10  Werner Koch  <wk@g10code.com>
101
102         * util.h: Replace jnlib path part by common.
103         (snprintf): Use the replacement macro on all platforms.
104
105         * Makefile.am (jnlib_sources): New.
106         (libcommon_a_SOURCES, libcommonpth_a_SOURCES): Add jnlib_sources.
107         (jnlib_tests): New.
108         (noinst_PROGRAMS, TESTS): Add jnlib_tests.
109         (t_common_ldadd): Remove libjnlib.a.
110
111         * README.jnlib, ChangeLog.jnlib, libjnlib-config.h, argparse.c
112         * argparse.h, dotlock.c, dotlock.h, dynload.h, logging.c
113         * logging.h, mischelp.c, mischelp.h, stringhelp.c, stringhelp.h
114         * strlist.c, strlist.h, types.h, utf8conv.c, utf8conv.h
115         * w32-afunix.c, w32-afunix.h, w32-reg.c, w32help.h, xmalloc.c
116         * xmalloc.h, t-stringhelp.c, t-support.c, t-support.h
117         * t-timestuff.c, t-w32-reg.c: Move from jnlib to here.
118
119         * init.c: Remove "estream.h".
120         * util.h: Include "estream.h".
121
122         * xasprintf.c, ttyio.c: Remove "estream-printf.h".
123
124 2010-03-08  Werner Koch  <wk@g10code.com>
125
126         * exechelp.c [!HAVE_SIGNAL_H]: Do not include signal.h.
127         (DETACHED_PROCESS, CREATE_NEW_PROCESS_GROUP) [W32CE]: Provide stubs.
128
129         * iobuf.h (iobuf_ioctl_t): New.  Use the new macros instead of the
130         hard wired values.
131         * iobuf.c (iobuf_append): Remove.
132         (iobuf_fdopen): Factor code out to ...
133         (do_iobuf_fdopen): ... new.
134         (iobuf_fdopen_nc): New.
135         (iobuf_open_fd_or_name): Implement using iobuf_fdopen_nc.
136
137         * iobuf.c (INVALID_FD): Replace by GNUPG_INVALID_FD.
138         (fp_or_fd_t): Replace by gnupg_fd_t.
139         (my_fileno): Replace by the FD2INT macro.
140         (FILEP_OR_FD_FOR_STDIN, FILEP_OR_FD_FOR_STDOUT): Rename to
141         FD_FOR_STDIN, FD_FOR_STDOUT.
142         (file_filter): Make full use of FD_FOR_STDIN.
143         (USE_SETMODE): Remove.  Not needed without stdio.
144         (my_fopen_ro, my_fopen): Replace unneeded macros.
145
146         * iobuf.c [FILE_FILTER_USES_STDIO]: Remove all code.  It has not
147         been used for a long time.
148
149         * exechelp.h: Include "estream.h".
150
151         * exechelp.c (gnupg_spawn_process): Change OUTFILE to an estream_t.
152
153 2010-03-02  Werner Koch  <wk@g10code.com>
154
155         * estream.c, estream.h, estream-printf.c, estream-printf.h: Update
156         from libestream.
157
158 2010-03-01  Werner Koch  <wk@g10code.com>
159
160         * signal.c [!HAVE_SIGNAL_H]: Don't include signal.h.
161
162         * iobuf.c (direct_open) [W32CE]: Make filename to wchar_t.
163         (iobuf_cancel) [W32CE]: Use DeleteFile.
164
165         * gettime.c (dump_isotime): Use "%s" to print "none".
166
167         * homedir.c (standard_homedir) [W32CE]: Use wchar_t to create the
168         directory.
169         (w32_rootdir) [W32CE]: Likewise.
170
171         * sysutils.c (translate_sys2libc_fd) [W32CE]: Add support.
172         (gnupg_tmpfile) [W32CE]: Ditto.
173         (_gnupg_getenv) [W32CE]: New.
174
175         * util.h (getpid, getenv) [W32CE]: New.
176
177         * i18n.c (i18n_switchto_utf8)
178         (i18n_switchback) [USE_SIMPLE_GETTEXT]: Use new function from
179         libgpg-error which supports proper restoring.
180
181         * sysutils.c (get_session_marker): Simplified by using gcrypt.
182
183 2009-12-08  Marcus Brinkmann  <marcus@g10code.de>
184
185         * Makefile.am (audit-events.h, status.h) [!MAINTAINER_MODE]: No
186         longer include these rules if not in maintainer mode.
187
188 2009-12-08  Werner Koch  <wk@g10code.com>
189
190         * userids.h, userids.c: New.
191         (classify_user_id): Merged from similar fucntions in sm/ and g10/.
192
193         * dns-cert.c (get_dns_cert): Add support for ADNS.
194
195 2009-12-08  Marcus Brinkmann  <marcus@g10code.de>
196
197         * asshelp.c (start_new_gpg_agent): Convert posix FD to assuan FD.
198
199         * asshelp.c (start_new_gpg_agent) [HAVE_W32_SYSTEM]: Add missing
200         argument in assuan_socket_connect invocation.
201         * iobuf.c (iobuf_open_fd_or_name): Fix type of FD in function
202         declaration.
203
204 2009-12-07  Werner Koch  <wk@g10code.com>
205
206         * pka.c (get_pka_info): Add support for ADNS.
207         * src.v (getsrv): Add support for ADNS.
208
209         * srv.c (getsrv): s/xrealloc/xtryrealloc/.
210
211 2009-12-04  Werner Koch  <wk@g10code.com>
212
213         * Makefile.am (audit-events.h, status-codes.h): Create files in
214         the source dir.  Fixes bug#1164.
215
216 2009-12-02  Werner Koch  <wk@g10code.com>
217
218         * audit.c (proc_type_decrypt, proc_type_sign): Implemented.
219         (proc_type_verify): Print hash algo infos.
220         * audit.h (AUDIT_DATA_CIPHER_ALGO, AUDIT_BAD_DATA_CIPHER_ALSO)
221         (AUDIT_NEW_RECP, AUDIT_DECRYPTION_RESULT, AUDIT_RECP_RESULT)
222         (AUDIT_ATTR_HASH_ALGO, AUDIT_SIGNED_BY, AUDIT_SIGNING_DONE):
223
224 2009-11-05  Marcus Brinkmann  <marcus@g10code.de>
225
226         * asshelp.c (start_new_gpg_agent): Update use of
227         assuan_socket_connect and assuan_pipe_connect.
228
229 2009-11-02  Marcus Brinkmann  <marcus@g10code.de>
230
231         * get-passphrase.c (default_inq_cb, membuf_data_cb): Change return
232         type to gpg_error_t.
233
234 2009-10-28  Werner Koch  <wk@g10code.com>
235
236         * status.h (STATUS_MOUNTPOINT): New.
237
238 2009-10-16  Marcus Brinkmann  <marcus@g10code.com>
239
240         * Makefile.am (libcommon_a_CFLAGS): Use LIBASSUAN_CFLAGS instead
241         of LIBASSUAN_PTH_CFLAGS.
242
243 2009-10-13  Werner Koch  <wk@g10code.com>
244
245         * exechelp.c (gnupg_kill_process): New.
246
247 2009-09-29  Werner Koch  <wk@g10code.com>
248
249         * exechelp.c (create_inheritable_pipe): Rename to
250         create_inheritable_pipe_w.
251         (create_inheritable_pipe_r): New.
252         (gnupg_create_outbound_pipe): New.
253
254         * iobuf.h: Include "sysutils.h"
255
256         * iobuf.c (iobuf_open_fd_or_name): New.
257         (iobuf_get_fname_nonnull): New.
258
259 2009-09-23  Marcus Brinkmann  <marcus@g10code.de>
260
261         * asshelp.c (start_new_gpg_agent): Allocate assuan context before
262         starting server.
263
264 2009-09-03  Werner Koch  <wk@g10code.com>
265
266         Update from libestream:
267         * estream-printf.c: Include stdint.h only if HAVE_STDINT_H is
268         defined.
269         * estream-printf.c: Remove all test code.  Use macro DEBUG instead
270         of TEST for debugging.
271         * estream-printf.c (pr_float): Make buffer larger for silly high
272         numbers.
273
274 2009-08-11  David Shaw  <dshaw@jabberwocky.com>
275
276         * ttyio.h, ttyio.c (tty_enable_completion): Some ifdefs around
277         HAVE_LIBREADLINE to allow building when readline isn't available.
278
279 2009-08-06  Werner Koch  <wk@g10code.com>
280
281         * status.h (STATUS_INV_SGNR, STATUS_NO_SGNR): New.
282         * status.c (get_inv_recpsgnr_code): New.
283
284 2009-07-23  David Shaw  <dshaw@jabberwocky.com>
285
286         * srv.c (getsrv): Fix type-punning warning.
287
288 2009-07-23  Werner Koch  <wk@g10code.com>
289
290         * util.h (GPG_ERR_NOT_ENABLED): New.
291         * audit.h (enum): Add AUDIT_CRL_CHECK.
292         * audit.c (proc_type_verify): Show CRL check result.
293
294 2009-07-06  Werner Koch  <wk@g10code.com>
295
296         * get-passphrase.c (struct agentargs): Add SESSION_ENV and remove
297         obsolete args.
298         (gnupg_prepare_get_passphrase): Ditto.
299
300         * session-env.c, session-env.h: New.
301         * t-session-env.c: New.
302         * Makefile.am (common_sources, module_tests): Add them.
303         * asshelp.h: Include "session-env.h"
304         * asshelp.c (send_one_option): Add arg PUTENV.
305         (send_pinentry_environment): Replace most args by SESSION_ENV and
306         rewrite fucntion.
307         (start_new_gpg_agent): Likewise.
308
309         * t-exechelp.c (test_close_all_fds): Remove debug code.
310
311 2009-07-01  Werner Koch  <wk@g10code.com>
312
313         * sexputil.c (get_pk_algo_from_canon_sexp): New.
314
315 2009-06-29  Werner Koch  <wk@g10code.com>
316
317         * estream.c (BUFFER_ROUND_TO_BLOCK): Remove unused macro.
318         (es_func_mem_write): Rewrite reallocation part.
319
320         * estream.c (es_write_sanitized_utf8_buffer): Typo typo fix.
321
322 2009-06-25  Werner Koch  <wk@g10code.com>
323
324         * estream.c (es_write_sanitized_utf8_buffer): Typo fix.
325
326 2009-06-24  Werner Koch  <wk@g10code.com>
327
328         * estream.c (es_read_line): In the malloc error case, set
329         MAX_LENGTH to 0 only if requested.
330         * xreadline.c (read_line): Ditto.
331         * estream.c (es_write_sanitized_utf8_buffer): Pass on error from
332         es_fputs.
333         * sexputil.c (get_rsa_pk_from_canon_sexp): Check for error after
334         the loop.  Reported by Fabian Keil.
335
336 2009-06-22  Werner Koch  <wk@g10code.com>
337
338         * estream.c (es_pth_read, es_pth_write) [W32]: New.
339         (ESTREAM_SYS_READ, ESTREAM_SYS_WRITE) [HAVE_PTH]: Use them.
340
341 2009-06-03  Werner Koch  <wk@g10code.com>
342
343         * estream.c (es_convert_mode): Rewrite and support the "x" flag.
344
345 2009-05-28  David Shaw  <dshaw@jabberwocky.com>
346
347         From 1.4:
348
349         * http.h, http.c (send_request) Pass in a STRLIST for additional
350         headers.  Change all callers.
351
352 2009-05-27  David Shaw  <dshaw@jabberwocky.com>
353
354         From 1.4:
355
356         * http.h, http.c (send_request): Pass in srvtag and make its
357         presence sufficient to turn the feature on.
358         (http_open): From here.
359         (http_document): And here.
360
361         * srv.c (getsrv): Raise maximum packet size to 2048, as PACKETSZ
362         is too small these days.
363
364 2009-05-22  Werner Koch  <wk@g10code.com>
365
366         * ttyio.c (tty_cleanup_after_signal): New.
367
368 2009-05-19  Werner Koch  <wk@g10code.com>
369
370         * simple-pwquery.c (agent_open): Use SUN_LEN
371         (JNLIB_NEED_AFLOCAL): Define and include mischelp.h.
372
373 2009-05-07  Werner Koch  <wk@g10code.com>
374
375         * sexputil.c (get_rsa_pk_from_canon_sexp): New.
376         * t-sexputil.c (test_make_canon_sexp_from_rsa_pk): Extend the test.
377
378 2009-04-28  Werner Koch  <wk@g10code.com>
379
380         * sexputil.c (make_canon_sexp_from_rsa_pk): New.
381         * t-sexputil.c (test_make_canon_sexp_from_rsa_pk): New.
382
383 2009-04-01  Werner Koch  <wk@g10code.com>
384
385         * iobuf.c: Port David's changes from 1.4:
386         (fd_cache_invalidate): Pass return code from close back.
387         (direct_open, iobuf_ioctl): Check that return value.
388         (fd_cache_synchronize): New.
389         (iobuf_ioctl): Add new sub command 4 (fsync).
390
391         * iobuf.c (fd_cache_strcmp): New. Taken from 1.4.
392         (fd_cache_invalidate, fd_cache_close, fd_cache_open):  Use it.
393
394         * exechelp.c (gnupg_spawn_process): Implement new flag bit 6.
395         * sysutils.c (gnupg_allow_set_foregound_window): Allow the use of
396         ASFW_ANY.
397
398         * membuf.c (put_membuf, get_membuf): Wipe memory on out of core.
399
400 2009-03-31  Werner Koch  <wk@g10code.com>
401
402         * percent.c (percent_unescape, percent_plus_unescape): New.
403         (percent_plus_unescape_inplace, percent_unescape_inplace): New.
404         (do_plus_or_plain_unescape, count_unescape, do_unescape): New.
405         (do_unescape_inplace): New.
406         * t-percent.c (test_percent_plus_escape): Test percent_plus_unescape.
407
408         * get-passphrase.c, get-passphrase.h: New.
409         * Makefile.am (without_pth_sources): New.
410
411 2009-03-18  Werner Koch  <wk@g10code.com>
412
413         * exechelp.c: Include sys/resource.h and sys/stat.h.
414         (get_max_open_fds): New.
415         (do_exec): Use it.
416         (get_all_open_fds): New.
417         (close_all_fds): New.
418         (do_exec): Use close_all_fds.
419         * t-exechelp.c: New.
420
421 2009-03-13  David Shaw  <dshaw@jabberwocky.com>
422
423         * http.c (do_parse_uri): Properly handle IPv6 literal addresses as
424         per RFC-2732.  Adapted from patch by Phil Pennock.
425
426 2009-03-12  Werner Koch  <wk@g10code.com>
427
428         * gettime.c: Include i18n.h.
429         (dump_isotime): New.
430
431 2009-03-06  Werner Koch  <wk@g10code.com>
432
433         * sexputil.c (make_canon_sexp): New.
434
435 2009-03-03  Werner Koch  <wk@g10code.com>
436
437         * exechelp.c (do_exec): Make sure that /dev/null connected FDs are
438         not closed.
439
440 2009-01-19  Werner Koch  <wk@g10code.com>
441
442         * audit.c (writeout_li): Translate a few more result strings.
443         Fixes bug#970.
444
445         * convert.c (hex2str): Fix optimization to append a nul character.
446
447 2008-12-05  Werner Koch  <wk@g10code.com>
448
449         * percent.c, t-percent.c: New.
450
451         * exechelp.c (gnupg_spawn_process, gnupg_spawn_process_fd)
452         (gnupg_spawn_process_detached) [W32]: Remove debug output.
453
454 2008-11-20  Werner Koch  <wk@g10code.com>
455
456         * audit.c (writeout_li): Translate OKTEXT.
457
458 2008-11-04  Werner Koch  <wk@g10code.com>
459
460         * i18n.c (i18n_init) [USE_SIMPLE_GETTEXT]: Adjust for changed
461         w32-gettext.c.
462         * homedir.c (gnupg_localedir): New.
463
464 2008-10-20  Werner Koch  <wk@g10code.com>
465
466         * http.c (http_register_tls_callback) [!HTTP_USE_GNUTLS]: Mark
467         unused arg.
468         * localename.c (do_nl_locale_name): Ditto.
469         * audit.c (event2str): Silent gcc warning.
470         * sysutils.c (translate_sys2libc_fd): Mark unused arg.
471         (translate_sys2libc_fd_int): Ditto.
472         * iobuf.c (translate_file_handle): Ditto.
473         * asshelp.c (send_one_option): Ditto.
474         * exechelp.c (gnupg_spawn_process): Ditto.
475         * signal.c (got_usr_signal): Ditto
476         * estream.c (es_func_fd_create) [!W32]: Ditto.
477         (es_func_fp_create) [!W32]: Ditto.
478         (es_write_hexstring): Ditto.
479         (dummy_mutex_call_void, dummy_mutex_call_int) [HAVE_PTH]: New.
480         (ESTREAM_MUTEX_LOCK, ESTREAM_MUTEX_UNLOCK, ESTREAM_MUTEX_TRYLOCK)
481         (ESTREAM_MUTEX_INITIALIZE) [HAVE_PTH]: Use dummy calls so to mark
482         unused arg.
483
484 2008-10-19  Werner Koch  <wk@g10code.com>
485
486         * estream-printf.c (estream_vsnprintf): Fix return value.
487         (check_snprintf): Add a new test.
488         (one_test) [W32]: Disable test.
489
490 2008-10-17  Werner Koch  <wk@g10code.com>
491
492         * util.h (snprintf) [W32]: Redefine to estream_snprintf.
493
494 2008-09-03  Werner Koch  <wk@g10code.com>
495
496         * convert.c (hex2str): New.
497         (hex2str_alloc): New.
498         * t-convert.c (test_hex2str): New.
499
500 2008-08-19  Werner Koch  <wk@g10code.com>
501
502         * iobuf.c: Avoid passing a NULL (iobuf_t)->desc to the log
503         function.  Should in general never be NULL, but well.  Reported by
504         M. Heneka.
505
506 2008-06-26  Werner Koch  <wk@g10code.com>
507
508         * estream.c (es_write_sanitized): Loose check for control
509         characters to better cope with utf-8.  The range 0x80..0x9f is
510         nowadays not anymore accidently used for control charaters.
511
512 2008-06-25  Marcus Brinkmann  <marcus@g10code.de>
513
514         Revert last three changes related to handle translation.
515         * sysutils.c:
516         (FD_TRANSLATE_MAX, fd_translate, fd_translate_len)
517         (translate_table_init, translate_table_lookup): Removed.
518         * iobuf.c (check_special_filename): Do not use
519         translate_table_lookup.
520         * sysutils.h (translate_table_init, translate_table_lookup):
521         Remove prototypes.
522
523 2008-06-19  Werner Koch  <wk@g10code.com>
524
525         * sysutils.c: Remove <ctype.h>.
526         (fd_translate_max): Use macro for the size.
527         (translate_table_init): Protect read against EINTR and replace
528         isspace by spacep.
529
530 2008-06-18  Marcus Brinkmann  <marcus@g10code.de>
531
532         * sysutils.c (TRANS_MAX): Bump up to 350 to be on the safe side.
533
534         * sysutils.h (translate_table_init, translate_table_lookup): New
535         prototypes.
536         * sysutils.c: Include <ctype.h>.
537         (FD_TRANSLATE_MAX): New macro.
538         (fd_translate, fd_translate_len): New static variables.
539         (translate_table_init, translate_table_lookup): New functions.
540         (translate_sys2libc_fd_int): Translate file descriptor.
541         * iobuf.c (check_special_filename): Translate handle values from
542         special filenames.
543
544 2008-06-16  Werner Koch  <wk@g10code.com>
545
546         * homedir.c (w32_commondir): New.
547         (gnupg_sysconfdir): Use it.
548
549 2008-06-09  Werner Koch  <wk@g10code.com>
550
551         * b64dec.c: New.
552
553 2008-06-05  Werner Koch  <wk@g10code.com>
554
555         * util.h (gnupg_copy_time): Replace strcpy by memcpy.
556
557 2008-05-26  Werner Koch  <wk@g10code.com>
558
559         * asshelp.c (send_one_option, send_pinentry_environment): use
560         xfree and xtrystrdup.
561
562         * i18n.c (i18n_switchto_utf8) [USE_SIMPLE_GETTEXT]: Return NULL.
563
564         * homedir.c (gnupg_module_name): Add
565         GNUPG_MODULE_NAME_CONNECT_AGENT and GNUPG_MODULE_NAME_GPGCONF.
566
567 2008-04-21  Werner Koch  <wk@g10code.com>
568
569         * http.c (http_wait_response) [W32]: Use DuplicateHandle because
570         it is a socket.
571         (cookie_read) [W32]: Use recv in place of read.
572
573 2008-04-08  Werner Koch  <wk@g10code.com>
574
575         * i18n.c (i18n_switchto_utf8, i18n_switchback)
576         [USE_SIMPLE_GETTEXT]: Implement.
577
578 2008-04-07  Werner Koch  <wk@g10code.com>
579
580         * b64enc.c (b64enc_start): Detect PGP mode.
581         (b64enc_finish): Write PGP CRC.
582         * util.h (struct b64state): Add field CRC.
583         * t-b64.c: New.
584
585         * pka.c (get_pka_info): Use xtrymalloc and check result.
586
587 2008-03-25  Werner Koch  <wk@g10code.com>
588
589         * localename.c: Strip all W32 code.  Include w32help.h.
590         (gnupg_messages_locale_name) [W32]: Use the gettext_localename.
591
592 2008-03-17  Werner Koch  <wk@g10code.com>
593
594         * iobuf.c (IOBUF_BUFFER_SIZE): Actually use this macro.
595
596         * simple-pwquery.c (agent_send_all_options): Fix last change.
597
598 2008-03-06  Werner Koch  <wk@g10code.com>
599
600         * simple-pwquery.c (agent_send_all_options): Add support for
601         XAUTHORITY and PINENTRY_USER_DATA.
602
603 2008-02-15  Marcus Brinkmann  <marcus@g10code.de>
604
605         * exechelp.c (gnupg_spawn_process_fd): Add flag DETACHED_PROCESS
606         unconditionally (required for all callers at the moment).
607
608 2008-02-14  Werner Koch  <wk@g10code.com>
609
610         * sysutils.c (gnupg_allow_set_foregound_window): New.
611         (WINVER) [W32]: Define.
612
613 2008-01-31  Werner Koch  <wk@g10code.com>
614
615         * audit.c (audit_print_result): Make sure that the output is
616         always UTF8.
617
618 2008-01-27  Werner Koch  <wk@g10code.com>
619
620         * exechelp.c (gnupg_spawn_process): Add arg FLAGS and changed all
621         callers to pass 0 for it.
622
623 2007-12-13  Werner Koch  <wk@g10code.com>
624
625         * sexputil.c (hash_algo_from_sigval): New.
626         * t-sexputil.c: New.
627         * Makefile.am (module_tests): Add it.
628
629 2007-12-11  Werner Koch  <wk@g10code.com>
630
631         * asshelp.c (send_pinentry_environment): Allow using of old
632         gpg-agents not capabale of the xauthority and pinentry_user_data
633         options.
634
635 2007-12-04  Werner Koch  <wk@g10code.com>
636
637         * Makefile.am (t_helpfile_LDADD, module_maint_tests): New.
638         * t-helpfile.c: New.
639         * helpfile.c: New.
640         * membuf.h (is_membuf_ready, MEMBUF_ZERO): New.
641         * localename.c: New.  Taken from gettext with modifications as done
642         for GpgOL.  Export one new function.
643         * util.h (gnupg_messages_locale_name, gnupg_get_help_string): Added.
644
645         * sysutils.c (gnupg_reopen_std): New.  Taken from ../g10/gpg.c.
646
647 2007-11-27  Werner Koch  <wk@g10code.com>
648
649         * Makefile.am (CLEANFILES): New.
650
651         * homedir.c (dirmngr_socket_name): Use CSIDL_WINDOWS.
652
653 2007-11-15  Werner Koch  <wk@g10code.com>
654
655         * asshelp.c (send_pinentry_environment): Add args XAUTHORITY and
656         PINENTRY_USER_DATA.
657         (start_new_gpg_agent): Ditto.
658
659 2007-11-07  Werner Koch  <wk@g10code.com>
660
661         * status.h: New.
662         * errors.h: Remove.
663
664 2007-11-05  Werner Koch  <wk@g10code.com>
665
666         * audit.c, audit.h: New.
667         * Makefile.am: Add rules to build audit-events.h.
668         * exaudit.awk: New.
669         * mkstrtable.awk: New.  Taken from libgpg-error.
670
671 2007-10-19  Werner Koch  <wk@g10code.com>
672
673         * i18n.c (i18n_switchto_utf8, i18n_switchback): New.
674
675 2007-10-01  Werner Koch  <wk@g10code.com>
676
677         * sysutils.h (FD2INT, INT2FD): New.
678
679 2007-09-21  Werner Koch  <wk@g10code.com>
680
681         * homedir.c (default_homedir): Make registry work.  Reported by
682         Marc Mutz.
683
684 2007-08-29  Werner Koch  <wk@g10code.com>
685
686         * exechelp.c (gnupg_wait_process): Add arg EXITCODE.  Changed all
687         callers.
688         (gnupg_create_inbound_pipe): New.
689         * util.h (GNUPG_MODULE_NAME_GPGSM, GNUPG_MODULE_NAME_GPG): New.
690         * homedir.c (gnupg_module_name): Add them
691
692 2007-08-28  Werner Koch  <wk@g10code.com>
693
694         * gettime.c (check_isotime, add_isotime): New.  Originally written
695         for DirMngr by me.
696         (add_days_to_isotime): New.
697         (date2jd, jd2date, days_per_month, days_per_year): New. Taken from
698         my ancient (1988) code used in Wedit (time2.c).
699
700 2007-08-27  Werner Koch  <wk@g10code.com>
701
702         * util.h (GNUPG_MODULE_NAME_CHECK_PATTERN): New.
703         * homedir.c (gnupg_module_name): Add it.
704         * exechelp.c (w32_fd_or_null) [W32]: New.
705         (gnupg_spawn_process_fd): New.
706         (gnupg_wait_process) [W32]: Close the handle after if the process has
707         returned.
708
709 2007-08-22  Werner Koch  <wk@g10code.com>
710
711         Updated estream from libestream.
712
713         * estream.c (mem_malloc, mem_realloc, mem_free): New.  Use them
714         instead of the ES_MEM_foo.
715         * estream.c (estream_cookie_mem): Remove members DONT_FREE,
716         APPEND_ZERO, PTR and SIZE.  Add MEMORY_LIMIT.  Put GROW into a new
717         FLAGS struct.
718         (es_func_mem_create): Remove APPEND_ZERO, DONT_FREE, PTR and
719         SIZE.  Add MEMORY_LIMIT.
720         (es_func_mem_write, es_func_mem_seek, es_func_mem_destroy): Revamp.
721         (es_open_memstream): Change API to just take a memory limit and a
722         mode argument.  Rename to ..
723         (es_fopenmem): .. this.
724         (HAVE_W32_SYSTEM) [_WIN32]: Define if not defined.
725         (tmpfd) [W32]: Implement directly using the W32 API.
726         (es_fgets): Rewrite without using doreadline.
727
728 2007-08-21  Werner Koch  <wk@g10code.com>
729
730         * sysutils.c (gnupg_tmpfile): New.
731         * t-sysutils.c: New.
732         * Makefile.am (module_tests): Add t-sysutils.
733
734 2007-08-20  Werner Koch  <wk@g10code.com>
735
736         * exechelp.c [W32]: Redefine X_OK to F_OK.
737
738 2007-08-16  Werner Koch  <wk@g10code.com>
739
740         * Makefile.am (t_convert_DEPENDENCIES): Remove
741         ($(PROGRAMS)): Remove.
742         (t_common_ldadd): Use libcommon.a and not the macro.
743
744 2007-08-14  Werner Koch  <wk@g10code.com>
745
746         * homedir.c (dirmngr_socket_name): New.
747
748 2007-08-07  Werner Koch  <wk@g10code.com>
749
750         * tlv.c, tlv.h: Move from ../scd/.
751         * tlv.c (parse_sexp, parse_ber_header): Add ERRSOURCE arg and prefix
752         name with a _.
753         * tlv.h: Use macro to convey ERRSOURCE.
754
755 2007-08-02  Werner Koch  <wk@g10code.com>
756
757         * gc-opt-flags.h: New.
758
759 2007-08-01  Werner Koch  <wk@g10code.com>
760
761         * estream-printf.c (read_dummy_value): Removed as it is useless now.
762         (read_values): Remove check on !vaargs which is not anymore needed
763         and anyway not portable.  Reported by Peter O'Gorman.
764
765 2007-07-16  Werner Koch  <wk@g10code.com>
766
767         * estream.c (es_func_file_create): Clear NO_CLOSE flag.
768
769 2007-07-12  Werner Koch  <wk@g10code.com>
770
771         * sysutils.h (gnupg_fd_t): New.
772         * sysutils.c (translate_sys2libc_fd): Use that type instead of int.
773         (translate_sys2libc_fd_int): New.
774
775 2007-07-09  Werner Koch  <wk@g10code.com>
776
777         * t-gettime.c (test_isotime2epoch): Use time_t and not u32.
778
779 2007-07-05  Werner Koch  <wk@g10code.com>
780
781         * t-gettime.c: New.
782         * gettime.c (isotime2epoch, epoch2isotime): New.
783
784 2007-07-04  Werner Koch  <wk@g10code.com>
785
786         * estream.c (es_init_do): Do not throw an error if pth has already
787         been initialized.
788
789 2007-06-26  Werner Koch  <wk@g10code.com>
790
791         * Makefile.am ($(PROGRAMS)): New.
792
793         * util.h (init_common_subsystems): Moved to ..
794         * init.h: .. New.
795         * util.h: Include init.h.
796
797         * homedir.c (standard_homedir): New.
798         (default_homedir) [W32]: Reimplemented in terms of
799         standard_homedir.  Fixed memory leak.
800
801 2007-06-25  Werner Koch  <wk@g10code.com>
802
803         * iobuf.c: Add more documentation and slighly restructured macro
804         defintion for better readability.
805         (FILEP_OR_FD): Rename to fp_or_fd_t.
806         (CLOSE_CACHE): Rename to close_cache_t.
807
808         * sysutils.c (translate_sys2libc_fd): New using the code from iobuf.c.
809         * iobuf.c: Include sysutils.h.
810         (iobuf_translate_file_handle): Remove.
811         (translate_file_handle): Use new function.
812
813         * estream-printf.c [TEST]: Header including fixes.
814         (do_format): Do not append a trailing Nul.  This avoids spurious
815         Nuls in the es_printf output.
816         (estream_vsnprintf, estream_vasprintf): Take this in account.
817
818         * estream.h (struct es__stream): Change FLAGS to a bit structure.
819         (ES__FLAG_WRITING): Replace by a bit from FLAGS.  * estream.c
820         (struct estream_internal): Rename FLAGS to MODEFLAGS so that they
821         are not confused with the estream flags.
822         (es_initialize, es_create): Add arg MODEFLAGS so that we can setup
823         the intial writemode.  Changed all callers to pass them.
824         (es_convert_mode): Set O_BINARY.
825         (es_func_fd_create, es_func_fp_create, es_func_file_create) [W32]:
826         Call setmode if requested.
827
828 2007-06-24  Werner Koch  <wk@g10code.com>
829
830         * estream.c (do_fpopen, es_fpopen, es_fpopen_nc): New.
831         (es_func_fp_create, es_func_fp_read, es_func_fp_write)
832         (es_func_fp_seek, es_func_fp_destroy): New.
833
834 2007-06-22  Werner Koch  <wk@g10code.com>
835
836         * estream.c (es_fdopen): Factored code out to..
837         (do_fdopen): .. new.
838         (es_fdopen_nc): New.
839         (estream_cookie_fd): Add field NO_CLOSE.
840         (es_func_fd_create): Add arg NO_CLOSE and changed all callers.
841         (es_func_fd_destroy): Handle the new flag.
842
843         * homedir.c (gnupg_libexecdir) [W32]: Factor code out to ..
844         (w32_rootdir): .. new.
845         (gnupg_sysconfdir, gnupg_libdir, gnupg_datadir) [W32]: Return
846         name based on w32_rootdir().
847
848 2007-06-21  Werner Koch  <wk@g10code.com>
849
850         * membuf.h (get_membuf_len): New.
851
852         * membuf.c (init_membuf_secure): Really allocate in secure memory.
853         (put_membuf_str): New.
854
855         * ttyio.c (tty_getf): New.
856
857         * util.h (ctrl_t): Declare it here.
858
859         * asshelp.c (start_new_gpg_agent): New.  Based on code from
860         ../sm/call-agent.c
861
862 2007-06-20  Werner Koch  <wk@g10code.com>
863
864         * sysutils.c (gnupg_sleep): New.
865         * sysutils.h [W32]: Remove _sleep wrapper.  Changed all callers to
866         use gnupg_sleep.
867
868         * exechelp.c (build_w32_commandline_copy): New.
869         (build_w32_commandline): Factored some code out to new function
870         and correctly process a PGMNAME with spaces.
871         (gnupg_spawn_process_detached) [W32]: Implement.
872
873 2007-06-14  Werner Koch  <wk@g10code.com>
874
875         * simple-pwquery.h (MAP_SPWQ_ERROR_IMPL): New.
876         (SPWQ_NO_PIN_ENTRY): New.
877         * simple-pwquery.c (simple_pw_set_socket): New.
878         (agent_open): Use it if GPG_AGENT_INFO is not set.
879         (simple_pwquery): Extended to allow returning of otehyr error codes.
880
881         * util.h (GNUPG_MODULE_NAME_AGENT, GNUPG_MODULE_NAME_PINENTRY)
882         (GNUPG_MODULE_NAME_SCDAEMON, GNUPG_MODULE_NAME_DIRMNGR)
883         (GNUPG_MODULE_NAME_PROTECT_TOOL): New.
884         * homedir.c (gnupg_module_name): New.
885         (gnupg_bindir): New.
886
887 2007-06-12  Werner Koch  <wk@g10code.com>
888
889         * homedir.c (gnupg_sysconfdir): New.
890         (gnupg_libexecdir): New.  Taken from g10/misc.c:get_libexecdir.
891         (gnupg_datadir): New.
892         (gnupg_libdir): New.
893
894         * http.c (connect_server) [W32]: Do not call init_sockets if
895         HTTP_NO_WSASTARTUP is defined.
896
897         * init.c: New.
898
899         * estream.c (es_init_do): Init stream lock here because we can't
900         use a static initialization with W32pth.
901
902 2007-06-11  Werner Koch  <wk@g10code.com>
903
904         * Makefile.am (t_common_ldadd): Use libcommonstd macro.
905
906 2007-06-06  Werner Koch  <wk@g10code.com>
907
908         * Makefile.am: Include am/cmacros.am.
909
910         * sysutils.h [W32]: Remove prototypes for the registry access.
911         * w32reg.c:  Move to ../jnlib/w32-reg.c.
912
913         * i18n.c (i18n_init): New.
914
915         * simple-gettext.c: Remove.
916
917         * iobuf.c (iobuf_get_filelength): Rename SIZE to EXSIZE to silent
918         shadowing warning.
919
920 2007-06-04  Werner Koch  <wk@g10code.com>
921
922         * http.c [W32]: Include unistd.h also in this case.
923         (write_server) [W32]: Fixed error code.
924         (init_sockets): Fixed syntax error.
925         (cookie_close): Replace close by sock_close macro.
926
927         * estream.c [w32]: Do not init Mutex.
928
929         * Makefile.am (common_sources) [USE_SNS_SRV]: Build srv.c only
930         when needed.
931
932         * ttyio.c (init_ttyfp) [W32]: Do not use TTYFP.
933
934         * util.h: Include ../jnlib/dynload.h.
935
936         * dynload.h:  Move to ../jnlib.
937
938 2007-05-30  Werner Koch  <wk@g10code.com>
939
940         * estream.c (MEM_FREE, MEM_ALLOC, MEM_REALLOC): Prefix with ES_ as
941         windows.h also has such definitions,
942
943 2007-05-15  Werner Koch  <wk@g10code.com>
944
945         * util.h: Do not include gnulib's vasprintf.  Redefine asprintf
946         and vasprintf.
947
948         * xasprintf.c (xasprintf, xtryasprintf): Use estream_vasprintf.
949
950         * estream-printf.h, estream-printf.c: New.  Taken from current
951         libestream SVN.
952         * Makefile.am (common_sources): Add them.
953
954 2007-05-14  Werner Koch  <wk@g10code.com>
955
956         * sexp-parse.h (smklen): New.
957         * sexputil.c: Include sexp-parse.h.
958         (make_simple_sexp_from_hexstr): Replace sprintf by smklen.
959
960 2007-05-07  Werner Koch  <wk@g10code.com>
961
962         * signal.c (got_fatal_signal): Protect SIG from being clobbered by
963         a faulty signal implementaion.  Suggested by James Juran.
964
965 2007-04-25  Werner Koch  <wk@g10code.com>
966
967         * i18n.h (ngettext): New.
968         * simple-gettext.c (ngettext): New.
969
970 2007-04-20  Werner Koch  <wk@g10code.com>
971
972         * miscellaneous.c (my_gcry_logger, my_gcry_outofcore_handler):
973         Moved from gpg-agent to here.
974         (my_gcry_fatalerror_handler): new.
975         (setup_libgcrypt_logging): New.
976
977 2007-03-19  Werner Koch  <wk@g10code.com>
978
979         * miscellaneous.c (print_hexstring): New.
980         * estream.c (es_fprintf_unlocked): New.
981         (es_write_sanitized): New.
982         (es_write_hexstring): New.
983         (es_write_sanitized_utf8_buffer) [GNUPG_MAJOR_VERSION]: New.
984
985 2007-03-09  David Shaw  <dshaw@jabberwocky.com>
986
987         From STABLE-BRANCH-1-4
988
989         * http.c (do_parse_uri): Remove the hkp port 11371 detection.  We
990         implement hkp in the keyserver handler, and the support here makes
991         it appear like a bad hkp request actually succeeded.
992
993 2007-01-31  Werner Koch  <wk@g10code.com>
994
995         * Makefile.am (t_common_ldadd): Add LIBINCONV and LIBINTL.
996
997 2007-01-25  Werner Koch  <wk@g10code.com>
998
999         * simple-pwquery.c (simple_pwquery): New arg OPT_CHECK.
1000
1001 2006-12-13  David Shaw  <dshaw@jabberwocky.com>
1002
1003         * Makefile.am (AM_CPPFLAGS): Include intl/ so we can reference the
1004         built-in headers.
1005
1006 2006-11-23  Werner Koch  <wk@g10code.com>
1007
1008         * http.c: Include i18n.h
1009
1010 2006-11-21  Werner Koch  <wk@g10code.com>
1011
1012         * estream.c: Remove explicit Pth soft mapping diabling becuase it
1013         is now done in config.h.
1014
1015 2006-11-15  Werner Koch  <wk@g10code.com>
1016
1017         * estream.c: Disabled Pth soft mapping.
1018         (my_funopen_hook_ret_t): New.
1019         (print_fun_writer): Use it here.
1020
1021         * iobuf.c (fd_cache_close): Use %d instead of %p for debug output.
1022
1023 2006-11-03  Werner Koch  <wk@g10code.com>
1024
1025         * Makefile.am (t_convert_DEPENDENCIES): Add libcommon.  From
1026         Gentoo.
1027
1028 2006-10-24  Marcus Brinkmann  <marcus@g10code.de>
1029
1030         * Makefile.am (libcommon_a_CFLAGS): Add $(LIBASSUAN_CFLAGS).
1031         (libsimple_pwquery_a_CFLAGS): New variable.
1032
1033 2006-10-20  Werner Koch  <wk@g10code.com>
1034
1035         * convert.c (hex2bin): New.
1036
1037 2006-10-17  Werner Koch  <wk@g10code.com>
1038
1039         * estream.c (struct estream_internal, es_initialize)
1040         (es_deinitialize, print_fun_writer, es_print): New and modified
1041         functions to avoid tempfiles for printf style printing.
1042
1043         * Makefile.am (libcommonpth_a_SOURCES): New. We now build a secon
1044         version of the library with explicit Pth support.
1045         * exechelp.c, estream.c: Make use of WITHOUT_GNU_PTH.
1046
1047 2006-10-08  Werner Koch  <wk@g10code.com>
1048
1049         * gpgrlhelp.c: Trun all functions into dummies if readline is not
1050         available.
1051
1052 2006-10-06  Werner Koch  <wk@g10code.com>
1053
1054         * Makefile.am (AM_CFLAGS): Use PTH version of libassuan.
1055
1056         * util.h (GNUPG_GCC_A_SENTINEL): Defined for gcc >= 4.
1057
1058 2006-10-04  David Shaw  <dshaw@jabberwocky.com>
1059
1060         * gpgrlhelp.c: readline requires stdio.h.
1061
1062 2006-10-04  Werner Koch  <wk@g10code.com>
1063
1064         * membuf.c (init_membuf_secure): New.
1065         (put_membuf): Make sure that ERRNO is set even if the underlying
1066         malloc code does not work properly.
1067         (get_membuf): Set ERRNO on error.
1068         (get_membuf): Allow to pass LEN as NULL.
1069
1070 2006-10-02  Werner Koch  <wk@g10code.com>
1071
1072         * iobuf.c (iobuf_unread): Removed.  This code is not required.
1073         Also removed the entire unget buffer stuff.
1074
1075 2006-09-27  Werner Koch  <wk@g10code.com>
1076
1077         * util.h: Do not include strsep.h and strpbrk.h.
1078         (isascii): Removed as it is now in jnlib.
1079
1080         * iobuf.c (pop_filter, underflow, iobuf_close): Free the unget
1081         buffer.
1082
1083 2006-09-27  Florian Weimer <fweimer@bfk.de>  (wk)
1084
1085         * iobuf.c (iobuf_unread): New.
1086
1087 2006-09-22  Werner Koch  <wk@g10code.com>
1088
1089         * i18n.h: Changed license to an all permissive one.
1090
1091         * ttyio.c (tty_get): We need to use readline too.  Added two more
1092         hooks.
1093
1094 2006-09-21  Werner Koch  <wk@g10code.com>
1095
1096         * ttyio.c (tty_private_set_rl_hooks): New.
1097         (tty_enable_completion, tty_disable_completion): Use a hook to
1098         enable readline support.  Now always available.
1099         (tty_cleanup_rl_after_signal): New.
1100
1101         * ttyio.h: Removed readline specific stuff.  Included util.h.
1102         * common-defs.h: New.
1103
1104 2006-09-15  Werner Koch  <wk@g10code.com>
1105
1106         * convert.c: New.
1107         (hexcolon2bin): New.
1108         (bin2hex, bin2hexcolon, do_binhex): New.
1109         * t-convert.c: New
1110
1111 2006-09-14  Werner Koch  <wk@g10code.com>
1112
1113         * util.h (out_of_core): Use new gpg_error_from_syserror function.
1114
1115         * http.c (init_sockets): Changed it to require 2.2 unless it is
1116         build within gnupg 1 where we require 1.1 (and not anymore allow
1117         for 1.0).
1118
1119 2006-09-07  Werner Koch  <wk@g10code.com>
1120
1121         * exechelp.c (gnupg_spawn_process): Factor out post fork code to ..
1122         (do_exec): .. new function.  Allow passing of -1 for the fds.
1123         (gnupg_spawn_process): Terminate gcrypt's secure memory in the child.
1124         (gnupg_spawn_process_detached): New.
1125
1126 2006-09-06  Werner Koch  <wk@g10code.com>
1127
1128         * maperror.c: Removed.
1129
1130         * util.h (out_of_core): New.
1131
1132 2006-09-04  Werner Koch  <wk@g10code.com>
1133
1134         * http.c (http_get_header): New.
1135         (capitalize_header_name, store_header): New.
1136         (parse_response): Store headers away.
1137         (send_request): Return GPG_ERR_NOT_FOUND if connect_server failed.
1138         * http.h: New flag HTTP_FLAG_NEED_HEADER.
1139
1140 2006-08-21  Werner Koch  <wk@g10code.com>
1141
1142         * Makefile.am (libcommon_a_SOURCES): Added keyserver.h
1143
1144         * openpgpdefs.h: New.  Stripped from ..g10/packet.h.
1145
1146 2006-08-16  Werner Koch  <wk@g10code.com>
1147
1148         * keyserver.h: Moved from ../include to here.
1149
1150         * http.c: Include srv.h.
1151
1152         * srv.c, srv.h: New. Taken from GnuPG 1.4
1153
1154 2006-08-14  Werner Koch  <wk@g10code.com>
1155
1156         * http.h (struct http_context_s): Moved to implementation.
1157         * http.c (http_open): Changed call to return a context.
1158         (http_open_document): Ditto.
1159         (http_get_read_ptr, http_get_read_ptr, http_get_status_code): New.
1160         (do_parse_uri): Replaced strlwr by straight code to ease
1161         standalone use of this file.
1162         (http_wait_response): Removed arg STATUS_CODE as it is available
1163         through an accessor function. Adjusted caller.
1164         (http_escape_string): New.
1165
1166         * estream.c (es_read_line): Renamed to ..
1167         (doreadline): .. this.  Changed all callers.
1168         (es_read_line): New.  This is theusual limited getline variabnt as
1169         used at several places.  Here taken and adjusted from xreadline.c
1170         (es_free): New.
1171
1172 2006-08-11  Werner Koch  <wk@g10code.com>
1173
1174         * http.c: Major internal changes to optionallly support GNUTLS and
1175         ESTREAM.
1176         (http_open): Move initialization of the stream ...
1177         (send_request): .. here.
1178         (http_register_tls_callback): New.
1179
1180         * estream.c (es_writen): Try to seek only is a seek function has
1181         been registered.
1182
1183 2006-08-09  Werner Koch  <wk@g10code.com>
1184
1185         * http.c, http.h: New.  Taken from gnupg 1.4.5, merged with
1186         changes done for the Dirmngr project (by g10 Code) and cleaned up
1187         some stuff.
1188         (make_header_line): New. Change all caller to make user of the new
1189         * Makefile.am (libcommon_a_SOURCES): Added http.c and http.h.
1190
1191 2006-05-23  Werner Koch  <wk@g10code.com>
1192
1193         * gettime.c (isotimestamp): New.
1194
1195         * ttyio.c (tty_get_ttyname): Posixly correct usage of ctermid.
1196
1197         * dns-cert.c: New.  Taken from 1.4.3's util/cert.c.
1198         * dns-cert.h: New.
1199
1200 2006-05-22  Werner Koch  <wk@g10code.com>
1201
1202         * pka.c: New. Taked from 1.4.3.
1203         * pka.h: New.
1204         * Makefile.am: Added pka.
1205
1206 2006-05-19  Werner Koch  <wk@g10code.com>
1207
1208         * yesno.c (answer_is_yes_no_default, answer_is_yes_no_quit):
1209         Updated from 1.4.3.
1210         (answer_is_okay_cancel): new.  From 1.4.3.
1211
1212         * miscellaneous.c (match_multistr): New.  Taken from 1.4.3.
1213
1214         * ttyio.c (tty_enable_completion, tty_disable_completion): New
1215         dummy functions.
1216         * ttyio.h: Add prototypes and stubs.
1217
1218 2006-04-19  Werner Koch  <wk@g10code.com>
1219
1220         * iobuf.c (iobuf_get_fd): New.  Taken from 1.4.3.
1221         (iobuf_is_pipe_filename): New.
1222         (pop_filter): Made static.
1223         (iobuf_skip_rest): New.  Orginal patch by Florian
1224         Weimer.  Added new argument PARTIAL.
1225         (block_filter): Remove the old gpg indeterminate length mode.
1226         (block_filter): Properly handle a partial body stream
1227         that ends with a 5-byte length that happens to be zero.
1228         (iobuf_set_block_mode, iobuf_in_block_mode): Removed as
1229         superfluous.
1230         (iobuf_get_filelength): New arg OVERFLOW.
1231         (iobuf_get_filelength) [W32]: Use GetFileSizeEx if available
1232         * miscellaneous.c (is_file_compressed): Take care of OVERFLOW.
1233
1234 2006-04-18  Werner Koch  <wk@g10code.com>
1235
1236         * homedir.c (w32_shgetfolderpath): New.  Taken from gpg 1.4.3.
1237         (default_homedir): Use it.
1238
1239 2005-10-08  Marcus Brinkmann  <marcus@g10code.de>
1240
1241         * signal.c (get_signal_name): Check value of HAVE_DECL_SYS_SIGLIST
1242         instead of just if it is defined.
1243
1244 2005-09-28  Marcus Brinkmann  <marcus@g10code.de>
1245
1246         * Makefile.am (AM_CFLAGS): Add $(LIBASSUAN_CFLAGS).
1247
1248 2005-07-04  Marcus Brinkmann  <marcus@g10code.de>
1249
1250         * simple-pwquery.h (simple_pwclear): New prototype.
1251         * simple-pwquery.c (simple_pwclear): New function.
1252
1253 2005-06-15  Werner Koch  <wk@g10code.com>
1254
1255         * miscellaneous.c (make_printable_string): Made P a void*.
1256
1257         * sexputil.c (keygrip_from_canon_sexp, cmp_simple_canon_sexp):
1258         Fixed signed/unsigned pointer mismatch.
1259         (make_simple_sexp_from_hexstr): Ditto.  This is all too ugly; I
1260         wonder why gcc-4's default is to warn about them and forcing us to
1261         use cast the warning away.
1262         * iobuf.c (block_filter): Ditto.
1263         (iobuf_flush): Ditto.
1264         (iobuf_read_line): Ditto.
1265         (iobuf_read): Make BUFFER a void *.
1266         (iobuf_write): Make BUFFER a const void *.
1267         * ttyio.c (tty_print_utf8_string2): Ditto.
1268         * estream.c (estream_cookie_mem): Make MEMORY unsigned char*.
1269         (es_write): Make BUFFER a void *.
1270         (es_writen): Ditto.
1271         (es_func_fd_read, es_func_fd_write, es_func_mem_read)
1272         (es_func_mem_write): Ditto.
1273         (es_read, es_readn): Ditto.
1274         (es_func_mem_write): Made MEMORY_NEW an unsigned char *.
1275         * estream.h (es_cookie_read_function_t)
1276         (es_cookie_write_function_t): Changed buffer arg to void*.
1277
1278 2005-06-03  Werner Koch  <wk@g10code.com>
1279
1280         * estream.c: Use HAVE_CONFIG_H and not USE_CONFIG_H!
1281         (es_func_fd_read, es_func_fd_write): Protect against EINTR.
1282
1283 2005-06-01  Werner Koch  <wk@g10code.com>
1284
1285         * Makefile.am (AM_CPPFLAGS): Added.
1286
1287         * util.h: Add some includes for gnulib.
1288         (ttyname, isascii): Define them inline.
1289         * fseeko.c, ftello.c: Removed.
1290         * strsep.c, mkdtemp.c: Removed.
1291         * ttyname.c, isascii.c: Removed.
1292
1293 2005-05-31  Werner Koch  <wk@g10code.com>
1294
1295         * dynload.h: s/__inline__/inline/.
1296
1297 2005-05-13  Werner Koch  <wk@g10code.com>
1298
1299         * signal.c (got_fatal_signal): Print the signal number if we can't
1300         get a name for it.
1301         (get_signal_name): Return NULL if no name is available. Fixed
1302         conditional for sys_siglist to the correct one.
1303
1304 2005-04-17  Werner Koch  <wk@g10code.com>
1305
1306         * sexputil.c (cmp_simple_canon_sexp): New.
1307         (make_simple_sexp_from_hexstr): New.
1308
1309 2005-04-07  Werner Koch  <wk@g10code.com>
1310
1311         * sexputil.c: New.
1312
1313 2005-04-11  Marcus Brinkmann  <marcus@g10code.de>
1314
1315         * simple-pwquery.c (simple_pwquery): Use spwq_secure_free.
1316
1317 2005-03-03  Werner Koch  <wk@g10code.com>
1318
1319         * Makefile.am (AM_CFLAGS): Added PTH_CFLAGS.  Noted by Kazu Yamamoto.
1320
1321 2005-02-25  Werner Koch  <wk@g10code.com>
1322
1323         * xasprintf.c (xtryasprintf): New.
1324
1325 2005-01-26  Moritz Schulte  <moritz@g10code.com>
1326
1327         * Makefile.am (libcommon_a_SOURCES): New source files: estream.c,
1328         estream.h.
1329         * estream.c, estream.h: New files.
1330
1331 2005-01-03  Werner Koch  <wk@g10code.com>
1332
1333         * asshelp.c (send_pinentry_environment): Fixed changed from
1334         2004-12-18; cut+paste error for lc-messages.
1335
1336 2004-12-21  Werner Koch  <wk@g10code.com>
1337
1338         * simple-pwquery.c (agent_open) [W32]: Implement for W32.
1339         (readline) [W32]: Use recv instead of read.
1340         (writen) [W32]: Use send instead of write.
1341         (my_stpcpy): Define a stpcpy replacement so that this file
1342         continues to be self-contained.
1343         (agent_send_all_options) [W32]: Don't call ttyname.
1344
1345 2004-12-21  Marcus Brinkmann  <marcus@g10code.de>
1346
1347         * simple-pwquery.h (simple_query): Add prototype.
1348         * simple-pwquery.c (simple_query): New function.
1349
1350 2004-12-21  Werner Koch  <wk@g10code.com>
1351
1352         * signal.c (got_fatal_signal, got_usr_signal)
1353         (got_fatal_signal) [DOSISH]: Don't build.
1354         * simple-gettext.c: Include sysutils.h
1355
1356         * homedir.c: New. Use CSIDL_APPDATA for W32 as the default home
1357         directory.
1358         * Makefile.am (libcommon_a_SOURCES): Add it.
1359         (EXTRA_DIST): Removed mkerror and mkerrtok.
1360
1361 2004-12-20  Werner Koch  <wk@g10code.com>
1362
1363         * sysutils.h [W32]: Define sleep.
1364         * util.h: Add prototype for mkdtemp.
1365
1366         * membuf.c (put_membuf): Wipe out buffer after a failed realloc.
1367
1368 2004-12-19  Werner Koch  <wk@g10code.com>
1369
1370         * maperror.c (map_assuan_err_with_source): Oops, args were swapped.
1371
1372 2004-12-18  Werner Koch  <wk@g10code.com>
1373
1374         * maperror.c (map_assuan_err): Renamed to ..
1375         (map_assuan_err_with_source): .. this and add arg SOURCE.c
1376         * asshelp.c (send_pinentry_environment, send_one_option): Add arg
1377         ERRSOURCE.
1378
1379 2004-12-15  Werner Koch  <wk@g10code.com>
1380
1381         * sysutils.h [W32]: Prototypes for registry functions.
1382         * w32reg.c: Include sysutils.h
1383
1384         * simple-pwquery.c [W32]: Dummy code to allow a build.
1385
1386         * exechelp.c [W32]: Implemented for W32 .
1387
1388         * ttyname.c: New.
1389
1390         * asshelp.c (send_one_option): New.
1391         (send_pinentry_environment): Cleaned up and made sure that empty
1392         values are not send.
1393
1394 2004-12-07  Werner Koch  <wk@g10code.com>
1395
1396         * asshelp.c (send_pinentry_environment) [W32]: Do not use ttyname.
1397
1398 2004-12-06  Werner Koch  <wk@g10code.com>
1399
1400         * exechelp.h, exechelp.c: New.  Based on code from ../sm/import.c.
1401
1402 2004-12-03  Werner Koch  <wk@g10code.com>
1403
1404         * strsep.c: Fixed copyright comments.
1405
1406 2004-11-26  Werner Koch  <wk@g10code.com>
1407
1408         * simple-gettext.c: New taken from gnupg 1.3.x
1409
1410         * simple-pwquery.c [_WIN32]: Include winsock2.h.
1411         (agent_open): Disable it until we have our AF_UNIX implementation
1412         ready.
1413         * fseeko.c, ftello.c: Include sys/types for the sake of W32.
1414
1415 2004-11-23  Werner Koch  <wk@g10code.com>
1416
1417         * b64enc.c: Include stdio.h and string.h
1418
1419 2004-08-18  Werner Koch  <wk@g10code.de>
1420
1421         * simple-pwquery.c (simple_pwquery): Handle gpg-error style return
1422         code for canceled.
1423
1424 2004-07-20  Werner Koch  <wk@g10code.de>
1425
1426         * maperror.c: Removed header ksba.h.  Not required anymore.
1427
1428 2004-06-14  Werner Koch  <wk@gnupg.org>
1429
1430         * xreadline.c: New.  Based on the iobuf_read_line function.
1431
1432 2004-05-12  Werner Koch  <wk@gnupg.org>
1433
1434         * util.h (xtrycalloc_secure,xtrymalloc_secure): New.
1435
1436 2004-05-11  Werner Koch  <wk@gnupg.org>
1437
1438         * sysutils.c (disable_core_dumps): Only set the current limit.
1439         (enable_core_dumps): New.
1440
1441 2004-04-13  Werner Koch  <wk@gnupg.org>
1442
1443         * simple-pwquery.c (copy_and_escape): Relaxed quoting.
1444
1445 2004-04-05  Werner Koch  <wk@gnupg.org>
1446
1447         * errors.h (STATUS_NEWSIG): New.
1448
1449 2004-03-11  Werner Koch  <wk@gnupg.org>
1450
1451         * dynload.h [__MINGW32__]: Define RTLD_LAZY.
1452
1453 2004-03-09  Werner Koch  <wk@gnupg.org>
1454
1455         * maperror.c (map_assuan_err): Map the Locale_Problem item.
1456
1457 2004-03-03  Werner Koch  <wk@gnupg.org>
1458
1459         * asshelp.c, asshelp.h: New.
1460         (send_pinentry_environment): New. Code taken from ../sm/call-agent.c.
1461
1462 2004-02-19  Werner Koch  <wk@gnupg.org>
1463
1464         * simple-pwquery.c (agent_open): Don't mangle INFOSTR.
1465
1466 2004-02-17  Werner Koch  <wk@gnupg.org>
1467
1468         * simple-pwquery.c (agent_open): Ignore an empty GPG_AGENT_INFO.
1469
1470         * errors.h: Added STATUS_IMPORT_OK.
1471
1472 2004-02-10  Werner Koch  <wk@gnupg.org>
1473
1474         * b64enc.c: New.  Based on code from ../sm/base64.c.
1475
1476 2004-01-30  Marcus Brinkmann  <marcus@g10code.de>
1477
1478         * Makefile.am (libcommon_a_SOURCES): Add xasprintf.c.
1479         * miscellaneous.c (xasprintf): Moved to ...
1480         * xasprintf (xasprintf): ... here.  New file.
1481         This allows to use xasprintf without sucking in gpg-error.
1482
1483 2004-01-27  Werner Koch  <wk@gnupg.org>
1484
1485         * sexp-parse.h: New; moved from../agent.
1486
1487         * util.h (xtoi_4): New.
1488
1489 2003-12-23  Werner Koch  <wk@gnupg.org>
1490
1491         * maperror.c (map_assuan_err): Prepared for a new error code.
1492
1493 2003-12-17  Werner Koch  <wk@gnupg.org>
1494
1495         * gettime.c (asctimestamp): Add a note on a non-avoidable gcc warning.
1496
1497         * util.h [!HAVE_VASPRINTF]: Add printf format attribute to the
1498         replacement function.
1499
1500         * miscellaneous.c (xasprintf): New.
1501
1502 2003-11-14  Werner Koch  <wk@gnupg.org>
1503
1504         * mkdtemp.c (mkdtemp): Use gcry_create_nonce.
1505
1506         * cryptmiss.c: Removed.
1507
1508 2003-11-13  Werner Koch  <wk@gnupg.org>
1509
1510         * util.h (vasprintf): Also fixed the prototype.
1511
1512         * vasprintf.c (vasprintf): ARGS should not be a pointer.  Fixed
1513         segv on Solaris.  Reported by Andrew J. Schorr.
1514
1515 2003-11-12  Werner Koch  <wk@gnupg.org>
1516
1517         * maperror.c (map_ksba_err, map_gcry_err, map_kbx_err): Removed.
1518
1519 2003-10-31  Werner Koch  <wk@gnupg.org>
1520
1521         * util.h (gnupg_isotime_t): New.
1522         (gnupg_copy_time): New.
1523
1524         * gettime.c (gnupg_get_isotime): New.
1525
1526 2003-09-23  Werner Koch  <wk@gnupg.org>
1527
1528         * iobuf.c (check_special_filename): Replaced is isdigit by digitp
1529         to avoid passing negative values and potential locale problems.
1530         Problem noted by Christian Biere.
1531
1532         * util.h (ascii_isspace): New.
1533
1534 2003-09-18  Werner Koch  <wk@gnupg.org>
1535
1536         * ttyio.c (tty_fprintf): New.
1537         (tty_print_string, tty_print_utf8_string2)
1538         (tty_print_utf8_string): Made P argument const byte*.
1539
1540 2003-08-20  Marcus Brinkmann  <marcus@g10code.de>
1541
1542         * maperror.c (map_ksba_err): Map -1.  Use gpg_err_make to set
1543         the error source.
1544
1545 2003-08-14  Timo Schulz  <twoaday@freakmail.de>
1546
1547         * dynload.h. New. W32 wrapper around the dynload mechanism.
1548
1549 2003-07-15  Werner Koch  <wk@gnupg.org>
1550
1551         * simple-pwquery.c, simple-pwquery.h:  New; moved from ../agent.
1552         * Makefile.am (libsimple_pwquery_a_LIBADD): New.
1553
1554 2003-06-25  Werner Koch  <wk@gnupg.org>
1555
1556         * maperror.c (map_to_assuan_status): Directly map 0 to 0.
1557
1558 2003-06-17  Werner Koch  <wk@gnupg.org>
1559
1560         * gettime.c (scan_isodatestr,add_days_to_timestamp,strtimevalue)
1561         (strtimestamp,asctimestamp): New.  Code taken from gnupg 1.3.2
1562         mischelp.c.
1563
1564         * yesno.c: New.  Code taken from gnupg 1.3.2 mischelp.c
1565
1566         * miscellaneous.c: New.
1567
1568         * util.h: Include utf8conf.h
1569
1570 2003-06-16  Werner Koch  <wk@gnupg.org>
1571
1572         * gettime.c (make_timestamp): New.
1573
1574         * ttyio.c: New. Taken from gnupg 1.2.
1575         * ttyio.h: Move from ../include.
1576
1577 2003-06-13  Werner Koch  <wk@gnupg.org>
1578
1579         * util.h (seterr): Removed macro.
1580         (xmalloc_secure,xcalloc_secure): New.
1581
1582 2003-06-11  Werner Koch  <wk@gnupg.org>
1583
1584         * iobuf.c (iobuf_writebyte,iobuf_write): Return error code from
1585         iobuf_flush.
1586         (iobuf_writestr): Ditto.
1587
1588 2003-06-10  Werner Koch  <wk@gnupg.org>
1589
1590         * iobuf.c, iobuf.h: New. Taken from current gnupg 1.3 CVS.  Run
1591         indent on it and adjusted error handling to libgpg-error style.
1592         Replaced IOBUF by iobuf_t. Renamed malloc functions.
1593
1594 2003-06-04  Werner Koch  <wk@gnupg.org>
1595
1596         * errors.h: Removed all error codes.  We keep the status codes for
1597         now.
1598         * Makefile.am: Do not create errors.c anymore; remove it from the
1599         sources.
1600
1601         * maperror.c: Don't include error.h.  Change all error codes to
1602         libgpg-error style.
1603         (map_assuan_err): Changed to new Assuan error code convention.
1604         (map_to_assuan_status): Likewise.
1605         (map_gcry_err,map_kbx_err): Not needed.  For now dummy functions.
1606
1607         * membuf.c, membuf.h: New.  Code taken from ../sm/call-agent.h.
1608         * Makefile.am: Added above.
1609
1610 2003-04-29  Werner Koch  <wk@gnupg.org>
1611
1612         * util.h (fopencokokie): Removed prototype and struct.
1613
1614         * fopencookie.c: Removed.
1615
1616         * maperror.c: Use system assuan.h
1617
1618 2002-10-31  Neal H. Walfield  <neal@g10code.de>
1619
1620         * isascii.c: New file.
1621         * putc_unlocked.c: Likewise.
1622
1623 2002-10-28  Neal H. Walfield  <neal@g10code.de>
1624
1625         * signal.c (caught_fatal_sig): Remove superfluous zero
1626         initializer.
1627         (caught_sigusr1): Likewise.
1628
1629 2002-09-04  Neal H. Walfield  <neal@g10code.de>
1630
1631         * vasprintf.c (vasprintf) [va_copy]: Use va_copy.
1632         [!va_copy && __va_copy]: Use __va_copy.
1633         [!va_copy && !__va_copy]: Only now fall back to using memcpy.
1634
1635 2002-08-21  Werner Koch  <wk@gnupg.org>
1636
1637         * errors.h: Added STATUS_IMPORT_PROBLEM.
1638
1639 2002-08-20  Werner Koch  <wk@gnupg.org>
1640
1641         * vasprintf.c: Hack to handle NULL for %s.
1642
1643 2002-08-09  Werner Koch  <wk@gnupg.org>
1644
1645         * signal.c: New. Taken from GnuPG 1.1.91.
1646
1647 2002-07-23  Werner Koch  <wk@gnupg.org>
1648
1649         * util.h (_IO_cookie_io_functions_t): Fixed typo.  Noted by
1650         Richard Lefebvre.
1651
1652 2002-07-22  Werner Koch  <wk@gnupg.org>
1653
1654         * fseeko.c, ftello.c: New.
1655
1656 2002-06-28  Werner Koch  <wk@gnupg.org>
1657
1658         * maperror.c (map_to_assuan_status): Map more errorcodes to Bad
1659         Certificate.
1660
1661 2002-06-26  Werner Koch  <wk@gnupg.org>
1662
1663         * maperror.c (map_to_assuan_status): Map EOF to No_Data_Available.
1664
1665 2002-06-10  Werner Koch  <wk@gnupg.org>
1666
1667         * errors.h (gnupg_error_token): Add new prototype.
1668         (STATUS_ERROR): New.
1669
1670         * mkerrtok: New.
1671         * Makefile.am: Use it to create the new error token function.
1672
1673 2002-06-04  Werner Koch  <wk@gnupg.org>
1674
1675         * maperror.c (map_to_assuan_status): Map Bad_CA_Certificate.
1676
1677 2002-05-23  Werner Koch  <wk@gnupg.org>
1678
1679         * no-pth.c, Makefile.am: Removed.
1680
1681 2002-05-22  Werner Koch  <wk@gnupg.org>
1682
1683         * mkdtemp.c: Replaced byte by unsigned char because it is no longer
1684         defined in gcrypt.h.
1685
1686 2002-05-21  Werner Koch  <wk@gnupg.org>
1687
1688         * maperror.c (map_gcry_err): Add libgcrypt's new S-expression errors.
1689         (map_ksba_err): Add a few mappings.
1690
1691 2002-05-14  Werner Koch  <wk@gnupg.org>
1692
1693         * gettime.c: New.
1694
1695 2002-05-03  Werner Koch  <wk@gnupg.org>
1696
1697         * errors.h: Added STARUS_EXPSIG and STATUS_EXPKEYSIG.
1698
1699 2002-04-15  Werner Koch  <wk@gnupg.org>
1700
1701         * cryptmiss.c: New.
1702
1703 2002-02-14  Werner Koch  <wk@gnupg.org>
1704
1705         * maperror.c: Add more assuan<->gnupg mappings.
1706
1707 2002-02-12  Werner Koch  <wk@gnupg.org>
1708
1709         * fopencookie.c: Dummy function.
1710
1711         * vasprintf.c: New.  Taken from binutils-2.9.1 and dropped all non
1712         ANSI-C stuff.  Merged with asprintf version.
1713
1714         * no-pth.c: New.
1715
1716 2002-01-23  Werner Koch  <wk@gnupg.org>
1717
1718         * mkdtemp.c: Copied from gnupg-1.0.6c and changed to use libgcrypt.
1719
1720 2002-01-19  Werner Koch  <wk@gnupg.org>
1721
1722         * sysutils.c: New.  This is the misc.c file from gnupg 1.0.6 with
1723         the OpenPGP stuff removed.
1724         * sysutils.h: New.
1725
1726 2002-01-15  Werner Koch  <wk@gnupg.org>
1727
1728         * maperror.c: Add mapping for Not_Trusted.
1729
1730 2002-01-11  Werner Koch  <wk@gnupg.org>
1731
1732         * maperror.c (map_assuan_err): Codes for CRL
1733
1734 2002-01-08  Werner Koch  <wk@gnupg.org>
1735
1736         * util.h (spacep): New.
1737
1738 2002-01-02  Werner Koch  <wk@gnupg.org>
1739
1740         * maperror.c (map_to_assuan_status): New.  Merged from ../agent
1741         and ../sm.
1742
1743 2001-12-20  Werner Koch  <wk@gnupg.org>
1744
1745         * maperror.c (map_gcry_err): Add some mappings.
1746
1747 2001-12-18  Werner Koch  <wk@gnupg.org>
1748
1749         * Makefile.am (AM_CPPFLAGS): Include flags for gcrypt and ksba
1750
1751 2001-12-14  Werner Koch  <wk@gnupg.org>
1752
1753         * util.h (digitp, hexdigitp): New ctype like macros.
1754         (atoi_1,atoi_2,atoi_4,xtoi_1,xtoi_2): New.
1755
1756
1757  Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
1758            2009, 2010 Free Software Foundation, Inc.
1759
1760  This file is free software; as a special exception the author gives
1761  unlimited permission to copy and/or distribute it, with or without
1762  modifications, as long as this notice is preserved.
1763
1764  This file is distributed in the hope that it will be useful, but
1765  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1766  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.