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