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