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