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