Display icons for error/non-error texts
[pinentry.git] / ChangeLog
1 2003-02-15  Steffen Hansen  <steffen@hrhansen.dk>
2
3         * qt/pinentrydialog.h, qt/pinentrydialog.cpp: Added icons 
4           for error/non-error messages.
5
6 2003-02-07  Marcus Brinkmann  <marcus@g10code.de>
7
8         Released 0.6.8.
9
10 2003-02-04  Steffen Hansen  <steffen@klaralvdalens-datakonsult.se>
11
12         * qt/main.cpp: Work around '--display' option. This fixes 
13           the pinentry-qt problem reported by several people lately.
14
15 2003-01-24  Werner Koch  <wk@gnupg.org>
16
17         * autogen.sh: Print a hint to use maintainer mode.
18
19 2002-12-24  Marcus Brinkmann  <marcus@g10code.de>
20
21         * pinentry/pinentry-curses.c (collect_line): New function.
22         (COPY_OUT, MAKE_BUTTON): New macros.
23         (dialog_create): Rewrite the initializing code and the description
24         calculation routine with word wrapping.
25
26 2002-11-20  Werner Koch  <wk@gnupg.org>
27
28         Released 0.6.7.
29
30         * pinentry/pinentry-curses.c (dialog_create): Better truncate
31         lines than to go into an infinite loop.  We need to implement word
32         wrap.
33         (dialog_run): Add DIALOG_POS_NONE to switch so prevent a warning.
34
35 2002-11-12  Werner Koch  <wk@gnupg.org>
36
37         * config.sub, config.guess: Updated from ftp.gnu.org/gnu/config
38         to version 2002-11-08.
39
40 2002-11-09  Werner Koch  <wk@gnupg.org>
41
42         Released 0.6.6.
43
44 2002-11-08  Werner Koch  <wk@gnupg.org>
45
46         * pinentry/pinentry-curses.c (convert_utf8_string): Renamed to 
47         * pinentry/pinentry.c (pinentry_utf8_to_local): this. Changed
48         callers.
49         (pinentry_local_to_utf8): New.
50         (cmd_getpin): Convert result back to UTF-8.
51         * gtk/pinentry-gtk.c (create_utf8_label): New.
52         (create_window): Use it here to set the prompts.
53
54 2002-11-06  Werner Koch  <wk@gnupg.org>
55
56         * pinentry/pinentry-curses.c (dialog_run): Fixed retrun value tests
57         for fopen.
58
59 2002-11-05  Werner Koch  <wk@gnupg.org>
60
61         * secmem/util.c (init_uids): Make it a prototype.
62
63         * gtk/pinentry-gtk.c (enter_callback): Changed argument name to
64         avoid shadowing warning.
65         (create_window): Removed unused variable I.
66         (ok): Not used, commented.
67
68         * pinentry/pinentry.c: Include headers for getpid and sleep
69         prototypes.
70
71         * secmem/util.h: Correctly declare functions taking no args. 
72
73         * gtk/pinentry-gtk.c: Move gtk headers to the top to avoid
74         compiler warnings about shadowing index etc.
75
76         * curses/pinentry-curses.c: Include stdio.h for the printf prototype.
77
78         * pinentry/pinentry-curses.c (dialog_switch_pos): Return a value.
79
80         * pinentry/pinentry.c (pinentry_have_display): New.
81         (pinentry_setbufferlen): Must return a value. Fixed documentation.
82         (usage): Print a question mark as a substitue for the program name.
83
84         * gtk/pinentry-gtk.c (main): use it here instead of getenv().
85         * qt/main.cpp (main): Ditto.
86
87 2002-10-11  Werner Koch  <wk@gnupg.org>
88
89         * configure.ac, Makefile.am: Added doc/ and tests for makeinfo
90
91 2002-09-30  Werner Koch  <wk@gnupg.org>
92
93         Released 0.6.5.
94         
95         * qt/pinentrycontroller.cpp (optionHandler): Make sure that a
96         value is returned.
97         * configure.ac: Use -Wall also for C++.
98
99 2002-08-19  Steffen Hansen  <steffen@hrhansen.dk>
100
101         * Relased 0.6.4.
102
103 2002-08-11  Steffen Hansen  <steffen@hrhansen.dk>
104
105         * Adapted pinentry-qt to new CONFIRM spec.
106
107 2002-06-26  Werner Koch  <wk@gnupg.org>
108
109         Release 0.6.3.
110
111 2002-05-24  Werner Koch  <wk@gnupg.org>
112
113         * AUTHORS: Added Marcus
114         * README: Fixed spelling of Quintuple-Agent. 
115
116 2002-05-13  Marcus Brinkmann  <marcus@g10code.de>
117
118         Released 0.6.2.
119         
120         * configure.ac: Set version number to 0.6.2.
121         * NEWS: Add information for 0.6.2.
122         * README: Update for release.
123
124 2002-05-09  Marcus Brinkmann  <marcus@g10code.de>
125
126         * configure.ac: Add option --enable-fallback-curses and bind it to
127         the ncurses check.  Add automake conditional
128         BUILD_LIBPINENTRY_CURSES and FALLBACK_CURSES. Add preprocessor
129         symbol FALLBACK_CURSES.
130
131         * curses/Makefile.am (AM_CPPFLAGS): Add $(NCURSES_INCLUDE).
132         (LDADD): Add ../pinentry/libpinentry-curses.a.
133         * curses/pinentry-curses.c: Include "pinentry-curses.h".
134         Moved most of the meat to ...
135         * pinentry/pinentry-curses.c: ... here.  New file.  Make all
136         functions and global variables static.
137         (dialog_cmd_handler): Rename to ...
138         (curses_cmd_handler): ... this.
139         * pinentry/pinentry-curses.h: New file.
140         * pinentry/Makefile.am (noinst_LIBRARIES)
141         [BUILD_LIBPINENTRY_CURSES]: Add libpinentry-curses.a.
142         (libpinentry_curses_a_SOURCES): New target.
143
144         * gtk/Makefile.am (INCLUDES): Moved all to ...
145         (AM_CPPFLAGS): ... here.
146         [CURSES_FALLBACK]: Define ncurses_include and libcurses.
147         (AM_CPPFLAGS): Add $(ncurses_include).
148         (LDADD): Add $(libcurses).
149         * gtk/pinentry-gtk.c: Rename TIMEOUT to TIME_OUT to avoid conflict
150         with curses.h.
151         [CURSES_FALLBACK]: Include "pinentry-curses.h".
152         (button_clicked): Likewise.
153         (create_window): Likewise.
154         (cmd_handler): Renamed to ...
155         (gtk_cmd_handler): ... this.
156         (pinentry_cmd_handler): Set to gtk_cmd_handler.
157         (main) [CURSES_FALLBACK]: Initialize GTK+ only if environment
158         variable DISPLAY is set, otherwise fall back to curses dialog.
159
160         * pinentry/pinentry.h: Protect against multiple inclusion.
161
162 2002-05-09  Marcus Brinkmann  <marcus@g10code.de>
163
164         * curses/pinentry-curses.c (dialog_create): Allow multi-line error
165         texts.
166
167         * pinentry/pinentry.c (cmd_seterror): Call strcpy_escaped, rather
168         than strcpy, to allow percent-escaping the error text.
169
170 2002-04-25  Steffen Hansen  <steffen@hrhansen.dk>
171
172         * pinentry-qt: Use ok and cancel value if
173         provided.
174
175 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
176
177         * gtk/pinentry-gtk.c (create_window): Use ok and cancel value if
178         provided.
179
180 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
181
182         * qt/pinentrycontroller.h: New members _ok and _cancel.
183         * qt/pinentrycontroller.cpp (registerCommands): Add SETOK and SETCANCEL.
184         (assuanOk): New method.
185         (assuanCancel): Likewise.
186
187 2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
188
189         * curses/pinentry-curses.c (dialog_create): Grok the new ok and
190         cancel members to set the pbutton texts, rather than parsing the
191         prompt in the confirm case.
192
193         * pinentry/pinentry.h (struct pinentry): Add new members ok and cancel.
194         * pinentry/pinentry.c (register_commands): Add new commands SETOK
195         and SETCANCEL to set button texts.
196         (struct pinentry pinentry): Add initializers for new members.
197         (cmd_setok): New function.
198         (cmd_setcancel): Likewise.
199
200 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
201
202         * curses/pinentry-curses.c (dialog_create): Add '<' and '>' around
203         the user provided button texts.  Replace sizeof by strlen to fix
204         size calculation of ok and cancel button.
205
206 2002-04-23  Marcus Brinkmann  <marcus@g10code.de>
207
208         * pinentry/pinentry.h (struct pinentry): New variables lc_ctype
209         and lc_messages.
210         * pinentry/pinentry.c (usage): New options --lc-ctype and
211         --lc-messages.
212         (pinentry_parse_opts): Likewise.
213         (option_handler): Likewise.
214         (struct pinentry pinentry): New initializers for new members.
215
216         * curses/pinentry-curses.c (convert_utf8_string): New function.
217         (struct dialog): New members ok and cancel.
218         (dialog_create): New variables ERR, DESCRIPTION, ERROR, PROMPT,
219         OK, and CANCEL.  Initialize them with the localised versions of
220         the pinentry strings.  If in confirm mode, split up the prompt at
221         '|' and use the values as button texts.  Use localised strings.
222         (dialog_switch_pos): Use localised strings.
223         (dialog_run): Free dialog strings.
224
225         * acinclude.m4 (AM_ICONV): New check from gettext.
226         * configure.ac: Run AM_ICONV if curses pinentry is build.
227         Don't check for inttypes.h, don't check size of unsigned int or
228         unsigned long.
229         (LIBCAP): Move check to interface independent part.
230
231 2002-04-21  Steffen Hansen  <steffen@hrhansen.dk>
232
233         * Removed X11 dependency and use Qt for grabbing the keyboard.
234         * Clear the lineedit before asking the user for the PIN.
235
236 2002-04-12  Steffen Hansen  <steffen@hrhansen.dk>
237
238         * Enable pinentry-qt if Qt is found
239
240 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
241
242         * qt: New directory.
243         * qt/Makefile.am, qt/cppmemory.cpp, qt/main.cpp,
244         pinentrycontroller.cpp, qt/pinentrycontroller.h,
245         qt/pinentrydialog.cpp, qt/pinentrydialog.h: New file, copied from
246         kde/.
247         * kde: Directory removed.
248         * kde/Makefile.am, kde/cppmemory.cpp, kde/main.cpp,
249         kde/pinentry.desktop, kde/pinentrycontroller.cpp,
250         kde/pinentrycontroller.h, kde/pinentrydialog.cpp,
251         kde/pinentrydialog.h: Files removed.
252         * acinclude.m4: Removed the KE checks and completely overhauled
253         the Qt checks, putting all Qt checks in their own namespace QT_,
254         and make it declare QT_-prefixed variables for linking and
255         compilation.
256         * configure.ac: Use the new Qt checks instead the KDE checks.
257         Replace "kde" with "qt" everywhere.
258         * Makefile.am: Replace "kde" with "qt" everywhere.
259         
260 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
261
262         * acinclude.m4: Reworked the Qt and KDE checks, cutting out a lot
263         of dead and not-so-dead wood.  Gave all KDE checks proper names.
264         * configure.ac: Use the new names for the KDE checks.
265
266 2002-04-06  Marcus Brinkmann  <marcus@g10code.de>
267
268         * kde/Makefile.am (EXTRA_DIST): Remove variable.
269         (install-data-local): Remove target.
270         (uninstall-local): Likewise.
271
272 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
273
274         Released 0.6.0.
275         
276         * configure.ac: Set version number to 0.6.
277         * NEWS: Add information for 0.6.0.
278         * secmem/Makefile.am (libsecmem_a_SOURCES): Replace secmem.h with memory.
279         * kde/Makefile.am (pinentry_kde_SOURCES): Move
280         pinentrydialog.moc.cpp and pinentrycontroller.moc.cpp to ...
281         (nodist_pinentry_kde_SOURCES): ... this new target.
282
283 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
284
285         * acinclude.m4: A lot of new checks more or less straight from KDE's
286         admin/acinclude.m4.in.
287         * configure.ac (AC_CANONICAL_HOST): Call that macro.
288         (AC_CHECK_COMPILERS, AC_PATH_KDE): Call those macros if KDE
289         pinentry is enabled.
290         * kde/Makefile.am (CXXFLAGS, XXX_PREFIX, XXX_KDE_DEFINES, LIB_QT,
291         LIB_KDECORE, LIB_KDEUI, KDE_RPATH, MOC, kde_appsdir): Variables removed.
292         (AM_CPPFLAGS): Replace XXX_KDE_DEFINES by all_includes.
293         (pinentry_kde_LDFLAGS): Add all_libraries.
294         * README: Document that automatic check is not possible for KDE.
295
296 2002-04-05  Marcus Brinkmann  <marcus@g10code.de>
297
298         * curses/pinentry-curses.c (dialog_run): Add handling for TAB key.
299         (dialog_create): New variable description_x.  Calculate dimension
300         of multi-line description correctly.
301
302 2002-04-04  Marcus Brinkmann  <marcus@g10code.de>
303
304         * pinentry/pinentry.h (struct pinentry): New members DISPLAY,
305         TTYNAME and TTYTYPE.
306         * pinentry/pinentry.c (pinentry): Likewise.
307         * pinentry/pinentry.c: Include <string.h>.
308         (usage): Add new options --display,
309         --ttyname and --ttytype.
310         (option_handler): Likewise.
311         (pinentry_parse_opts): Likewise.
312
313         * curses/pinentry-curses.c (dialog_cmd_handler): Use
314         PINENTRY->ttyname and PINENTRY->ttytype.
315
316 2002-03-30  Marcus Brinkmann  <marcus@g10code.de>
317
318         * acinclude.m4: Add AM_PATH_GLIB and AM_PATH_GTK.
319
320 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
321
322         * configure.ac: Choose a more appropriate AC_CONFIG_SRCDIR.
323
324 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
325
326         * kde/Makefile.am (pinentry_kde_LDADD): Link with $(LIBCAP).
327         * gtk/Makefile.am (install-exec-local): Moved to ...
328         * Makefile.am (install-exec-local): ... here.
329
330 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
331
332         * kde/Makefile.am (kde_appsdir): New variable.
333         * kde/Makefile.am (install-data-local): Use DESTDIR.
334         (uninstall-local): Likewise.
335
336 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
337
338         Merge of the gpinentry and curses pinentry program into the
339         pinentry distribution.  For this, the structure of the repository
340         has been thoroughly overhauled.  Some of the changes:
341         * secmem: New directory with secure memory allocation code.
342         * pinentry: New directory with pinentry support library.
343         * curses: New directory with curses frontend.
344         * gtk: New directory with GTK+ frontend.
345         * kde: New directory with only the core of the old kpinentry program.
346         * admin: Directory removed.
347         * po: Directory removed.
348         * kpinentry: Directory removed.
349         * doc: Directory removed.
350         * jnlib: Directory removed.x
351
352         The changes in more detail:
353         * AUTHORS: Add authors of other pinentry frontends.
354         * ChangeLog: Add the one from gpinentry.
355         * Makefile.am: Completely rewritten.
356         * README: Add content.
357         * TODO: Add content.
358         * NEWS: New file from gpinentry.
359         * THANKS: New file from gpinentry.
360         * acinclude.m4: New file.
361         * configure.ac: New file which configures for all frontends.
362         * curses/Makefile.am, curses/pinentry-curses.c: New files for
363         curses frontend.
364         * gtk/Makefile.am, gtk/gtksecentry.c, gtk/gtksecentry.h,
365         gtk/pinentry-gtk.c: New files, modified from gpinentry, for GTK+
366         frontend.
367         * kde/Makefile.am, kde/cppmemory.cpp, kde/main.cpp,
368         kde/pinentry.desktop, kde/pinentrycontroller.cpp,
369         kde/pinentrycontroller.h, kde/pinentrydialog.cpp,
370         kde/pinentrydialog.h: New files, modified from kpinentry, for KDE
371         frontend.
372         * pinentry/Makefile.am, pinentry/pinentry.c, pinentry/pinentry.h:
373         New files containing pinentry support library, partly factored out
374         from gpinentry.
375         * secmem/Makefile.am, secmem/memory.h, secmem/secmem-util.h,
376         secmem/secmem.c, secmem/util.c, secmem/util.h: New files
377         containing secure memory allocation code common to all pinentry
378         frontends.
379         * Makefile.dist, acconfig.h, configure.files, configure.in.in:
380         Files removed in favor of new configure.ac.
381         * pinentry.lsm: Removed file never used.
382         * stamp-h.in: Removed generated file.
383         * admin/ChangeLog, admin/Makefile.common, admin/acinclude.m4.in,
384         admin/am_edit, admin/am_edit.py, admin/conf.change.pl,
385         admin/config.guess, admin/config.pl, admin/config.sub,
386         admin/configure.in.min, admin/debianrules, admin/depcomp,
387         admin/install-sh, admin/libtool.m4.in, admin/ltcf-c.sh,
388         admin/ltcf-cxx.sh, admin/ltcf-gcj.sh, admin/ltconfig,
389         admin/ltmain.sh, admin/missing, admin/mkinstalldirs, admin/ylwrap:
390         Removed KDE build suite in favor of configure.ac.
391         * doc/Makefile.am, doc/en/Makefile.am, doc/en/index.docbook:
392         Removed files never used.
393         * jnlib/ChangeLog, jnlib/Makefile.am, jnlib/argparse.c,
394         jnlib/argparse.h jnlib/dotlock.c, jnlib/dotlock.h,
395         jnlib/libjnlib-config.h, jnlib/logging.c, jnlib/logging.h,
396         jnlib/mischelp.h, jnlib/stringhelp.c, jnlib/stringhelp.h,
397         jnlib/strlist.c, jnlib/strlist.h, jnlib/types.h, jnlib/xmalloc.c,
398         jnlib/xmalloc.h: Removed files no longer used.
399         * kpinentry/Makefile.am, kpinentry/cppmemory.cpp,
400         kpinentry/cppmemory.h, kpinentry/i18n.h, kpinentry/main.cpp,
401         kpinentry/memory.h, kpinentry/pinentry.desktop,
402         kpinentry/pinentrycontroller.cpp, kpinentry/pinentrycontroller.h,
403         kpinentry/pinentrydialog.cpp, kpinentry/pinentrydialog.h,
404         kpinentry/secmem.cpp, kpinentry/util.cpp, kpinentry/util.h:
405         Removed files in favor of new files in kde/.
406         * po/Makefile.am, po/pinentry.pot: Removed files never used.
407
408         * autogen.sh: New file.
409
410 2002-03-04  Werner Koch  <wk@gnupg.org>
411
412         * gpinentry.c (enter_callback): New
413         (create_window): Connect it to the entry field.
414
415 2002-02-18  Werner Koch  <wk@gnupg.org>
416
417         Released 0.5.1.
418
419         * gpinentry.c (create_window): Add CONFIRM_MODE.
420         (cmd_confirm): Implemented.
421
422         * assuan/:  Updated from NewPG.
423
424 2002-01-20  Werner Koch  <wk@gnupg.org>
425
426         * gpinentry.c (option_handler): New to allow changing of the grab
427         status.
428         (grab_keyboard): Shortcut this when global grab is not set.
429
430 2002-01-04  Werner Koch  <wk@gnupg.org>
431
432         Released 0.5.0.
433         
434         * configure.ac: Bumbed version
435
436         * util.h (xtoi_1, xtoi_2): New.
437         * gpinentry.c (strcpy_escaped): New
438         (cmd_setdesc, cmd_seterror): Use it here to allo multiline texts.
439
440         * gpinentry: Removed debugging outbut
441         (create_window): Tweaked layout.
442
443 2001-12-07  Werner Koch  <wk@gnupg.org>
444
445         New package gpinentry based on quintuple-agent.
446         
447         Removed all stuff except for the basic configuration stuff and
448         what is needed to build gpinentry.  Also removed i18n support.
449         * gpinentry.c: Renamed from secret-query.c
450
451 2001-02-12  Robert Bihlmeyer  <robbe@orcus.priv.at>
452
453         * 1.0.0 released. Woo-hoo!
454
455         * configure.in, NEWS: Bumped version.
456
457 2001-02-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
458
459         * agent.c (make_tmpdir): Honor $TMPDIR.
460
461         (agent): Would exit on every minor problem. Now, we just close the
462         offending connection.
463         Ignore SIGPIPE, so that EPIPE will close connection.
464
465 2001-01-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
466
467         * secmem.c: Move one include statement so that the thing compiles.
468
469         * secret-query.c (main): Minor source cosmetics.
470
471 2000-11-16  Robert Bihlmeyer  <robbe@orcus.priv.at>
472
473         * gtksecentry.c (gtk_secure_entry_insert_text): Secured a couple
474         of memory (de)allocations that were missed. Thanks to John Steele
475         <jhs28@eng.cam.ac.uk> for spotting these.
476
477 2000-11-10  Robert Bihlmeyer  <robbe@orcus.priv.at>
478
479         * Thoughts: Removed in favor of new TODO.
480
481         * README: Remove content and refer to doc/manual.info instead.
482
483         * agent.c (do_get): Would burn badly on a premature exit of the
484         query program (which would occur routinely if you selected /cancel/).
485
486 2000-10-25  Robert Bihlmeyer  <robbe@orcus.priv.at>
487
488         * memory.h: Include sys/types.h for size_t.
489
490 2000-10-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
491
492         * README: Removed apology about missing documentation.
493         Updated paragraph about Linux capability patch.
494         Typo & Refill.
495
496 2000-10-03  Robert Bihlmeyer  <robbe@orcus.priv.at>
497
498         * 0.9 released.
499
500         * Makefile.am (EXTRA_DIST): Distribute BUGS (the file, that is).
501
502         * configure.in, NEWS: Bumped version.
503
504         * Makefile.am, configure.in: Add debian subdir.
505
506         * README: Recommend GTK+.
507         Update list of checked platforms.
508
509 2000-10-02  Robert Bihlmeyer  <robbe@orcus.priv.at>
510
511         * secret-query.c (ok): Simplify.
512         Put empty line between headers and secret.
513         (usage): Document '--help' and '--version'.
514
515         * agent.c (do_get): Use enhanced secret-query output to fill in
516         options.
517
518 2000-10-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
519
520         * secret-query.c (main): Clarify error.
521
522         * client.c (query_options): New global variable.
523         (main): New option '--query-options' to pass options to the query
524         program.
525         (xgetpass): Use it.
526
527         * agent.c (main): New option '--query-options' to pass options to
528         the query program.
529         (do_get): Use 'query_options'.
530
531         * acconfig.h, configure.in: Add QUERY_PROGRAM definition.
532         * client.c: Remove here.
533         * agent.c (do_get): Use it here, too.
534
535         * secret-query.c (main): New option '--no-global-grab' introduced,
536         that prevents keyboard grabbing unless the window has focus.
537
538 2000-09-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
539
540         * secret-query.c (usage): Add two missing pieces of "\n\".
541
542         * agent.c (main): --nofork is now the default, and the option is
543         deprecated. New option --fork added to turn forking on again.
544         Close stdout (and stderr unless debugging) even when not forking,
545         so that normal usage inside eval is still possible.
546         (agent): Exit gracefully on HUP, so that logging out now kills the
547         agent. 
548
549         * README (Contact Information): Old URL - duh!
550         (Using Secret Agent): We no longer fork per default.
551
552         * Makefile.am (lib/libutil.a): New target, allows targets that not
553         automatically recurse (but still depend on libutil.a) to succeed.
554
555 2000-07-20  Robert Bihlmeyer  <robbe@orcus.priv.at>
556
557         * secret-query.c (usage): New function.
558         (main): Parse options: debug, enhanced, help, version.
559         Turn on locale support.
560         If enhanced, insert widgets to ask for timeout and insurance.
561         (ok): If enhanced, print more information on exit.
562         (grab_keyboard): Die if grab was unsuccessful.
563
564 2000-05-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
565
566         * 0.8 released.
567
568         * configure.in, NEWS: Bumped version.
569
570         * Makefile.am (SUBDIRS): Include doc.
571
572         * configure.in, acconfig.h: Check for ssize_t.
573         Check for vsnprintf(), strdup().
574         Generate doc/Makefile.
575
576         * apgp.c, agpg.c, agentlib.c, util.c: Include more stuff.
577
578         * agent.c (do_get): Use asprintf() instead of snprintf() so we
579         don't need to roll our own for yet another function.
580         Fix some includes.
581
582         * acinclude.m4: gettext macros copied from automake and fixed.
583
584 2000-05-30  Robert Bihlmeyer  <robbe@orcus.priv.at>
585
586         * configure.in, Makefile.am: Properly include doc subdir.
587
588 2000-05-29  Robert Bihlmeyer  <robbe@orcus.priv.at>
589
590         * configure.in, acconfig.h: Add test for XMESSAGE path.
591
592         * client.c (main): Decode command from string to integer code
593         first, then evaluate that in ifs.
594
595         * secret-ask.c: New file, external ask-for-confirmation utility.
596
597         * configure.in, Makefile.am: Add secret-ask to programs being
598         built when GTK is available. Rename QUERY to more descriptive
599         GTK_PROGRAMS.
600
601         * agent.c (do_get): If GTK is available, try executing secret-ask
602         first.
603         Only put the comment into the insure-question if there is a
604         comment.
605         (main): --csh was missing from usage message.
606
607 2000-04-23  Robert Bihlmeyer  <robbe@orcus.priv.at>
608
609         * secret-query.c (constrain_size): Lower window max_width to
610         accomodate bugs in GTK and Scwm.
611
612         * agent.c (main): Set x_enabled if X appears to be available.
613         Use it to selectively make FLAGS_INSURE supported.
614         (do_get): Use it instead of testing at every call.
615         (do_put): Requests containing unsupported flags fail.
616         (forget_old_stuff): Would not set next_deadline correctly.
617         (do_get): Implement FLAGS_INSURE.
618
619         * client.c (main): "list" format changed so that comment is to the
620         far right. Display the deadline as proper date/time, too.
621
622 1999-11-11  Robert Bihlmeyer  <robbe@orcus.priv.at>
623
624         * agent.c (next_deadline): New global variable, holds time when
625         next secret has to be killed.
626         (store): Keep it up-to-date.
627         (forget_old_stuff): New function, reaps secrets ready to kill,
628         keeps next_deadline updated.
629         (agent): Use it on all secrets, whenever a deadline is active.
630
631 1999-11-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
632
633         * agent.h (request_put): Add flags, deadline. Increase REQUEST_MAGIC. 
634         (reply_get): Ditto, and increase REPLY_MAGIC.
635         * agent.c (store): Store flags, deadline in reply.
636         (do_put): Hand flags, deadline from request on to store().
637         (do_get): Store on-demand queried secrets without deadline or
638         special flags, for now.
639         (agent): Do not ignore obsolete clients, return an error reply.
640         * agentlib.c (agent_put): Add flags, deadline arguments, and copy
641         them into the request.
642         * agentlib.h (agent_put): Update prototype.
643 *       * client.c (main): Added --time-to-live (-t) and --insure (-i)
644         options, influencing PUT's deadline and flags, respectively.
645         (main): Change list format to include new attributes.
646
647 1999-11-05  Robert Bihlmeyer  <robbe@orcus.priv.at>
648
649         * configure.in: <getopt.h> check had redundant definition.
650         * acconfig.h: Remove here, too.
651
652         * configure.in: Check for <inttypes.h>. If not found, check for
653         unsigned {int, long} sizes.
654         * agent.h: Either include <inttypes.h>, or try to define uint32_t
655         yourself.
656         Need to include "config.h".
657
658 1999-11-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
659
660         * Makefile.am (signed-dist): New rule, generates sig for dist.
661         (%.sig): New rule, for detached signatures in general.
662
663         * configure.in: Check for ulong.
664         * acconfig.h: Document it.
665         * secmem.c: Unconditionally defining it is no longer necessary
666         here. But do include <sys/types.h> in all cases.
667
668         * 0.7 released.
669
670         * secmem.c: ulong is not defined on all systems.
671
672         * agent.h: <inttypes.h> should define `uint32_t' as per Unix98, so
673         we use that.
674
675 1999-11-02  Robert Bihlmeyer  <robbe@orcus.priv.at>
676
677         * agent.h: Augmented requests and replies with magic numbers.
678         Data structures heavily commented.
679         All structures and enums typedef'd.
680         * agent.c: Adapted.
681         (store): Set magic number in stored reply.
682         (do_put): Set magic number in reply.
683         (do_delete): Ditto.
684         (do_list): Ditto. 
685         (agent): Check magic number in request.
686         * agentlib.c: Adapted.
687         (send_request): Set magic number in request. Check it in reply.
688         * agentlib.h: Adapted.
689         * agpg.c: Adapted.
690         * apgp.c: Adapted.
691         * client.c: Adapted.
692
693 1999-10-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
694
695         * secmem.c: Instead of defining ulong directly, include
696         <sys/types.h>
697
698         * secret-query.c (constrain_size): New function, puts constrains
699         on size of toplevel window.
700         (grab_keyboard): Removed protection against multiple calls.
701         (ungrab_keyboard): New function, cancelling a keyboard grab.
702         (main): Hang `grab_keyboard' onto map-event which makes it
703         actually work, hang `ungrab_keyboard' onto unmap-event.
704         Hang `constrain_size' onto size-request.
705
706         * secmem.c: ulong was undefined on some systems.
707
708 1999-10-19  Robert Bihlmeyer  <robbe@orcus.priv.at>
709
710         * Makefile.am (install-exec-local): Ignore setcap errors.
711
712         * apgp.c: New program, based on agpg.c, but for pgp2.6.
713         * Makefile.am (bin_PROGRAMS, apgp_SOURCES): Added it.
714
715         * agpg.c (GPG): New constant.
716         (find_id, main): Use it throughout.
717         (find_id): Forgot to pclose on success.
718
719         * secret-query.c (main): Don't expand anything.
720         Use a button box for the buttons.
721         Prompt label can be overridden from the commandline.
722         * agent.c (do_get): Make spawned secret-query show the id.
723         * client.c (xgetpass): Pass prompt to secret-query.
724         (main): Include id in xgetpass prompt.
725
726 1999-10-14  Robert Bihlmeyer  <robbe@orcus.priv.at>
727
728         * configure.in: setcap must be searched outside the usual user
729         PATH, too.
730         * Makefile.am (install-exec-local): Set cap_ipc_lock permitted on
731         installed binaries, if possible.
732
733         * agent.c (xdup2): New function, dup2 with error handling.
734         (move_fd): New function, moves fds.
735         (store): New function, abstracted out from do_put.
736         (do_put): Use it.
737         (do_get): If secret was not found, and DISPLAY is set, try to
738         query the user about it. If successful, store it.
739         (main): Route standard file descriptors to /dev/null rather than
740         just closing them. The latter would confuse children.
741
742 1999-10-13  Robert Bihlmeyer  <robbe@orcus.priv.at>
743
744         * gtksecentry.c, gtksecentry.h: New files, being slightly modified
745         versions of GTK+'s gtkentry.[ch], spiffed up to use secure memory.
746         * secret-query.c (ok, unselect, main): Replace GtkEntry with
747         GtkSecureEntry.
748         (main): Initialize secure memory.
749         * Makefile.am (secret_query_SOURCES): Added gtksecentry.[ch].
750
751         * README (Security): New chapter.
752
753         * configure.in, acconfig.h: Check for POSIX capabilities, and the
754         setcap program.
755         * Makefile.am: Link LIBCAP to those binaries using secmem.c.
756
757         * util.h: Include <sys/types.h> for size_t.
758
759 1999-09-21  Robert Bihlmeyer  <robbe@orcus.priv.at>
760
761         * secmem.c: Synced with gnupg-1.0 (top new feature: capabilities).
762         (log_fatal): New function, logs to stderr, and dies.
763
764 1999-09-08  Robert Bihlmeyer  <robbe@orcus.priv.at>
765
766         * secmem.c (log_info): New function, logs to stderr.
767
768         * agent.c (agent): select() expects the number of fds, not the
769         highest fd. So remember that number.
770
771         * agent.c (agent): Don't use FD_SETSIZE, which is not defined on
772         all systems. Remember the number of the highest descriptor
773         instead.
774
775         * configure.in: Replace getline() instead of getdelim() because
776         this is the function we really need. Still check for getdelim(),
777         though - there are systems out there where this is provided, but
778         getline() is not.
779
780 1999-09-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
781
782         * 0.6 released.
783
784         * configure.in: Bump version.
785
786         * NEWS: Updated.
787
788 1999-08-31  Robert Bihlmeyer  <robbe@orcus.priv.at>
789
790         * util.c (init_uids, lower_privs, raise_privs, drop_privs): New
791         functions, for setuid binaries, extracted from agent.c.
792         * util.h: Add prototypes for them.
793         * agpg.c (main): Use them.
794         * client.c (main): Ditto.
795         * agent.c (main): Ditto. Removed code that did the same.
796         Unconditionally include "asprintf.h" (it protects itself now).
797
798 1999-08-25  Robert Bihlmeyer  <robbe@orcus.priv.at>
799
800         * Makefile.am (SUBDIRS): Process . before test so that "make
801         check" always builds all in . first.
802
803 1999-08-21  Robert Bihlmeyer  <robbe@orcus.priv.at>
804
805         * secret-query.c: Include "config.h".
806
807         * agent.h (reply_list_entry, reply_list): New reply structures.
808         * agent.c (send_list_entry): New function.
809         (do_list): First send number of entries, then each entry via
810         send_list_entry().
811         * agentlib.c (agent_list): Read entries returned by LIST request.
812         * client.c (main): Output all entries returned by agent_list().
813
814         * agentlib.c (agent_put): Don't construct PUT request in insecure
815         stack space.
816
817 1999-08-20  Robert Bihlmeyer  <robbe@orcus.priv.at>
818
819         * NEWS: Bump patchlevel.
820
821         * configure.in: Bump patchlevel.
822         Check for missing setenv().
823
824 1999-08-09  Robert Bihlmeyer  <robbe@orcus.priv.at>
825
826         * configure.in: Check for strsignal().
827
828         * client-test: Obsoleted by test/client.
829
830         * Makefile.am (SUBDIRS): New subdirectory.
831         * configure.in (AC_OUTPUT): Add here, too.
832
833         * 0.5 released.
834
835         * README: Explain why secret-client will not output secrets to a
836         tty, and mention the cat-trick.
837
838         * agent.c (main): If seteuid is not available, don't use it and
839         issue a warning if running setuid.
840
841         * configure.in: Run together two REPLACE_FUNCS.
842         Check for seteuid.
843
844         * client-test: Mask out insecure memory warnings.
845
846         * agentlib.c (send_request): Let the calling functions reserve
847         space for the reply, but offer a simple way for simple requests.
848         (agent_get): Allocate secure memory.
849
850         * agent.c (main): Moved secmem_init() after the fork, since that
851         seemingly munlock's all pages.
852         Drop priviledges just in case somebody wants to install this
853         suid-root.
854         Flush stdout.
855
856         * agpg.c (find_id): Would reorder arguments.
857         Initialize opt_version.
858         (main): Initialize secure memory.
859
860         * Makefile.am (agpg_SOURCES): Link with secure memory module.
861
862         * client.c (usage): Fixed another program name reference.
863
864 1999-08-06  Robert Bihlmeyer  <robbe@orcus.priv.at>
865
866         * configure.in: Conditionally define HAVE_GTK.
867         * acconfig.h: Add here too.
868
869         * client.c (xgetpass): Use "secret-query" only if it was built.
870         (main): Don't output secret (GET command) to ttys.
871
872         * agpg.c (find_id): Also print own version if "--version" is given.
873         (main): Check agent_init() errors.
874         Print error if exec fails.
875
876         * agent.c (main): Added an option to produce csh-compatible
877         output.
878
879         * agent.c, client.c: Forgot the terminating NULL in long options.
880         Fixed the program names in usage and version output.
881
882         * agent.c (create_socket): AF_UNIX and PF_UNIX are Unix98, so
883         that's what we use. AF_LOCAL, PF_LOCAL removed.
884         * agentlib.c (agent_init): Ditto.
885
886 1999-08-05  Robert Bihlmeyer  <robbe@orcus.priv.at>
887
888         * 0.4 released.
889
890         * configure.in: Bumped version.
891         Check for missing getdelim.
892
893         * cgpg: Removed, obsoleted by agpg.
894         * Makefile.am: Here, too.
895
896         * agpg.c (find_id): New function.
897         (main): Use it.
898
899         * Makefile.am (INCLUDES): Put GTK_FLAGS and GLIB_FLAGS here. It
900         is the easiest way for sources needing it, and it won't hurt those 
901         that don't.
902         (agent.o): Explicit command removed accordingly.
903
904 1999-08-04  Robert Bihlmeyer  <robbe@orcus.priv.at>
905
906         * configure.in: Need double quoting in nested AC_MSG_WARN.
907
908         * client.c (xgetpass): If no tty is available, but a DISPLAY is,
909         fork off "secure-query" to read the secret.
910         Put the fgets into a loop that keeps reading until all of the
911         secret is read.
912
913         * client-test: Unset DISPLAY, so that "secret-query" is never used.
914
915 1999-08-03  Robert Bihlmeyer  <robbe@orcus.priv.at>
916
917         * agpg.c: New file, first cut at a C version of the gpg wrapper,
918         written in a hurry (20 keys waiting to be signed, and a growling
919         stomach).
920         * Makefile.am: Add it to built programs.
921         (LDADD): New default.
922         (secret_client_LDADD): Removed, since it was identical to default.
923
924 1999-08-01  Robert Bihlmeyer  <robbe@orcus.priv.at>
925
926         * secret-query.c: New program, queries the user for a password.
927         * Makefile.am (bin_PROGRAMS): Added it.
928         * configure.in: Check for GTK+, build "secret-query" only when
929         that is available.
930
931         * cgpg: Extra argument for ID is no longer necessary. cgpg will
932         scan the gpg args for switches that affect user-id, and determine
933         the right key itself. Per convention, the key-id is used by "GET".
934
935         * configure.in: The project name is now "secret-agent".
936
937         * Makefile.am: "agent" & "client" renamed to "secret-agent" &
938         "secret-client", respectively.
939         * client-test: Adapt to new names.
940
941         * Thoughts: Removed discussion of other names.
942         Added indication of which things already work.
943
944         * agent.c (make_tmpdir): Removed occurance of "gpg-agent."
945
946         * README: First proper version.
947
948         * client-test: Context diffs are more portable then unified diffs.
949
950         * agent.c, agent.h, agentlib.c, agentlib.h, client.c, memory.h,
951         util.c, util.h: Banner updated to new name.
952
953 1999-07-29  Robert Bihlmeyer  <robbe@orcus.priv.at>
954
955         * configure.in: Check for missing asprintf.
956         Check if -lsocket is needed.
957
958         * secmem.c (secmem_dump_stats): Replace usage of ulong.
959
960         * Makefile.am (INCLUDES): Add the lib subdirectory to include search.
961
962         * agent.c: Forgot to include <string.h>.
963         Include RYO asprintf header if this function is missing.
964         For the sake of compatibility, provide a definition for AF_LOCAL,
965         PF_LOCAL, if missing.
966         * agentlib.c: Ditto.
967
968 1999-07-28  Robert Bihlmeyer  <robbe@orcus.priv.at>
969
970         * Makefile.am (client_SOURCES): Add "secmem.c", "memory.h".
971
972         * client.c (xgetpass): Use secmem_malloc() instead of RYO.
973         (main): Init and shutdown secmem.
974
975 1999-07-27  Robert Bihlmeyer  <robbe@orcus.priv.at>
976
977         * Makefile.am (agent_SOURCES): Add "secmem.c", "i18n.h", "memory.h".
978         (client_SOURCES): Add "i18n.h".
979
980         * client.c (main): Exit on agent_init() failure.
981
982         * agent.c (main): Init secmem.
983         Make --debug switch cumulative.
984         (cleanup): Shutdown secmem.
985         (do_put): Use secmem for storage of secrets.
986         (do_delete): Use secmem_free(). Since this wipes the memory on its 
987         own, wipe() is superflous now.
988         (agent): Use secmem for inbound requests.
989         (delete_secret): New function, takes part of do_delete's
990         functionality.
991         (do_put): Use it to remove old versions stored under the same id.
992         (do_delete): Use it to delete secrets.
993
994         * memory.h: New file.
995
996         * secmem.c: New file, snarfed from GnuPG and modified slightly.
997
998         * acinclude.m4: New file.
999         * configure.in: (ALL_LINGUAS): Expanded list of available
1000         languages. Most of them only have a few translations from gpg,
1001         tough ...
1002         getopt_long test was commented out for debugging,
1003         and left such. Fixed.
1004         Check for mlock.
1005         * acconfig.h: Comment HAVE_BROKEN_MLOCK.
1006
1007         * cgpg: A space was missing.
1008
1009         * i18n.h: New file, centralizing the gettext macro defs.
1010
1011         * agent.c (BLIND): New macro, that blinds out a secret if debug
1012         level is too low.
1013         (do_put): Use it.
1014         (do_get): Use it.
1015         Include i18n.h.
1016
1017         * agentlib.c: Include i18n.h
1018         
1019         * client.c (usage): New function.
1020         Usage-message made gettext-friendly.
1021         (xgetpass): Use perror() instead of fprintf().
1022         (main): Use it.
1023         Make comment an optional argument of PUT.
1024         Include i18n.h.
1025
1026 1999-07-26  Robert Bihlmeyer  <robbe@orcus.priv.at>
1027
1028         * Makefile.am (client_LDADD): Add lib/libutil.a for portability.
1029         (agent_LDADD): Ditto.
1030         (SUBDIRS): Add lib directory.
1031         (bin_SCRIPTS): New with cgpg, so it gets installed, too.
1032
1033         * configure.in: Add lib/Makefile to output.
1034
1035 1999-07-24  Robert Bihlmeyer  <robbe@orcus.priv.at>
1036
1037         * cgpg: New file.
1038         * Makefile.am (EXTRA_DIST): Added it.
1039
1040         * agent.c: Moved inclusion of config.h before inclusion of
1041         libintl.h since the latter needs HAVE_LC_MESSAGE.
1042         * client.c: Ditto.
1043         * clientlib.c: Ditto.
1044
1045         * client-test: Update for new client semantics.
1046
1047         * client.c (check_status): Use debugmsg(). Do nothing if not
1048         debugging.
1049         (xgetpass): New function, getpass replacement that uses mlock'ed
1050         memory.
1051         (main): PUT now asks for the secret rather then getting it from
1052         the commandline.
1053         GET prints only the secret to stdout.
1054
1055         * configure.in: Rearranged.
1056         Check for socklen_t.
1057         * acconfig.h: Added a definition for it.
1058
1059         * client.c: Include packaged getopt.h if the system doesn't provide 
1060         one. 
1061         * agent.c: Ditto.
1062         (create_socket): Replace AF_FILE, PF_FILE with AF_LOCAL, PF_LOCAL
1063         for portability.
1064         * agentlib.c (agent_init): Ditto.
1065         Explicitly cast addr to a sockaddr pointer.
1066
1067         * Makefile.am (client_LDADD): Added @INTLLIBS@.
1068         (agent_LDADD): Ditto.
1069
1070 1999-07-19  Robert Bihlmeyer  <robbe@orcus.priv.at>
1071
1072         * configure.in: Check for getopt.h and getopt_long.
1073         * acconfig.h (HAVE_GETOPT_H): New define.
1074         * lib/getopt.c, lib/getopt1.c, lib/getopt.h: Added.
1075
1076 1999-07-18  Robert Bihlmeyer  <robbe@orcus.priv.at>
1077
1078         * 0.2 released.
1079
1080         * NEWS: Updated.
1081
1082         * Makefile.am (agent.o): Mentioning the source explicitly does not 
1083         work for srcdir!=builddir.
1084
1085         * client.c (main): Function arguments are not always evaluated in
1086         order, so drop the neat ++optind in favor of optind+1, optind+2,
1087         etc.
1088
1089         * configure.in: Upped version.
1090
1091 1999-06-28  Robert Bihlmeyer  <robbe@orcus.priv.at>
1092
1093         * util.h: Added multi-inclusion guard.
1094
1095         * agent.c Include "util.h".
1096         (main): Forgot to exit at end.
1097         (do_delete): Assume that value is a string and wipe it accordingly.
1098
1099         * configure.in (--enable-debug): New switch.
1100
1101         * agent.h (status_t): Added STATUS_COMM_ERR code.
1102         Added multi-inclusion guard.
1103
1104         * client.c (main): Abstracted out most functionality into a
1105         function library, namely:
1106         * agentlib.c: New file.
1107         * agentlib.h: New file.
1108         * Makefile.am (client_SOURCES): Added agentlib.c, agentlib.h.
1109
1110         * Makefile.am (INCLUDES): GLIB_CFLAGS moved again, this time to
1111         the agent.o target. 
1112
1113 1999-06-15  Robert Bihlmeyer  <robbe@orcus.priv.at>
1114
1115         * 0.1 released.
1116
1117         * Makefile.am (agent_CFLAGS): Removed - did not work.
1118         (INCLUDES): Moved the GLIB stuff here.
1119
1120 1999-06-14  Robert Bihlmeyer  <robbe@orcus.priv.at>
1121
1122         * configure.in (ALL_LINGUAS): Added `de'.
1123
1124         * agent.c (do_get): Added more debugmsgs.
1125         (do_put): Wouldn't allocate enough for `value'.
1126         (main): New option "--nofork" prevents forking.
1127         Use macros for the std filedescriptor numbers.
1128         Only close stderr if not debugging.
1129         (main): Make Usage string gettext-friendly.
1130
1131         * client-test (cleanup): New function.
1132         Call it on shell exit.
1133         (client): New function.
1134         Use it instead of calling client binary directly.
1135         diff client output with expected one in GET testcases.
1136
1137 1999-06-13  Robert Bihlmeyer  <robbe@orcus.priv.at>
1138
1139         * agent.c (failed_reply): New constant.
1140         (do_list): Use it.
1141         (do_put): The hash key was overwritten - strdup it.
1142         Construct a GET reply and save that in the hash.
1143         (do_get): Just send the preconstructed reply if the id is present, 
1144         and failed_reply otherwise.
1145         (do_delete): Actually free the hashed stuff.
1146
1147         * client.c: Exit with error if agent returned STATUS_FAIL.
1148
1149         * Makefile.am (EXTRA_DIST): Added autogen.sh, Thoughts,
1150         client-test.
1151         (TESTS): Added client-test.
1152         (AUTOMAKE_OPTIONS): Added gnits. 
1153