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