97098b0665bce8d66828144d07b48b1bf61fa74c
[gpgme.git] / gpgme / ChangeLog
1 2001-11-22  Marcus Brinkmann  <marcus@gnu.org>
2
3         * engine-gpgsm.c: Shuffle around header inclusion a bit, to still
4         keep them seperate.
5         (_gpgme_set_status_handler) [!ENABLE_GPGSM]: New function.
6
7 2001-11-22  Werner Koch  <wk@gnupg.org>
8
9         * engine-gpgsm.c: Include more headers so that NULL and mk_error
10         is defined even with an undefined GPGSM_PATH.
11
12 2001-11-22  Marcus Brinkmann  <marcus@g10code.de>
13
14         * rungpg.c (gpg_inbound_handler, write_mem_data, write_cb_data,
15         gpg_outbound_handler): Moved to ...
16         * data.c (_gpgme_data_inbound_handler, write_mem_data,
17         write_cb_data, _gpgme_data_outbound_handler): ... here.  Make the
18         _gpgme_* ones non-static.
19         * data.c: Include io.h.
20
21         * ops.h (_gpgme_data_inbound_handler): New prototype.
22         (_gpgme_data_outbound_handler): Likewise.
23         (_gpgme_gpg_spawn): Use these new functions.
24
25         * engine-gpgsm.h (_gpgme_gpgsm_op_decrypt, _gpgme_gpgsm_op_delete,
26         _gpgme_gpgsm_op_encrypt, _gpgme_gpgsm_op_export,
27         _gpgme_gpgsm_op_genkey, _gpgme_gpgsm_op_import,
28         _gpgme_gpgsm_op_keylist, _gpgme_gpgsm_op_sign,
29         _gpgme_gpgsm_op_trustlist, _gpgme_gpgsm_op_verify,
30         _gpgme_gpgsm_start, _gpgme_gpgsm_set_status_handler): New prototype.
31         Include <rungpg.h> for status handler function.
32
33         * engine-gpgsm.c (struct gpgsm_object_s): New members input_fd,
34         input_data, output_fd, output_data, message_fd, message_data, command
35         and status.
36         (_gpgme_gpgsm_new): Open input, output and message pipes before
37         connecting to the client.  Close server's ends afterwards.
38         (_gpgme_gpgsm_release): Close open file descriptors.  Remove
39         server process from wait queue.
40         (_gpgme_gpgsm_op_verify, _gpgme_gpgsm_start,
41         _gpgme_gpgsm_set_status_handler, gpgms_status_handler): New function.
42         
43         * engine.c (_gpgme_engine_start): Implement for GPGME_PROTOCOL_CMS.
44         (_gpgme_engine_set_status_handler): Likewise.
45         (_gpgme_engine_op_verify): Likewise.
46
47 2001-11-21  Marcus Brinkmann  <marcus@g10code.de>
48
49         * context.h: Do not include rungpg.h, but engine.h.
50         (struct gpgme_context_s): Replace member gpg with engine.
51         * gpgme.c (gpgme_release): Release engine, not gpg.
52
53         * recipient.c (_gpgme_append_gpg_args_from_recifgpients): Function
54         moved ...
55         * rungpg.c (_gpgme_append_gpg_args_from_recipients): ... here.
56         Make static, change order of arguments, and return an error value.
57         * ops.h (_gpgme_append_gpg_args_from_recipients): Removed prototype.
58
59         * rungpg.h (_gpgme_gpg_op_verify): Add prototype.
60         (_gpgme_gpg_op_encrypt): Likewise.
61         (_gpgme_gpg_op_decrypt): Likewise.
62         (_gpgme_gpg_op_delete): Likewise.
63         (_gpgme_gpg_op_export): Likewise.
64         (_gpgme_gpg_op_genkey): Likewise.
65         (_gpgme_gpg_op_import): Likewise.
66         (_gpgme_gpg_op_keylist): Likewise.
67         (_gpgme_gpg_op_sign): Likewise.
68         (_gpgme_gpg_op_trustlist): Likewise.
69         * rungpg.c (_gpgme_gpg_op_verify): New function.
70         (_gpgme_gpg_op_encrypt): Likewise.
71         (_gpgme_gpg_op_decrypt): Likewise.
72         (_gpgme_gpg_op_delete): Likewise.
73         (_gpgme_gpg_op_export): Likewise.
74         (_gpgme_gpg_op_genkey): Likewise.
75         (_gpgme_gpg_op_import): Likewise.
76         (_gpgme_gpg_op_keylist): Likewise.
77         (_gpgme_gpg_op_sign): Likewise.
78         (_gpgme_gpg_op_trustlist): Likewise.
79
80         * engine.h (_gpgme_engine_set_status_handler): Add prototype.
81         (_gpgme_engine_set_command_handler): Likewise.
82         (_gpgme_engine_set_colon_line_handler): Likewise.
83         (_gpgme_engine_op_decrypt): Likewise.
84         (_gpgme_engine_op_delete): Likewise.
85         (_gpgme_engine_op_encrypt): Likewise.
86         (_gpgme_engine_op_export): Likewise.
87         (_gpgme_engine_op_genkey): Likewise.
88         (_gpgme_engine_op_import): Likewise.
89         (_gpgme_engine_op_keylist): Likewise.
90         (_gpgme_engine_op_sign): Likewise.
91         (_gpgme_engine_op_trustlist): Likewise.
92         (_gpgme_engine_op_verify): Likewise.
93         (_gpgme_engine_start): Likewise.
94         * engine.c (_gpgme_engine_set_status_handler): New function.
95         (_gpgme_engine_set_command_handler): Likewise.
96         (_gpgme_engine_set_colon_line_handler): Likewise.
97         (_gpgme_engine_op_decrypt): Likewise.
98         (_gpgme_engine_op_delete): Likewise.
99         (_gpgme_engine_op_encrypt): Likewise.
100         (_gpgme_engine_op_export): Likewise.
101         (_gpgme_engine_op_genkey): Likewise.
102         (_gpgme_engine_op_import): Likewise.
103         (_gpgme_engine_op_keylist): Likewise.
104         (_gpgme_engine_op_sign): Likewise.
105         (_gpgme_engine_op_trustlist): Likewise.
106         (_gpgme_engine_op_verify): Likewise.
107         (_gpgme_engine_start): Likewise.
108
109         * verify.c (gpgme_op_verify_start): Reimplement in terms of above
110         functions.
111         * encrypt.c (gpgme_op_encrypt_start): Likewise.
112         * decrypt.c (_gpgme_decrypt_start): Likewise.
113         * passphrase.c (_gpgme_passphrase_start): Likewise.
114         * keylist.c (gpgme_op_keylist_start): Likewise.
115
116 2001-11-20  Marcus Brinkmann  <marcus@g10code.de>
117
118         * types.h: Add types EngineObject and GpgsmObject.
119
120         * Makefile.am (libgpgme_la_SOURCES): Add engine-gpgsm.h,
121         engine-gpgsm.c, engine.h and engine.c.
122         * engine.h: New file.
123         * engine.c: Likewise.
124         * engine-gpgsm.h: Likewise.
125         * engine-gpgsm.c: Likewise.
126         
127         * rungpg.c (_gpgme_gpg_get_version): New function.
128         (_gpgme_gpg_check_version): Likewise.
129         * rungpg.h: Add prototypes for _gpgme_gpg_get_version and
130         _gpgme_gpg_check_version.
131
132         * version.c (compare_versions): Rename to ...
133         (_gpgme_compare_versions): ... this.  Make non-static.
134         (gpgme_check_version): Use _gpgme_compare_versions rather than
135         compare_versions.
136         (gpgme_check_engine): Likewise.
137         * ops.h (_gpgme_get_program_version): Add prototype.
138
139 2001-11-20  Marcus Brinkmann  <marcus@g10code.de>
140
141         * Makefile.am (libgpgme_la_INCLUDES): Remove obsolete directive.
142         (AM_CPPFLAGS): New directive [BUILD_ASSUAN].
143         (libgpgme_la_LIBADD): Likewise.
144
145 2001-11-20  Marcus Brinkmann  <marcus@g10code.de>
146
147         * version.c: Remove global variables lineno and
148         tmp_engine_version.
149         (version_handler): Removed.
150         (_gpgme_get_program_version): New function.
151         (get_engine_info): Don't use context and version_handler,
152         but _gpgme_get_program_version.
153         * ops.h (_gpgme_get_program_version): Add prototype for
154         _gpgme_get_program_version (we expect to use it elsewhere soon).
155
156 2001-11-18  Marcus Brinkmann  <marcus@g10code.de>
157
158         * version.c (get_engine_info): If GnuPG is not available, return
159         an error message.
160         * posix-util.c (_gpgme_get_gpg_path): Allow GPG_PATH to be
161         undefined.
162         (_gpgme_get_gpgsm_path): New function.
163         * w32-util.c (find_program_in_registry): New static function.
164         (_gpgme_get_gpg_path): Allow GPG_PATH to be undefined.  Rework
165         to use find_program_in_registry.
166         (_gpgme_get_gpgsm_path): New function.
167         (util.h): Prototype _gpgme_get_gpgsm_path).
168         * rungpg.c (_gpgme_gpg_spawn): Verify that _gpgme_get_gpg_path()
169         returns non-null.
170
171 2001-11-16  Marcus Brinkmann  <marcus@g10code.de>
172
173         * decrypt-verify.c: New file.
174         * Makefile.am (libgpgme_la_SOURCES): Add decrypt-verify.c.
175         * types.h: Add decrypt-verify types.
176         * ops.h: Likewise.
177         * context.h: Add result type for decrypt-verify.
178         * gpgme.h: Add decrypt-verify prototypes.
179
180         * decrypt.c (decrypt_status_handler): Renamed to ...
181         (_gpgme_decrypt_status_handler): ... this.  Make non-static.
182         (_gpgme_decrypt_start): New function, derived from
183         gpgme_op_decrypt_start.
184         (gpgme_op_decrypt_start): Reimplement in terms of
185         _gpgme_decrypt_start.
186         (_gpgme_decrypt_result): New function to retrieve error value.
187         (gpgme_op_decrypt): Use _gpgme_decrypt_result.
188         * ops.h: Add prototypes for new functions.
189
190         * verify.c (verify_status_handler): Renamed to ...
191         (_gpgme_verify_status_handler): ... this.  Make non-static.
192         (gpgme_op_verify_start): Use new function name.
193         (intersect_stati): Renamed to ...
194         (_gpgme_intersect_stati): ... this.  Make non-static.
195         (gpgme_op_verify): Use new name.
196         * ops.h: Add prototypes for new functions.
197
198 2001-11-16  Marcus Brinkmann  <marcus@g10code.de>
199
200         * passphrase.c: New file.
201         * Makefile.am (libgpgme_la_SOURCES): Add passphrase.c.
202         * ops.h (_gpgme_passphrase_result): Add prototypes from
203         passphrase.c.
204         * types.h: Likewise.
205         * context.h: Add member passphrase to result.
206         * gpgme.c (_gpgme_release_result): Release passphrase member.
207
208         * decrypt.c: Some formatting and variable name changes (like
209         CTX instead C).
210         (struct decrypt_result_s): Remove members now found in
211         passphrase result.
212         (_gpgme_release_decrypt_result): Don't release removed members.
213         (decrypt_status_handler): Call _gpgme_passphrase_status_handler,
214         and don't handle the cases catched there.
215         (command_handler): Removed.
216         (gpgme_op_decrypt_start): Don't set command handler, but invoke
217         _gpgme_passphrase_start which does it.
218         (gpgme_op_decrypt): Invoke _gpgme_passphrase_result and drop the
219         cases covered by it.
220
221         * sign.c Some formatting and variable name changes (like
222         CTX instead C).
223         (struct sign_result_s): Remove members now found in
224         passphrase result.
225         (_gpgme_release_sign_result): Don't release removed members.
226         (sign_status_handler): Call _gpgme_passphrase_status_handler,
227         and don't handle the cases catched there.
228         (command_handler): Removed.
229         (gpgme_op_sign_start): Don't set command handler, but invoke
230         _gpgme_passphrase_start which does it.
231         (gpgme_op_sign): Invoke _gpgme_passphrase_result and drop the
232         cases covered by it.
233
234 2001-11-15  Marcus Brinkmann  <marcus@g10code.de>
235
236         * decrypt.c (command_handler): Fix last change.
237
238 2001-11-15  Marcus Brinkmann  <marcus@g10code.de>
239
240         * verify.c (_gpgme_release_verify_result): Rename RES to RESULT.
241         Rename R2 to NEXT_RESULT.
242         (intersect_stati): Rename RES to RESULT.
243         (gpgme_get_sig_status): Likewise.  Do not check return_type, but
244         the member verify of result.
245         (gpgme_get_sig_key): Likewise.
246
247         * sign.c (_gpgme_release_sign_result): Rename RES to RESULT.  If
248         RESULT is zero, return.
249         (sign_status_handler, command_handler): Do not check return_type,
250         but the member sign of result.
251         (gpgme_op_sign): Likewise.  Drop assertion.
252
253         * encrypt.c (_gpgme_release_encrypt_result): Rename RES to RESULT.
254         If RESULT is zero, return.
255         (encrypt_status_handler): Do not check return_type, but the member
256         encrypt of result.
257         (gpgme_op_encrypt): Likewise.  Drop assertion.
258
259         * decrypt.c (_gpgme_release_decrypt_result): Rename RES to RESULT.
260         (create_result_struct): Do not set result_type.
261         (command_handler, decrypt_status_handler): Do not check
262         return_type, but the member decrypt of result.
263         (gpgme_op_decrypt): Likewise.  Drop assertion.
264
265         * context.h (enum ResultType): Removed.
266         (struct gpgme_context_s): Remove member result_type.
267         (struct result): Replaces union result.
268         * gpgme.c: Include string.h.
269         (_gpgme_release_result): Release all members of c->result, which
270         is now a struct.  Zero out all members of the struct afterwards.
271
272 2001-11-11  Marcus Brinkmann  <marcus@g10code.de>
273
274         * rungpg.c (_gpgme_gpg_release): Release GPG->cmd.cb_data.
275         Release all members of the list GPG->arglist.
276         Reported by Michael Schmidt <mschmidt@cs.uni-sb.de>.
277
278 2001-11-02  Marcus Brinkmann  <marcus@g10code.de>
279
280         * rungpg.c (pipemode_copy): Change type of NBYTES to size_t.
281
282         * key.c: Include string.h.
283         * data.c: Likewise.
284         * recipient.c: Likewise.
285
286 2001-10-29  Marcus Brinkmann  <marcus@g10code.de>
287
288         * context.h: New member signers_len.
289         * signers.c (gpgme_signers_clear): Require that signers are
290         non-NULL with assertion.  Use signers_len to determine how much
291         keys to release.  Add documentation.
292         (gpgme_signers_add): Use signers_len to determine if the buffer is
293         large enough.  Use xtryrealloc rather than xtrymalloc and copying.
294         Add documentation.
295         (gpgme_signers_enum): Use signers_len to determine if key is
296         available.  Add documentation.
297
298 2001-10-22  Marcus Brinkmann  <marcus@g10code.de>
299
300         * data.c (_gpgme_data_append): Check if LENGTH is smaller than
301         ALLOC_CHUNK, not DH->length.
302
303 2001-10-17  Marcus Brinkmann  <marcus@g10code.de>
304
305         * gpgme.c (gpgme_set_protocol): Fix last change.
306
307 2001-10-15  Werner Koch  <wk@gnupg.org>
308
309         * gpgme.h (GpgmeProtocol): New.
310         * gpgme.c (gpgme_set_protocol): New.
311
312 2001-09-26  Werner Koch  <wk@gnupg.org>
313
314         * gpgme.c (gpgme_set_passphrase_cb): Ignore a NULL context.
315         (gpgme_set_progress_cb): Ditto. Suggested by Mark Mutz.
316
317 2001-09-17  Werner Koch  <wk@gnupg.org>
318
319         * keylist.c (finish_key): Shortcut for no tmp_key.  Changed all
320         callers to use this function without a check for tmp_key.
321         
322         * keylist.c (gpgme_op_keylist_next): Reset the key_cond after
323         emptying the queue.  Bug reported by Stéphane Corthésy.
324
325 2001-09-12  Werner Koch  <wk@gnupg.org>
326
327         * data.c (gpgme_data_rewind): Allow rewind for callbacks.
328
329 2001-09-07  Werner Koch  <wk@gnupg.org>
330
331         * rungpg.h: Add NO_RECP.
332         * encrypt.c (encrypt_status_handler): Take on No_RECP.
333         (gpgme_op_encrypt): Better error return.
334
335         * verify.c (verify_status_handler): Take on NODATA.
336
337 2001-09-03  Werner Koch  <wk@gnupg.org>
338
339         * rungpg.h: Added STATUS_INV_RECP.
340         * gpgme.c (_gpgme_release_result): Add support for new
341         EncryptResult object.
342         * encrypt.c (append_xml_encinfo): New.
343         (encrypt_status_handler): Add some status parsing.
344         (_gpgme_release_encrypt_result): New.
345
346 2001-08-29  Werner Koch  <wk@gnupg.org>
347
348         * recipient.c (gpgme_recipients_release): Free the list.  By Timo.
349
350         * keylist.c (keylist_colon_handler): Do a finish key if we receive
351         an EOF here.  This is probably the reason for a lot of bugs
352         related to keylisting.  It is so obvious.  Kudos to Enno Cramer
353         for pointing that out. 
354
355 2001-08-28  Werner Koch  <wk@gnupg.org>
356
357         * gpgme.c, gpgme.h (gpgme_get_op_info): New.
358         (_gpgme_set_op_info): New. 
359         (_gpgme_release_result): Reset the op_info here.
360         * sign.c (append_xml_siginfo): New.
361         (sign_status_handler): Store the sig create information.
362
363 2001-07-31  Werner Koch  <wk@gnupg.org>
364
365         * encrypt.c (gpgme_op_encrypt): Hack to detect no valid recipients.
366
367 2001-07-30  Werner Koch  <wk@gnupg.org>
368
369         * gpgme.c (gpgme_get_armor,gpgme_get_textmode): New.
370
371         * rungpg.c (build_argv): Disable armor comments
372         * w32-io.c (build_commandline): Need to add quotes here
373
374 2001-07-24  Werner Koch  <wk@gnupg.org>
375
376         * data.c (gpgme_data_read): Add a a way to return the available bytes.
377
378 2001-07-23  Werner Koch  <wk@gnupg.org>
379
380         * util.c: Removed stpcpy() because we use the version from jnlib.
381
382 2001-07-19  Werner Koch  <wk@gnupg.org>
383
384         * mkstatus: Define the collating sequence for sort.
385
386 2001-06-26  Werner Koch  <wk@gnupg.org>
387
388         * rungpg.h: Add STATUS_UNEXPECTED as suggested by Timo.
389
390 2001-06-15  Werner Koch  <wk@gnupg.org>
391
392         * keylist.c (set_userid_flags): Fixed the assigned values. Kudos
393         to Timo for pointing this out.
394
395 2001-06-01  Werner Koch  <wk@gnupg.org>
396
397         * debug.c (_gpgme_debug_begin): Fixed a /tmp race.  Noted by
398         Johannes Poehlmann.
399
400 2001-05-28  Werner Koch  <wk@gnupg.org>
401
402         * version.c (gpgme_check_engine): Stop version number parsing at
403         the opening angle and not the closing one.  By Tommy Reynolds.
404
405 2001-05-01  José Carlos García Sogo <jose@jaimedelamo.eu.org>
406
407         * encrypt.c (gpgme_op_encrypt_start): Deleted the assert ( !c->gpg )
408         line, because it gave an error if another operation had been made 
409         before using the same context.
410         
411         * decrypt.c (gpgme_op_decrypt_start): The same as above. Also added 
412         one line to release the gpg object in the context (if any).
413         
414 2001-04-26  Werner Koch  <wk@gnupg.org>
415
416         * key.c, key.h (_gpgme_key_cache_init): New.
417         (_gpgme_key_cache_add): New.
418         (_gpgme_key_cache_get): New.
419         * version.c (do_subsystem_inits): Init the cache.
420         * keylist.c (finish_key): Put key into the cache
421         * verify.c (gpgme_get_sig_key): First look into the cache.
422
423 2001-04-19  Werner Koch  <wk@gnupg.org>
424
425         * keylist.c (parse_timestamp): Adjusted for the changed
426         --fixed-list-mode of gpg 1.0.4h.
427
428 2001-04-05  Werner Koch  <wk@gnupg.org>
429
430         * verify.c (gpgme_op_verify_start): Enabled pipemode for detached sigs.
431
432 2001-04-04  Werner Koch  <wk@gnupg.org>
433
434         * w32-io.c (_gpgme_io_select): Don't select on the writer if there
435         are still bytes pending.  Timo found this not easy to track down
436         race condition. 
437
438 2001-04-02  Werner Koch  <wk@gnupg.org>
439
440         * gpgme.h: Add GPGME_ATTR_KEY_{EXPIRED,DISABLED}.
441         * key.c (gpgme_key_get_ulong_attr): And return those attribs.
442
443         * verify.c (gpgme_get_sig_key): Set keyliosting mode depending on 
444         the mode set in the current context.  Suggested by Timo.
445
446         * key.c (gpgme_key_get_ulong_attr): Return can_certify and not
447         can_encrypt. By Timo.
448
449 2001-03-30  Werner Koch  <wk@gnupg.org>
450
451         * debug.c (debug_init): Allow to specify a debug file.
452         (_gpgme_debug_level): New.
453
454         * posix-io.c (_gpgme_io_read, _gpgme_io_write): Print output.
455         (_gpgme_io_select): Debug only with level > 2.
456
457 2001-03-15  Werner Koch  <wk@gnupg.org>
458
459         * rungpg.c: Included time.h.
460
461         * key.h: New keyflags for capabilities.
462         * keylist.c (set_mainkey_capability, set_subkey_capability): New.
463         (keylist_colon_handler): Parse them.
464         * gpgme.h: New attribute values for capabilties.
465         * key.c (gpgme_key_get_string_attr): Return them.
466         (capabilities_to_string): New.
467         (gpgme_key_get_ulong_attr): Return the global caps.
468
469 2001-03-14  Werner Koch  <wk@gnupg.org>
470
471         * w32-io.c (destroy_reader,destroy_writer): Fixed syntax error. 
472         Thanks to Jan Oliver Wagner.
473
474 2001-03-13  Werner Koch  <wk@gnupg.org>
475
476         * context.h: Add invalid and revoke flags to user_id structure.
477         * keylist.c (gpgme_op_keylist_start): Use --fixed-list-mode.
478         (keylist_colon_handler): Adjust for that.
479         (set_userid_flags): New. 
480         (set_mainkey_trust_info): Handle new key invalid flag
481         (set_subkey_trust_info): Ditto.
482         * gpgme.h: Add new attributes for key and user ID flags.
483         * key.c (_gpgme_key_append_name): Init these flags
484         (gpgme_key_get_as_xml): Print them.
485         (one_uid_as_xml): New helper for above.
486         (gpgme_key_get_string_attr, gpgme_key_get_ulong_attr):
487         Return the new attributes.  Enhanced, so that subkey information
488         can be returned now.
489
490 2001-02-28  Werner Koch  <wk@gnupg.org>
491
492         * w32-io.c (destroy_reader): Set stop_me flag.
493         (writer,create_writer,destroy_writer,find_writer,kill_writer): New.
494         (_gpgme_io_write): Use a writer thread to avaoid blocking.
495         (_gpgme_io_close): Cleanup a writer thread
496         (_gpgme_io_select): Repalce tthe faked wait on writing by a real
497         waiting which is now possible due to the use of a writer thread.
498
499 2001-02-20  Werner Koch  <wk@gnupg.org>
500
501         * w32-io.c (destroy_reader,kill_reader): New. 
502         (create_reader, reader): Add a new event to stop the thread.
503         (_gpgme_io_close): Kill the reader thread.
504
505         * posix-io.c (_gpgme_io_select): Handle frozen fds here. 
506         * 32-io.c (_gpgme_io_select): Ditto. Removed a bunch of unused code.
507
508         * wait.c: Reworked the whole thing.
509         * rungpg.c (_gpgme_gpg_new): Init pid to -1.
510         (_gpgme_gpg_release): Remove the process from the wait queue.
511
512 2001-02-19  Werner Koch  <wk@gnupg.org>
513
514         * w32-io.c (_gpgme_io_set_close_notify): New.
515         (_gpgme_io_close): Do the notification.
516
517         * posix-io.c (_gpgme_io_select): Use a 1 sec timeout and not 200
518         microseconds.
519
520         * wait.c (remove_process): Don't close the fd here.
521         (do_select): Set the fd to -1 and remove the is_closed flag everywhere.
522         (_gpgme_wait_on_condition): Remove the assert on the queue and
523         break out if we could not find the queue.  The whole thing should
524         be reworked.
525
526         * posix-io.c (_gpgme_io_set_close_notify): New.
527         (_gpgme_io_close): Do the notification.
528
529         * rungpg.c (close_notify_handler): New. 
530         (_gpgme_gpg_new): Register a callback for the fd.
531         (_gpgme_gpg_set_colon_line_handler): Ditto.
532         (build_argv): Ditto
533
534 2001-02-13  Werner Koch  <wk@gnupg.org>
535
536         * rungpg.c (struct reap_s): Replaced pid_t by int.
537
538         * types.h: Add ulong typedef.
539
540         * rungpg.c (do_reaping,_gpgme_gpg_housecleaning): New.
541         (_gpgme_gpg_release): Reap children.
542         * io.h, posix-io.c (_gpgme_io_kill): New.
543         * w32-io.c (_gpgme_io_kill): New (dummy).
544
545         * keylist.c (gpgme_op_keylist_start): Cancel a pending request.
546
547         * posix-io.c (_gpgme_io_read): Add some debug output. 
548         (_gpgme_io_write): Ditto.
549         (_gpgme_io_select): Increased the timeout.
550
551 2001-02-12  Werner Koch  <wk@gnupg.org>
552
553         Enhanced the signature verification, so that it can how handle
554         more than one signature and is able to return more information on 
555         the signatures.
556         * verify.c (gpgme_get_sig_key): New.
557         (gpgme_get_sig_status): New.
558
559         * gpgme.h: Add stdio.h. 
560         (GpgmeSigStat): New status DIFF.
561
562 2001-02-01  Werner Koch  <wk@gnupg.org>
563
564         * w32-io.c (set_synchronize): Add EVENT_MODIFY_STATE.  Add Debug
565         code to all Set/ResetEvent().
566
567         * rungpg.c (read_status): Check for end of stream only if we have
568         an r.  By Timo.
569
570 2001-01-31  Werner Koch  <wk@gnupg.org>
571
572         * wait.c (_gpgme_wait_on_condition): Removed all exit code processing.
573         (propagate_term_results,clear_active_fds): Removed.
574         (count_active_fds): Renamed to .. 
575         (count_active_and_thawed_fds): .. this and count only thawed fds. 
576
577         * rungpg.c (gpg_colon_line_handler): Return colon.eof and not
578         status.eof ;-)
579
580 2001-01-30  Werner Koch  <wk@gnupg.org>
581
582         * w32-io.c (_gpgme_io_spawn): Use the supplied path arg.
583
584         * version.c (get_engine_info): Return better error information.
585
586         * posix-util.c, w32-util.c: New.
587         (_gpgme_get_gpg_path): New, suggested by Jan-Oliver.
588         * rungpg.c (_gpgme_gpg_spawn): Use new function to get GPG's path.
589
590         * signers.c (gpgme_signers_add): Ooops, one should test code and
591         not just write it; the newarr was not assigned.  Thanks to José
592         for pointing this out.  Hmmm, still not tested, why shoudl a coder
593         test his fix :-)
594
595         * w32-io.c: Does now use reader threads, so that we can use
596         WaitForMultipleObjects. 
597         * sema.h, posix-sema.c, w32-sema.c: Support for Critcial sections.
598         Does currently only work for W32.
599
600         * debug.c, util.h : New. Changed all fprintfs to use this new
601         set of debugging functions.
602
603 2001-01-23  Werner Koch  <wk@gnupg.org>
604
605         * data.c (_gpgme_data_release_and_return_string): Fixed string
606         termination.
607
608 2001-01-22  Werner Koch  <wk@gnupg.org>
609
610         * delete.c: New.
611
612         * signers.c: New.
613         * key.c (gpgme_key_ref, gpgme_key_unref): New.
614         * sign.c (gpgme_op_sign_start): Allow the use of other keys.
615
616         * version.c (gpgme_get_engine_info,gpgme_check_engine): New.
617         * rungpg.c (_gpgme_gpg_set_simple_line_handler): New.
618
619 2001-01-05  Werner Koch  <wk@gnupg.org>
620
621         * data.c (gpgme_data_rewind): Allow to rewind data_type_none.
622
623
624  Copyright 2001 g10 Code GmbH
625
626  This file is free software; as a special exception the author gives
627  unlimited permission to copy and/or distribute it, with or without
628  modifications, as long as this notice is preserved.
629
630  This file is distributed in the hope that it will be useful, but
631  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
632  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
633