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