12011-12-01  Werner Koch  <wk@g10code.com>
2
3	NB: ChangeLog files are no longer manually maintained.  Starting
4	on December 1st, 2011 we put change information only in the GIT
5	commit log, and generate a top-level ChangeLog file from logs at
6	"make dist".  See doc/HACKING for details.
7
82011-08-10  Werner Koch  <wk@g10code.com>
9
10	* assuan.h.in (ASSUAN_FORCE_CLOSE): New.
11	* assuan-defs.h (assuan_context_s): Add flags.FORCE_CLOSE.
12	* context.c (assuan_set_flag, assuan_get_flag): Set/get the flag.
13	* assuan-handler.c (assuan_process_done): Close connection if
14	requested.
15
162011-04-06  Werner Koch  <wk@g10code.com>
17
18	* libassuan-config.in: Add option --host.
19	* libassuan.m4: Remove cruft.  Add check for correct HOST.
20
212011-03-30  Werner Koch  <wk@g10code.com>
22
23	* sysutils.c (_assuan_sysutils_blurb): Add version string.
24
252011-03-09  Werner Koch  <wk@g10code.com>
26
27	* assuan-handler.c (assuan_register_command): Use my_strcasecmp.
28
292011-03-06  Ben Kibbey <bjk@luxsci.net>
30
31	* assuan-socket-connect.c (assuan_socket_connect_fd): Finalize a
32	context connection from an already connected socket descriptor.
33	* assuan.h.in (assuan_socket_connect_fd): New prototype.
34
352011-03-05  Ben Kibbey <bjk@luxsci.net>
36
37	* assuan-handler.c (assuan_register_command): Let an existing command
38	be updated to the new values.
39
402011-02-28  Werner Koch  <wk@g10code.com>
41
42	* libassuan.vers: Fold LIBASSUAN_1.1 block into LIBASSUAN_1.0.
43
442011-02-28  Ben Kibbey  <bjk@luxsci.net>
45
46	* assuan-handler.c (assuan_register_pre_cmd_notify): Pass command
47	string as second argument.
48	* assuan.h (assuan_command_t): Move back to assuan-defs.h.
49
502011-02-24  Ben Kibbey  <bjk@luxsci.net>
51
52	* assuan-handler.c (assuan_register_pre_cmd_notify): New callback.
53	* assuan.h (assuan_command_t): Register command object.
54	(pre_cmd_notify_fnc): New prototype.
55
562011-02-03  Marcus Brinkmann  <marcus@g10code.com>
57
58	* assuan-socket.c (_assuan_sock_new): Call _assuan_socket instead
59	of socket.
60	(_assuan_sock_connect): Call _assuan_connect instead of connect.
61	* assuan-socket-connect.c (assuan_socket_connect): Call
62	_assuan_sock_new and _assuan_sock_connect instead of
63	_assuan_socket and assuan_connect.
64	* src/system-w32.c, src/system-w32ce.c (__assuan_socket): Call
65	socket instead of _assuan_sock_new.
66	(__assuan_connect): Call connect instead of _assuan_sock_connect.
67
682011-02-02  Marcus Brinkmann  <mb@g10code.com>
69
70	* assuan.h.in: Replace namespace by _namespace.
71
722011-02-02  Marcus Brinkmann  <mb@g10code.com>
73
74	* assuan-defs.h (_assuan_socket, _assuan_connect): New prototypes.
75	* assuan.h.in (ASSUAN_SYSTEM_HOOKS_VERSION): Bumped to 2.
76	(struct assuan_system_hooks): Add socket and connect members.
77	(__assuan_socket, __assuan_connect): New prototypes.
78	(_ASSUAN_SYSTEM_PTH_IMPL): Add socket and connect members.  *
79	assuan-socket-connect.c (assuan_socket_connect): Call
80	_assuan_socket and _assuan_connect instead _assuan_sock_new and
81	_assuan_sock_connect.
82	(libassuan.def, libassuan.vers): Add __assuan_socket and
83	__assuan_connect.
84
85	* system.c (_assuan_system_hooks_copy): Initialize destination
86	from system hooks, so we don't get any NULL pointers if there is a
87	version mismatch.  Support version 2 of the system hook structure.
88	(_assuan_socket, _assuan_connect): New functions.
89	* system-posix.c (__assuan_socket, __assuan_connect): New functions.
90	(_assuan_system_hooks): Add __assuan_socketm, __assuan_connect.
91	* system-w32.c (__assuan_socket, __assuan_connect): New functions.
92	(_assuan_system_hooks): Add __assuan_socketm, __assuan_connect.
93	* system-w32ce.c (__assuan_socket, __assuan_connect): New functions.
94	(_assuan_system_hooks): Add __assuan_socketm, __assuan_connect.
95
962010-12-20  Werner Koch  <wk@g10code.com>
97
98	* gpgcedev.c (pipeimpl_new): Check malloc and CreateEvent return
99	codes.
100
1012010-12-14  Werner Koch  <wk@g10code.com>
102
103	* gpgcemgr.c (wchar_to_utf8, utf8_to_wchar, set_show_registry): New.
104	(main): Add commands --gpgme-log and --gnupg-log.
105
1062010-11-17  Marcus Brinkmann  <mb@g10code.com>
107
108	* vasprintf.c (int_vasprintf) [HAVE_W32CE_SYSTEM && _MSC_VER]:
109	Just use a fixed size buffer, as va_copy is not easy to fake.
110
111	* gpgcedev.c (struct pipeimpl_s): Add member monitor_rvid.
112	(struct monitor_s, monitor_t): New types.
113	(monitor_table, monitor_table_size): New static variables.
114	(pipeimpl_new): Initialize monitor_rvid.
115	(allocate_monitor): New function.
116	(make_pipe): Also try the monitor_table if the opnctx_table fails.
117	(monitor): Renamed to ...
118	(monitor_main): ... this.  Remove from monitor_table when done.
119	(assign_rvid): Add to monitor table when creating monitor thread.
120
1212010-11-15  Werner Koch  <wk@g10code.com>
122
123	* gpgcedev.c (GPG_Init): Read debug settings.
124
125	* gpgcemgr.c (enable_debug, enable_log): New.
126	(main): Add options --enable-debug, --disable-debug, --enable-log,
127	--disable-log.
128
1292010-11-12  Werner Koch  <wk@g10code.com>
130
131	* gpgcedev.c (DEVCTX_VALUE): Rename to PIPECTX_VALUE.
132	(LOGCTX_VALUE): New.
133	(allocate_opnctx): Add arg IS_LOG.
134	(logimpl_t): New.
135	(openctx_t): Add field IS_LOG.
136	(struct logcontrol): New.
137	(enable_debug, enable_logging): New.
138	(log_debug): Make use of the ENABLE_DEBUG flag.
139	(create_log_id): New.
140	(logimpl_new, logimpl_unref, logimpl_flush, assert_logimpl): New.
141	(GPG_Init): Check for GPG2 device.
142	(GPG_Deinit): Close log stream.
143	(GPG_Open): Implement log device.
144	(GPG_Read): Return EOF for the GPG2 device
145	(GPG_Write): Implement GPG2 device.
146	(dllmain): Init logcontrol CS.
147
1482010-11-01  Werner Koch  <wk@g10code.com>
149
150	* assuan-socket.c (_assuan_sock_bind): Replace open/fdopen by
151	CreateFile for building with MSC for W32CE.
152	(utf8_to_wchar, MyCreateFile, MyDeleteFile) [W32CE]: New.
153
1542010-11-01  Marcus Brinkmann  <marcus@g10code.de>
155
156	* assuan-socket.c, assuan-uds.c, system.c, assuan-pipe-server.c,
157	assuan-pipe-connect.c [!HAVE_FCNTL_H]: Don't include fcntl.h.
158	* assuan-buffer.c [!HAVE_W32CE_SYSTEM]: Do not include process.h.
159	* assuan-socket.c [!HAVE_W32CE_SYSTEM]: Do not include io.h.
160	* w32-includes.inc.h: Include winsock2.h before ws2tcpip.h.
161	* sysutils.c (w32_read_registry): Replace goto label "leave" by
162	"out" (as leave is defined by some Windows header file).
163	* assuan-inquire.c: Likewise.
164
1652010-11-01  Werner Koch  <wk@g10code.com>
166
167	* assuan-socket.c (S_IRUSR) [W32]: Define if not defined.
168
169	* sysutils.c: Remove include of devload.h.
170
171	* assuan-defs.h [HAVE_WINSOCK2_H]: Include winsock2.h prior to
172	windows.h.
173	* assuan-pipe-server.c: Ditto.
174	* sysutils.c: Ditto.
175	* assuan-socket-server.c: Ditto.
176	* assuan-pipe-connect.c: Ditto.
177	* assuan-socket-connect.c: Ditto.
178	* assuan-uds.c: Ditto.
179	* assuan-logging.c: Ditto.
180	* system-w32ce.c: Ditto.
181	* assuan-io.c: Ditto.
182
183	* w32-types.inc.h [_MSC_VER]: Define ssize_t and pid_t.
184
185	* w32ce-fd-t.inc.h, w32-fd-t.inc.h, posix-fd-t.inc.h, debug.h:
186	s/inline/GPG_ERR_INLINE/.
187	* assuan.h.in: Let mkheader write the sys/types.h and unistd.h
188	include lines.
189	* mkheader.c: Change accordingly.
190
191	Guard include of sys/types.h, sys/stat.h, sys/time.h and unistd.h.
192
1932010-09-17  Werner Koch  <wk@g10code.com>
194
195	* assuan-socket-connect.c (INADDR_NONE): New replacement.  Fixes
196	bug#1282.
197
1982010-09-01  Werner Koch  <wk@g10code.com>
199
200	* assuan.h.in (ASSUAN_NO_LOGGING): New.
201	* assuan-defs.h (struct assuan_context_s): Add FLAGS.NO_LOGGING.
202	* context.c (assuan_set_flag, assuan_get_flag): Support new flag.
203	* assuan-logging.c (_assuan_log_control_channel): Implement new flag.
204
2052010-08-11  Werner Koch  <wk@g10code.com>
206
207	* assuan.h.in (ASSUAN_CONVEY_COMMENTS): New.
208	* assuan-defs.h (struct assuan_context_s): Add flags.CONVEY_COMMENTS.
209	* context.c (assuan_set_flag, assuan_get_flag): Support this flag.
210	(_assuan_read_from_server): Add arg CONVEY_COMMENTS.  Change all
211	callers.
212	* client.c (assuan_transact): Implement new flags.
213
2142010-08-09  Werner Koch  <wk@g10code.com>
215
216	* assuan-socket-connect.c (assuan_socket_connect): Fix ipv6
217	literal IP case.
218
2192010-08-03  Marcus Brinkmann  <marcus@g10code.de>
220
221	* gpgcedev.c (GPGCEDEV_IOCTL_ASSIGN_RVID): New call ASSIGN_RVID.
222	(PIPE_FLAG_HALT_MONITOR): New flag.
223	(struct pipeimpl_s): New members monitor_proc, monitor_access.
224	(pipeimpl_new): Initialize them.
225	(assert_pipeimpl): New function.
226	(access_opnctx, make_pipe): Use it.
227	(make_pipe): If there is a monitor, halt it.
228	(monitor, assign_rvid): New functions.
229	(GPG_IOControl): Handle GPGCEDEV_IOCTL_ASSIGN_RVID.
230
231	* gpgcedev.c: Use index (between 1 and table size) into
232	opnctx_table as public context identifiers, instead using pointers
233	into the table directly (which are not stable under table resize).
234	(OPNCTX_TO_IDX, OPNCTX_FROM_IDX, OPNCTX_VALID_IDX_P): New macros.
235
2362010-06-28  Werner Koch  <wk@g10code.com>
237
238	* gpgcedev.c (GPG_IOControl) <IOCTL_PSL_NOTIFY>: Unblock threads.
239
2402010-06-11  Marcus Brinkmann  <marcus@g10code.de>
241
242	* assuan-handler.c (std_handler_input,
243	std_handler_output) [HAVE_W32CE_SYSTEM]: Finish the pipe.  We must
244	do this here, because otherwise assuan_close_input_fd() and
245	assuan_close_output_fd() can't work.
246	* system-w32ce.c (_assuan_w32ce_finish_pipe): Call SetLastError in
247	error case.
248	(__assuan_close): Save WSAGetLastError before trashing it!
249	Otherwise handle is never closed and GPGME hangs.
250
2512010-06-10  Marcus Brinkmann  <marcus@g10code.de>
252
253	* w32ce-add.h (ASSUAN_STDIN, ASSUAN_STDOUT): Define magic handle values.
254	* system-w32ce.c (__assuan_read, __assuan_write): Handle magic
255	handle values differently.
256
257	* system-w32ce.c (_assuan_w32ce_finish_pipe): Return error on RVID 0.
258
2592010-06-09  Marcus Brinkmann  <marcus@g10code.de>
260
261	* gpgcedev.c (GPGCEDEV_IOCTL_UNBLOCK): New ioctl.
262	(PIPE_FLAG_UNBLOCK_READER, PIPE_FLAG_UNBLOCK_WRITER): New flags.
263	(GPG_Read): Check if PIPE_FLAG_UNBLOCK_READER is set and return
264	ERROR_BUSY in that case.
265	(GPG_Write): Likewise for PIPE_FLAG_UNBLOCK_WRITER.
266	(unblock_call): New function.
267	(GPG_IOControl): Implement GPGCEDEV_IOCTL_UNBLOCK.
268
2692010-06-07  Marcus Brinkmann  <marcus@g10code.de>
270
271	* gpgcedev.c: This rewrite does away with troublesome race
272	conditions (close vs everything else, for example) by simplifying
273	the locking model.  It also handles EOF, EPIPE, but still assumes
274	that there is always only ever one reader and writer.  Also, no
275	need to treat ERROR_PIPE_NOT_CONNECTED and ERROR_BUSY as EAGAIN
276	anymore.
277	(struct pipeimpl_s, pipeimpl_t): New types.
278	(PIPE_FLAG_NO_READER, PIPE_FLAG, NO_WRITER): New macros.
279	(struct opnctx_s): Remove everything that's now in struct
280	pipeimpl_s.  Remove also assoc and locked.  Add pipeimpl field.
281	(pipeimpl_new, pipeimpl_unref, allocate_opnctx, verify_opnctx,
282	access_opnctx): New functions.
283	(get_new_opnctx, find_and_lock_opnctx, validate_and_lock_opnctx,
284	unlock_opnctx): Removed.
285	(GPG_Init, GPG_Deinit): Improve debugging output.
286	(GPG_Open): Improve debugging output, use allocate_opnctx instead
287	of get_new_opnctx.
288	(GPG_Close): Improve debugging output.  Rewrite to use reference
289	counting.  Also check if reader or writer is closed and set flags
290	for triggering EOF or EPIPE.
291	(GPG_Read): Improve debugging output.  Rewrite using pipeimpl.
292	Check for EOF.
293	(GPG_Write): Improve debugging output.  Rewrite using pipeimpl.
294	Check for EPIPE.
295	(make_pipe): Rewrite using pipeimpl.
296	(GPG_IOControl): Improve debugging output.
297
2982010-04-22  Werner Koch  <wk@g10code.com>
299
300	* assuan-listen.c (assuan_accept): Show the PID with the default
301	hello message.
302
3032010-04-19  Werner Koch  <wk@g10code.com>
304
305	* system-w32.c (is_socket): New.
306	(__assuan_read, __assuan_write): Use is_socket.
307
3082010-04-16  Marcus Brinkmann  <marcus@g10code.de>
309
310	* assuan-uds.c (uds_reader, uds_sendfd): Don't break strict
311	aliasing rules.
312
3132010-04-14  Werner Koch  <wk@g10code.com>
314
315	* Makefile.am (install-exec-hook): Rename libgpgcedev-0.dll.
316
3172010-04-14  Marcus Brinkmann  <marcus@g10code.de>
318
319	* Makefile.am (EXTRA_DIST): Add gpgcedev.def.
320
3212010-04-13  Werner Koch  <wk@g10code.com>
322
323	* gpgcedev.c (get_new_opnctx): Always clear IS_WRITE.
324
3252010-04-08  Werner Koch  <wk@g10code.com>
326
327	* gpgcedev.c (GPG_Read, GPG_Write): If the context is not
328	associated return ERROR_PIPE_NOT_CONNECTED.
329	* system-w32ce.c (__assuan_read, __assuan_write): Return EAGAIN for
330	ERROR_PIPE_NOT_CONNECTED.
331
332	* assuan-pipe-connect.c (pipe_connect): Use
333	_assuan_close_inheritable also in the spawn error case.
334
3352010-04-06  Werner Koch  <wk@g10code.com>
336
337	* posix-includes.inc.h, w32-includes.inc.h: New.
338	* posix-types.inc.h, w32-types.inc.h: New.
339	* posix-fd-t.inc.h, w32-fd-t.inc.h, w32ce-fd-t.inc.h: New.
340	* posix-sock-nonce.inc.h, w32-sock-nonce.inc.h: New.
341	* mkheader.c (write_special): Support them.
342	* Makefile.am (common_sources, assuan.h): Ditto
343	(parts_of_assuan_h): New.
344
345	* w32-sys-pth-impl.h: Use gpg_err_set_errno.
346
347	* assuan.h.in (_ASSUAN_SYSTEM_PTH_IMPL): Factor code out to ..
348	* posix-sys-pth-impl.h, w32-sys-pth-impl.h: New
349	* mkheader.c (write_special): Support them.
350	* Makefile.am (common_sources, assuan.h): Ditto
351
3522010-03-23  Werner Koch  <wk@g10code.com>
353
354	* assuan-error.c (_assuan_w32_strerror) [W32CE]: Print only the code.
355
3562010-03-22  Werner Koch  <wk@g10code.com>
357
358	* Makefile.am (mkheader, assuan.h): Build header file.
359	(nodist_libassuan_la_SOURCES): New.  Use it for assuan.h.
360	* mkheader.c: New.
361	* assuan.h: Rename to assuan.h.in.
362
3632010-03-18  Werner Koch  <wk@g10code.com>
364
365	* libassuan.def (_assuan_w32ce_prepare_pipe)
366	(_assuan_w32ce_finish_pipe): New
367	* gpgcedev.c (struct opnctx_s): Replace HD by RVID.
368	(GPGCEDEV_IOCTL_SET_HANDLE): Remove.
369	(GPGCEDEV_IOCTL_GET_RVID): New.
370	(create_rendezvous_id): New.
371	(get_new_opnctx): Init the RVID.
372	(set_handle): Remove.
373	(find_and_lock_opnctx, make_pipe, GPG_IOControl): Change to new
374	method.
375	* system-w32ce.c (_assuan_w32ce_prepare_pipe)
376	(_assuan_w32ce_finish_pipe): New.
377	(_assuan_w32ce_create_pipe): Re-implement using the new functions.
378	(__assuan_pipe): Create an inheritable pipe.
379	(build_w32_commandline): New arg FD2_ISNULL.
380	* system.c (_assuan_close_inheritable): New.
381	* assuan-pipe-connect.c (pipe_connect): Use the new function.
382
383	* sysutils.c (_assuan_w32ce_create_pipe): Move to system-w32ce.c.
384
3852010-03-16  Werner Koch  <wk@g10code.com>
386
387	* system-w32ce.c (build_w32_commandline): Add args to pass the
388	special options for the standard descriptors.
389	(utf8_to_wchar, free_wchar): New.
390	(__assuan_spawn): Adjust for changes.  Convert strings for
391	CreateProcess to wchar_t.
392
393	* system.c: For better readability move platform dependend code to ..
394	* system-posix.c, system-w32.c, system-w32ce.c: .. New.
395	* Makefile.am (common_sources): Account for this change.
396
3972010-03-11  Werner Koch  <wk@g10code.com>
398
399	* assuan-defs.h [!HAVE_VASPRINTF]: Add macros vasprintf and asprintf.
400
401	* vasprintf.c (asprintf): Rename to _assuan_asprintf.
402	(vasprintf): Rename to _assuan_vasprintf.
403
404	* assuan.h (ASSUAN_LOG_CONTROL): New.
405	* assuan-logging.c (assuan_set_assuan_log_stream): Default to
406	ASSUAN_LOG_CONTROL.
407	(_assuan_log_print_buffer): Remove.
408	(_assuan_log_control_channel): New.
409	(assuan_set_assuan_log_stream): Factor envvar code out to ..
410	(_assuan_init_log_envvars): .. New.
411	* assuan.c (assuan_set_log_cb): Call _assuan_init_log_envvars.
412	* assuan-buffer.c (_assuan_read_line, _assuan_write_line)
413	(assuan_write_line, _assuan_cookie_write_data)
414	(_assuan_cookie_write_flush): Use _assuan_log_control_channel.
415
4162010-03-05  Werner Koch  <wk@g10code.com>
417
418	* gpgcemgr.c: Add options to register a device and activate it.
419
4202010-02-24  Werner Koch  <wk@g10code.com>
421
422	* gpgcemgr.c: New.
423	* gpgcedev.c: New.
424	* sysutils.c (_assuan_w32ce_create_pipe): Rewrote to make use of
425	the new driver.
426
4272010-02-16  Werner Koch  <wk@g10code.com>
428
429	* system.c (assuan_free): New.
430	* libassuan.vers (assuan_free): Add it.
431	* libassuan.def (assuan_free): Add it.
432
4332010-02-11  Werner Koch  <wk@g10code.com>
434
435	* assuan-inquire.c (assuan_inquire): Allow case insensitive
436	responses.
437	(_assuan_inquire_ext_cb): Ditto.
438
4392010-02-10  Werner Koch  <wk@g10code.com>
440
441	* assuan-handler.c (std_handler_input, std_handler_output): Make
442	the parsed FD available to the notification functions.  This is
443	the documented behaviour.
444
4452010-02-04  Werner Koch  <wk@g10code.com>
446
447	* assuan-socket-connect.c: Include stdint.h and arpa/inet.h.
448	(parse_portno): New.
449	(assuan_socket_connect): Return a correct error code on failure.
450	Support assuan:// and file:// schemes.
451
4522010-02-03  Marcus Brinkmann  <marcus@g10code.de>
453
454	* libassuan.vers, libassuan.def: Add assuan_set_sock_nonce.
455
4562010-02-01  Werner Koch  <wk@g10code.com>
457
458	* sysutils.c (_assuan_w32ce_create_pipe): New.
459	* libassuan.def (_assuan_w32ce_create_pipe): New.
460	* assuan-defs.h (CreateFile) [W32CE]: New macro
461	* system.c (__assuan_pipe): Make it work for W32CE.
462
4632010-01-28  Werner Koch  <wk@g10code.com>
464
465	* assuan.h: Remove ranges in list of copyright years.
466	(getenv) [W32CE]: Provide macro.
467	* sysutils.c: New.
468	(_assuan_sysutils_blurb): New.
469	(_assuan_getenv): new.
470	* assuan-logging.c: Call _assuan_sysutils_blurb.
471
4722010-01-27  Werner Koch  <wk@g10code.com>
473
474	* assuan-socket.c (_assuan_sock_bind): Replace remove by DeleteFile.
475
476	* assuan-handler.c (assuan_get_active_fds) [W32CE]: Remove use of
477	_get_osfhandle.
478	* assuan.h (assuan_fd_from_posix_fd) [__MINGW32CE__]: Ditto.
479	* system.c (assuan_fdopen): Ditto.
480	(__assuan_spawn) [W32CE]: Do not use GetPriorityClass.
481
482	* assuan-defs.h (getpid) [W32CE]: New.
483
4842010-01-22  Werner Koch  <wk@g10code.com>
485
486	* setenv.c [W32CE]: Make it a dummy.
487
488	* assuan-pipe-connect.c: Remove signal.h.
489
490	* system.c (__assuan_spawn): Use CreateFileW.
491	(DETACHED_PROCESS) [W32CE]: Define to 0.
492
493	* assuan-socket.c (read_port_and_nonce): Replace ENOFILE by a
494	proper ENOENT.
495
496	Replace all assignments to ERRNO by a call to gpg_err_set_errno.
497
4982010-01-14  Werner Koch  <wk@g10code.com>
499
500	* debug.c (_assuan_debug, _assuan_debug_begin)
501	(_assuan_debug_buffer): Check CTX before dereferencing.
502
503	* assuan.c (assuan_release): Immediately leave on NULL CTX.
504
5052010-01-05  Marcus Brinkmann  <marcus@g10code.de>
506
507	* debug.h (TRACE_LOG5): Add macro.
508	* debug.c (_assuan_debug_buffer): Add newline
509	* system.c: Add more debug output (conditioned on the compile-time
510	DEBUG_SYSIO macro).
511
5122009-12-14  Werner Koch  <wk@g10code.com>
513
514	* assuan.h (ASSUAN_RESPONSE_COMMENT): New.
515	* client.c (assuan_client_read_response): Return comment lines.
516	(assuan_client_parse_response): Return ASSUAN_RESPONSE_COMMENT.
517	(_assuan_read_from_server): Skip comment lines.
518
5192009-12-08  Marcus Brinkmann  <marcus@g10code.de>
520
521	* assuan.h (struct assuan_system_hooks): Don't use "namespace" as
522	argument name in declaration (C++ keyword).
523
524	* client.c (assuan_client_read_response): Fix linelen.
525
526	* assuan.h (ASSUAN_SPAWN_DETACHED): New macro.
527	* assuan-pipe-connect.c (pipe_connect): Calculate spawn_flags from
528	flags.
529
530	* assuan.h (assuan_fd_from_posix_fd): Handle invalid fd early.
531
532	* assuan-socket.c (get_nonce): Cast buffer to unsigned.
533	(_assuan_sock_connect) [HAVE_W32_SYSTEM]: Drop ctx argument from
534	read_port_and_nonce invocation.
535	* system.c (assuan_fdopen) [HAVE_W32_SYSTEM]: Fix typo in variable
536	name.
537	(__assuan_spawn) [HAVE_W32_SYSTEM]: Fix types of fd and fdp.  Use
538	ASSUAN_INVALID_FD.  Add missing context argument to _assuan_free,
539	and fix call to _assuan_w32_strerror.  Set errno on error.
540	(__assuan_socketpair) [HAVE_W32_STRERROR]: Fix type of filedes
541	argument.
542	* assuan-pipe-connect.c (pipe_connect, assuan_pipe_connect,
543	socketpair_connect) [HAVE_W32_SYSTEM]: Fix type of fd_child_list.
544	* assuan-defs.h (_assuan_socketpair): Likewise for prototype.
545	* assuan.h (assuan_fd_from_posix_fd): New static inline function.
546
5472009-12-03  Marcus Brinkmann  <marcus@g10code.de>
548
549	* assuan-logging.c: (log_cats): New static variable.
550	(TEST_LOG_CAT): New macro.
551	(_assuan_log_handler): Check log category.
552	(assuan_set_assuan_log_stream): Check ASSUAN_DEBUG for logging
553	categories.
554	(assuan_set_log_stream): Call assuan_set_assuan_log_stream.
555
5562009-12-02  Marcus Brinkmann  <marcus@g10code.de>
557
558	* Makefile.am (common_sources): Remove assuan-client.c.
559	* assuan-client.c: File removed.
560	* assuan.h (ASSUAN_RESPONSE_ERROR, ASSUAN_RESPONSE_OK)
561	(ASSUAN_RESPONSE_STATUS, ASSUAN_RESPONSE_INQUIRE)
562	(ASSUAN_RESPONSE_STATUS): New macros.
563	(assuan_response_t): New type.
564	(assuan_client_read_response, assuan_client_parse_response): New
565	prototypes.
566	* libassuan.def, libassuan.vers: Add assuan_client_read_response,
567	assuan_client_parse_response.
568	* assuan-client.c (xtoi_1, xtoi_2, assuan_transact)
569	(_assuan_read_from_server): Moved to ...
570	* client.c: ... here, with updates to use new functions and types.
571	Include <stdlib.h>.
572	(assuan_client_read_response, assuan_client_parse_response): New
573	functions.
574	* assuan-defs.h (_assuan_read_from_server): Use assuan_response_t.
575	* assuan-pipe-connect.c (initial_handshake): Use assuan_response_t
576	and ASSUAN_RESPONSE_OK.
577	* assuan-socket-connect.c (assuan_socket_connect): Likewise.
578
5792009-12-01  Marcus Brinkmann  <marcus@g10code.de>
580
581	* assuan-pipe-server.c (assuan_init_pipe_server): Fix debug output.
582
5832009-11-27  Marcus Brinkmann  <marcus@g10code.de>
584
585	* assuan.h (assuan_set_assuan_log_stream): Add prototype.
586	* libassuan.def, libassuan.vers: Add back
587	assuan_set_assuan_log_stream.
588	* assuan-logging.c (assuan_set_assuan_log_stream): Add back.
589	* context.c (assuan_get_pointer): Don't output debug info here.
590	(assuan_get_peercred, assuan_get_pid): But do here.
591	* system.c: Improve debug output.
592	* assuan-defs.h (struct assuan_context_s): Rename pipe_mode to
593	max_accepts.
594	* assuan-listen.c (assuan_accept): Rework max accepts logic.
595	* assuan-socket-server.c (assuan_init_socket_server),
596	assuan-socket-connect.c (assuan_socket_connect),
597	assuan-pipe-server.c (assuan_init_pipe_server),
598	assuan-pipe-connect.c (socketpair_connect): Add debug output, set
599	max_accepts instead of pipe_mode.
600
6012009-11-25  Marcus Brinkmann  <marcus@g10code.de>
602
603	* assuan.h (assuan_init_pipe_server): Change type of filedes to
604	assuan_fd_t.
605	(assuan_fdopen): New prototype.
606	* libassuan.vers, libassuan.def: Add assuan_fdopen.
607	* system.c (assuan_fdopen): New function.
608	* assuan-pipe-server.c (assuan_init_pipe_server): Change type of
609	filedes to assuan_fd_t.  No longer translate fd to handle.  Don't
610	set to binary either (that doesn't do anything for handles, it
611	only affects the libc fd).
612
6132009-11-24  Marcus Brinkmann  <marcus@g10code.de>
614
615	* assuan.h (struct _assuan_peercred) [_WIN32]: Define dummy member
616	so struct is not empty.
617	* assuan-socket.c (assuan_sock_deinit): Set sock_ctx to NULL.
618
6192009-11-19  Marcus Brinkmann  <marcus@g10code.de>
620
621	* Makefile.am (common_sources): Remove assuan-connect.c and add
622	client.c.
623	* client.c, server.c: New file.
624	* assuan-defs.h (_assuan_disconnect): Remove.
625	(struct assuan_context_s): Remove members deinit_handler.
626	(_assuan_client_release, _assuan_client_finish)
627	(_assuan_server_finish, _assuan_server_release): New.
628	* assuan-socket-server.c (accept_connection_bottom): Use
629	ASSUAN_INVALID_PID, not -1.
630	(finish_connection, deinit_socket_server): Remove.
631	(assuan_init_socket_server): Use _assuan_server_release.
632	* assuan-socket-connect.c (do_finish, do_deinit): Remove.
633	(assuan_socket_connect): Use _assuan_client_release.
634	* assuan-pipe-connect.c (do_finish, do_deinit): Remove.
635	(pipe_connect): Update deinitialization.
636	(socketpair_connect): Here as well.
637	* context.c (assuan_get_pid): New from ...
638	* assuan-connect.c (assuan_get_pid): ... here.  Remove this file.
639	* assuan-pipe-server.c (_assuan_deinit_server, accept_connection)
640	(deinit_pipe_server, finish_connection): Remove unused function.
641	* assuan-listen.c (assuan_accept): Check CTX->accept_handler
642	before calling.  Initialize RC.  Do not call finish handler for
643	pipe server.
644	* assuan-uds.c (_assuan_uds_deinit): Do not call finish handler.
645
6462009-11-10  Marcus Brinkmann  <marcus@g10code.de>
647
648	* assuan-defs.h (struct assuan_context_s): Rename
649	CTX->process_done to CTX->process_complete for clarity.  Remove
650	buffer variables from UDS.
651	* assuan-pipe-connect.c (socketpair_connect): Allow FD_CHILD_LIST
652	to be NULL.
653	* assuan-handler.c: Rename CTX->process_done to
654	CTX->process_complete for clarity.
655	(process_request, process_next): Handle EOF.
656	* assuan-uds.c (uds_reader): Remove buffering, which breaks the
657	pending line algorithm in assuan-buffer.c.
658	(_assuan_init_uds_io, _assuan_uds_deinit): Remove buffering.
659	* assuan-buffer.c (_assuan_read_line): Add comment.
660
6612009-11-05  Marcus Brinkmann  <marcus@g10code.de>
662
663	* assuan.h (struct _assuan_peercred, assuan_peercred_t): New.
664	(assuan_get_peercred): Define on all systems, return
665	assuan_peercred_t.
666	* assuan-defs.h (struct assuan_context_s): Move valid flag out of
667	peercred struct, use struct _assuan_peercred.
668	* libassuan.def: Add assuan_get_peercred.
669	* assuan-connect.c (assuan_get_peercred): Moved to ...
670	* context.c (assuan_get_peercred): ... here.  Reimplement.
671	* assuan-socket-server.c (accept_connection_bottom): Adjust access
672	to peercred in context.
673	* assuan.h (ASSUAN_PIPE_CONNECT_FDPASSING)
674	(ASSUAN_PIPE_CONNECT_DETACHED, ASSUAN_SOCKET_SERVER_FDPASSING)
675	(ASSUAN_SOCKET_SERVER_ACCEPTED, ASSUAN_SOCKET_CONNECT_FDPASSING): New.
676	(assuan_pipe_connect_ext): Renamed to ...
677	(assuan_pipe_connect): ... this, overwriting old prototype.
678	(assuan_socket_connect_ext): Renamed to ...
679	(assuan_socket_connect): ... this, overwriting old prototype.
680	(assuan_init_socket_server_ext): Renamed to ...
681	(assuan_init_socket_server): ... this, overwriting old prototype.
682	* assuan-pipe-connect.c: Likewise for functions.
683	* assuan-socket-connect.c: Likewise.
684	* assuan-socket-server.c: Likewise.
685	* libassuan.def (assuan_init_socket_server_ext)
686	(assuan_pipe_connect_ext, assuan_socket_connect_ext): Removed.
687	* libassuan.vers: Likewise.
688
689	* assuan-defs.h (assuan_context_t): Add member PROCESS_DONE.
690	* assuan.h (assuan_process_next): Add argument DONE to prototype.
691	* assuan-handler.c (assuan_process_next): Likewise, handle it.
692	(std_handler_bye): Set PROCESS_DONE.
693	(assuan_process_done): Handle PROCESS_DONE in the no error case.
694	(assuan_process): Use PROCESS_DONE.
695
6962009-11-04  Marcus Brinkmann  <marcus@g10code.de>
697
698	* debug.c (_assuan_debug): Free MSG.
699
7002009-11-04  Werner Koch  <wk@g10code.com>
701
702	* Makefile.am (common_sources): Add debug.h.
703
704	* assuan-defs.h (cmdtbl_s): Add field HELPSTR.
705	* assuan-handler.c (assuan_register_command): Add arg HELP_STRING.
706	(std_handler_help): Print the help.
707
7082009-11-02  Marcus Brinkmann  <marcus@g10code.de>
709
710	* assuan.h (assuan_handler_t): New type.
711	(assuan_register_bye_notify, assuan_register_reset_notify)
712	(assuan_register_cancel_notify, assuan_register_input_notify)
713	(assuan_register_output_notify, assuan_register_command): Use it.
714	* assuan-handler.c (std_handler_cancel, std_handler_bye): Pass
715	LINE argument to user handler.
716	(std_handler_reset): Likewise, and also abort RESET if error is
717	returned from user handler.
718	(std_handler_input, std_handler_output): Check return value from
719	user handler before assigning FD.
720	* assuan-defs.h (struct cmdtbl_s): Change type of member HANDLER
721	to assuan_handler_t.
722	(struct assuan_context_s): Change type of members
723	RESET_NOTIFY_FNC, CANCEL_NOTIFY_FNC, BYE_NOTIFY_FNC,
724	INPUT_NOTIFY_FNC and OUTPUT_NOTIFY_FNC to assuan_handler_t.
725
7262009-10-30  Marcus Brinkmann  <marcus@g10code.de>
727
728	* system.c (_assuan_spawn): Check fd_child_list before dumping it.
729
7302009-10-20  Marcus Brinkmann  <marcus@g10code.de>
731
732	* assuan.h (__assuan_usleep): Add declaration.
733	* system.c (__assuan_usleep): Make non-static.
734	* libassuan.vers, libassuan.defs: Sort lexicographically.
735
7362009-10-19  Marcus Brinkmann  <marcus@g10code.com>
737
738	* system.c (__assuan_waitpid): Return something.
739	(_assuan_usleep): Don't return value in void function.
740
7412009-10-16  Marcus Brinkmann  <marcus@g10code.com>
742
743	* conversion.c: Do not include <sys/types.h> and <time.h>.
744	* debug.h (TRACE_BEG6, TRACE4): New macros.
745	(TRACE_SYSERR): Pass _assuan_trace_context to _assuan_debug.
746	* context.c (assuan_set_pointer, assuan_get_pointer,
747	assuan_set_flag, assuan_get_flag, assuan_set_io_monitor,
748	assuan_set_error): Add trace messages.
749
750	* libassuan-config.in, libassuan.m4, Makefile.am: Remove PTH support.
751	* assuan.h (assuan_msghdr_t): New type.
752	(ASSUAN_INVALID_PID): New macro.
753	(ASSUAN_NO_FIXSIGNALS): New flag macro.
754	(ASSUAN_SYSTEM_HOOKS_VERSION): New macro.
755	(struct assuan_system_hooks, assuan_system_hooks_t): New types.
756	(assuan_pipe_connect, assuan_pipe_connect_ext): Don't make ARGV
757	const for name==NULL operation.  Make fd_child_list an array of
758	assuan_fd_t.
759	(assuan_sock_init, assuan_sock_deinit, assuan_set_system_hooks,
760	assuan_ctx_set_system_hooks, __assuan_pipe, __assuan_close,
761	__assuan_spawn, __assuan_socketpair): New function prototypes.
762	(_ASSUAN_SYSTEM_PTH_IMPL, ASSUAN_SYSTEM_PTH_DECL,
763	ASSUAN_SYSTEM_PTH): New macros.
764	(_assuan_system_pth): New declaration.
765	* libassuan.vers, libassuan.defs: Add assuan_sock_init,
766	assuan_sock_deinit, __assuan_pipe, __assuan_close, __assuan_spawn,
767	__assuan_socketpair, assuan_set_system_hooks,
768	assuan_ctx_set_system_hooks.
769
770	* assuan-defs.h (struct assuan_io): Removed, move members to ...
771	(struct assuan_context_s): ... this to ENGINE.  New flag
772	no_fixsignals.  New member SYSTEM.  Remove member IO.
773	(_assuan_pipe, _assuan_read, _assuan_write, _assuan_recvmsg,
774	_assuan_sendmsg, _assuan_spawn, _assuan_socketpair,
775	_assuan_system_hooks, _assuan_system_hooks_copy): New
776	declarations.
777	(_assuan_error_is_eagain, _assuan_waitpid, _assuan_usleep,
778	_assuan_close, _assuan_sock_new, _assuan_sock_connect,
779	_assuan_sock_bind, _assuan_sock_get_nonce,
780	_assuan_sock_check_nonce): Add context argument.
781	(_assuan_io_read, _assuan_io_write, _assuan_simple_sendmsg,
782	_assuan_simple_recvmsg): Removed.
783
784	* context.c (assuan_ctx_set_system_hooks): New function.
785	* assuan.c (assuan_set_system_hooks): New function.
786	(assuan_new_ext): Initialize CTX->system.
787	(assuan_release): Always output trace message.
788
789	* assuan-error.c (_assuan_error_is_eagain): Add ctx argument, pass
790	along to _assuan_usleep.
791	* assuan-inquire.c assuan-listen.c, assuan-socket-server.c,
792	assuan-handler.c, assuan-socket-connect.c, assuan-client.c,
793	assuan-pipe-connect.c, assuan-socket.c: Pass CTX argument to
794	functions that need it
795	(_assuan_sock_new, _assuan_sock_check_none, _assuan_close,
796	_assuan_error_is_eagain and many more).
797	* assuan-socket-server.c (assuan_init_socket_server_ext): Update
798	fields in CTX->engine instead of CTX->io.
799	* assuan-socket-connect (assuan_socket_connect_ext): Likewise.
800	* assuan-uds.c (uds_reader, uds_writer, uds_sendfd): Use
801	_assuan_recvmsg and _assuan_sendmsg instead of
802	_assuan_simple_recvmsg and _assuan_simple_sendmsg respectively.
803	(_assuan_init_uds_io): Update fields in CTX->engine instead of
804	CTX->io.
805	* assuan-buffer.c: Use functions in CTX->engine instead of CTX->io.
806	* assuan-pipe-server.c (assuan_init_pipe_server): Update
807	fields in CTX->engine instead of CTX->io.
808
809	* system.c: Include <sys/types.h>, <time.h>, <fcntl.h>, and
810	<windows.h> resp. <sys/wait.h>.  Define MAX_OPEN_FDS.
811	(_assuan_system_hooks_copy, __assuan_usleep, _assuan_usleep,
812	__assuan_pipe, _assuan_pipe, __assuan_close, _assuan_close,
813	__assuan_read, _assuan_read, __assuan_write, _assuan_write,
814	__assuan_recvmsg, _assuan_recvmsg, __assuan_sendmsg,
815	_assuan_sendmsg, __assuan_spawn, _assuan_spawn, __assuan_waitpid,
816	_assuan_waitpid, __assuan_socketpair, _assuan_socketpair): New
817	functions.
818	(_assuan_system_hooks): New singleton.
819	* assuan-io.c (_assuan_waitpid, do_io_read, _assuan_io_read,
820	do_io_write, _assuan_io_write, _assuan_simple_sendmsg,
821	_assuan_simple_recvmsg, _assuan_usleep): Removed.
822
823	* assuan-pipe-connect (writen, build_w32_commandline,
824	create_inheritable_pipe): Removed (actually moved to system.c).
825	(fix_signals) [_ASSUAN_NO_FIXED_SIGNALS]: Still fix signals.
826	(do_finish): Move waitpid logic to _assuan_waitpid, just call
827	that.
828	(struct at_pipe_fork, struct at_socketpair_fork): New types.
829	(at_pipe_fork_cb, at_socketpair_fork_cb): New callback functions.
830	(pipe_connect_unix, pipe_connect_w32): Replaced by ...
831	(pipe_connect): ... this new function using new system functions.
832	(socketpair_connect): Reimplement to use new system functions.
833	(assuan_pipe_connect, assuan_pipe_connect_ext): Add trace message.
834
835	* assuan-socket.c (_assuan_close): Removed (moved to system.c).
836	(_assuan_sock_new, _assuan_sock_connect, _assuan_sock_bind,
837	_assuan_sock_get_nonce, _assuan_sock_check_nonce): Add context
838	argument.  Use new system interface.
839	(sock_ctx): New singleton.
840	(assuan_sock_init, assuan_sock_deinit): New functions to
841	initialize and deinitialize the singleton.
842
8432009-10-14  Werner Koch  <wk@g10code.com>
844
845	* assuan-defs.h (assuan_context_s): Add field CURRENT_CMD_NAME.
846	* assuan-handler.c (dispatch_command): Set this field.
847	(assuan_get_command_name): New.
848	* assuan.h, libassuan.vers, libassuan.def: Add new fucntion.
849
8502009-10-08  Marcus Brinkmann  <marcus@g10code.de>
851
852	* Makefile.am (libassuan_pth): Removed.
853	(lib_LTLIBRARIES): Remove $(libassuan_pth).
854	(libassuan_pth_la_SOURCES, libassuan_pth_la_CPPFLAGS)
855	(libassuan_pth_la_CFLAGS, libassuan_pth_la_LIBADD): Removed.
856	* libassuan.m4 (AM_PATH_LIBASSUAN_PTH, AM_PATH_LIBASSUAN_PTHREAD):
857	Removed.
858	* assuan-io-pth.c: Removed.
859	* libassuan-config.in (all_thread_modules): Removed.  Also removed
860	option --thread.
861
8622009-10-08  Marcus Brinkmann  <marcus@g10code.de>
863
864	* assuan.h (assuan_get_assuan_log_stream,
865	assuan_set_assuan_log_stream): Remove prototypes.
866	* libassuan.def: Remove assuan_get_assuan_log_stream,
867	assuan_set_assuan_log_stream.
868	* libassuan.vers: Likewise.
869	* assuan-defs.h (_assuan_w32_strerror): Fix prototype.
870	(w32_strerror): Remove macro.
871	* assuan-pipe-connect.c (build_w32_commandline): Add argument for
872	context.  Use it for malloc routines.  Use _assuan_w32_strerror
873	instead of w32_strerror.
874	* vasprintf.c: New file.
875
8762009-09-29  Werner Koch  <wk@g10code.com>
877
878	* assuan.h: Comment fix.
879
880	* assuan.c (assuan_release): Allow passing a NULL ctx.
881
8822009-09-19  Marcus Brinkmann  <marcus@g10code.de>
883
884	* src/libassuan.vers, src/libassuan.def: Update to new API.
885	* assuan.c, context.c, system.c, debug.c: New files.
886	* Makefile.am (common_sources): Add assuan.c, context.c, system.c
887	and debug.c.
888	* assuan.h: Include <stdarg.h>.  Fix inclusion of <gpg-error.h>.
889	(_ASSUAN_EXT_SYM_PREFIX, _ASSUAN_PREFIX1, _ASSUAN_PREFIX2)
890	(_ASSUAN_PREFIX): Remove support for renaming the whole library,
891	now that we have a stable shared library interface that can evolve
892	to cover all needs (particularly those of GPGME).
893	(assuan_malloc_hooks, assuan_malloc_hooks_t, assuan_log_cb_t)
894	(assuan_io_monitor_t): New types.
895	(ASSUAN_LOG_INIT, ASSUAN_LOG_CTX, ASSUAN_LOG_ENGINE)
896	(ASSUAN_LOG_DATA, ASSUAN_LOG_SYSIO, ASSUAN_IO_FROM_PEER)
897	(ASSUAN_IO_TO_PEER, ASSUAN_IO_MONITOR_NOLOG)
898	(ASSUAN_IO_MONITOR_IGNORE): New symbols.
899	(assuan_set_gpg_err_source, assuan_get_gpg_err_source)
900	(assuan_get_malloc_hooks, assuan_set_log_cb, assuan_get_log_cb)
901	(assuan_new, assuan_new_ext, assuan_release): New function
902	prototypes.
903	(assuan_init_pipe_server, assuan_init_socket_server)
904	(assuan_init_socket_server_ext, assuan_pipe_connect)
905	(assuan_pipe_connect_ext, assuan_socket_connect)
906	(assuan_socket_connect_ext): Take a context argument instead of
907	pointer to context.
908	(assuan_deinit_server, assuan_disconnect)
909	(assuan_set_assuan_err_source): Remove function prototypes.
910	* assuan-defs.h (ASSUAN_GCC_A_PURE): Moved here from XXX
911	(_assuan_error): New macro.
912	(struct assuan_context_s): New members err_source, w32_strerror,
913	malloc_hooks, log_cb, log_cb_data: New members.  Move confidential
914	into flags.  New member engine.
915	(_assuan_log_handler, _assuan_error_default, _assuan_disconnect):
916	New prototypes.
917	(_assuan_new_context): Remove prototype.
918	(_assuan_malloc, _assuan_calloc, _assuan_realloc, _assuan_free):
919	Add context argument to prototype.
920	* assuan-util.c (alloc_func, realloc_func, free_func): Remove
921	global variables.
922	(assuan_set_malloc_hooks, _assuan_malloc, _assuan_realloc)
923	(_assuan_calloc, _assuan_free, assuan_set_pointer)
924	(assuan_get_pointer, assuan_begin_confidential)
925	(assuan_end_confidential, assuan_set_io_monitor, assuan_set_flag)
926	(assuan_get_flag): Move functions to ...
927	* assuan-client.c: Add ctx argument to all invocations of
928	_assuan_error.
929	* assuan-socket-server.c, assuan-socket-connect.c,
930	assuan-connect.c: Likewise.
931	* assuan-buffer.c: Likewise.  Also update access to confidential
932	flag.
933	* assuan-uds.c: Add ctx argument to all invocations of
934	_assuan_malloc, _assuan_realloc, _assuan_calloc, _assuan_free and
935	_assuan_error.
936	* assuan_listen.c, assuan-inquire.c, assuan-handler.c: Likewise.
937	* assuan-error.c (err_source): Remove global variable.
938	(assuan_set_assuan_err_source): Removed function.
939	(_assuan_w32_strerror): Moved here from assuan-logging.c and made
940	thread-safe.
941	(_assuan_error): Removed function (is now macro).
942	* assuan-handler.c: Update access to confidential flag.
943	* assuan-socket-server.c (accept_connection_bottom): Update access
944	to confidential flag in context.
945	(assuan_init_socket_server, assuan_init_socket_server_ext): Take
946	ctx argument instead of pointer to ctx.
947	* assuan-inquire.c (init_membuf, put_membuf, get_membuf)
948	(free_membuf): Take context argument and change all callers.
949	* assuan-socket-server.c (assuan_socket_connect)
950	(assuan_socket_connect_ext): Take ctx argument instead of pointer
951	to ctx.
952	* assuan-pipe-connect.c (initial_handshake, pipe_connect_unix)
953	(socketpair_connect, assuan_pipe_connect)
954	(assuan_pipe_connect_ext): Likewise.
955	(socketpair_connect): Now that ctx is not a pointer argument
956	anymore, return if we are server or client in the argv argument.
957	* assuan-logging.c (_assuan_log_handler): New function.
958	(_assuan_w32_strerror): Move to assuan-error.c
959	* assuan-connect.c (assuan_disconnect): Renamed to ...
960	(_assuan_disconnect): ... this.
961	* assuan-pipe-server.c (_assuan_new_context): Removed function.
962	(assuan_init_pipe_server): Take ctx argument instead of pointer to
963	ctx.
964	(_assuan_release_context): Removed function.
965	(_assuan_deinit_server): Reimplement.
966
9672009-09-01  Marcus Brinkmann  <marcus@g10code.de>
968
969	* assuan.h: Change types in all functions from int to gpg_error_t
970	where relevant.
971	* assuan-listen.c (assuan_accept): Change type of RC from int to
972	gpg_error_t.
973	* assuan-pipe-server.c (accept_connection, finish_connection):
974	Change return type to gpg_error_t.
975	* assuan-socket-server.c (accept_connection_bottom)
976	(accept_connection, finish_connection): Likewise.
977	(assuan_init_connected_socket_server): Remove.
978	* assuan-defs.h (struct assuan_context_s): Change return type of
979	accept_handler and finish_handler to gpg_error_t.  Add io_monitor_data.
980	* assuan-pipe-connect.c (do_finish): Change to void.
981	* assuan-inquire.c (_assuan_inquire_ext_cb): Change type of RC
982	from int to gpg_error_t.
983	* assuan-handler.c: Change return codes and RC variables from int
984	to gpg_error_t where appropriate.
985	* assuan-buffer.c (_assuan_read_line): Fix error code on EOF.
986
987	* assuan.h (ASSUAN_INT2FD, ASSUAN_FD2INT): Remove macros.
988	* assuan-defs.h (DIMof): Remove macro.
989
990	* setenv.c: Do not include "assuan-defs.h", instead redefine
991	setenv, unsetenv, clearenv in place.
992	* assuan-socket-server.c: Use _assuan_free instead of xfree.
993	* assuan-pipe-connect.c: Fix syntax error.
994	* assuan-defs.h: Remove some duplicated W32 stuff.
995	* Makefile.am (libassuan_la_LIBADD, libassuan_pth_la_LIBADD): Add
996	@NETLIBS@.
997	* versioninfo.rc.in (FILEVERSION): Set to @BUILD_FILEVERSION@.
998	("FileDescription", "FileVersion", "InternalName")
999	("LegalCopyright", "OriginalFilename", "ProductName"): Replace c&p
1000	garbage.
1001	* libassuan.def: Remove assuan_get_peercred.
1002
10032009-08-26  Marcus Brinkmann  <marcus@g10code.de>
1004
1005	* libassuan-config.in: Add gpg-error.
1006	* assuan-buffer.c, assuan-inquire.c, assuan-handler.c,
1007	assuan-util.c, assuan-client.c, assuan-socket-connect.c,
1008	assuan-pipe-connect.c, assuan-defs.h, assuan-socket.c,
1009	assuan-connect.c, assuan-uds.c, assuan-socket-server.c,
1010	assuan-listen.c, assuan-pipe-server.c: Return gpg_error_t instead
1011	assuan_error_t everywhere.  Return gpg error codes everywhere.
1012	Replace xtrymalloc, xfree, etc with _assuan_malloc, _assuan_free
1013	etc.  Protect include <config.h> by HAVE_CONFIG_H where not done
1014	so already.
1015	* versioninfo.rc.in, libassuan.vers, libassuan.def,
1016	assuan-error.c: New files.
1017	* Makefile.am: Add libtool handling and gpg-error (also for W32).
1018	(EXTRA_DIST): Remove mkerrors, add libassuan.vers,
1019	versioninfo.rc.in and libassuan.def.
1020	(BUILT_SOURCES, MOSTLYCLEANFILES): Removed.
1021	(common_sources): Remove assuan-errors.c, add assuan-error.c.
1022	* assuan.h: Include <gpg-error.h>.
1023	[_ASSUAN_ONLY_GPG_ERRORS]: Feature removed.
1024	(assuan_init_connected_socket_server, assuan_strerror)
1025	(assuan_pipe_connect2): Removed obsolete interfaces.
1026	(assuan_error_t): Removed type.
1027	(assuan_flag_t): Changed from enum to unsigned int.
1028	(ASSUAN_NO_WAITPID, ASSUAN_CONFIDENTIAL): Changed from enum to macro.
1029	(assuan_process): Return gpg_error_t instead of int.
1030	(assuan_set_assuan_err_source): Change argument type from int to
1031	gpg_err_source_t.
1032	* assuan-defs.h (_assuan_error): Change types to gpg_error_t.
1033	(err_code, err_is_eof, xtrymalloc, xtrycalloc, xtryrealloc)
1034	(xfree): Removed.
1035	(set_error): Adjust for gpg-error codes.
1036	(_assuan_gpg_strerror_r, _assuan_gpg_strsource): Removed.
1037	(struct assuan_context_s): Remove member os_errno.
1038	* assuan-socket-server.c (accept_connection): Don't set CTX->os_errno.
1039	* mkerrors: Removed file.
1040	* assuan-io-pth.c (_assuan_simple_sendmsg)
1041	(_assuan_simple_recvmsg), assuan-io.c (_assuan_simple_sendmsg,
1042	_assuan_simple_recvmsg): Set errno instead returning error
1043	directly (and return -1).
1044	* assuan-handler.c (assuan_process_done): Remove handling for old
1045	style error values.
1046	(process_request, assuan_process): Change return type from int to
1047	gpg_error_t.
1048	* assuan-client.c (assuan_transact): Remove support for old style
1049	error values.
1050	* assuan-pipe-connect.c (assuan_pipe_connect2): Removed.
1051	* assuan-logging.c (my_strerror_r, my_strsource)
1052	(load_libgpg_error, _assuan_gpg_strerror_r)
1053	(_assuan_gpg_strsource): Removed.
1054
10552009-04-03  Werner Koch  <wk@g10code.com>
1056
1057	* assuan-handler.c (std_cmd_table): Remove second OPTION entry.
1058
10592009-02-24  Werner Koch  <wk@g10code.com>
1060
1061	* assuan-buffer.c (assuan_send_data): Add hack to optionally send
1062	a final "CAN".
1063
10642008-11-03  Marcus Brinkmann  <marcus@g10code.de>
1065
1066	* assuan-handler.c (std_handler_help): Make I unsigned to silence
1067	gcc -W warning.
1068	* assuan-logging.c (_assuan_log_print_buffer): Likewise for N.
1069	* funopen.c (_assuan_funopen): Remove initializer to silence gcc
1070	-W warning.
1071	* assuan-handler.c (std_cmd_table): Add missing initializer to
1072	silence gcc -W warning.
1073	* assuan-socket-server.c (io): Likewise.
1074	* assuan-socket-connect.c (assuan_socket_connect_ext): Likewise.
1075
10762008-10-29  Marcus Brinkmann  <marcus@g10code.de>
1077
1078	* assuan.h (assuan_error_t) (_ASSUAN_ONLY_GPG_ERRORS): Make
1079	unsigned int.
1080	(assuan_transact): Change return type of callback handlers to
1081	assuan_error_t.
1082
10832008-10-15  Werner Koch  <wk@g10code.com>
1084
1085	* assuan-logging.c (_assuan_log_printf): Flush if the format
1086	string ends with a LF.
1087
10882008-09-01  Werner Koch  <wk@g10code.com>
1089
1090	* assuan-io.c: Include time.h.  Fixes bug#951.
1091	(_assuan_usleep): Use nanosleep only is available.
1092
10932008-03-25  Marcus Brinkmann  <marcus@g10code.de>
1094
1095	* assuan-inquire.c (assuan_inquire): Loop over _assuan_read_line
1096	for EAGAIN.
1097
10982008-03-21  Marcus Brinkmann  <marcus@g10code.de>
1099
1100	* assuan-defs.h (_assuan_usleep): New prototype.
1101	* assuan-io.c (_assuan_usleep): New function.
1102	* assuan-io-pth.c (_assuan_usleep): New function.
1103	* mkerrors: Do not incude <windows.h>, but assuan-defs.h.
1104	(_assuan_error_is_eagain): Call _assuan_usleep.
1105
1106	* mkerrors [HAVE_W32_SYSTEM]: Include <windows.h>
1107	(_assuan_error_is_eagain) [HAVE_W32_SYSTEM]: Wait the tenth of a
1108	second.
1109
11102007-11-23  Marcus Brinkmann  <marcus@g10code.de>
1111
1112	* assuan-inquire.c (_assuan_inquire_ext_cb): Pass through return
1113	value from callback function.
1114	Suggested by Ben Kibbey <bjk@luxsci.net>.
1115
11162007-11-14  Werner Koch  <wk@g10code.com>
1117
1118	* assuan-pipe-connect.c (pipe_connect_unix): Add dummy arg FLAGS.
1119	(pipe_connect_w32): Add arg FLAGS and start process detached if
1120	requested.  Changed callers to pass 0.
1121	(assuan_pipe_connect_ext): Pass FLAG.
1122
11232007-11-12  Marcus Brinkmann  <marcus@g10code.de>
1124
1125	* assuan-inquire.c (_assuan_inquire_ext_cb): Clear
1126	CTX->inquire_membuf after deallocating it.
1127
11282007-10-18  Marcus Brinkmann  <marcus@g10code.de>
1129
1130	* assuan-handler.c (std_handler_help): New function.
1131	(std_cmd_table): Add new command HELP.
1132
11332007-10-08  Werner Koch  <wk@g10code.com>
1134
1135	* assuan-util.c (assuan_set_io_hooks): New.
1136	* assuan.h (struct assuan_io_hooks): New.
1137	(assuan_set_io_hooks, _assuan_io_hooks): Add prefix macros.
1138	* assuan-defs.h (_assuan_io_hooks): New.
1139	* assuan-io.c (do_io_read): Take all code from _assuan_io_read.
1140	(_assuan_io_read, _assuan_simple_read): Add hook feature.
1141	(do_io_write): Take all code from _assuan_io_write.
1142	(_assuan_io_write, _assuan_simple_write): Add hook feature.
1143	* assuan-io-pth.c (_assuan_simple_read, _assuan_simple_write)
1144	(_assuan_io_read, _assuan_io_write): Add hook feature.
1145
11462007-10-05  Marcus Brinkmann  <marcus@g10code.de>
1147
1148	* assuan.h (_assuan_error_is_eagain): Add prefix macro.
1149
1150	* assuan-defs.h (_assuan_error_is_eagain): New prototype.
1151	* mkerrors (_assuan_error_is_eagain): New function.
1152	* assuan-handler.c (process_next): Leave on EAGAIN.
1153	* assuan-handler.c (process_request),
1154	assuan-client.c (_assuan_read_from_server),
1155	assuan-buffer.c (assuan_read_line): Busy loop over EAGAIN.
1156
11572007-10-05  Werner Koch  <wk@g10code.com>
1158
1159	* assuan-socket.c (_assuan_sock_wsa2errno): Map WSANOTINITIALISED.
1160	(_assuan_sock_new): Use assuan_fd_t.
1161	* assuan.h (_assuan_sock_wsa2errno): Add prefix macro.
1162
11632007-10-05  Marcus Brinkmann  <marcus@g10code.de>
1164
1165	* assuan-defs.h (_assuan_sock_wsa2errno) [HAVE_W32_SYSTEM]: Add prototype.
1166	* assuan-uds.c (wsa2errno) [HAVE_W32_SYSTEM]: Move and rename to ...
1167	* assuan-socket.c (_assuan_sock_wsa2errno) [HAVE_W32_SYSTEM]: ... this.
1168	(_assuan_close, _assuan_sock_new, _assuan_sock_connect, _assuan_sock_bind):
1169	Always set errno on error.
1170
1171	* assuan-uds.c (wsa2errno) [HAVE_W32_SYSTEM]: New function.
1172	(uds_reader, uds_writer) [HAVE_W32_SYSTEM]: Set errno.
1173
11742007-10-04  Werner Koch  <wk@g10code.com>
1175
1176	* mkerrors: Map EAGAIN to GPG_ERR_EAGAIN for read and write
1177	errors.
1178
11792007-10-02  Werner Koch  <wk@g10code.com>
1180
1181	* assuan-io.c (_assuan_io_read) [W32]: Map WSAEWOULDBLOCK to EAGAIN.
1182	* assuan-socket.c (_assuan_sock_check_nonce): N needs to be signed.
1183
1184	* assuan-defs.h (struct assuan_context_s): Add LISTEN_NONCE.
1185	* assuan-socket-server.c (assuan_set_sock_nonce): New.
1186	(accept_connection): Check the nonce.
1187
11882007-10-01  Werner Koch  <wk@g10code.com>
1189
1190	* assuan.h (ASSUAN_INT2FD, ASSUAN_FD2INT): New.
1191
1192	* assuan-socket.c: Rewritten.
1193	(assuan_sock_new, assuan_sock_connect, assuan_sock_bind)
1194	(assuan_sock_get_nonce, assuan_sock_check_nonce): New APIs.
1195
1196	* assuan-io.c (_assuan_simple_read, _assuan_simple_write):
1197	Factored code out to ...
1198	(_assuan_io_read, _assuan_io_write): .. new.
1199	* assuan-io-pth.c (_assuan_io_read, _assuan_io_write): New.
1200
12012007-09-25  Werner Koch  <wk@g10code.com>
1202
1203	* assuan.h (_assuan_gpg_strerror_r, _assuan_gpg_strsource): Add
1204	wrappers for these new internal functions.
1205
12062007-09-24  Marcus Brinkmann  <marcus@g10code.de>
1207
1208	* assuan-uds.c (uds_reader) [HAVE_W32_SYSTEM]: Do not touch the
1209	UDS structure in the context.  Reported by Frank Osterfeld.
1210	(uds_writer): Clarify code.
1211
12122007-09-14  Marcus Brinkmann  <marcus@g10code.de>
1213
1214	* assuan-pipe-connect.c (do_finish) [HAVE_W32_SYSTEM]: Close
1215	ctx->pid as handle.
1216	(pipe_connect_w32): Save the spawned processes handle.
1217
12182007-09-13  Werner Koch  <wk@g10code.com>
1219
1220	* assuan-socket.c (_assuan_close): Add inactive debug outputs.
1221
12222007-09-11  Marcus Brinkmann  <marcus@g10code.de>
1223
1224	* assuan.h: Use _WIN32 instead of HAVE_W32_SYSTEM.
1225
12262007-09-07  Marcus Brinkmann  <marcus@g10code.de>
1227
1228	* assuan-inquire.c (assuan_inquire_ext): If MAXLEN is 0, still
1229	initialize MEMBUF.
1230
1231	* assuan-inquire.c (_assuan_inquire_ext_cb): Clear CTX->in_inquire
1232	before invoking callback and returning.
1233
12342007-09-05  Marcus Brinkmann  <marcus@g10code.de>
1235
1236	* assuan-handler.c (dispatch_command): Return non-critical errors
1237	with PROCESS_DONE ().
1238
12392007-09-03  Marcus Brinkmann  <marcus@g10code.de>
1240
1241	* assuan.h [_ASSUAN_EXT_SYM_PREFIX]: Add missing symbol renames
1242	with _ASSUAN_PREFIX.
1243
12442007-09-03  Marcus Brinkmann  <marcus@g10code.de>
1245
1246	* assuan.h [_ASSUAN_EXT_SYM_PREFIX]: Add missing symbol renames
1247	with _ASSUAN_PREFIX.
1248
1249	* assuan.h (assuan_inquire_ext): Move buffer and buffer_length
1250	arguments callback in prototype.
1251	* assuan-defs.h (struct assuan_context_s): Remove members
1252	inquire_r_buffer and inquire_r_buffer_len.  Add buffer and buffer
1253	length arguments to inquire_cb.
1254	* assuan-inquire.c (_assuan_inquire_ext_cb): Return buffer and
1255	buffer length via callback.
1256	(assuan_inquire_ext): Move buffer and buffer length arguments to
1257	callback.
1258
12592007-08-24  Werner Koch  <wk@g10code.com>
1260
1261	Switched license to back to LGPLv2.1.
1262
12632007-08-09  Marcus Brinkmann  <marcus@g10code.de>
1264
1265	* assuan.h (assuan_process_done, assuan_inquire_ext): New
1266	prototypes.
1267	* assuan-defs.h (struct assuan_context_s): New members
1268	in_process_next, in_command, inquire_cb, inquire_cb_data,
1269	inquire_r_buffer, inquire_r_buffer_len, inquire_membuf.
1270	(_assuan_inquire_ext_cb, _assuan_inquire_release): New prototypes.
1271	* assuan-handler.c (PROCESS_DONE): New macro.
1272	(dummy_handler, std_handler_nop, std_handler_cancel)
1273	(std_handler_option, std_handler_bye, std_handler_auth)
1274	(std_handler_reset, std_handler_end): Use PROCESS_DONE to
1275	optionally call assuan_process_done if CTX->in_process_next is
1276	true.
1277	(assuan_process_done, process_next): New functions.
1278	(assuan_process_next): Rewritten to support external event
1279	handling.
1280	* mkerrors: Do not clear high bits of -1 for old style EOF.
1281	* assuan-inquire.c (_assuan_inquire_release)
1282	(_assuan_inquire_ext_cb, assuan_inquire_ext): New functions.
1283	* assuan-pipe-server.c (_assuan_release_context): Call
1284	_assuan_inquire_release.
1285
12862007-07-12  Werner Koch  <wk@g10code.com>
1287
1288	* assuan.h (assuan_fd_t): New.
1289	(ASSUAN_INVALID_FD): New.  Use it everywhere.
1290	* assuan-defs.h (SOCKET2HANDLE, HANDLE2SOCKET) [W32]: New.  Use
1291	them to cast descriptors for socket fucntions.
1292	* assuan-pipe-connect.c (fd_to_handle, handle_to_fd): Remove
1293	definition and all uses.
1294	(pid_to_handle, handle_to_pid): Remove as they are ununsed.
1295	* assuan-io.c (_assuan_simple_write, _assuan_simple_read) [W32]:
1296	Make use of HANDLE2SOCKET.
1297	* assuan-socket.c (_assuan_close) [W32]: Use CloseHandle and not
1298	close.
1299	* assuan-handler.c (assuan_get_active_fds) [W32]: Use
1300	_get_osfhandle for the data fp.
1301
1302	* assuan-io.c (_assuan_simple_write): Return EPIPE on a closed pipe.
1303	(_assuan_simple_read): Likewise
1304
13052007-07-08  Marcus Brinkmann  <marcus@g10code.de>
1306
1307	* assuan-defs.h (struct assuan_context_s): Have full peercred
1308	structure for HAVE_SO_PEERCRED.
1309	* assuan-connect.c (assuan_get_peercred) [!HAVE_SO_PEERCRED]: Do
1310	not try to set PID, UID and GID.
1311
13122007-07-05  Werner Koch  <wk@g10code.com>
1313
1314	* assuan-defs.h (struct assuan_context_s): Have peercred.valid
1315	even for Windows.  This makes some other code cleaner.
1316
1317	* assuan.h (ASSUAN_CONFIDENTIAL): New flag.
1318	* assuan-util.c (assuan_set_flag, assuan_get_flag): Support flag.
1319
13202007-07-04  Marcus Brinkmann  <marcus@g10code.de>
1321
1322	Change _WIN32 to HAVE_W32_SYSTEM for consistency.
1323
1324	* assuan-defs.h (struct assuan_context_s): Have full peercred
1325	structure even if not HAVE_SO_PEERCRED, but not if
1326	HAVE_W32_SYSTEM.
1327
13282007-06-18  Werner Koch  <wk@g10code.com>
1329
1330	* assuan-logging.c (load_libgpg_error, _assuan_gpg_strerror_r)
1331	(_assuan_gpg_strsource): New.
1332	* assuan-handler.c (process_request) [W32]: Use these new
1333	functions for human understable error codes.
1334
13352007-06-12  Werner Koch  <wk@g10code.com>
1336
1337	* assuan-io.c (_assuan_simple_read): Hack to allow reading from a
1338	socket.
1339	(_assuan_simple_write): Likewise.
1340
13412007-06-11  Werner Koch  <wk@g10code.com>
1342
1343	* assuan-io-pth.c (_assuan_simple_read, _assuan_simple_write): Use
1344	pth versions also for W32.
1345
13462007-05-29  Werner Koch  <wk@g10code.com>
1347
1348	* assuan-io-pth.c: Include sys/socket.h only if available.  Remove
1349	double inclusion of sys/wait.h
1350
1351	* assuan-pipe-connect.c (build_w32_commandline): Make ARGV const.
1352
1353	* assuan-pipe-server.c (is_valid_socket) [W32]: Do not define.
1354
1355	* assuan-socket-server.c [W32]: Include ws2tcpip.h to define
1356	socklen_t.
1357	* assuan-defs.h (struct assuan_context_s): Define most peercred
1358	members only if we can really set them.
1359	(_assuan_simple_sendmsg, _assuan_simple_recvmsg) [W32]: Use a
1360	different prototype.
1361	* assuan.h (assuan_get_peercred) [W32]: Do not define.
1362	* assuan-io.c (_assuan_simple_sendmsg, _assuan_simple_recvmsg)
1363	[w32]: Use another prototype.
1364
13652007-05-09  Werner Koch  <wk@g10code.com>
1366
1367	* libassuan.m4: Print found version on success.
1368
13692007-05-01  Werner Koch  <wk@g10code.com>
1370
1371	* assuan-uds.c (uds_reader): Cast void ptr for arithmetics.
1372	Reported by Peter O'Gorman.
1373
13742006-12-03  Marcus Brinkmann  <marcus@g10code.de>
1375
1376	* assuan-handler.c (assuan_command_parse_fd): Also allow white
1377	space after FD.
1378
13792006-12-02  Marcus Brinkmann  <marcus@g10code.de>
1380
1381	* assuan-uds.c (uds_reader): Return 0 if recvmsg returns 0.
1382
13832006-12-01  Marcus Brinkmann  <marcus@g10code.de>
1384
1385	* assuan-client.c (assuan_transact): Also translate some of the
1386	legacy error codes.
1387
13882006-11-22  Werner Koch  <wk@g10code.com>
1389
1390	* assuan-handler.c (fun1_cookie_write, fun2_cookie_write): New.
1391	(assuan_get_data_fp) [HAVE_FUNOPEN]: Use it.
1392
13932006-11-21  Werner Koch  <wk@g10code.com>
1394
1395	* Makefile.am (libassuan_pth_a_CFLAGS): New.
1396
1397	* assuan-pipe-server.c (_assuan_release_context): Free CMDTBL.
1398
13992006-11-14  Werner Koch  <wk@g10code.com>
1400
1401	* libassuan.m4 (AM_CHECK_LIBASSUAN): New.
1402
1403	* assuan-handler.c (assuan_register_post_cmd_notify)
1404	(assuan_register_post_cmd_notify): New.
1405	* assuan-util.c (assuan_set_io_monitor): New.
1406	* assuan-buffer.c (_assuan_read_line): Use it.
1407	(_assuan_write_line): Ditto.
1408	(_assuan_cookie_write_data): Ditto.
1409	(_assuan_cookie_write_flush): Ditto.
1410
14112006-10-18  Werner Koch  <wk@g10code.com>
1412
1413	* libassuan.m4: Pass "pthread" to the common macro.  Reported by
1414	Rex Dieter.
1415
14162006-10-16  Werner Koch  <wk@g10code.com>
1417
1418	* mkerrors: Map ASSUAN_Not_Confirmed.
1419
14202006-10-10  Werner Koch  <wk@g10code.com>
1421
1422	* libassuan.m4 (AM_PATH_LIBASSUAN_PTH)
1423	(AM_PATH_LIBASSUAN_PTHREAD): Fixed.
1424
1425	* assuan-buffer.c (assuan_sendfd): Implement a runtime detection
1426	of implemented descripotr passing.
1427
1428	* assuan-uds.c: Take care of USE_DESCRIPTOR_PASSING.
1429
1430	* assuan-defs.h: Add missing semicolon.
1431
14322006-10-09  Werner Koch  <wk@g10code.com>
1433
1434	* assuan-handler.c (process_request): Use weak pragma for the sake
1435	of old gcc's.  Reported by Alain Guibert.
1436
1437	* assuan-io.c: Removed Pth support.
1438	* assuan-io-pth.c: New. Based on assuan-io.c
1439
14402006-10-06  Werner Koch  <wk@g10code.com>
1441
1442	* libassuan-config.in: New options --api-version and --thread.
1443
14442006-10-04  Werner Koch  <wk@g10code.com>
1445
1446	* assuan-client.c (assuan_transact): Need to map old assuan status
1447	codes so that for example CANCELED is correctly mapped.
1448
14492006-09-28  Marcus Brinkmann  <marcus@g10code.de>
1450
1451	* assuan-client.c (assuan_transact): Do not convert error on
1452	status line, it is already a gpg-error.  Do convert
1453	ASSUAN_Server_Fault.
1454
14552006-09-19  Marcus Brinkmann  <marcus@g10code.de>
1456
1457	* assuan.h (assuan_init_socket_server_ext)
1458	[_ASSUAN_EXT_SYM_PREFIX]: Fix typo in macro.
1459
14602006-09-19  Werner Koch  <wk@g10code.com>
1461
1462	* assuan-defs.h (putc_unlocked): Add prototype.
1463
1464	* assuan-socket-server.c (accept_connection): Made LEN a socklen_t.
1465
1466	* assuan.h: Replaced assuan error code enum by simple defines and
1467	made assuan_error_t an int.
1468	* mkerrors: Changed parser accordingly.
1469
14702006-09-19  Marcus Brinkmann  <marcus@g10code.de>
1471
1472	* assuan-pipe-connect.c: Add hacks for Slowaris.
1473	* assuan-socket.c: Likewise here.
1474
1475	* assuan.h (enum): Avoid trailing comma in enumerator list.  Ugh.
1476
1477	* mkerrors (_assuan_error): Change return type to assuan_error_t.
1478	* assuan-buffer.c (_assuan_read_line): Change return type to
1479	assuan_error_t.  Map returned value of -1.
1480	(_assuan_write_line): Change type of RC to assuan_error_t.
1481	* assuan-defs.h (_assuan_read_line, _assuan_error): Likewise for
1482	prototypes.
1483
1484	* assuan-defs.h (unsetenv): Define correctly.
1485
14862006-09-14  Werner Koch  <wk@g10code.com>
1487
1488	* assuan-io.c (_assuan_waitpid): New.  Changed all waitpid calls
1489	to this.
1490
1491	* assuan.h (_ASSUAN_DEPRECATED): New internal macro.
1492	(assuan_pipe_connect2): Declare deprecated.
1493	(assuan_init_connected_socket_server): Declare deprecated.
1494
1495	* assuan-connect.c (assuan_get_peercred): New.
1496	* assuan-socket-server.c (accept_connection_bottom): Save uid and gid.
1497
14982006-09-13  Werner Koch  <wk@g10code.com>
1499
1500	* assuan-client.c (assuan_transact): Need to map the error code.
1501	* mkerrors: Need to map ASSUAN_No_Secret_Key.
1502
1503	* assuan-pipe-server.c (is_valid_socket): New.
1504	(assuan_init_pipe_server): Use UDS with the environmet variable is
1505	set and a valid descriptor is given.  Ignore FILEDES in this case.
1506
1507	* assuan-socket-server.c (assuan_init_socket_server_ext): New.
1508	Changed other init fucntions to make use of it.
1509
1510	* assuan-handler.c (assuan_command_parse_fd): Allow for lowercase
1511	"fd".
1512	(std_handler_reset): Close pending fds.
1513	* assuan-uds.c (uds_receivefd): Fixed.
1514	(_assuan_uds_close_fds): New.
1515
1516	* assuan-socket-connect.c (assuan_socket_connect_ext): New. Takes
1517	all code of assuan_socket_connect plus an option to use sendmsg.
1518	* assuan-pipe-connect.c (assuan_pipe_connect_ext): New arg FLAGS.
1519
15202006-09-12  Werner Koch  <wk@g10code.com>
1521
1522	* assuan-buffer.c (_assuan_write_line): Also log the prefix.
1523
1524	* assuan-defs.h (DIM, DIMof): New.
1525
1526	* assuan-domain-server.c: Removed.
1527	* assuan-domain-connect.c: Renamed to ..
1528	* assuan-uds.c: this.
1529	(domain_reader, domain_writer, domain_sendfd, domain_receivefd)
1530	(assuan_domain_connect, _assuan_domain_init): Removed.
1531	(uds_reader, uds_writer, uds_sendfd, uds_receivefd)
1532	(_assuan_init_uds_io): New.
1533	(_assuan_uds_deinit): New.
1534
1535	* assuan-io.c (_assuan_simple_sendmsg, _assuan_simple_recvmsg): New.
1536	(my_pth_fdmode, my_pth_select): New.
1537
15382006-09-11  Werner Koch  <wk@g10code.com>
1539
1540	* assuan-pipe-server.c (assuan_init_pipe_server): Allow for
1541	FILEDES to be NULL and try to start as a socketpair server in this
1542	case.
1543
1544	* assuan-pipe-connect.c (assuan_pipe_connect2): Split up into two
1545	functions (unix and w32) for clarity.
1546	(pipe_connect_unix): This is the new fucntion.  Add USE_CMSG flag.
1547	(pipe_connect_w32): Ditto.
1548	(initial_handshake): Factored out code.
1549	(socketpair_connect): New.
1550	(assuan_pipe_connect_ext): New.
1551	(do_finish): Handle case if outbound and inbound fd are the same.
1552	This is to support socketpairs.
1553
15542006-09-10  Werner Koch  <wk@g10code.com>
1555
1556	* assuan-util.c (_assuan_log_print_buffer)
1557	(_assuan_log_sanitized_string,assuan_set_log_stream): Moved to ..
1558	* assuan-logging.c: .. here.
1559	(_assuan_log_print_buffer): Only print the leading bytes in hex
1560	log mode unless the new env variable ASSUAN_FULL_LOGGING has been
1561	set.
1562	(_assuan_set_default_log_stream): Test this env variable.
1563
15642006-09-06  Werner Koch  <wk@g10code.com>
1565
1566	* assuan.h (_ASSUAN_ONLY_GPG_ERRORS): New.
1567
1568	* assuan-handler.c (dispatch_command): Use Syntax_Error instead of
1569	Invalid_Command.
1570
1571	* assuan-domain-connect.c: Changed alloc malloc/free/realloc to
1572	xtrymalloc et al.
1573	(read_int, write_int): Make args void pointers.
1574	(domain_receivefd): Take care of realloc shrinking failure.
1575
1576	* assuan-buffer.c (_assuan_read_line, _assuan_write_line)
1577	(assuan_write_line, _assuan_cookie_write_data)
1578	(_assuan_cookie_write_flush): Print the inbound fd instead of the
1579	address of the context when logging I/0.  This makes it more
1580	readable.
1581
15822006-09-05  Werner Koch  <wk@g10code.com>
1583
1584	* assuan-defs.h (err_code, err_is_eof): New.
1585
1586	* mkerrors (_assuan_error): New.  Wrapped all error code
1587	assignments in a call to this.
1588	(assuan_strerror): Map gpg-style error codes back. Also print a
1589	string for the old EOF code.
1590	(assuan_set_assuan_err_source): New.
1591
1592	* assuan-logging.c (_assuan_log_printf): Do not change ERRNO and
1593	print the pid.
1594
1595	* assuan-domain-connect.c (domain_reader): Replaced plain printf
1596	by assuan_log function.
1597
15982005-10-24  Werner Koch  <wk@g10code.com>
1599
1600	* putc_unlocked.c, memrchr.c, isascii.c, funopen.c: Changed
1601	distribution terms to LGPL.  This are small and trivial files so
1602	there are no obstacles of doing so.
1603	* assuan-socket.c: Likewise, the stated GPL was not intended.
1604
16052005-10-08  Marcus Brinkmann  <marcus@g10code.de>
1606
1607	* assuan-defs.h (setenv, unsetenv, clearenv) [!HAVE_SETENV]:
1608	Define to _assuan_*.
1609	* setenv.c: Include "assuan-defs.h".
1610	(__add_to_environ): Make static.
1611
16122005-10-07  Marcus Brinkmann  <marcus@g10code.de>
1613
1614	* assuan-defs.h (memrchr) [!HAVE_MEMRCHR]: New prototype.
1615	(stpcpy) [!HAVE_STPCPY]: Likewise.
1616	* stpcpy.c: New LGPL'ed file from the GNU C Library.
1617	* setenv.c: New file.
1618	* assuan-domain-connect.c (read_int): New function.
1619	(write_int): New function.
1620	(domain_reader): Use read_int.
1621	(domain_sendfd): Use write_int.
1622
16232005-10-01  Marcus Brinkmann  <marcus@g10code.de>
1624
1625	* assuan.h (assuan_pipe_connect, assuan_pipe_connect2): Make type
1626	of ARGV parameter const in prototype.
1627	* assuan-pipe-connect.c (assuan_pipe_connect,
1628	assuan_pipe_connect2): Likewise in declaration.
1629	(assuan_pipe_connect2): Add braindead cast to make execv happy.
1630
1631	* assuan-client.c (assuan_transact): Change LINE, S and D from
1632	unsigned char * to char * to silence gcc warning.
1633	* assuan-util.c (_assuan_log_sanitized_string): Add explicit cast
1634	to silence gcc warning.
1635	* assuan-inquire.c (assuan_inquire): Likewise.
1636
16372005-09-08  Marcus Brinkmann  <marcus@g10code.com>
1638
1639	* assuan-pipe-connect.c (assuan_pipe_connect2): Add missing
1640	declaration of PID.
1641
16422005-08-09  Werner Koch  <wk@g10code.com>
1643
1644	* mkerrors: Include config.h into assuan-errors.c.  This is
1645	required so that assuan.h knows about the W32 macro.
1646
1647	* assuan.h [_ASSUAN_EXT_SYM_PREFIX]: New.
1648	* assuan-io.c [_ASSUAN_NO_PTH]: New.
1649	* assuan-pipe-connect.c (fix_signals) [_ASSUAN_NO_FIXED_SIGNALS]: New.
1650	(assuan_pipe_connect2) [_ASSUAN_USE_DOUBLE_FORK]: Use double fork.
1651	(fix_signals) [_ASSUAN_USE_DOUBLE_FORK]: Do not wait..
1652
16532005-05-21  Werner Koch  <wk@g10code.com>
1654
1655	* assuan-util.c (assuan_set_flag, assuan_get_flag): New.
1656	* assuan-defs.h (struct assuan_context_s): New field flags.
1657	* assuan.h (assuan_flag_t): New with one flag value
1658	ASSUAN_NO_WAITPID for now.
1659	* assuan-pipe-connect.c (do_finish): Take care of the no_waitpid
1660	flag.
1661
16622005-04-04  Werner Koch  <wk@g10code.com>
1663
1664	* assuan-util.c (_assuan_calloc): Avoid integer overflow.
1665
16662005-03-22  Werner Koch  <wk@g10code.com>
1667
1668	* assuan-defs.h (struct assuan_io): Renamed elements READ and
1669	WRITE to READFNC and WRITEFNC to avoid problems with read defined
1670	as macros.  Changed callers.  Noted by Ville Skyttä.
1671
16722005-02-24  Werner Koch  <wk@g10code.com>
1673
1674	* assuan-client.c (assuan_transact): Handle empty and comment
1675	commands correctly.
1676
16772004-12-20  Werner Koch  <wk@g10code.com>
1678
1679	* assuan-socket-connect.c (assuan_socket_connect) [W32]: Allow for
1680	a drive letter in the path.
1681
16822004-12-19  Werner Koch  <wk@g10code.com>
1683
1684	* assuan-pipe-server.c (assuan_init_pipe_server) [W32]: Map file
1685	descriptors using _get_osfhandle.
1686
16872004-12-19  Moritz Schulte  <moritz@g10code.com>
1688
1689	* assuan-pipe-connect.c (assuan_pipe_connect2): Removed "`"
1690	character at beginning of line 532.
1691
16922004-12-18  Werner Koch  <wk@g10code.com>
1693
1694	* assuan-logging.c (_assuan_w32_strerror): New.
1695	* assuan-defs.h (w32_strerror): new.
1696	* assuan-pipe-connect.c (assuan_pipe_connect2, fix_signals):
1697	Factored signal code out to new function.
1698	(build_w32_commandline, create_inheritable_pipe): New.  Taken
1699	from gnupg 1.9.
1700	(assuan_pipe_connect2) [W32]: Implemented for W32.
1701
17022004-12-14  Werner Koch  <wk@g10code.com>
1703
1704	* assuan-socket-connect.c (assuan_socket_connect): Always allow
1705	NAME to start with a froward slash.
1706
17072004-12-07  Werner Koch  <wk@g10code.com>
1708
1709	* assuan-logging.c, assuan-io.c: Include config.h
1710
1711	Replaced all usages of _WIN32 by the new HAVE_W32_SYSTEM because
1712	there is nothing winning in this API.
1713
1714	* assuan-pipe-connect.c (assuan_pipe_connect2) [_WIN32]: Return
1715	error Not Imlemented.
1716
17172004-11-27  Werner Koch  <wk@g10code.com>
1718
1719	* assuan-socket.c: Include sys/types.h.  Noted by Michael
1720	Nottebrock.
1721
17222004-11-26  Werner Koch  <wk@g10code.com>
1723
1724	* assuan-io.c [_WIN32]: Avoid warnings about unknown pragmas.
1725
17262004-11-24  Werner Koch  <wk@g10code.com>
1727
1728	* assuan-logging.c (_assuan_log_printf): New.
1729	* assuan-domain-connect.c (LOG): Removed and replaced all callers
1730	by _assuan_log_printf.  This is needed for C89 and gcc 2.95 which
1731	both don't have C99 style variable arg macros.
1732	* assuan-pipe-connect.c (LOG): Ditto.
1733	* assuan-socket-connect.c (LOG): Ditto.
1734
1735	* assuan-socket.c[!_WIN32]: Fixed includes.
1736
17372004-11-23  Timo Schulz  <twoaday@g10code.com>
1738
1739	* assuan-socket.c (_assuan_sock_connect): Get local port from
1740	the sun_path[] file.
1741	(_assuan_sock_bind): Write local port to the sun_path[] file.
1742	* assuan-socket-connect.c (assuan_socket_connect): Use DIRSEP_C
1743	for a better portability.
1744	(assuan-defs.h): Define DIRSEP_C.
1745
17462004-11-19  Werner Koch  <wk@g10code.com>
1747
1748	* assuan-handler.c (assuan_write_status): Return an error code.
1749
17502004-11-22  Timo Schulz  <twoaday@g10code.com>
1751
1752	* assuan-io.c (_assuan_simple_read, _assuan_simple_write): W32
1753	support.
1754	* assuan-socket.c (_assuan_close): New.
1755	(_assuan_sock_new): New.
1756	(_assuan_sock_bind): New.
1757
17582004-11-16  Werner Koch  <wk@g10code.com>
1759
1760	* assuan-socket-connect.c (LOG): Fixed macro to print not only the
1761	prefix.
1762	* assuan-domain-connect.c, assuan-socket-connect.c (LOG): Ditto.
1763
17642004-10-02  Werner Koch  <wk@g10code.com>
1765
1766	* assuan-socket-connect.c: Define SUN_LEN, AF_LOCAL and PF_LOCAL
1767	if they are not available.
1768	* assuan-domain-connect.c: Define PF_LOCAL and AF_LOCAL if needed.
1769
17702004-06-23  Marcus Brinkmann  <marcus@g10code.de>
1771
1772	* assuan-domain-connect.c [HAVE_SYS_UIO_H]: Include <sys/uio.h>.
1773
17742004-05-11  Werner Koch  <wk@gnupg.org>
1775
1776	* assuan-listen.c (assuan_set_hello_line, assuan_accept): Allow
1777	for multi line hello strings.
1778
1779	* assuan-buffer.c (_assuan_write_line): New with parts of ..
1780	(assuan_write_line): .. factored out.
1781
17822004-04-29  Werner Koch  <wk@gnupg.org>
1783
1784	* assuan-socket-connect.c: Include string.h.
1785	* assuan-logging.c: Ditto.
1786
17872004-04-22  Marcus Brinkmann  <marcus@g10code.de>
1788
1789	* libassuan.m4: Quote first argument to AC_DEFUN.
1790
17912004-04-21  Werner Koch  <wk@gnupg.org>
1792
1793	* assuan-socket-server.c (accept_connection_bottom): Save the pid
1794	of the peer if it is available.
1795	* assuan-socket-connect.c (assuan_socket_connect): Do not save the
1796	dummy SERVED_PID arg.
1797	* assuan-pipe-connect.c (do_finish): Don't wait if the pid is 0.
1798	(assuan_pipe_connect2): Store the parents pid in the environment
1799	of the child.
1800	* assuan-pipe-server.c (assuan_init_pipe_server): Initialize the
1801	peer's pid from the environment.
1802	* assuan-connect.c (assuan_get_pid): Do not return 0 as a PID.
1803
18042004-04-19  Werner Koch  <wk@gnupg.org>
1805
1806	* assuan-socket-server.c, assuan-socket-connect.c: Includes
1807	sys/types.h.  Reported by Michael Nottebrock.
1808	* assuan-domain-connect.c: Ditto.
1809
18102004-04-13  Werner Koch  <wk@gnupg.org>
1811
1812	* assuan-util.c (_assuan_log_print_buffer): Relaxed quoting.
1813	(_assuan_log_sanitized_string): Ditto.
1814
18152004-03-14  Werner Koch  <wk@gnupg.org>
1816
1817	* assuan-handler.c: Include <errno.h>.  Reported by Bernd Kuhls.
1818
18192004-02-18  Werner Koch  <wk@gnupg.org>
1820
1821	* libassuan-config.in: Ignore setting of --prefix.
1822
1823	* assuan-handler.c (assuan_get_data_fp): Fail with ENOSYS if we
1824	can't implement this.
1825
18262004-02-15  Werner Koch  <wk@gnupg.org>
1827
1828	* memrchr.c (memrchr): Fixed implementation. Taken from gpgme.
1829
18302004-02-13  Werner Koch  <wk@gnupg.org>
1831
1832	* assuan-domain-connect.c: Removed the unneeded alloca.h.
1833
18342004-01-24  Werner Koch  <wk@gnupg.org>
1835
1836	* assuan-pipe-connect.c (assuan_pipe_connect2): New as an
1837	extension of assuan_pipe_connect. Made the latter call this one.
1838
18392004-01-14  Werner Koch  <wk@gnupg.org>
1840
1841	* assuan-buffer.c (_assuan_cookie_write_data): Return the
1842	requested size to indicate successful operation.  Fixes a spurious
1843	bug we previously fixed using fflush().
1844
18452003-12-22  Werner Koch  <wk@gnupg.org>
1846
1847	* assuan.h (ASSUAN_Locale_Problem): Added.
1848	* assuan-errors.c (assuan_strerror): Ditto.
1849
18502003-12-18  Werner Koch  <wk@gnupg.org>
1851
1852	* assuan.h (AssuanCommand): Clarified that these are now
1853	deprecated and actually useless.
1854	(assuan_error_t): Clarified and added ASSUAN_USER_ERROR_FIRST,
1855	ASSUAN_USER_ERROR_LAST.
1856
18572003-12-16  Werner Koch  <wk@gnupg.org>
1858
1859	* assuan-buffer.c: Changed formatting of the debug output prefix.
1860	* assuan-util.c (assuan_set_log_stream): Set global log stream if
1861	it has not been done yet.
1862	* assuan-logging.c (_assuan_set_default_log_stream): New.
1863	(assuan_set_assuan_log_prefix): New.
1864
18652003-12-11  Werner Koch  <wk@gnupg.org>
1866
1867	* funopen.c (_assuan_funopen): Renamed from funopen, to keep the
1868	name space clean and avoid duplicate definitions if another
1869	library uses the same replacement.
1870	* assuan-defs.h (funopen): Renamed prototype and add a macro.
1871
18722003-12-08  Werner Koch  <wk@gnupg.org>
1873
1874	* TODO: Removed.
1875
18762003-11-12  Werner Koch  <wk@gnupg.org>
1877
1878	* assuan-handler.c (process_request): Kludge to print better error
1879	messages for gpg-error enabled programs.
1880
18812003-11-06  Werner Koch  <wk@gnupg.org>
1882
1883	* assuan.h (assuan_context_t): New.  Should be used in favor of
1884	ASSUAN_CONTEXT.
1885	(assuan_error_t): New. To be used instead of AssuanError.
1886
18872003-11-11  Moritz Schulte  <mo@g10code.com>
1888
1889	* assuan-socket-connect.c (assuan_socket_connect): Fix computation
1890	of socket address length.
1891
18922003-08-13  Werner Koch  <wk@gnupg.org>
1893
1894	* assuan-inquire.c (assuan_inquire): Increase length of cmdbuf to
1895	the Assuan limit.
1896
18972003-06-24  Werner Koch  <wk@gnupg.org>
1898
1899	* mkerrors: Kludge to print libgpg-error values in an easier
1900	readable way.
1901
19022003-04-29  Werner Koch  <wk@gnupg.org>
1903
1904	* libassuan.m4: New. Based on libgrypt.m4.
1905	* Makefile.am (m4data_DATA): New.
1906
1907	* assuan.h (AssuanCommand): Removed.
1908
1909	* assuan-handler.c: Remove the cmd_id element,
1910	(assuan_register_command): Likewise.  Note that semantics changed.
1911	(_assuan_register_std_commands): Adjusted.
1912
19132003-02-22  Neal H. Walfield  <neal@g10code.de>
1914
1915	* Makefile.am (bin_SCRIPTS): Renamed from bin_PROGRAMS.
1916
19172003-02-18  Neal H. Walfield  <neal@g10code.de>
1918
1919	* Makefile.am (libassuan_a_LIBADD): New variable.
1920	* funopen.c: Move from ../common.
1921	* isascii.c: Likewise.
1922	* memrchr.c: Likewise.
1923	* putc_unlocked.c: Likewise.
1924
19252003-02-18  Neal H. Walfield  <neal@g10code.de>
1926
1927	* assuan-handler.c (_IO_cookie_io_functions_t): Remove.
1928	(cookie_io_functions_t): Remove.
1929	(fopencookie): Remove prototype.
1930	(assuan_get_data_fp): Use funopen, not fopencookie.
1931
19322003-02-18  Neal H. Walfield  <neal@g10code.de>
1933
1934	* libassuan-config.in: New file.
1935	* Makefile.am (bin_PROGRAMS): New variable.
1936
19372003-02-17  Neal H. Walfield  <neal@g10code.de>
1938
1939	* .cvsignore: New file.
1940
19412003-02-17  Neal H. Walfield  <neal@g10code.de>
1942
1943	* Makefile.am (lib_LIBRARIES): Use this instead of . . .
1944	(noinst_LIBRARIES): . . . this.
1945	(include_HEADERS): New variable.
1946	(libassuan_a_SOURCES): Remove assuan.h, add assuan-logging.c.
1947
1948	* assuan.h (assuan_set_assuan_log_stream): New prototype.
1949	(assuan_get_assuan_log_stream): Likewise.
1950	(assuan_get_assuan_log_prefix): Likewise.
1951	* assuan-logging.c: New file.
1952
1953	* assuan-buffer.c [HAVE_JNLIB_LOGGIN]: Do not include
1954	"../jnlib/logging.h".
1955	(my_log_prefix): Remove function.
1956	(_assuan_read_line): Use assuan_get_assuan_log_prefix in lieu of
1957	my_log_prefix.
1958	(assuan_write_line): Likewise.
1959	(_assuan_cookie_write_data): Likewise.
1960	(_assuan_cookie_write_flush): Likewise.
1961	* assuan-domain-connect.c (LOGERROR, LOGERROR1, LOGERROR2,
1962	LOGERRORX):  Remove.
1963	(LOG): New macro.
1964	(domain_reader): Use it.
1965	(domain_writer): Likewise.
1966	(domain_sendfd): Likewise.
1967	(domain_receivefd): Likewise.
1968	(_assuan_domain_init): Likewise.
1969	(assuan_domain_connect): Likewise.
1970	* assuan-pipe-connect.c [HAVE_JNLIB_LOGGIN]: Do not include
1971	"../jnlib/logging.h".
1972	(LOGERROR, LOGERROR1, LOGERROR2, LOGERRORX):  Remove.
1973	(LOG): New macro.
1974	(assuan_pipe_connect): Use it.
1975	* assuan-socket-connect.c [HAVE_JNLIB_LOGGIN]: Do not include
1976	"../jnlib/logging.h".
1977	(LOGERROR, LOGERROR1, LOGERROR2, LOGERRORX):  Remove.
1978	(LOG): New macro.
1979	(assuan_socket_connect): Use it.
1980	(socket_reader): Remove dead code.
1981	(socket_writer): Likewise.
1982	* assuan-util.c [HAVE_JNLIB_LOGGIN]: Do not include
1983	"../jnlib/logging.h".
1984	(_assuan_log_sanitized_string): Use assuan_get_assuan_log_stream,
1985	not jnlib.
1986
19872002-11-24  Neal H. Walfield  <neal@g10code.de>
1988
1989	* assuan.h (assuan_command_parse_fd): New prototype.
1990	* assuan-handler.c (assuan_command_parse_fd): Rename from
1991	parse_cmd_input_output.  Export.
1992	(std_handler_input): Update to use assuan_command_parse_fd.
1993	(std_handler_output): Likewise.
1994
19952002-11-24  Neal H. Walfield  <neal@g10code.de>
1996
1997	* assuan.h (assuan_sendfd): New prototype.
1998	(assuan_receivefd): New prototype.
1999	* assuan-buffer.c (assuan_sendfd): New function.
2000	(assuan_receivefd): New function.
2001	* assuan-handler.c (parse_cmd_input_output): Recognize incoming
2002	file descriptors and act appropriately.
2003	* assuan-defs.h (struct assuan_io): Add fields sendfd and
2004	receivefd.
2005	(struct assuan_context_s): Add fields pendingfds and
2006	pendingfdscount.
2007	* assuan-pipe-server.c (_assuan_new_context): Update IO to reflect
2008	new features.
2009	* assuan-domain-connect.c (do_deinit): Cleanup any unreceived file
2010	descriptors.
2011	(domain_reader): Receive file descriptors.
2012	(domain_sendfd): New function.
2013	(domain_receivefd): New function.
2014	(_assuan_domain_init): Update initialization code to reflect new
2015	features.
2016
20172002-11-24  Neal H. Walfield  <neal@g10code.de>
2018
2019	* assuan-domain-connect.c (do_finish): Remove.
2020	(_assuan_domain_init): Use default handlers where possible.
2021	Add an assert and update comments.
2022	* assuan-domain-server.c (accept_connection): Remove.
2023	(assuan_init_domain_server): Use default handlers where possible.
2024	Put the server in pipe mode: it can only be used by a single
2025	client.
2026
20272002-11-24  Neal H. Walfield  <neal@g10code.de>
2028
2029	* assuan.h: Add prototype for assuan_domain_connect and
2030	assuan_init_domain_server.
2031	* assuan-defs.h: Include <unistd.h>.
2032	Add prototype for _assuan_domain_init.
2033	* assuan-domain-connect.c: New file.
2034	* assuan-domain-server.c: New file.
2035	* Makefile.am (libassuan_a_SOURCES): Add assuan-domain-connect.c
2036	and assuan-domain-server.c
2037
20382002-11-23  Neal H. Walfield  <neal@g10code.de>
2039
2040	* Makefile.am (libassuan_a_SOURCES): Add assuan-io.c.
2041	* assuan-io.c: Restore.
2042	(_assuan_simple_read): Rename from _assuan_read.
2043	(_assuan_simple_write): Rename from _assuan_write.
2044	* assuan-defs.h (_assuan_simple_read): New prototype.
2045	(_assuan_simple_write): Likewise.
2046	* assuan-pipe-server.c (pipe_reader): Remove.
2047	(pipe_writer): Remove.
2048	(_assuan_new_context): Initialize IO is with _assuan_simple_read
2049	and _assuan_simple_write.
2050	* assuan-socket-connect.c (socket_reader): Remove.
2051	(socket_writer): Remove.
2052	(assuan_socket_connect): Initialize IO is with _assuan_simple_read
2053	and _assuan_simple_write.
2054	* assuan-socket-server.c (io): New local variable.
2055	(assuan_init_socket_server): Initialize CTX->io.
2056	(assuan_init_connected_socket_server): Likewise.
2057
20582002-11-23  Neal H. Walfield  <neal@g10code.de>
2059
2060	* assuan-buffer.c (readline): Use memrchr.
2061	(_assuan_read_line): Rewritten to use the string functions.
2062
20632002-11-20  Neal H. Walfield  <neal@g10code.de>
2064
2065	* assuan-socket-connect.c (assuan_socket_connect): Pass PF_LOCAL
2066	to socket(), not AF_UNIX: it expects a PF_* macro and the former
2067	is more portable.
2068	(assuan_socket_connect): Use AF_LOCAL, not AF_UNIX which is more
2069	POSIXy.
2070
20712002-11-20  Neal H. Walfield  <neal@g10code.de>
2072
2073	* assuan-defs.h (struct assuan_io): New structure.
2074	(struct assuan_context_s): New field, io.
2075	(_assuan_read): Depreciated.
2076	(_assuan_write): Likewise.
2077	* assuan-pipe-server.c: Include <unistd.h>.
2078	(pipe_reader): New function.
2079	(pipe_writer): Likewise.
2080	(_assuan_new_context.IO): New local static.  Set to pipe_reader
2081	and pipe_writer.  Use it to initialize new context.
2082	* assuan-socket-connect.c (socket_reader): New function.
2083	(socket_writer): New function.
2084	(assuan_socket_connect.IO): New local static.  Set to socket_reader
2085	and socket_writer.  Use it to initialize new context.
2086	* assuan-buffer.c (writen): Take an ASSUAN_CONTEXT rather than a
2087	file descriptor.  Do not use _assuan_write but the write method
2088	in the supplied context.
2089	(readline): Likewise for _assuan_read.
2090	(assuan_write_line): When calling writen, pass CTX; not the file
2091	descriptor directly.
2092	(_assuan_cookie_write_data): Likewise.
2093	(_assuan_cookie_write_flush): Likewise.
2094	(_assuan_read_line): Likewise for readline.
2095	* Makefile.am (libassuan_a_SOURCES): Remove assuan-io.c.
2096	* assuan-io.c: Removed.
2097
20982002-11-10  Werner Koch  <wk@gnupg.org>
2099
2100	* assuan-pipe-connect.c (assuan_pipe_connect): Changed the order
2101	of the dups to handle cases where we have already used fd 2 for
2102	other things.
2103
21042002-10-31  Neal H. Walfield  <neal@g10code.de>
2105
2106	* assuan-util.c: Include <ctype.h>.
2107	(_assuan_log_print_buffer): Elide the magic numbers preferring the
2108	standard isfoo functions.  Use putc_unlocked where possible.
2109	(_assuan_log_sanitized_string): Rewrite to use putc_unlocked and
2110	the isfoo functions.
2111
21122002-09-05  Neal H. Walfield  <neal@g10code.de>
2113
2114	* assuan-defs.h (_assuan_read_wrapper): Depreciated.
2115	* assuan-util.c (_assuan_read_wrapper): Removed.
2116	* assuan-defs.h (_assuan_write_wrapper): Depreciated.
2117	* assuan-util.c (_assuan_write_wrapper): Removed.
2118	* assuan.h (assuan_set_io_fun): Depreciated.
2119	* assuan-util.c (assuan_set_io_fun): Removed.
2120
2121	* assuan-defs.h (_assuan_read): New function.
2122	(_assuan_write): Likewise.
2123	* assuan-io.c: New file.
2124
2125	* assuan-buffer.c (writen): Use _assuan_write rather than doing
2126	the work here.
2127	(readline): Likewise for _assuan_read.
2128
2129	* Makefile.am (libassuan_a_SOURCES): Add assuan-io.c.
2130
21312002-08-16  Werner Koch  <wk@gnupg.org>
2132
2133	* assuan.h: Renamed Bad_Certificate_Path to Bad_Certificate_Chain.
2134
21352002-07-30  Werner Koch  <wk@gnupg.org>
2136
2137	Changed the license from GPL to LGPL.
2138
21392002-07-23  Werner Koch  <wk@gnupg.org>
2140
2141	* assuan-handler.c (_IO_cookie_io_functions_t): Define it here if
2142	it does not exists.
2143
21442002-06-27  Werner Koch  <wk@gnupg.org>
2145
2146	* assuan-pipe-connect.c (assuan_pipe_connect): No special handling
2147	for the log_fd and stderr.  Connect stderr to /dev/null if it
2148	should not be retained.
2149
21502002-06-26  Werner Koch  <wk@gnupg.org>
2151
2152	* assuan-buffer.c (assuan_write_line): Make sure we never
2153	accidently print an extra LF.
2154
21552002-05-23  Werner Koch  <wk@gnupg.org>
2156
2157	* assuan-util.c (assuan_set_io_func): New.
2158	* assuan-buffer.c (writen, readline): Use the new functions
2159	instead of pth.
2160	* assuan-socket-server.c (accept_connection): Don't use the
2161	pth_accept - using the assuan included accept code would be a bad
2162	idea within Pth so we don't need a replacement function.
2163
21642002-05-22  Werner Koch  <wk@gnupg.org>
2165
2166	* assuan-socket-server.c (assuan_init_connected_socket_server): New.
2167	(accept_connection): Factored most code out to..
2168	(accept_connection_bottom): .. new function.
2169
21702002-04-04  Werner Koch  <wk@gnupg.org>
2171
2172	* assuan-buffer.c (my_log_prefix): New.  Use it for all i/o debug
2173	output.
2174
21752002-03-06  Werner Koch  <wk@gnupg.org>
2176
2177	* assuan-client.c (_assuan_read_from_server): Detect END.
2178	(assuan_transact): Pass it to the data callback.
2179
21802002-02-27  Werner Koch  <wk@gnupg.org>
2181
2182	* assuan-client.c (assuan_transact): Add 2 more arguments to
2183	support status lines. Passing NULL yields the old behaviour.
2184
2185	* assuan-handler.c (process_request): Flush data lines send
2186	without using the data fp.
2187
21882002-02-14  Werner Koch  <wk@gnupg.org>
2189
2190	* assuan-inquire.c (assuan_inquire): Check for a cancel command
2191	and return ASSUAN_Canceled.  Allow for non-data inquiry.
2192
2193	* assuan.h: Add a few token specific error codes.
2194
21952002-02-13  Werner Koch  <wk@gnupg.org>
2196
2197	* assuan-defs.h (assuan_context_s): New var CLIENT_PID.
2198	* assuan-pipe-server.c (_assuan_new_context): set default value.
2199	* assuan-socket-server.c (accept_connection): get the actual pid.
2200
22012002-02-12  Werner Koch  <wk@gnupg.org>
2202
2203	* assuan-buffer.c (writen,readline) [USE_GNU_PT]: Use pth_read/write.
2204	* assuan-socket-server.c (accept_connection) [USE_GNU_PTH]: Ditto.
2205
22062002-02-01  Marcus Brinkmann  <marcus@g10code.de>
2207
2208	* Makefile.am (MOSTLYCLEANFILES): New variable.
2209
22102002-01-23  Werner Koch  <wk@gnupg.org>
2211
2212	* assuan-socket-connect.c (LOGERRORX): and removed typo.
2213
22142002-01-22  Marcus Brinkmann  <marcus@g10code.de>
2215
2216	* assuan-socket-connect.c (LOGERRORX): Reverse arguments to fputs.
2217
22182002-01-21  Werner Koch  <wk@gnupg.org>
2219
2220	* assuan-connect.c: Move all except assuan_get_pid to...
2221	* assuan-pipe-connect.c: this.
2222	(assuan_pipe_disconnect): Removed.
2223	(do_finish, do_deinit): New
2224	(assuan_pipe_connect): and set them into the context.
2225	* assuan-socket-connect.c: New.
2226
2227	* assuan-util.c (_assuan_log_sanitized_string): New.
2228
2229	* assuan-pipe-server.c (assuan_init_pipe_server): Factored most
2230	code out to ...
2231	(_assuan_new_context): new func.
2232	(_assuan_release_context): New
2233	* assuan-connect.c (assuan_pipe_connect): Use the new functions.
2234
22352002-01-20  Werner Koch  <wk@gnupg.org>
2236
2237	* assuan.h: Added Invalid Option error code.
2238
2239	* assuan-handler.c (std_handler_option): New.
2240	(std_cmd_tbl): Add OPTION as standard command.
2241	(assuan_register_option_handler): New.
2242	(dispatch_command): Use case insensitive matching as a fallback.
2243	(my_strcasecmp): New.
2244
22452002-01-19  Werner Koch  <wk@gnupg.org>
2246
2247	* assuan-buffer.c (_assuan_read_line): Add output logging.
2248	(assuan_write_line): Ditto.
2249	(_assuan_cookie_write_data): Ditto.
2250	(_assuan_cookie_write_flush): Ditto.
2251	* assuan-util.c (_assuan_log_print_buffer): New.
2252	(assuan_set_log_stream): New.
2253	(assuan_begin_confidential): New.
2254	(assuan_end_confidential): New.
2255
2256	* assuan-defs.h: Add a few handler variables.
2257	* assuan-pipe-server.c (assuan_deinit_pipe_server): Removed.
2258	(deinit_pipe_server): New.
2259	(assuan_deinit_server): New.  Changed all callers to use this.
2260	* assuan-listen.c (assuan_accept): Use the accept handler.
2261	* assuan-handler.c (process_request): Use the close Handler.
2262	* assuan-socket-server.c: New.
2263
22642002-01-14  Werner Koch  <wk@gnupg.org>
2265
2266	* assuan-client.c (_assuan_read_from_server): Skip spaces after
2267	the keyword.
2268
22692002-01-03  Werner Koch  <wk@gnupg.org>
2270
2271	* assuan-handler.c (assuan_set_okay_line): New.
2272	(process_request): And use it here.
2273
22742002-01-02  Werner Koch  <wk@gnupg.org>
2275
2276	* assuan-inquire.c (init_membuf,put_membuf,get_membuf): Apply a
2277	hidden 0 behind the buffer so that the buffer can be used as a
2278	string in certain contexts.
2279
22802001-12-14  Marcus Brinkmann  <marcus@g10code.de>
2281
2282	* assuan-connect.c (assuan_pipe_connect): New argument
2283	FD_CHILD_LIST.  Don't close those fds.
2284	* assuan.h: Likewise for prototype.
2285
22862001-12-14  Werner Koch  <wk@gnupg.org>
2287
2288	* assuan-listen.c (assuan_close_input_fd): New.
2289	(assuan_close_output_fd): New.
2290	* assuan-handler.c (std_handler_reset): Always close them after a
2291	reset command.
2292	(std_handler_bye): Likewise.
2293
22942001-12-14  Marcus Brinkmann  <marcus@g10code.de>
2295
2296	* assuan-buffer.c (_assuan_read_line): New variable ATTICLEN, use
2297	it to save the length of the attic line.
2298	Rediddle the code a bit to make it more clear what happens.
2299
23002001-12-14  Marcus Brinkmann  <marcus@g10code.de>
2301
2302	* assuan-defs.h (LINELENGTH): Define as ASSUAN_LINELENGTH.
2303	assuan.h: Define ASSUAN_LINELENGTH.
2304
23052001-12-13  Marcus Brinkmann  <marcus@g10code.de>
2306
2307	* assuan-buffer.c (assuan_read_line): Fix order of execution to
2308	get correct return values.
2309
23102001-12-13  Werner Koch  <wk@gnupg.org>
2311
2312	* assuan-handler.c (assuan_get_active_fds): Fixed silly bug,
2313	pretty obvious that nobody ever tested this function.
2314
23152001-12-12  Werner Koch  <wk@gnupg.org>
2316
2317	* assuan-connect.c (assuan_pipe_connect): Implemented the inital
2318	handshake.
2319	* assuan-client.c (read_from_server): Renamed to
2320	(_assuan_read_from_server): this and made external.
2321
2322	* assuan-listen.c (assuan_set_hello_line): New.
2323	(assuan_accept): Use a custom hello line is available.
2324
2325	* assuan-buffer.c (assuan_read_line): New.
2326	(assuan_pending_line): New.
2327	(_assuan_write_line): Renamed to ..
2328	(assuan_write_line): this, made public and changed all callers.
2329
23302001-12-04  Werner Koch  <wk@gnupg.org>
2331
2332	* assuan-connect.c (assuan_pipe_connect): Add more error reporting.
2333	* assuan-client.c: New.
2334
2335	* assuan-inquire.c: New.
2336	* assuan-handler.c (process_request): Check for nested invocations.
2337
23382001-11-27  Werner Koch  <wk@gnupg.org>
2339
2340	* assuan-handler.c (assuan_register_input_notify): New.
2341	(assuan_register_output_notify): New.
2342
23432001-11-26  Werner Koch  <wk@gnupg.org>
2344
2345	* assuan.h: Added more status codes.
2346
23472001-11-25  Werner Koch  <wk@gnupg.org>
2348
2349	* assuan-handler.c (assuan_register_bye_notify)
2350	(assuan_register_reset_notify)
2351	(assuan_register_cancel_notify): New and call them from the
2352	standard handlers.
2353	(assuan_process): Moved bulk of function to ..
2354	(process_request): .. new.
2355	(assuan_process_next): One shot version of above.
2356	(assuan_get_active_fds): New.
2357
23582001-11-24  Werner Koch  <wk@gnupg.org>
2359
2360	* assuan-connect.c (assuan_get_pid): New.
2361
2362	* assuan-buffer.c (_assuan_read_line): Deal with reads of more
2363	than a line.
2364	* assuan-defs.h: Add space in the context for this.
2365
2366
2367 Copyright 2001, 2002, 2006, 2007, 2010 Free Software Foundation, Inc.
2368
2369 This file is free software; as a special exception the author gives
2370 unlimited permission to copy and/or distribute it, with or without
2371 modifications, as long as this notice is preserved.
2372
2373 This file is distributed in the hope that it will be useful, but
2374 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
2375 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2376