gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r3366 - in GNUnet: . m4 src/setup src/setup/ncurses


From: grothoff
Subject: [GNUnet-SVN] r3366 - in GNUnet: . m4 src/setup src/setup/ncurses
Date: Tue, 5 Sep 2006 20:25:25 -0700 (PDT)

Author: grothoff
Date: 2006-09-05 20:25:16 -0700 (Tue, 05 Sep 2006)
New Revision: 3366

Removed:
   GNUnet/src/setup/ncurses/mconf_checklist.c
   GNUnet/src/setup/ncurses/mconf_colors.h
   GNUnet/src/setup/ncurses/mconf_dialog.h
   GNUnet/src/setup/ncurses/mconf_inputbox.c
   GNUnet/src/setup/ncurses/mconf_menubox.c
   GNUnet/src/setup/ncurses/mconf_msgbox.c
   GNUnet/src/setup/ncurses/mconf_textbox.c
   GNUnet/src/setup/ncurses/mconf_util.c
   GNUnet/src/setup/ncurses/mconf_yesno.c
Modified:
   GNUnet/README.debian
   GNUnet/configure.ac
   GNUnet/m4/Makefile.in
   GNUnet/src/setup/Makefile.am
   GNUnet/src/setup/gnunet-setup.c
   GNUnet/src/setup/ncurses/Makefile.am
   GNUnet/src/setup/ncurses/mconf.c
   GNUnet/src/setup/ncurses/mconf.h
   GNUnet/src/setup/ncurses/wizard_curs.c
   GNUnet/src/setup/ncurses/wizard_curs.h
   GNUnet/todo
Log:
fixing gnunet-setup menuconfig api -- now using dialog

Modified: GNUnet/README.debian
===================================================================
--- GNUnet/README.debian        2006-09-06 00:22:25 UTC (rev 3365)
+++ GNUnet/README.debian        2006-09-06 03:25:16 UTC (rev 3366)
@@ -26,6 +26,8 @@
 libmysqlclient14-dev
 libncurses5-dev
 libcurl3-gnutls-dev
+libncursesw5-dev
+dialog
 guile-1.8-dev (out since Feb 2006 - still no debian package!)
 libextractor-dev (unstable required!)
 

Modified: GNUnet/configure.ac
===================================================================
--- GNUnet/configure.ac 2006-09-06 00:22:25 UTC (rev 3365)
+++ GNUnet/configure.ac 2006-09-06 03:25:16 UTC (rev 3366)
@@ -345,17 +345,8 @@
 fi
 
 # GNUnet Setup
-curses=1
-pdcurses=0
-AC_CHECK_HEADER([ncurses.h], [AC_DEFINE([CURSES_LOC], [<ncurses.h>], [Curses 
location])],
- [AC_CHECK_HEADER([ncurses/ncurses.h], AC_DEFINE([CURSES_LOC], 
[<ncurses/ncurses.h>]),
- [AC_CHECK_HEADER([curses.h], AC_DEFINE([CURSES_LOC], [<curses.h>]),
- [AC_CHECK_HEADER([ncurses/curses.h], AC_DEFINE([CURSES_LOC], 
[<ncurses/curses.h>]),
- curses=0)])])])
-AC_CHECK_LIB(ncurses, scrollok,,AC_CHECK_LIB(pdcurses, 
scrollok,pdcurses=1,curses=0))
-AC_DEFINE_UNQUOTED([HAVE_CURSES], $curses, [We have curses])
-AM_CONDITIONAL(HAVE_CURSES, test x$curses = x1)
-AM_CONDITIONAL(HAVE_PDCURSES, test x$pdcurses = x1)
+AC_CHECK_HEADER([dialog.h],curses=1,curses=0)
+AM_CONDITIONAL(HAVE_DIALOG, test x$curses = x1)
 
 # check for gtk >= 2.6.0
 AC_MSG_CHECKING(for gtk)

Modified: GNUnet/m4/Makefile.in
===================================================================
--- GNUnet/m4/Makefile.in       2006-09-06 00:22:25 UTC (rev 3365)
+++ GNUnet/m4/Makefile.in       2006-09-06 03:25:16 UTC (rev 3366)
@@ -93,6 +93,7 @@
 GMSGFMT = @GMSGFMT@
 GNUNETGTK_CFLAGS = @GNUNETGTK_CFLAGS@
 GNUNETGTK_LIBS = @GNUNETGTK_LIBS@
+GREP = @GREP@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 GUILE = @GUILE@
@@ -100,16 +101,14 @@
 GUILE_CONFIG = @GUILE_CONFIG@
 GUILE_LDFLAGS = @GUILE_LDFLAGS@
 GUILE_TOOLS = @GUILE_TOOLS@
-HAVE_CURSES_FALSE = @HAVE_CURSES_FALSE@
-HAVE_CURSES_TRUE = @HAVE_CURSES_TRUE@
+HAVE_DIALOG_FALSE = @HAVE_DIALOG_FALSE@
+HAVE_DIALOG_TRUE = @HAVE_DIALOG_TRUE@
 HAVE_GTK_FALSE = @HAVE_GTK_FALSE@
 HAVE_GTK_TRUE = @HAVE_GTK_TRUE@
 HAVE_IPV6_FALSE = @HAVE_IPV6_FALSE@
 HAVE_IPV6_TRUE = @HAVE_IPV6_TRUE@
 HAVE_MYSQL_FALSE = @HAVE_MYSQL_FALSE@
 HAVE_MYSQL_TRUE = @HAVE_MYSQL_TRUE@
-HAVE_PDCURSES_FALSE = @HAVE_PDCURSES_FALSE@
-HAVE_PDCURSES_TRUE = @HAVE_PDCURSES_TRUE@
 HAVE_SQLITE_FALSE = @HAVE_SQLITE_FALSE@
 HAVE_SQLITE_TRUE = @HAVE_SQLITE_TRUE@
 HAVE_ZLIB_FALSE = @HAVE_ZLIB_FALSE@
@@ -174,15 +173,9 @@
 XFREEBSD_TRUE = @XFREEBSD_TRUE@
 XGETTEXT = @XGETTEXT@
 _libcurl_config = @_libcurl_config@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_F77 = @ac_ct_F77@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
 am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@@ -197,23 +190,30 @@
 build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 host = @host@
 host_alias = @host_alias@
 host_cpu = @host_cpu@
 host_os = @host_os@
 host_vendor = @host_vendor@
+htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
 libexecdir = @libexecdir@
+localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 subdirs = @subdirs@

Modified: GNUnet/src/setup/Makefile.am
===================================================================
--- GNUnet/src/setup/Makefile.am        2006-09-06 00:22:25 UTC (rev 3365)
+++ GNUnet/src/setup/Makefile.am        2006-09-06 03:25:16 UTC (rev 3366)
@@ -3,12 +3,12 @@
 if HAVE_GTK
  gtk_dir = gtk
 endif
-if HAVE_CURSES
+if HAVE_DIALOG
  curses_dir = ncurses
 endif
 
-SUBDIRS = lib text .
-# $(curses_dir) $(gtk_dir) .
+SUBDIRS = lib text . $(curses_dir)
+# $(gtk_dir) .
 
 plugindir = $(libdir)/GNUnet
 

Modified: GNUnet/src/setup/gnunet-setup.c
===================================================================
--- GNUnet/src/setup/gnunet-setup.c     2006-09-06 00:22:25 UTC (rev 3365)
+++ GNUnet/src/setup/gnunet-setup.c     2006-09-06 03:25:16 UTC (rev 3366)
@@ -170,7 +170,7 @@
     cfgFilename = config_daemon 
       ? STRDUP(DEFAULT_DAEMON_CONFIG_FILE) 
       : STRDUP(DEFAULT_CLIENT_CONFIG_FILE);
-  dirname = STRDUP(cfgFilename);
+  dirname = string_expandFileName(ectx, cfgFilename);
   i = strlen(dirname) - 1;
   while (i > -1) {
     char ch = dirname[i];

Modified: GNUnet/src/setup/ncurses/Makefile.am
===================================================================
--- GNUnet/src/setup/ncurses/Makefile.am        2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/Makefile.am        2006-09-06 03:25:16 UTC (rev 
3366)
@@ -8,30 +8,12 @@
 plugin_LTLIBRARIES = \
  libgnunetsetup_curses.la
 
-if HAVE_CURSES
-if HAVE_PDCURSES
- pdcurses_lib = -lpdcurses
-else
- curses_lib = -lncurses
-endif
-endif
-
 libgnunetsetup_curses_la_SOURCES = \
- mconf.c mconf.h \
- mconf_checklist.c \
- mconf_colors.h \
- mconf_dialog.h \
- mconf_inputbox.c \
- mconf_menubox.c \
- mconf_msgbox.c \
- mconf_textbox.c \
- mconf_util.c \
- mconf_yesno.c \
- wizard_curs.c \
- wizard_curs.h
+ mconf.c mconf.h 
+# wizard_curs.c wizard_curs.h
 
 libgnunetsetup_curses_la_LDFLAGS = \
- $(curses_lib) $(pdcurses_lib) \
+ -lncursesw -ldialog \
  -export-dynamic -avoid-version -module
 
 libgnunetsetup_curses_la_LIBADD = \

Modified: GNUnet/src/setup/ncurses/mconf.c
===================================================================
--- GNUnet/src/setup/ncurses/mconf.c    2006-09-06 00:22:25 UTC (rev 3365)
+++ GNUnet/src/setup/ncurses/mconf.c    2006-09-06 03:25:16 UTC (rev 3366)
@@ -19,821 +19,430 @@
 */
 
 /**
- * Copyright (C) 2002 Roman Zippel <address@hidden>
- * Released under the terms of the GNU GPL v2.0.
- */
-
-/**
- * @brief GNUnet Setup
+ * @brief GNUnet Setup using dialog
  * @file conf/mconf.c
- * @author Roman Zippel
- * @author Petr Baudis
- * @author Nils Durner
+ * @author Christian Grothoff
  */
 
+#include <dialog.h>
+
+#undef _
+#undef OK
 #include "platform.h"
 #include "gnunet_util.h"
-#include "confdata.h"
+#include "gnunet_setup_lib.h"
 
-#ifndef MINGW
-#include <sys/ioctl.h>
-#include <termios.h>
-#endif
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <limits.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
 #include "mconf.h"
-#include "mconf_dialog.h"
 
-#define LKC_DIRECT_LINK
-#include "lkc.h"
-
-static const char menu_instructions[] =
-       "Arrow keys navigate the menu.  "
-       "<Enter> selects submenus --->.  "
-       "Highlighted letters are hotkeys.  "
-       "Pressing <Y> includes, <N> excludes features.  "
-       "Press <Esc><Esc> to exit, <?> for Help.  "
-       "Legend: [*] built-in  [ ] excluded  ",
-radiolist_instructions[] =
-       "Use the arrow keys to navigate this window or "
-       "press the hotkey of the item you wish to select "
-       "followed by the <SPACE BAR>. "
-       "Press <?> for additional information about this option.",
-inputbox_instructions_int[] =
-       "Please enter a decimal value. "
-       "Fractions will not be accepted.  "
-       "Use the <TAB> key to move from the input field to the buttons below 
it.",
-inputbox_instructions_hex[] =
-       "Please enter a hexadecimal value. "
-       "Use the <TAB> key to move from the input field to the buttons below 
it.",
-inputbox_instructions_string[] =
-       "Please enter a string value. "
-       "Use the <TAB> key to move from the input field to the buttons below 
it.",
-setmod_text[] =
-       "This feature depends on another which has been configured as a 
module.\n"
-       "As a result, this feature will be built as a module.",
-nohelp_text[] =
-       "There is no help available for this option.\n",
-load_config_text[] =
-       "Enter the name of the configuration file you wish to load.  "
-       "Accept the name shown to restore the configuration you "
-       "last retrieved.  Leave blank to abort.",
-load_config_help[] =
-       "\n"
-       "For various reasons, one may wish to keep several different\n"
-       "configurations available on a single machine.\n"
-       "\n"
-       "If you have saved a previous configuration in a file other than the\n"
-       "default, entering the name of the file here will allow you\n"
-       "to modify that configuration.\n"
-       "\n"
-       "If you are uncertain, then you have probably never used alternate\n"
-       "configuration files.  You should therefor leave this blank to 
abort.\n",
-readme_text[] =
-       "Overview\n"
-       "--------\n"
-       "To change a setting, highlight it with the cursor\n"
-       "keys and press <Y> to enable it or <N> to removed it.\n"
-       "\n"
-       "Items beginning with numbers or other text within parenthesis can\n"
-       "be changed by highlighting the item and pressing <Enter>.  Then\n"
-       "enter the new value into the dialog box that pops up.\n"
-       "\n"
-       "\n"
-       "Some additional keyboard hints:\n"
-       "\n"
-       "Menus\n"
-       "----------\n"
-       "o  Use the Up/Down arrow keys (cursor keys) to highlight the item\n"
-       "   you wish to change or submenu wish to select and press <Enter>.\n"
-       "   Submenus are designated by \"--->\".\n"
-       "\n"
-       "   Shortcut: Press the option's highlighted letter (hotkey).\n"
-        "             Pressing a hotkey more than once will sequence\n"
-        "             through all visible items which use that hotkey.\n"
-       "\n"
-       "   You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll\n"
-       "   unseen options into view.\n"
-       "\n"
-       "o  To exit a menu use the cursor keys to highlight the <Exit> button\n"
-       "   and press <ENTER>.\n"
-       "\n"
-       "   Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey\n"
-        "             using those letters.  You may press a single <ESC>, 
but\n"
-        "             there is a delayed response which you may find 
annoying.\n"
-       "\n"
-       "   Also, the <TAB> and cursor keys will cycle between <Select>,\n"
-       "   <Exit> and <Help>\n"
-       "\n"
-       "o  To get help with an item, use the cursor keys to highlight <Help>\n"
-       "   and Press <ENTER>.\n"
-       "\n"
-       "   Shortcut: Press <H> or <?>.\n"
-       "\n"
-       "\n"
-       "Radiolists  (Choice lists)\n"
-       "-----------\n"
-       "o  Use the cursor keys to select the option you wish to set and 
press\n"
-       "   <S> or the <SPACE BAR>.\n"
-       "\n"
-       "   Shortcut: Press the first letter of the option you wish to set 
then\n"
-        "             press <S> or <SPACE BAR>.\n"
-       "\n"
-       "o  To see available help for the item, use the cursor keys to 
highlight\n"
-       "   <Help> and Press <ENTER>.\n"
-       "\n"
-       "   Shortcut: Press <H> or <?>.\n"
-       "\n"
-       "   Also, the <TAB> and cursor keys will cycle between <Select> and\n"
-       "   <Help>\n"
-       "\n"
-       "\n"
-       "Data Entry\n"
-       "-----------\n"
-       "o  Enter the requested information and press <ENTER>\n"
-       "   If you are entering hexadecimal values, it is not necessary to\n"
-       "   add the '0x' prefix to the entry.\n"
-       "\n"
-       "o  For help, use the <TAB> or cursor keys to highlight the help 
option\n"
-       "   and press <ENTER>.  You can try <TAB><H> as well.\n"
-       "\n"
-       "\n"
-       "Text Box    (Help Window)\n"
-       "--------\n"
-       "o  Use the cursor keys to scroll up/down/left/right.  The VI editor\n"
-       "   keys h,j,k,l function here as do <SPACE BAR> and <B> for those\n"
-       "   who are familiar with less and lynx.\n"
-       "\n"
-       "o  Press <E>, <X>, <Enter> or <Esc><Esc> to exit.\n"
-       "\n"
-       "\n"
-       "Final Acceptance\n"
-       "----------------\n"
-       "YOUR CHANGES ARE NOT FINAL.  You will be given a last chance to\n"
-       "confirm them prior to exiting Menuconfig.\n"
-       "\n"
-       "Alternate Configuration Files\n"
-       "-----------------------------\n"
-       "Menuconfig supports the use of alternate configuration files for\n"
-       "those who, for various reasons, find it necessary to switch\n"
-       "between different configurations.\n"
-       "\n"
-       "At the end of the main menu you will find two options.  One is\n"
-       "for saving the current configuration to a file of your choosing.\n"
-       "The other option is for loading a previously saved alternate\n"
-       "configuration.\n"
-       "\n"
-       "Even if you don't use alternate configuration files, but you\n"
-       "find during a Menuconfig session that you have completely messed\n"
-       "up your settings, you may use the \"Load Alternate...\" option to\n"
-       "restore your previously saved settings from \".config\" without\n"
-       "restarting Menuconfig.\n"
-       "\n"
-       "Other information\n"
-       "-----------------\n"
-       "If you use Menuconfig in an XTERM window make sure you have your\n"
-       "$TERM variable set to point to a xterm definition which supports 
color.\n"
-       "Otherwise, Menuconfig will look rather bad.  Menuconfig will not\n"
-       "display correctly in a RXVT window because rxvt displays only one\n"
-       "intensity of color, bright.\n"
-       "\n"
-       "Menuconfig will display larger menus on screens or xterms which are\n"
-       "set to display more than the standard 25 row by 80 column geometry.\n"
-       "In order for this to work, the \"stty size\" command must be able to\n"
-       "display the screen's current row and column geometry.  I STRONGLY\n"
-       "RECOMMEND that you make sure you do NOT have the shell variables\n"
-       "LINES and COLUMNS exported into your environment.  Some 
distributions\n"
-       "export those variables via /etc/profile.  Some ncurses programs can\n"
-       "become confused when those variables (LINES & COLUMNS) don't reflect\n"
-       "the true screen size.\n"
-       "\n"
-       "\n"
-       "******** IMPORTANT, OPTIONAL ALTERNATE PERSONALITY AVAILABLE 
********\n"
-       "********                                                     
********\n"
-       "If you prefer to have all of the options listed in a single\n"
-       "menu, rather than the default multimenu hierarchy, run the 
menuconfig\n"
-       "with MENUCONFIG_MODE environment variable set to single_menu.\n"
-       "\n"
-       "Note that this mode can eventually be a little more CPU expensive\n"
-       "(especially with a larger number of unrolled categories) than the\n"
-       "default mode.\n"
-       
"*********************************************************************\n"
-       "\n"
-       "\n"
-       "Propaganda\n"
-       "----------\n"
-       "The windowing support utility (lxdialog) is a VERY modified version 
of\n"
-       "the dialog utility by Savio Lam <address@hidden>.  Although lxdialog\n"
-       "is significantly different from dialog, I have left Savio's 
copyrights\n"
-       "intact.  Please DO NOT contact Savio with questions about lxdialog.\n"
-       "He will not be able to assist.\n"
-       "\n"
-       "William Roadcap was the original author of Menuconfig.\n"
-
-;
-
-static char filename[PATH_MAX+1] = "/etc/GNUnet/.config";
-static int indent;
 #ifndef MINGW
-static struct termios ios_org;
+#include <termios.h>
 #endif
-int rows = 0, cols = 0;
-static int child_count;
-static int single_menu_mode;
 
-static struct dialog_list_item *items[32768]; /* FIXME: This ought to be 
dynamic */
-static int item_no;
+static struct GE_Context * ectx;
 
-static void conf(struct menu *menu);
-static void conf_choice(struct menu *menu);
-static void conf_string(struct menu *menu);
-static void conf_load(void);
-static void show_help(struct menu *menu);
-static void show_readme(void);
-
-void init_wsize(void)
-{
-       char *env;
-       
-#ifndef MINGW
-  struct winsize ws;
-
-       if (ioctl(1, TIOCGWINSZ, &ws) == -1) {
-               rows = 24;
-               cols = 80;
-       } else {
-               rows = ws.ws_row;
-               cols = ws.ws_col;
-#else
-              rows = cols = 0;
-#endif
-               if (!rows) {
-                       env = getenv("LINES");
-                       if (env)
-                               rows = atoi(env);
-                       if (!rows)
-                               rows = 24;
-               }
-               if (!cols) {
-                       env = getenv("COLUMNS");
-                       if (env)
-                               cols = atoi(env);
-                       if (!cols)
-                               cols = 80;
-               }
-#ifndef MINGW
-       }
-#endif
-
-       if (rows < 19 || cols < 80) {
-               end_dialog();
-               fprintf(stderr, "Your display is too small to run 
Menuconfig!\n");
-               fprintf(stderr, "It must be at least 19 lines by 80 
columns.\n");
-               exit(1);
-       }
-
-       rows -= 4;
-       cols -= 5;
+static void show_help(const char * option,
+                     const char * helptext) {
+  dialog_vars.help_button = 0;
+  dialog_msgbox(option,
+               gettext(helptext),
+               20,
+               70,
+               TRUE);
+  dialog_vars.help_button = 1;
 }
 
-static void creset(void)
-{
-       int i;
+static void run_menu(struct GNS_Context * ctx,
+                    struct GNS_Tree * pos,
+                    struct GC_Configuration * cfg) {  
+  int st;
+  int i;
+  DIALOG_LISTITEM * items;
+  int msel;
+  DIALOG_FORMITEM fitem;
+  unsigned long long lval;
+  double dval;
+  GNS_Value * val;
 
-       for (i = 0; i < item_no; i++) {
-               free(items[i]->name);
-               free(items[i]);
-       }
+  fitem.type = 0;
+  fitem.name = pos->description;
+  fitem.name_len = strlen(pos->description);
+  fitem.name_y = 3;
+  fitem.name_x = 5;
+  fitem.name_free = 0;
+  fitem.text_y = 5;
+  fitem.text_x = 5;
+  fitem.text_flen = 55;
+  fitem.text_ilen = 63;
+  fitem.text_free = 0;
+  fitem.help_free = 0;
 
-       item_no = 0;
-}
-
-static void cmake(void)
-{
-       items[item_no] = calloc(1, sizeof(struct dialog_list_item));
-       items[item_no]->name = malloc(512); items[item_no]->name[0] = 0;
-       items[item_no]->namelen = 0;
-       item_no++;
-}
-
-static int cprint_name(const char *fmt, ...)
-{
-       va_list ap;
-       int res;
-
-       if (!item_no)
-               cmake();
-       va_start(ap, fmt);
-       res = vsnprintf(items[item_no - 1]->name + items[item_no - 1]->namelen,
-                       512 - items[item_no - 1]->namelen, fmt, ap);
-       if (res > 0)
-               items[item_no - 1]->namelen += res;
-       va_end(ap);
-
-       return res;
-}
-
-static int cset_tag(char type, void *ptr)
-{
-       items[item_no - 1]->type = type;
-       items[item_no - 1]->data = ptr;
-       return 0;
-}
-
-#ifndef MINGW
-static void winch_handler(int sig)
-{
-       static int lock;
-
-       if (!lock) {
-               lock = 1;
-               /* I just can't figure out how to make this thing not to crash
-                * (it won't crash everytime but at least in 1 of 10 tries).
-                * FIXME: Something rotten causes stack corruption to us, not
-                * a good thing to live with. --pasky */
-#if 0
-               init_wsize();
-               resize_dialog(rows + 4, cols + 5);
-#endif
-               lock = 0;
+  dialog_vars.cancel_label = _("Cancel");
+  msel = 0;
+  while (1) {
+    switch (pos->type & GNS_KindMask) {
+    case GNS_Root:
+      dialog_vars.cancel_label = _("Exit");
+      /* fall-through! */
+    case GNS_Node:
+      st = 0;
+      i = 0;
+      while (pos->children[i] != NULL) {
+       if (pos->children[i]->visible)
+         st++;
+       i++;
+      }
+      if (st == 0)
+       return; /* no visible entries */
+      items = MALLOC(sizeof(DIALOG_LISTITEM) * st);
+      i = 0;
+      st = 0;
+      while (pos->children[i] != NULL) {
+       if (pos->children[i]->visible) {
+         items[st].name = pos->children[i]->option;
+         items[st].text = gettext(pos->children[i]->description);
+         items[st].help = gettext(pos->children[i]->help);       
+         items[st].state = 0;
+         st++;
        }
-}
-#endif
-
-static void build_conf(struct menu *menu)
-{
-       struct symbol *sym;
-       struct property *prop;
-       struct menu *child;
-       int type, tmp, doint = 2;
-       tristate val;
-       char ch;
-
-       if (!menu_is_visible(menu))
-               return;
-
-       sym = menu->sym;
-       prop = menu->prompt;
-       if (!sym) {
-               if (prop && menu != current_menu) {
-                       const char *prompt = menu_get_prompt(menu);
-                       switch (prop->type) {
-                       case P_MENU:
-                               child_count++;
-                               cmake();
-                               cset_tag('m', menu);
-
-                               if (single_menu_mode) {
-                                       cprint_name("%s%*c%s",
-                                               menu->data ? "-->" : "++>",
-                                               indent + 1, ' ', prompt);
-                               } else
-                                       cprint_name("   %*c%s  --->", indent + 
1, ' ', prompt);
-
-                               if (single_menu_mode && menu->data)
-                                       goto conf_childs;
-                               return;
-                       default:
-                               if (prompt) {
-                                       child_count++;
-                                       cmake();
-                                       cset_tag(':', menu);
-                                       cprint_name("---%*c%s", indent + 1, ' 
', prompt);
-                               }
-                       }
-               } else
-                       doint = 0;
-               goto conf_childs;
+       i++;
+      }            
+      st = dlg_menu(gettext(pos->description),
+                   "Select configuration option to change",
+                   20, 
+                   70,
+                   13,
+                   st,
+                   items,
+                   &msel,
+                   NULL);
+      FREE(items);      
+      switch (st) {
+      case DLG_EXIT_OK:
+       i = 0;
+       st = msel;
+       while (pos->children[i] != NULL) {
+         if (pos->children[i]->visible) {
+           if (st == 0)
+             run_menu(ctx,
+                      pos->children[i],
+                      cfg);
+           st--;
+         }
+         i++;
        }
+       break;
+      case DLG_EXIT_HELP:
+       show_help(pos->children[msel]->option,
+                 pos->children[msel]->help);
+       break;
+      case DLG_EXIT_ESC:
+      case DLG_EXIT_ERROR:
+      case DLG_EXIT_CANCEL:
+      default:
+       return;
+      }
+      break;
 
-       cmake();
-       type = sym_get_type(sym);
-       if (sym_is_choice(sym)) {
-               struct symbol *def_sym = sym_get_choice_value(sym);
-               struct menu *def_menu = NULL;
-
-               child_count++;
-               for (child = menu->list; child; child = child->next) {
-                       if (menu_is_visible(child) && child->sym == def_sym)
-                               def_menu = child;
-               }
-
-               val = sym_get_tristate_value(sym);
-               if (sym_is_changable(sym)) {
-                       cset_tag('t', menu);
-                       switch (type) {
-                       case S_BOOLEAN:
-                               cprint_name("[%c]", val == no ? ' ' : '*');
-                               break;
-                       case S_TRISTATE:
-                               switch (val) {
-                               case yes: ch = '*'; break;
-                               case mod: ch = 'M'; break;
-                               default:  ch = ' '; break;
-                               }
-                               cprint_name("<%c>", ch);
-                               break;
-                       }
-               } else {
-                       cset_tag(def_menu ? 't' : ':', menu);
-                       cprint_name("   ");
-               }
-
-               cprint_name("%*c%s", indent + 1, ' ', menu_get_prompt(menu));
-               if (val == yes) {
-                       if (def_menu) {
-                               cprint_name(" (%s)", menu_get_prompt(def_menu));
-                               cprint_name("  --->");
-                               if (def_menu->list) {
-                                       indent += 2;
-                                       build_conf(def_menu);
-                                       indent -= 2;
-                               }
-                       }
-                       return;
-               }
-       } else {
-               if (menu == current_menu) {
-                       cset_tag(':', menu);
-                       cprint_name("---%*c%s", indent + 1, ' ', 
menu_get_prompt(menu));
-                       goto conf_childs;
-               }
-               child_count++;
-               val = sym_get_tristate_value(sym);
-               if (sym_is_choice_value(sym) && val == yes) {
-                       cset_tag(':', menu);
-                       cprint_name("   ");
-               } else {
-                       switch (type) {
-                       case S_BOOLEAN:
-                               cset_tag('t', menu);
-                               if (sym_is_changable(sym))
-                                       cprint_name("[%c]", val == no ? ' ' : 
'*');
-                               else
-                                       cprint_name("---");
-                               break;
-                       case S_TRISTATE:
-                               cset_tag('t', menu);
-                               switch (val) {
-                               case yes: ch = '*'; break;
-                               case mod: ch = 'M'; break;
-                               default:  ch = ' '; break;
-                               }
-                               if (sym_is_changable(sym))
-                                       cprint_name("<%c>", ch);
-                               else
-                                       cprint_name("---");
-                               break;
-                       default:
-                               cset_tag('s', menu);
-                               tmp = cprint_name("(%s)", 
sym_get_string_value(sym));
-                               tmp = indent - tmp + 4;
-                               if (tmp < 0)
-                                       tmp = 0;
-                               cprint_name("%*c%s%s", tmp, ' ', 
menu_get_prompt(menu),
-                                       (sym_has_value(sym) || 
!sym_is_changable(sym)) ?
-                                       "" : " (NEW)");
-                               goto conf_childs;
-                       }
-               }
-               cprint_name("%*c%s%s", indent + 1, ' ', menu_get_prompt(menu),
-                       (sym_has_value(sym) || !sym_is_changable(sym)) ?
-                       "" : " (NEW)");
-               if (menu->prompt->type == P_MENU) {
-                       cprint_name("  --->");
-                       return;
-               }
+    case GNS_Leaf:
+      switch (pos->type & GNS_TypeMask) {
+      case GNS_Boolean:
+       st = dialog_yesno(pos->option,
+                         gettext(pos->description),
+                         5, 60);
+       switch (st) {
+       case DLG_EXIT_OK:
+       case DLG_EXIT_CANCEL:
+         if (0 != GC_set_configuration_value_string(cfg,
+                                                    ectx,
+                                                    pos->section,
+                                                    pos->option,
+                                                    st == DLG_EXIT_OK ? "YES" 
: "NO")) {
+           show_help(pos->option,
+                     gettext_noop("Internal error! (Choice invalid?)"));
+           break;
+         } 
+         return;         
+       case DLG_EXIT_HELP:
+         show_help(pos->option, pos->help);
+         break;
+       case DLG_EXIT_ESC:
+         return;
+       default:
+         GE_BREAK(ectx, 0);
+         return;
        }
+       break;
+      case GNS_String:
+       if (pos->value.String.legalRange[0] == NULL) {
+         /* free form */         
+         fitem.text = MALLOC(65536);
+         strcpy(fitem.text,
+                pos->value.String.val);
+         fitem.text_len = strlen(fitem.text);
+         fitem.help = pos->help;
+         msel = 0;
+         st = dlg_form(pos->option,
+                       "",
+                       20,
+                       70,
+                       15,
+                       1,
+                       &fitem,
+                       &msel);
+         switch (st) {
+         case DLG_EXIT_OK:
+           if (0 != GC_set_configuration_value_string(cfg,
+                                                      ectx,
+                                                      pos->section,
+                                                      pos->option,
+                                                      fitem.text)) {
+             show_help(pos->option,
+                       gettext_noop("Internal error! (Value invalid?)"));
+             break;
+           }
+           FREE(fitem.text);    
+           return;
+         case DLG_EXIT_HELP:
+           show_help(pos->option, pos->help);
+           break;
+         default:
+           break;
+         }
+         FREE(fitem.text);      
+         /* end free form */
+       } else {
+         /* begin choice */
 
-conf_childs:
-       indent += doint;
-       for (child = menu->list; child; child = child->next)
-               build_conf(child);
-       indent -= doint;
-}
+         val = &pos->value;
+         i = 0;
+         while (val->String.legalRange[i] != NULL) 
+           i++;
+         GE_ASSERT(ectx, i != 0);
+         items = MALLOC(sizeof(DIALOG_LISTITEM) * i);
+         i = 0;
+         msel = -1; 
+         
+         while (val->String.legalRange[i] != NULL) {       
+           items[i].name = "";
+           items[i].text = val->String.legalRange[i];
+           items[i].help = "";
+           items[i].state = 0;
+           if (0 == strcmp(val->String.legalRange[i],
+                           val->String.val)) {
+             items[i].state = 1;
+             msel = i;
+           }
+           if ( (msel == -1) &&
+                (0 == strcmp(val->String.legalRange[i],
+                             val->String.def)) ) 
+             msel = i;
+           i++;
+         }
+         st = dlg_checklist(gettext(pos->option),
+                            gettext(pos->description),
+                            20,
+                            70,
+                            13,
+                            i,
+                            items,
+                            " *",
+                            FLAG_RADIO,
+                            &msel);      
+         FREE(items);
+         switch (st) {
+         case DLG_EXIT_OK:
+           if (0 != GC_set_configuration_value_choice(cfg,
+                                                      ectx,
+                                                      pos->section,
+                                                      pos->option,
+                                                      
val->String.legalRange[msel])) {
+             show_help(pos->option,
+                       gettext_noop("Internal error! (Choice invalid?)"));
+             break;
+           }       
+           return;
+         case DLG_EXIT_HELP:
+           show_help(pos->option,
+                     pos->help);
+           break;
+         case DLG_EXIT_ESC:
+         case DLG_EXIT_ERROR:
+         case DLG_EXIT_CANCEL:
+         default:
+           return;
+         }
+       } /* end choice */
+       break;
 
-static void conf(struct menu *menu)
-{
-       char active_type = 0; void *active_ptr = NULL;
-       const char *prompt = menu_get_prompt(menu);
-       struct menu *submenu;
-       struct symbol *sym;
-       int stat;
-
-       UNLINK("lxdialog.scrltmp");
-       while (1) {
-               indent = 0;
-               child_count = 0;
-               current_menu = menu;
-               creset();
-               build_conf(menu);
-               if (!child_count)
-                       break;
-               if (menu == &rootmenu) {
-                       cmake(); cset_tag(':', NULL); cprint_name("--- ");
-                       cmake(); cset_tag('L', NULL); cprint_name("Load an 
Alternate Configuration File");
-               }
-               dialog_clear();
-               /* active_item itself can change after any creset() +
-                 * build_conf() :-( */
-               stat = dialog_menu(prompt ? prompt : "Main Menu",
-                               menu_instructions, rows, cols, rows - 10,
-                               active_type, active_ptr, item_no, items);
-               if (stat < -1)
-                       continue; /* Windows resized, let's redraw... */
-               if (stat < 0)
-                       break;
-
-               if (stat == 1 || stat == 255)
-                       break;
-
-               {
-                       struct dialog_list_item *active_item;
-
-                       active_item = first_sel_item(item_no, items);
-                       if (!active_item)
-                               continue;
-                       active_item->selected = 0;
-                       active_type = active_item->type;
-                       active_ptr = active_item->data;
-               }
-               
-               if (!active_type)
-                       continue;
-
-               sym = NULL;
-               submenu = active_ptr;
-               if (submenu) sym = submenu->sym;                
-
-               switch (stat) {
-               case 0:
-                       switch (active_type) {
-                       case 'm':
-                               if (single_menu_mode)
-                                       submenu->data = (void *) (long) 
!submenu->data;
-                               else
-                                       conf(submenu);
-                               break;
-                       case 't':
-                               if (sym_is_choice(sym) && 
sym_get_tristate_value(sym) == yes)
-                                       conf_choice(submenu);
-                               else if (submenu->prompt->type == P_MENU)
-                                       conf(submenu);
-                               break;
-                       case 's':
-                               conf_string(submenu);
-                               break;
-                       case 'L':
-                               conf_load();
-                               break;
-                       }
-                       break;
-               case 2:
-                       if (sym)
-                               show_help(submenu);
-                       else
-                               show_readme();
-                       break;
-               case 3:
-                       if (active_type == 't') {
-                               if (sym_set_tristate_value(sym, yes))
-                                       break;
-                               if (sym_set_tristate_value(sym, mod))
-                                       show_textbox(NULL, setmod_text, 6, 74);
-                       }
-                       break;
-               case 4:
-                       if (active_type == 't')
-                               sym_set_tristate_value(sym, no);
-                       break;
-               case 5:
-                       if (active_type == 't')
-                               sym_set_tristate_value(sym, mod);
-                       break;
-               case 6:
-                       if (active_type == 't') {
-                               sym_toggle_tristate_value(sym);
-                       } else if (active_type == 'm') {
-                               if (single_menu_mode)
-                                       submenu->data = (void *) 
(long)!submenu->data;
-                               else
-                                       conf(submenu);
-                       }
-                       break;
-               }
+      case GNS_Double:
+       fitem.text = MALLOC(64);
+       SNPRINTF(fitem.text,
+                64,
+                "%f",
+                pos->value.Double.val);
+       fitem.text_len = strlen(fitem.text);
+       fitem.help = pos->help;
+       st = DLG_EXIT_HELP;
+       msel = 0;
+       st = dlg_form(pos->option,
+                     "",
+                     20,
+                     70,
+                     15,
+                     1,
+                     &fitem,
+                     &msel);
+       switch (st) {
+       case DLG_EXIT_OK:
+         if (1 != sscanf(fitem.text,
+                         "%lf",
+                         &dval)) {
+           show_help(pos->option,
+                     gettext_noop("Invalid input, expecting floating point 
value."));
+           break;
+         } 
+         if (0 != GC_set_configuration_value_string(cfg,
+                                                    ectx,
+                                                    pos->section,
+                                                    pos->option,
+                                                    fitem.text)) {
+           show_help(pos->option,
+                     gettext_noop("Internal error! (Value invalid?)"));
+           FREE(fitem.text); 
+           break;
+         }
+         FREE(fitem.text); 
+         return;
+       case DLG_EXIT_HELP:
+         show_help(pos->option, pos->help);
+         break;
+       default:
+         break;
        }
-}
+       FREE(fitem.text); 
+       break;
 
-void show_textbox(const char *title, const char *text, int r, int c)
-{
-       int fd;
-
-       fd = CREAT(".help.tmp", 0777);
-       WRITE(fd, text, strlen(text));
-       CLOSE(fd);
-       while (dialog_textbox(title, ".help.tmp", r, c) < 0)
-               ;
-       UNLINK(".help.tmp");
-}
-
-void show_helptext(const char *title, const char *text)
-{
-       show_textbox(title, text, rows, cols);
-}
-
-static void show_help(struct menu *menu)
-{
-       const char *help;
-       char *helptext;
-       struct symbol *sym = menu->sym;
-
-       help = sym->help;
-       if (!help)
-               help = nohelp_text;
-       if (sym->name) {
-               helptext = malloc(strlen(sym->name) + strlen(help) + 16);
-               sprintf(helptext, "CONFIG_%s:\n\n%s", sym->name, help);
-               show_helptext(menu_get_prompt(menu), helptext);
-               free(helptext);
-       } else
-               show_helptext(menu_get_prompt(menu), help);
-}
-
-static void show_readme(void)
-{
-       show_textbox(NULL, readme_text, rows, cols);
-}
-
-static void conf_choice(struct menu *menu)
-{
-       const char *prompt = menu_get_prompt(menu);
-       struct menu *child;
-       struct symbol *active;
-
-       while (1) {
-               current_menu = menu;
-               active = sym_get_choice_value(menu->sym);
-               creset();
-               for (child = menu->list; child; child = child->next) {
-                       if (!menu_is_visible(child))
-                               continue;
-                       cmake();
-                       cset_tag(0, child);
-                       cprint_name("%s", menu_get_prompt(child));
-                       items[item_no - 1]->selected = (child->sym == active);
-               }
-
-               switch (dialog_checklist(prompt ? prompt : "Main Menu",
-                                       radiolist_instructions, 15, 70, 6,
-                                       item_no, items, FLAG_RADIO)) {
-               case 0:
-                       menu = first_sel_item(item_no, items)->data;
-                       if (!menu)
-                               break;
-                       sym_set_tristate_value(menu->sym, yes);
-                       return;
-               case 1:
-                       show_help(menu);
-                       break;
-               case 255:
-                       return;
-               }
+      case GNS_UInt64: 
+       fitem.text = MALLOC(64);
+       SNPRINTF(fitem.text,
+                64,
+                "%llu",
+                pos->value.UInt64.val);
+       fitem.text_len = strlen(fitem.text);
+       fitem.help = pos->help;
+       st = DLG_EXIT_HELP;
+       msel = 0;
+       while (st == DLG_EXIT_HELP) {
+         st = dlg_form(pos->option,
+                       "",
+                       20,
+                       70,
+                       15,
+                       1,
+                       &fitem,
+                       &msel);
+         switch (st) {
+         case DLG_EXIT_OK:
+           if (1 != sscanf(fitem.text,
+                           "%llu",
+                           &lval)) {
+             show_help(pos->option,
+                       gettext_noop("Invalid input, expecting integer."));
+             continue;
+           } 
+           if ( (lval < pos->value.UInt64.min) ||
+                (lval > pos->value.UInt64.max)) {
+             show_help(pos->option,
+                       gettext_noop("Value is not in legal range."));
+             continue;
+           }
+           if (0 != GC_set_configuration_value_number(cfg,
+                                                      ectx,
+                                                      pos->section,
+                                                      pos->option,
+                                                      lval)) {
+             show_help(pos->option,
+                       gettext_noop("Internal error! (Choice invalid?)"));
+             continue;
+           }
+           break;
+         case DLG_EXIT_HELP:
+           show_help(pos->option, pos->help);
+           break;
+         default:
+           break;
+         }
        }
-}
+       FREE(fitem.text); 
+       return;
+      default:
+       GE_BREAK(ectx, 0);
+       return;
+      } /* end switch type & type */
+      break;
 
-static void conf_string(struct menu *menu)
-{
-       const char *prompt = menu_get_prompt(menu);
+    default:
+      GE_BREAK(ectx, 0);
+      break;
 
-       while (1) {
-               char *heading;
-
-               switch (sym_get_type(menu->sym)) {
-               case S_INT:
-                       heading = (char *) inputbox_instructions_int;
-                       break;
-               case S_HEX:
-                       heading = (char *) inputbox_instructions_hex;
-                       break;
-               case S_STRING:
-                       heading = (char *) inputbox_instructions_string;
-                       break;
-               default:
-                       heading = "Internal mconf error!";
-                       /* panic? */;
-               }
-               
-               switch (dialog_inputbox(prompt ? prompt : "Main Menu",
-                       heading, 10, 75,
-                       sym_get_string_value(menu->sym))) {
-               case 0:
-                 if (sym_set_string_value(menu->sym, 
-                                          dialog_input_result))
-                               return;
-                       show_textbox(NULL, "You have made an invalid entry.", 
5, 43);
-                       break;
-               case 1:
-                       show_help(menu);
-                       break;
-               case 255:
-                       return;
-               }
-       }
+    } /* end switch type & Kind */    
+  } /* end while(1) */ 
 }
 
-static void conf_load(void)
-{
-       while (1) {
-               switch(dialog_inputbox(NULL, load_config_text, 11, 55,
-                                       filename)) {
-               case 0:
-                       if (!dialog_input_result[0])
-                               return;
-                       if (!conf_read(dialog_input_result))
-                               return;
-                       show_textbox(NULL, "File does not exist!", 5, 38);
-                       break;
-               case 1:
-                       show_helptext("Load Alternate Configuration", 
load_config_help);
-                       break;
-               case 255:
-                       return;
-               }
-       }
-}
 
-static void conf_cleanup() {
-#ifndef MINGW
-  tcsetattr(1, TCSAFLUSH, &ios_org);
-#endif
-  UNLINK(".help.tmp");
-  UNLINK("lxdialog.scrltmp");
-}
+int mconf_mainsetup_curses(int argc,
+                          const char **argv,
+                          struct PluginHandle * self,
+                          struct GE_Context * e,
+                          struct GC_Configuration * cfg,
+                          struct GNS_Context * gns,
+                          const char * filename,
+                          int is_daemon) {
+  int ret;
+  struct termios ios_org;
 
-
-int main_setup_ncurses(int argc,
-                      const char **argv,
-                      struct PluginHandle * self,
-                      struct GE_Context * ectx,
-                      struct GC_Configuration * cfg,
-                      struct GNS_Context * gns,
-                      const char * filename,
-                      int is_daemon) {
-  char *mode;
-  int stat;
-
-  backtitle = _("GNUnet Configuration");
-  mode = getenv("MENUCONFIG_MODE");
-  if (mode) {
-    if (!strcasecmp(mode, "single_menu"))
-      single_menu_mode = 1;
-  }
-
+  ectx = e;
 #ifndef MINGW
-  {
-    struct sigaction sa;
-    sa.sa_handler = winch_handler;
-    sigemptyset(&sa.sa_mask);
-    sa.sa_flags = SA_RESTART;
-    sigaction(SIGWINCH, &sa, NULL);
-  }
   tcgetattr(1, &ios_org);
 #endif
-  atexit(conf_cleanup);
-  init_dialog();
-  init_wsize();
-  conf(&rootmenu);
+  dialog_vars.backtitle = _("GNUnet Configuration");  
+  dialog_vars.item_help = 1;
+  dialog_vars.help_button = 1;
 
+  init_dialog(stdin, stderr);
 
+  run_menu(gns,
+          GNS_get_tree(gns),
+          cfg);
+
+  ret = 0;
   if ( (0 == GC_test_dirty(cfg)) &&
        (0 == ACCESS(filename, R_OK)) ) {
+    end_dialog();
     printf(_("Configuration unchanged, no need to save.\n"));    
+  } else {
+    dialog_vars.help_button = 0;
+    ret = dialog_yesno(NULL,
+                      _("Do you wish to save your new configuration?"),
+                      5, 60);
     end_dialog();
-    return 0;
-  }  
-  do {
-    stat = dialog_yesno(NULL,
-                       _("Do you wish to save your new configuration?"),
-                       5, 60);
-  } while (stat < 0);
-  end_dialog();
-  printf("\n\n");
-  if (stat == 0) {
-    if (0 != GC_write_configuration(cfg,
-                                   filename)) {
-      return 1;
+    if (ret == DLG_EXIT_OK) {
+      if (0 != GC_write_configuration(cfg,
+                                     filename)) {
+       /* error message already printed... */
+       ret = 1;
+      } else {
+       ret = 0;      
+      }
+      printf(_("\nEnd of configuration.\n"));
+    } else {
+      ret = 0;
+      printf(_("\nYour configuration changes were NOT saved.\n"));
     }
-    printf(_("End of configuration.\n"));
-  } else {
-    printf(_("Your configuration changes were NOT saved.\n"));
   }
-  return 0;
+
+#ifndef MINGW
+  tcsetattr(1, TCSAFLUSH, &ios_org);
+#endif
+  return ret;
 }

Modified: GNUnet/src/setup/ncurses/mconf.h
===================================================================
--- GNUnet/src/setup/ncurses/mconf.h    2006-09-06 00:22:25 UTC (rev 3365)
+++ GNUnet/src/setup/ncurses/mconf.h    2006-09-06 03:25:16 UTC (rev 3366)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2001, 2002, 2005 Christian Grothoff (and other contributing authors)
+     (C) 2001, 2002, 2005, 2006 Christian Grothoff (and other contributing 
authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -20,7 +20,7 @@
 
 
 /**
- * @file conf/mconf.h
+ * @file setup/ncurses/mconf.h
  * @brief GNUnet Setup
  * @author Nils Durner
  */

Deleted: GNUnet/src/setup/ncurses/mconf_checklist.c
===================================================================
--- GNUnet/src/setup/ncurses/mconf_checklist.c  2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_checklist.c  2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,376 +0,0 @@
-/*
- *  checklist.c -- implements the checklist box
- *
- *  ORIGINAL AUTHOR: Savio Lam (address@hidden)
- *     Stuart Herbert - address@hidden: radiolist extension
- *     Alessandro Rubini - address@hidden: merged the two
- *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_checklist.c
- * @author Savio Lam
- * @author Nils Durner
- */
-
-#include "mconf_dialog.h"
-
-static int list_width, check_x, item_x, checkflag;
-
-/*
- * Print list item
- */
-static void
-print_item (WINDOW * win, const char *item, int status,
-           int choice, int selected)
-{
-    int i;
-
-    /* Clear 'residue' of last item */
-    wattrset (win, menubox_attr);
-    wmove (win, choice, 0);
-    for (i = 0; i < list_width; i++)
-       waddch (win, ' ');
-
-    wmove (win, choice, check_x);
-    wattrset (win, selected ? check_selected_attr : check_attr);
-    if (checkflag == FLAG_CHECK)
-       wprintw (win, "[%c]", status ? 'X' : ' ');
-    else
-       wprintw (win, "(%c)", status ? 'X' : ' ');
-
-    wattrset (win, selected ? tag_selected_attr : tag_attr);
-    mvwaddch(win, choice, item_x, item[0]);
-    wattrset (win, selected ? item_selected_attr : item_attr);
-    waddstr (win, (char *)item+1);
-    if (selected) {
-       wmove (win, choice, check_x+1);
-       wrefresh (win);
-    }
-}
-
-/*
- * Print the scroll indicators.
- */
-static void
-print_arrows (WINDOW * win, int choice, int item_no, int scroll,
-               int y, int x, int height)
-{
-    wmove(win, y, x);
-
-    if (scroll > 0) {
-       wattrset (win, uarrow_attr);
-       waddch (win, ACS_UARROW);
-       waddstr (win, "(-)");
-    }
-    else {
-       wattrset (win, menubox_attr);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-    }
-
-   y = y + height + 1;
-   wmove(win, y, x);
-
-   if ((height < item_no) && (scroll + choice < item_no - 1)) {
-       wattrset (win, darrow_attr);
-       waddch (win, ACS_DARROW);
-       waddstr (win, "(+)");
-    }
-    else {
-       wattrset (win, menubox_border_attr);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-   }
-}
-
-/*
- *  Display the termination buttons
- */
-static void
-print_buttons( WINDOW *dialog, int height, int width, int selected)
-{
-    int x = width / 2 - 11;
-    int y = height - 2;
-
-    print_button (dialog, "Select", y, x, selected == 0);
-    print_button (dialog, " Help ", y, x + 14, selected == 1);
-
-    wmove(dialog, y, x+1 + 14*selected);
-    wrefresh (dialog);
-}
-
-/*
- * Display a dialog box with a list of options that can be turned on or off
- * The `flag' parameter is used to select between radiolist and checklist.
- */
-int
-dialog_checklist (const char *title, const char *prompt, int height, int width,
-       int list_height, int item_no, struct dialog_list_item **items, int flag)
-       
-{
-    int i, x, y, box_x, box_y;
-    int key = 0, button = 0, choice = 0, scroll_i = 0, max_choice, *status;
-    WINDOW *dialog, *list;
-
-    checkflag = flag;
-
-    /* Allocate space for storing item on/off status */
-    if ((status = malloc (sizeof (int) * item_no)) == NULL) {
-       endwin ();
-       fprintf (stderr,
-                "\nCan't allocate memory in dialog_checklist().\n");
-       exit (-1);
-    }
-
-    /* Initializes status */
-    for (i = 0; i < item_no; i++) {
-       status[i] = items[i]->selected;
-       if (!choice && status[i])
-            choice = i;
-    }
-
-    max_choice = GNUNET_MIN (list_height, item_no);
-
-    /* center dialog box on screen */
-    x = (COLS - width) / 2;
-    y = (LINES - height) / 2;
-
-    draw_shadow (stdscr, y, x, height, width);
-
-    dialog = newwin (height, width, y, x);
-    keypad (dialog, TRUE);
-
-    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-    wattrset (dialog, border_attr);
-    mvwaddch (dialog, height-3, 0, ACS_LTEE);
-    for (i = 0; i < width - 2; i++)
-       waddch (dialog, ACS_HLINE);
-    wattrset (dialog, dialog_attr);
-    waddch (dialog, ACS_RTEE);
-
-    if (title != NULL && (int)strlen(title) >= width-2 ) {
-       /* truncate long title -- mec */
-       char * title2 = malloc(width-2+1);
-       memcpy( title2, title, width-2 );
-       title2[width-2] = '\0';
-       title = title2;
-    }
-
-    if (title != NULL) {
-       wattrset (dialog, title_attr);
-       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
-       waddstr (dialog, (char *)title);
-       waddch (dialog, ' ');
-    }
-
-    wattrset (dialog, dialog_attr);
-    print_autowrap (dialog, prompt, width - 2, 1, 3);
-
-    list_width = width - 6;
-    box_y = height - list_height - 5;
-    box_x = (width - list_width) / 2 - 1;
-
-    /* create new window for the list */
-    list = subwin (dialog, list_height, list_width, y+box_y+1, x+box_x+1);
-
-    keypad (list, TRUE);
-
-    /* draw a box around the list items */
-    draw_box (dialog, box_y, box_x, list_height + 2, list_width + 2,
-             menubox_border_attr, menubox_attr);
-
-    /* Find length of longest item in order to center checklist */
-    check_x = 0;
-    for (i = 0; i < item_no; i++)
-      check_x = GNUNET_MAX (check_x, + (int) strlen (items[i]->name) + 4);
-
-    check_x = (list_width - check_x) / 2;
-    item_x = check_x + 4;
-
-    if (choice >= list_height) {
-       scroll_i = choice - list_height + 1;
-       choice -= scroll_i;
-    }
-
-    /* Print the list */
-    for (i = 0; i < max_choice; i++) {
-       print_item (list, items[scroll_i + i]->name,
-                   status[i+scroll_i], i, i == choice);
-    }
-
-    print_arrows(dialog, choice, item_no, scroll_i,
-                       box_y, box_x + check_x + 5, list_height);
-
-    print_buttons(dialog, height, width, 0);
-
-    wnoutrefresh (list);
-    wnoutrefresh (dialog);
-    doupdate ();
-
-    while (key != ESC) {
-       key = wgetch (dialog);
-
-       if (should_resize)
-               do_resize_dialog();
-
-       for (i = 0; i < max_choice; i++)
-            if (toupper(key) == toupper(items[scroll_i + i]->name[i]))
-                break;
-
-
-       if ( i < max_choice || key == KEY_UP || key == KEY_DOWN ||
-           key == '+' || key == '-' ) {
-           if (key == KEY_UP || key == '-') {
-               if (!choice) {
-                   if (!scroll_i)
-                       continue;
-                   /* Scroll list down */
-                   if (list_height > 1) {
-                       /* De-highlight current first item */
-                       print_item (list, items[scroll_i]->name,
-                                       status[scroll_i], 0, FALSE);
-                       scrollok (list, TRUE);
-                       wscrl (list, -1);
-                       scrollok (list, FALSE);
-                   }
-                   scroll_i--;
-                   print_item (list, items[scroll_i]->name,
-                               status[scroll_i], 0, TRUE);
-                   wnoutrefresh (list);
-
-                   print_arrows(dialog, choice, item_no, scroll_i,
-                               box_y, box_x + check_x + 5, list_height);
-
-                   wrefresh (dialog);
-
-                   continue;   /* wait for another key press */
-               } else
-                   i = choice - 1;
-           } else if (key == KEY_DOWN || key == '+') {
-               if (choice == max_choice - 1) {
-                   if (scroll_i + choice >= item_no - 1)
-                       continue;
-                   /* Scroll list up */
-                   if (list_height > 1) {
-                       /* De-highlight current last item before scrolling up */
-                       print_item (list, items[scroll_i + max_choice - 
1]->name,
-                                   status[scroll_i + max_choice - 1],
-                                   max_choice - 1, FALSE);
-                       scrollok (list, TRUE);
-                       scroll (list);
-                       scrollok (list, FALSE);
-                   }
-                   scroll_i++;
-                   print_item (list, items[scroll_i + max_choice - 1]->name,
-                               status[scroll_i + max_choice - 1],
-                               max_choice - 1, TRUE);
-                   wnoutrefresh (list);
-
-                   print_arrows(dialog, choice, item_no, scroll_i,
-                               box_y, box_x + check_x + 5, list_height);
-
-                   wrefresh (dialog);
-
-                   continue;   /* wait for another key press */
-               } else
-                   i = choice + 1;
-           }
-           if (i != choice) {
-               /* De-highlight current item */
-               print_item (list, items[scroll_i + choice]->name,
-                           status[scroll_i + choice], choice, FALSE);
-               /* Highlight new item */
-               choice = i;
-               print_item (list, items[scroll_i + choice]->name,
-                           status[scroll_i + choice], choice, TRUE);
-               wnoutrefresh (list);
-               wrefresh (dialog);
-           }
-           continue;           /* wait for another key press */
-       }
-       switch (key) {
-       case 'H':
-       case 'h':
-       case '?':
-           delwin (dialog);
-           free (status);
-           return 1;
-       case TAB:
-       case KEY_LEFT:
-       case KEY_RIGHT:
-           button = ((key == KEY_LEFT ? --button : ++button) < 0)
-                       ? 1 : (button > 1 ? 0 : button);
-
-           print_buttons(dialog, height, width, button);
-           wrefresh (dialog);
-           break;
-#ifdef KEY_RESIZE
-       case KEY_RESIZE:
-           button = -2;
-#endif
-       case 'S':
-       case 's':
-       case ' ':
-       case '\n':
-           if (!button) {
-               if (flag == FLAG_CHECK) {
-                   status[scroll_i + choice] = !status[scroll_i + choice];
-                   wmove (list, choice, check_x);
-                   wattrset (list, check_selected_attr);
-                   wprintw (list, "[%c]", status[scroll_i + choice] ? 'X' : ' 
');
-               } else {
-                   if (!status[scroll_i + choice]) {
-                       for (i = 0; i < item_no; i++)
-                           status[i] = 0;
-                       status[scroll_i + choice] = 1;
-                       for (i = 0; i < max_choice; i++)
-                           print_item (list, items[scroll_i + i]->name,
-                                       status[scroll_i + i], i, i == choice);
-                   }
-               }
-               wnoutrefresh (list);
-               wrefresh (dialog);
-
-               for (i = 0; i < item_no; i++) {
-                       items[i]->selected = status[i];
-               }
-            }
-           delwin (dialog);
-           free (status);
-           return button;
-       case 'X':
-       case 'x':
-           key = ESC;
-       case ESC:
-           break;
-       }
-
-       /* Now, update everything... */
-       doupdate ();
-    }
-
-
-    delwin (dialog);
-    free (status);
-    return -1;                 /* ESC pressed */
-}

Deleted: GNUnet/src/setup/ncurses/mconf_colors.h
===================================================================
--- GNUnet/src/setup/ncurses/mconf_colors.h     2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_colors.h     2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,167 +0,0 @@
-/*
- *  colors.h -- color attribute definitions
- *
- *  AUTHOR: Savio Lam (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_colors.h
- * @author Savio Lam
- * @author Nils Durner
- **/
-
-/*
- *   Default color definitions
- *
- *   *_FG = foreground
- *   *_BG = background
- *   *_HL = highlight?
- */
-#define SCREEN_FG                    COLOR_CYAN
-#define SCREEN_BG                    COLOR_BLUE
-#define SCREEN_HL                    TRUE
-
-#define SHADOW_FG                    COLOR_BLACK
-#define SHADOW_BG                    COLOR_BLACK
-#define SHADOW_HL                    TRUE
-
-#define DIALOG_FG                    COLOR_BLACK
-#define DIALOG_BG                    COLOR_WHITE
-#define DIALOG_HL                    FALSE
-
-#define TITLE_FG                     COLOR_YELLOW
-#define TITLE_BG                     COLOR_WHITE
-#define TITLE_HL                     TRUE
-
-#define BORDER_FG                    COLOR_WHITE
-#define BORDER_BG                    COLOR_WHITE
-#define BORDER_HL                    TRUE
-
-#define BUTTON_ACTIVE_FG             COLOR_WHITE
-#define BUTTON_ACTIVE_BG             COLOR_BLUE
-#define BUTTON_ACTIVE_HL             TRUE
-
-#define BUTTON_INACTIVE_FG           COLOR_BLACK
-#define BUTTON_INACTIVE_BG           COLOR_WHITE
-#define BUTTON_INACTIVE_HL           FALSE
-
-#define BUTTON_KEY_ACTIVE_FG         COLOR_WHITE
-#define BUTTON_KEY_ACTIVE_BG         COLOR_BLUE
-#define BUTTON_KEY_ACTIVE_HL         TRUE
-
-#define BUTTON_KEY_INACTIVE_FG       COLOR_RED
-#define BUTTON_KEY_INACTIVE_BG       COLOR_WHITE
-#define BUTTON_KEY_INACTIVE_HL       FALSE
-
-#define BUTTON_LABEL_ACTIVE_FG       COLOR_YELLOW
-#define BUTTON_LABEL_ACTIVE_BG       COLOR_BLUE
-#define BUTTON_LABEL_ACTIVE_HL       TRUE
-
-#define BUTTON_LABEL_INACTIVE_FG     COLOR_BLACK
-#define BUTTON_LABEL_INACTIVE_BG     COLOR_WHITE
-#define BUTTON_LABEL_INACTIVE_HL     TRUE
-
-#define INPUTBOX_FG                  COLOR_BLACK
-#define INPUTBOX_BG                  COLOR_WHITE
-#define INPUTBOX_HL                  FALSE
-
-#define INPUTBOX_BORDER_FG           COLOR_BLACK
-#define INPUTBOX_BORDER_BG           COLOR_WHITE
-#define INPUTBOX_BORDER_HL           FALSE
-
-#define SEARCHBOX_FG                 COLOR_BLACK
-#define SEARCHBOX_BG                 COLOR_WHITE
-#define SEARCHBOX_HL                 FALSE
-
-#define SEARCHBOX_TITLE_FG           COLOR_YELLOW
-#define SEARCHBOX_TITLE_BG           COLOR_WHITE
-#define SEARCHBOX_TITLE_HL           TRUE
-
-#define SEARCHBOX_BORDER_FG          COLOR_WHITE
-#define SEARCHBOX_BORDER_BG          COLOR_WHITE
-#define SEARCHBOX_BORDER_HL          TRUE
-
-#define POSITION_INDICATOR_FG        COLOR_YELLOW
-#define POSITION_INDICATOR_BG        COLOR_WHITE
-#define POSITION_INDICATOR_HL        TRUE
-
-#define MENUBOX_FG                   COLOR_BLACK
-#define MENUBOX_BG                   COLOR_WHITE
-#define MENUBOX_HL                   FALSE
-
-#define MENUBOX_BORDER_FG            COLOR_WHITE
-#define MENUBOX_BORDER_BG            COLOR_WHITE
-#define MENUBOX_BORDER_HL            TRUE
-
-#define ITEM_FG                      COLOR_BLACK
-#define ITEM_BG                      COLOR_WHITE
-#define ITEM_HL                      FALSE
-
-#define ITEM_SELECTED_FG             COLOR_WHITE
-#define ITEM_SELECTED_BG             COLOR_BLUE
-#define ITEM_SELECTED_HL             TRUE
-
-#define TAG_FG                       COLOR_YELLOW
-#define TAG_BG                       COLOR_WHITE
-#define TAG_HL                       TRUE
-
-#define TAG_SELECTED_FG              COLOR_YELLOW
-#define TAG_SELECTED_BG              COLOR_BLUE
-#define TAG_SELECTED_HL              TRUE
-
-#define TAG_KEY_FG                   COLOR_YELLOW
-#define TAG_KEY_BG                   COLOR_WHITE
-#define TAG_KEY_HL                   TRUE
-
-#define TAG_KEY_SELECTED_FG          COLOR_YELLOW
-#define TAG_KEY_SELECTED_BG          COLOR_BLUE
-#define TAG_KEY_SELECTED_HL          TRUE
-
-#define CHECK_FG                     COLOR_BLACK
-#define CHECK_BG                     COLOR_WHITE
-#define CHECK_HL                     FALSE
-
-#define CHECK_SELECTED_FG            COLOR_WHITE
-#define CHECK_SELECTED_BG            COLOR_BLUE
-#define CHECK_SELECTED_HL            TRUE
-
-#define UARROW_FG                    COLOR_GREEN
-#define UARROW_BG                    COLOR_WHITE
-#define UARROW_HL                    TRUE
-
-#define DARROW_FG                    COLOR_GREEN
-#define DARROW_BG                    COLOR_WHITE
-#define DARROW_HL                    TRUE
-
-/* End of default color definitions */
-
-#define C_ATTR(x,y)                  ((x ? A_BOLD : 0) | COLOR_PAIR((y)))
-#define COLOR_NAME_LEN               10
-#define COLOR_COUNT                  8
-
-/*
- * Global variables
- */
-
-typedef struct {
-    char name[COLOR_NAME_LEN];
-    int value;
-} color_names_st;
-
-extern color_names_st color_names[];
-extern int color_table[][3];

Deleted: GNUnet/src/setup/ncurses/mconf_dialog.h
===================================================================
--- GNUnet/src/setup/ncurses/mconf_dialog.h     2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_dialog.h     2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,217 +0,0 @@
-
-/*
- *  dialog.h -- common declarations for all dialog modules
- *
- *  AUTHOR: Savio Lam (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_dialog.h
- * @author Savio Lam
- * @author Nils Durner
- **/
-
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "platform.h"
-#include "bool.h"
-
-#ifdef CURSES_LOC
- #include CURSES_LOC
-#endif
-
-#if 1
-
-/*
- * Colors in ncurses 1.9.9e do not work properly since foreground and
- * background colors are OR'd rather than separately masked.  This version
- * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
- * with standard curses.  The simplest fix (to make this work with standard
- * curses) uses the wbkgdset() function, not used in the original hack.
- * Turn it off if we're building with 1.9.9e, since it just confuses things.
- */
-#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
-#define OLD_NCURSES 1
-#undef  wbkgdset
-#define wbkgdset(w,p) /*nothing*/
-#else
-#define OLD_NCURSES 0
-#endif
-
-#define TR(params) _tracef params
-
-#define ESC 27
-#define TAB 9
-#define MAX_LEN 2048
-#define BUF_SIZE (10*1024)
-#define GNUNET_MIN(x,y) (x < y ? x : y)
-#define GNUNET_MAX(x,y) (x > y ? x : y)
-
-
-#ifndef ACS_ULCORNER
-#define ACS_ULCORNER '+'
-#endif
-#ifndef ACS_LLCORNER
-#define ACS_LLCORNER '+'
-#endif
-#ifndef ACS_URCORNER
-#define ACS_URCORNER '+'
-#endif
-#ifndef ACS_LRCORNER
-#define ACS_LRCORNER '+'
-#endif
-#ifndef ACS_HLINE
-#define ACS_HLINE '-'
-#endif
-#ifndef ACS_VLINE
-#define ACS_VLINE '|'
-#endif
-#ifndef ACS_LTEE
-#define ACS_LTEE '+'
-#endif
-#ifndef ACS_RTEE
-#define ACS_RTEE '+'
-#endif
-#ifndef ACS_UARROW
-#define ACS_UARROW '^'
-#endif
-#ifndef ACS_DARROW
-#define ACS_DARROW 'v'
-#endif
-
-/*
- * Attribute names
- */
-#define screen_attr                   attributes[0]
-#define shadow_attr                   attributes[1]
-#define dialog_attr                   attributes[2]
-#define title_attr                    attributes[3]
-#define border_attr                   attributes[4]
-#define button_active_attr            attributes[5]
-#define button_inactive_attr          attributes[6]
-#define button_key_active_attr        attributes[7]
-#define button_key_inactive_attr      attributes[8]
-#define button_label_active_attr      attributes[9]
-#define button_label_inactive_attr    attributes[10]
-#define inputbox_attr                 attributes[11]
-#define inputbox_border_attr          attributes[12]
-#define searchbox_attr                attributes[13]
-#define searchbox_title_attr          attributes[14]
-#define searchbox_border_attr         attributes[15]
-#define position_indicator_attr       attributes[16]
-#define menubox_attr                  attributes[17]
-#define menubox_border_attr           attributes[18]
-#define item_attr                     attributes[19]
-#define item_selected_attr            attributes[20]
-#define tag_attr                      attributes[21]
-#define tag_selected_attr             attributes[22]
-#define tag_key_attr                  attributes[23]
-#define tag_key_selected_attr         attributes[24]
-#define check_attr                    attributes[25]
-#define check_selected_attr           attributes[26]
-#define uarrow_attr                   attributes[27]
-#define darrow_attr                   attributes[28]
-
-/* number of attributes */
-#define ATTRIBUTE_COUNT               29
-
-/*
- * Global variables
- */
-extern bool use_colors;
-extern bool should_resize;
-
-extern chtype attributes[];
-#endif
-
-extern char *backtitle;
-
-struct dialog_list_item {
-       char *name;
-       int namelen;
-       char type;
-       void *data;
-       int selected; /* Set to 1 by dialog_*() function. */
-};
-
-/*
- * Function prototypes
- */
-
-void init_dialog (void);
-void init_wsize(void);
-void end_dialog (void);
-void resize_dialog(int rows, int cols);
-void do_resize_dialog(void);
-void dialog_clear (void);
-#ifdef CURSES_LOC
-void attr_clear (WINDOW * win, int height, int width, chtype attr);
-void color_setup (void);
-void print_autowrap (WINDOW * win, const char *prompt, int width, int y, int 
x);
-void print_button (WINDOW * win, const char *label, int y, int x, int 
selected);
-void draw_box (WINDOW * win, int y, int x, int height, int width, chtype box,
-               chtype border);
-void draw_shadow (WINDOW * win, int y, int x, int height, int width);
-#endif
-
-int first_alpha (const char *string, const char *exempt);
-int dialog_yesno (const char *title, const char *prompt, int height, int 
width);
-int dialog_msgbox (const char *title, const char *prompt, int height,
-               int width, int pause);
-int dialog_textbox (const char *title, const char *file, int height, int 
width);
-int dialog_menu (const char *title, const char *prompt, int height, int width,
-               int menu_height, const char choice_type, const void *choice_ptr,
-               int item_no, struct dialog_list_item **items);
-int dialog_checklist (const char *title, const char *prompt, int height,
-               int width, int list_height, int item_no,
-               struct dialog_list_item **items, int flag);
-extern char dialog_input_result[];
-int dialog_inputbox (const char *title, const char *prompt, int height,
-               int width, const char *init);
-
-struct dialog_list_item *first_sel_item(int item_no,
-               struct dialog_list_item **items);
-
-void show_textbox(const char *title, const char *text, int r, int c);
-void show_helptext(const char *title, const char *text);
-
-/*
- * This is the base for fictitious keys, which activate
- * the buttons.
- *
- * Mouse-generated keys are the following:
- *   -- the first 32 are used as numbers, in addition to '0'-'9'
- *   -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
- *   -- uppercase chars are used to invoke the button (M_EVENT + 'O')
- */
-#ifdef CURSES_LOC
-#define M_EVENT (KEY_MAX+1)
-#endif
-
-
-/*
- * The `flag' parameter in checklist is used to select between
- * radiolist and checklist
- */
-#define FLAG_CHECK 1
-#define FLAG_RADIO 0

Deleted: GNUnet/src/setup/ncurses/mconf_inputbox.c
===================================================================
--- GNUnet/src/setup/ncurses/mconf_inputbox.c   2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_inputbox.c   2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,257 +0,0 @@
-/*
- *  inputbox.c -- implements the input box
- *
- *  ORIGINAL AUTHOR: Savio Lam (address@hidden)
- *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_inputbox.c
- * @author Savio Lam
- * @author Nils Durner
- */
-
-#include "mconf_dialog.h"
-
-char dialog_input_result[MAX_LEN + 1];
-
-/*
- *  Print the termination buttons
- */
-static void
-print_buttons(WINDOW *dialog, int height, int width, int selected)
-{
-    int x = width / 2 - 11;
-    int y = height - 2;
-
-    print_button (dialog, "  Ok  ", y, x, selected==0);
-    print_button (dialog, " Help ", y, x + 14, selected==1);
-
-    wmove(dialog, y, x+1+14*selected);
-    wrefresh(dialog);
-}
-
-/*
- * Display a dialog box for inputing a string
- */
-int
-dialog_inputbox (const char *title, const char *prompt, int height, int width,
-                const char *init)
-{
-    int i, x, y, box_y, box_x, box_width;
-    int input_x = 0, scroll = 0, key = 0, button = -1;
-    char *instr = dialog_input_result;
-    WINDOW *dialog;
-
-    /* center dialog box on screen */
-    x = (COLS - width) / 2;
-    y = (LINES - height) / 2;
-
-
-    draw_shadow (stdscr, y, x, height, width);
-
-    dialog = newwin (height, width, y, x);
-    keypad (dialog, TRUE);
-
-    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-    wattrset (dialog, border_attr);
-    mvwaddch (dialog, height-3, 0, ACS_LTEE);
-    for (i = 0; i < width - 2; i++)
-       waddch (dialog, ACS_HLINE);
-    wattrset (dialog, dialog_attr);
-    waddch (dialog, ACS_RTEE);
-
-    if (title != NULL && strlen(title) >= (unsigned int) width-2 ) {
-       /* truncate long title -- mec */
-       char * title2 = malloc(width-2+1);
-       memcpy( title2, title, width-2 );
-       title2[width-2] = '\0';
-       title = title2;
-    }
-
-    if (title != NULL) {
-       wattrset (dialog, title_attr);
-       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
-       waddstr (dialog, (char *)title);
-       waddch (dialog, ' ');
-    }
-
-    wattrset (dialog, dialog_attr);
-    print_autowrap (dialog, prompt, width - 2, 1, 3);
-
-    /* Draw the input field box */
-    box_width = width - 6;
-    getyx (dialog, y, x);
-    box_y = y + 2;
-    box_x = (width - box_width) / 2;
-    draw_box (dialog, y + 1, box_x - 1, 3, box_width + 2,
-             border_attr, dialog_attr);
-
-    print_buttons(dialog, height, width, 0);
-
-    /* Set up the initial value */
-    wmove (dialog, box_y, box_x);
-    wattrset (dialog, inputbox_attr);
-
-    if (!init)
-       instr[0] = '\0';
-    else
-       strcpy (instr, init);
-
-    input_x = strlen (instr);
-
-    if (input_x >= box_width) {
-       scroll = input_x - box_width + 1;
-       input_x = box_width - 1;
-       for (i = 0; i < box_width - 1; i++)
-           waddch (dialog, instr[scroll + i]);
-    } else
-       waddstr (dialog, instr);
-
-    wmove (dialog, box_y, box_x + input_x);
-
-    wrefresh (dialog);
-
-    while (key != ESC) {
-       key = wgetch (dialog);
-
-       if (should_resize)
-               do_resize_dialog();
-
-       if (button == -1) {     /* Input box selected */
-           switch (key) {
-           case TAB:
-           case KEY_UP:
-           case KEY_DOWN:
-               break;
-           case KEY_LEFT:
-               continue;
-           case KEY_RIGHT:
-               continue;
-           case KEY_BACKSPACE:
-           case 127:
-#ifdef MINGW
-                       case 8:
-#endif
-               if (input_x || scroll) {
-                   wattrset (dialog, inputbox_attr);
-                   if (!input_x) {
-                       scroll = scroll < box_width - 1 ?
-                           0 : scroll - (box_width - 1);
-                       wmove (dialog, box_y, box_x);
-                       for (i = 0; i < box_width; i++)
-                           waddch (dialog, instr[scroll + input_x + i] ?
-                                   instr[scroll + input_x + i] : ' ');
-                       input_x = strlen (instr) - scroll;
-                   } else
-                       input_x--;
-                   instr[scroll + input_x] = '\0';
-                   mvwaddch (dialog, box_y, input_x + box_x, ' ');
-                   wmove (dialog, box_y, input_x + box_x);
-                   wrefresh (dialog);
-               }
-               continue;
-           default:
-               if (key < 0x100 && isprint (key)) {
-                   if (scroll + input_x < MAX_LEN) {
-                       wattrset (dialog, inputbox_attr);
-                       instr[scroll + input_x] = key;
-                       instr[scroll + input_x + 1] = '\0';
-                       if (input_x == box_width - 1) {
-                           scroll++;
-                           wmove (dialog, box_y, box_x);
-                           for (i = 0; i < box_width - 1; i++)
-                               waddch (dialog, instr[scroll + i]);
-                       } else {
-                           wmove (dialog, box_y, input_x++ + box_x);
-                           waddch (dialog, key);
-                       }
-                       wrefresh (dialog);
-                   } else
-                       flash ();       /* Alarm user about overflow */
-                   continue;
-               }
-           }
-       }
-       switch (key) {
-       case 'O':
-       case 'o':
-           delwin (dialog);
-           return 0;
-       case 'H':
-       case 'h':
-           delwin (dialog);
-           return 1;
-       case KEY_UP:
-       case KEY_LEFT:
-           switch (button) {
-           case -1:
-               button = 1;     /* Indicates "Cancel" button is selected */
-               print_buttons(dialog, height, width, 1);
-               break;
-           case 0:
-               button = -1;    /* Indicates input box is selected */
-               print_buttons(dialog, height, width, 0);
-               wmove (dialog, box_y, box_x + input_x);
-               wrefresh (dialog);
-               break;
-           case 1:
-               button = 0;     /* Indicates "OK" button is selected */
-               print_buttons(dialog, height, width, 0);
-               break;
-           }
-           break;
-       case TAB:
-       case KEY_DOWN:
-       case KEY_RIGHT:
-           switch (button) {
-           case -1:
-               button = 0;     /* Indicates "OK" button is selected */
-               print_buttons(dialog, height, width, 0);
-               break;
-           case 0:
-               button = 1;     /* Indicates "Cancel" button is selected */
-               print_buttons(dialog, height, width, 1);
-               break;
-           case 1:
-               button = -1;    /* Indicates input box is selected */
-               print_buttons(dialog, height, width, 0);
-               wmove (dialog, box_y, box_x + input_x);
-               wrefresh (dialog);
-               break;
-           }
-           break;
-#ifdef KEY_RESIZE
-       case KEY_RESIZE:
-           button = -2;
-#endif
-       case ' ':
-       case '\n':
-           delwin (dialog);
-           return (button == -1 ? 0 : button);
-       case 'X':
-       case 'x':
-           key = ESC;
-       case ESC:
-           break;
-       }
-    }
-
-    delwin (dialog);
-    return -1;                 /* ESC pressed */
-}

Deleted: GNUnet/src/setup/ncurses/mconf_menubox.c
===================================================================
--- GNUnet/src/setup/ncurses/mconf_menubox.c    2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_menubox.c    2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,450 +0,0 @@
-/*
- *  menubox.c -- implements the menu box
- *
- *  ORIGINAL AUTHOR: Savio Lam (address@hidden)
- *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/*
- *  Changes by Clifford Wolf (address@hidden)
- *
- *  [ 1998-06-13 ]
- *
- *    *)  A bugfix for the Page-Down problem
- *
- *    *)  Formerly when I used Page Down and Page Up, the cursor would be set
- *        to the first position in the menu box.  Now lxdialog is a bit
- *        smarter and works more like other menu systems (just have a look at
- *        it).
- *
- *    *)  Formerly if I selected something my scrolling would be broken because
- *        lxdialog is re-invoked by the Menuconfig shell script, can't
- *        remember the last scrolling position, and just sets it so that the
- *        cursor is at the bottom of the box.  Now it writes the temporary file
- *        lxdialog.scrltmp which contains this information. The file is
- *        deleted by lxdialog if the user leaves a submenu or enters a new
- *        one, but it would be nice if Menuconfig could make another "rm -f"
- *        just to be sure.  Just try it out - you will recognise a difference!
- *
- *  [ 1998-06-14 ]
- *
- *    *)  Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files
- *        and menus change their size on the fly.
- *
- *    *)  If for some reason the last scrolling position is not saved by
- *        lxdialog, it sets the scrolling so that the selected item is in the
- *        middle of the menu box, not at the bottom.
- *
- * 02 January 1999, Michael Elizabeth Chastain (address@hidden)
- * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus.
- * This fixes a bug in Menuconfig where using ' ' to descend into menus
- * would leave mis-synchronized lxdialog.scrltmp files lying around,
- * fscanf would read in 'scroll', and eventually that value would get used.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_menubox.c
- * @author Savio Lam
- * @author Nils Durner
- */
-
-#include "mconf_dialog.h"
-
-static int menu_width, item_x;
-
-/*
- * Print menu item
- */
-static void
-print_item (WINDOW * win, const char *item, int choice, int selected, int 
hotkey)
-{
-    int j;
-    char menu_item[menu_width+1];
-
-    strncpy(menu_item, item, menu_width);
-    menu_item[menu_width] = 0;
-    j = first_alpha(menu_item, "YyNnMm");
-
-    /* Clear 'residue' of last item */
-    wattrset (win, menubox_attr);
-    wmove (win, choice, 0);
-#if OLD_NCURSES
-    {
-        int i;
-        for (i = 0; i < menu_width; i++)
-           waddch (win, ' ');
-    }
-#else
-    wclrtoeol(win);
-#endif
-    wattrset (win, selected ? item_selected_attr : item_attr);
-    mvwaddstr (win, choice, item_x, menu_item);
-    if (hotkey) {
-       wattrset (win, selected ? tag_key_selected_attr : tag_key_attr);
-       mvwaddch(win, choice, item_x+j, menu_item[j]);
-    }
-    if (selected) {
-       wmove (win, choice, item_x+1);
-       wnoutrefresh (win);
-    }
-}
-
-/*
- * Print the scroll indicators.
- */
-static void
-print_arrows (WINDOW * win, int item_no, int scroll,
-               int y, int x, int height)
-{
-    int cur_y, cur_x;
-
-    getyx(win, cur_y, cur_x);
-
-    wmove(win, y, x);
-
-    if (scroll > 0) {
-       wattrset (win, uarrow_attr);
-       waddch (win, ACS_UARROW);
-       waddstr (win, "(-)");
-    }
-    else {
-       wattrset (win, menubox_attr);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-    }
-
-   y = y + height + 1;
-   wmove(win, y, x);
-
-   if ((height < item_no) && (scroll + height < item_no)) {
-       wattrset (win, darrow_attr);
-       waddch (win, ACS_DARROW);
-       waddstr (win, "(+)");
-    }
-    else {
-       wattrset (win, menubox_border_attr);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-       waddch (win, ACS_HLINE);
-   }
-
-   wmove(win, cur_y, cur_x);
-}
-
-/*
- * Display the termination buttons.
- */
-static void
-print_buttons (WINDOW *win, int height, int width, int selected)
-{
-    int x = width / 2 - 16;
-    int y = height - 2;
-
-    print_button (win, "Select", y, x, selected == 0);
-    print_button (win, " Exit ", y, x + 12, selected == 1);
-    print_button (win, " Help ", y, x + 24, selected == 2);
-
-    wmove(win, y, x+1+12*selected);
-    wrefresh (win);
-}
-
-/*
- * Display a menu for choosing among a number of options
- */
-int
-dialog_menu (const char *title, const char *prompt, int height, int width,
-               int menu_height, const char choice_type, const void *choice_ptr,
-               int item_no, struct dialog_list_item ** items)
-{
-    int i, j, x, y, box_x, box_y;
-    int key = 0, button = 0, scroll_i = 0, choice = 0, first_item = 0, 
max_choice;
-    WINDOW *dialog, *menu;
-    FILE *f;
-
-    max_choice = GNUNET_MIN (menu_height, item_no);
-
-    /* center dialog box on screen */
-    x = (COLS - width) / 2;
-    y = (LINES - height) / 2;
-
-    draw_shadow (stdscr, y, x, height, width);
-
-    dialog = newwin (height, width, y, x);
-    keypad (dialog, TRUE);
-
-    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-    wattrset (dialog, border_attr);
-    mvwaddch (dialog, height - 3, 0, ACS_LTEE);
-    for (i = 0; i < width - 2; i++)
-       waddch (dialog, ACS_HLINE);
-    wattrset (dialog, dialog_attr);
-    wbkgdset (dialog, dialog_attr & A_COLOR);
-    waddch (dialog, ACS_RTEE);
-
-    if (title != NULL && (int) strlen(title) >= width-2 ) {
-       /* truncate long title -- mec */
-       char * title2 = malloc(width-2+1);
-       memcpy( title2, title, width-2 );
-       title2[width-2] = '\0';
-       title = title2;
-    }
-
-    if (title != NULL) {
-       wattrset (dialog, title_attr);
-       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
-       waddstr (dialog, (char *)title);
-       waddch (dialog, ' ');
-    }
-
-    wattrset (dialog, dialog_attr);
-    print_autowrap (dialog, prompt, width - 2, 1, 3);
-
-    menu_width = width - 6;
-    box_y = height - menu_height - 5;
-    box_x = (width - menu_width) / 2 - 1;
-
-    /* create new window for the menu */
-    menu = subwin (dialog, menu_height, menu_width,
-               y + box_y + 1, x + box_x + 1);
-    keypad (menu, TRUE);
-
-    /* draw a box around the menu items */
-    draw_box (dialog, box_y, box_x, menu_height + 2, menu_width + 2,
-             menubox_border_attr, menubox_attr);
-
-    /*
-     * Find length of longest item in order to center menu.
-     * Set 'choice' to default item.
-     */
-    item_x = 0;
-    for (i = 0; i < item_no; i++) {
-      item_x = GNUNET_MAX (item_x, GNUNET_MIN(menu_width, (int) strlen 
(items[i]->name) + 2));
-       if (choice_type == items[i]->type && choice_ptr == items[i]->data)
-               choice = i;
-    }
-
-    item_x = (menu_width - item_x) / 2;
-
-    /* get the scroll info from the temp file */
-    if ( (f=FOPEN("/tmp/lxdialog.scrltmp","r")) != NULL ) {
-       if ( (fscanf(f,"%d\n",&scroll_i) == 1) && (scroll_i <= choice) &&
-            (scroll_i+max_choice > choice) && (scroll_i >= 0) &&
-            (scroll_i+max_choice <= item_no) ) {
-           first_item = scroll_i;
-           choice = choice - scroll_i;
-           fclose(f);
-       } else {
-           scroll_i=0;
-           REMOVE("/tmp/lxdialog.scrltmp");
-           fclose(f);
-           f=NULL;
-       }
-    }
-    if ( (choice >= max_choice) || (f==NULL && choice >= max_choice/2) ) {
-       if (choice >= item_no-max_choice/2)
-           scroll_i = first_item = item_no-max_choice;
-       else
-           scroll_i = first_item = choice - max_choice/2;
-       choice = choice - scroll_i;
-    }
-
-    /* Print the menu */
-    for (i=0; i < max_choice; i++) {
-       print_item (menu, items[first_item + i]->name, i, i == choice,
-                    (items[first_item + i]->type != ':'));
-    }
-
-    wnoutrefresh (menu);
-
-    print_arrows(dialog, item_no, scroll_i,
-                box_y, box_x+item_x+1, menu_height);
-
-    print_buttons (dialog, height, width, 0);
-    wmove (menu, choice, item_x+1);
-    wrefresh (menu);
-
-    while (key != ESC) {
-       key = wgetch(menu);
-
-       if (should_resize)
-               do_resize_dialog();
-
-       if (key < 256 && isalpha(key)) key = tolower(key);
-
-       if (strchr("ynm", key))
-               i = max_choice;
-       else {
-        for (i = choice+1; i < max_choice; i++) {
-               j = first_alpha(items[scroll_i+i]->name, "YyNnMm");
-               if (key == tolower(items[scroll_i+i]->name[j]))
-                       break;
-       }
-       if (i == max_choice)
-                       for (i = 0; i < max_choice; i++) {
-                       j = first_alpha(items[scroll_i+i]->name, "YyNnMm");
-                       if (key == tolower(items[scroll_i+i]->name[j]))
-                               break;
-               }
-       }
-
-       if (i < max_choice ||
-            key == KEY_UP || key == KEY_DOWN ||
-            key == '-' || key == '+' ||
-            key == KEY_PPAGE || key == KEY_NPAGE) {
-
-            print_item (menu, items[scroll_i+choice]->name, choice, FALSE,
-                       (items[scroll_i+choice]->type != ':'));
-
-           if (key == KEY_UP || key == '-') {
-                if (choice < 2 && scroll_i) {
-                   /* Scroll menu down */
-                    scrollok (menu, TRUE);
-                    wscrl (menu, -1);
-                    scrollok (menu, FALSE);
-
-                    scroll_i--;
-
-                    print_item (menu, items[scroll_i]->name, 0, FALSE,
-                               (items[scroll_i]->type != ':'));
-               } else
-                   choice = GNUNET_MAX(choice - 1, 0);
-
-           } else if (key == KEY_DOWN || key == '+')  {
-
-               print_item (menu, items[scroll_i+choice]->name, choice, FALSE,
-                                (items[scroll_i+choice]->type != ':'));
-
-                if ((choice > max_choice-3) &&
-                    (scroll_i + max_choice < item_no)
-                   ) {
-                   /* Scroll menu up */
-                   scrollok (menu, TRUE);
-                    scroll (menu);
-                    scrollok (menu, FALSE);
-
-                    scroll_i++;
-
-                    print_item (menu, items[scroll_i + max_choice - 1]->name,
-                               max_choice-1, FALSE,
-                               (items[scroll_i + max_choice - 1]->type != 
':'));
-                } else
-                    choice = GNUNET_MIN(choice+1, max_choice-1);
-
-           } else if (key == KEY_PPAGE) {
-               scrollok (menu, TRUE);
-                for (i=0; (i < max_choice); i++) {
-                    if (scroll_i > 0) {
-                       wscrl (menu, -1);
-                       scroll_i--;
-                       print_item (menu, items[scroll_i]->name, 0, FALSE,
-                       (items[scroll_i]->type != ':'));
-                    } else {
-                        if (choice > 0)
-                            choice--;
-                    }
-                }
-                scrollok (menu, FALSE);
-
-            } else if (key == KEY_NPAGE) {
-                for (i=0; (i < max_choice); i++) {
-                    if (scroll_i+max_choice < item_no) {
-                       scrollok (menu, TRUE);
-                       scroll(menu);
-                       scrollok (menu, FALSE);
-                       scroll_i++;
-                       print_item (menu, items[scroll_i + max_choice - 
1]->name,
-                                   max_choice-1, FALSE,
-                                   (items[scroll_i + max_choice - 1]->type != 
':'));
-                   } else {
-                       if (choice+1 < max_choice)
-                           choice++;
-                   }
-                }
-
-            } else
-                choice = i;
-
-            print_item (menu, items[scroll_i + choice]->name, choice, TRUE,
-                       (items[scroll_i + choice]->type != ':'));
-
-            print_arrows(dialog, item_no, scroll_i,
-                         box_y, box_x+item_x+1, menu_height);
-
-            wnoutrefresh (dialog);
-            wrefresh (menu);
-
-           continue;           /* wait for another key press */
-        }
-
-       switch (key) {
-       case KEY_LEFT:
-       case TAB:
-       case KEY_RIGHT:
-           button = ((key == KEY_LEFT ? --button : ++button) < 0)
-                       ? 2 : (button > 2 ? 0 : button);
-
-           print_buttons(dialog, height, width, button);
-           wrefresh (menu);
-           break;
-#ifdef KEY_RESIZE
-       case KEY_RESIZE:
-#endif
-       case 's':
-       case 'y':
-       case 'n':
-       case 'm':
-       case ' ':
-           /* save scroll info */
-           if ( (f=FOPEN("/tmp/lxdialog.scrltmp","w")) != NULL ) {
-               fprintf(f,"%d\n",scroll_i);
-               fclose(f);
-           }
-           delwin (dialog);
-           items[scroll_i + choice]->selected = 1;
-            switch (key) {
-            case 's': return 3;
-            case 'y': return 3;
-            case 'n': return 4;
-            case 'm': return 5;
-            case ' ': return 6;
-            }
-           return -2;
-       case 'h':
-       case '?':
-           button = 2;
-       case '\n':
-           delwin (dialog);
-           items[scroll_i + choice]->selected = 1;
-
-           REMOVE("/tmp/lxdialog.scrltmp");
-           return button;
-       case 'e':
-       case 'x':
-           key = ESC;
-       case ESC:
-           break;
-       }
-    }
-
-    delwin (dialog);
-    REMOVE("/tmp/lxdialog.scrltmp");
-    return -1;                 /* ESC pressed */
-}

Deleted: GNUnet/src/setup/ncurses/mconf_msgbox.c
===================================================================
--- GNUnet/src/setup/ncurses/mconf_msgbox.c     2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_msgbox.c     2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,99 +0,0 @@
-/*
- *  msgbox.c -- implements the message box and info box
- *
- *  ORIGINAL AUTHOR: Savio Lam (address@hidden)
- *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_msgbox.c
- * @author Savio Lam
- * @author Nils Durner
- */
-
-#include "mconf_dialog.h"
-
-/*
- * Display a message box. Program will pause and display an "OK" button
- * if the parameter 'pause' is non-zero.
- */
-int
-dialog_msgbox (const char *title, const char *prompt, int height, int width,
-               int pause)
-{
-    int i, x, y, key = 0;
-    WINDOW *dialog;
-
-    /* center dialog box on screen */
-    x = (COLS - width) / 2;
-    y = (LINES - height) / 2;
-
-    draw_shadow (stdscr, y, x, height, width);
-
-    dialog = newwin (height, width, y, x);
-    keypad (dialog, TRUE);
-
-    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-
-    if (title != NULL && strlen(title) >= (unsigned int) width-2 ) {
-       /* truncate long title -- mec */
-       char * title2 = malloc(width-2+1);
-       memcpy( title2, title, width-2 );
-       title2[width-2] = '\0';
-       title = title2;
-    }
-
-    if (title != NULL) {
-       wattrset (dialog, title_attr);
-       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
-       waddstr (dialog, (char *)title);
-       waddch (dialog, ' ');
-    }
-    wattrset (dialog, dialog_attr);
-    print_autowrap (dialog, prompt, width - 2, 1, 2);
-
-    if (pause) {
-       wattrset (dialog, border_attr);
-       mvwaddch (dialog, height - 3, 0, ACS_LTEE);
-       for (i = 0; i < width - 2; i++)
-           waddch (dialog, ACS_HLINE);
-       wattrset (dialog, dialog_attr);
-       waddch (dialog, ACS_RTEE);
-
-       print_button (dialog, "  Ok  ",
-                     height - 2, width / 2 - 4, TRUE);
-
-       wrefresh (dialog);
-       while (key != ESC && key != '\n' && key != ' ' &&
-               key != 'O' && key != 'o' && key != 'X' && key != 'x'
-#ifdef KEY_RESIZE
-              && key != KEY_RESIZE
-#endif
-              ) {
-           key = wgetch (dialog);
-           if (should_resize)
-               do_resize_dialog ();
-       }
-    } else {
-       key = '\n';
-       wrefresh (dialog);
-    }
-
-    delwin (dialog);
-    return key == ESC ? -1 : 0;
-}

Deleted: GNUnet/src/setup/ncurses/mconf_textbox.c
===================================================================
--- GNUnet/src/setup/ncurses/mconf_textbox.c    2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_textbox.c    2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,576 +0,0 @@
-/*
- *  textbox.c -- implements the text box
- *
- *  ORIGINAL AUTHOR: Savio Lam (address@hidden)
- *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_textbox.c
- * @author Savio Lam
- * @author Nils Durner
- */
-
-#include "platform.h"
-#include "gnunet_util.h"
-#include "mconf_dialog.h"
-
-static void back_lines (int n);
-static void print_page (WINDOW * win, int height, int width);
-static void print_line (WINDOW * win, int row, int width);
-static char *get_line (void);
-static void print_position (WINDOW * win, int height, int width);
-
-static int hscroll, fd, file_size, bytes_read;
-static int begin_reached = 1, end_reached, page_length;
-static char *buf, *page;
-
-/*
- * Display text from a file in a dialog box.
- */
-int
-dialog_textbox (const char *title, const char *file, int height, int width)
-{
-    int i, x, y, cur_x, cur_y, fpos, key = 0;
-    int passed_end;
-    char search_term[MAX_LEN + 1];
-    WINDOW *dialog, *text;
-
-    search_term[0] = '\0';     /* no search term entered yet */
-
-    /* Open input file for reading */
-    if ((fd = fileopen(file, O_RDONLY)) == -1) {
-       endwin ();
-       fprintf (stderr,
-                "\nCan't open input file in dialog_textbox().\n");
-       exit (-1);
-    }
-    /* Get file size. Actually, 'file_size' is the real file size - 1,
-       since it's only the last byte offset from the beginning */
-    if ((file_size = lseek (fd, 0, SEEK_END)) == -1) {
-       endwin ();
-       fprintf (stderr, "\nError getting file size in dialog_textbox().\n");
-       exit (-1);
-    }
-    /* Restore file pointer to beginning of file after getting file size */
-    if (lseek (fd, 0, SEEK_SET) == -1) {
-       endwin ();
-       fprintf (stderr, "\nError moving file pointer in dialog_textbox().\n");
-       exit (-1);
-    }
-    /* Allocate space for read buffer */
-    if ((buf = malloc (BUF_SIZE + 1)) == NULL) {
-       endwin ();
-       fprintf (stderr, "\nCan't allocate memory in dialog_textbox().\n");
-       exit (-1);
-    }
-    if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
-       endwin ();
-       fprintf (stderr, "\nError reading file in dialog_textbox().\n");
-       exit (-1);
-    }
-    buf[bytes_read] = '\0';    /* mark end of valid data */
-    page = buf;                        /* page is pointer to start of page to 
be displayed */
-
-    /* center dialog box on screen */
-    x = (COLS - width) / 2;
-    y = (LINES - height) / 2;
-
-
-    draw_shadow (stdscr, y, x, height, width);
-
-    dialog = newwin (height, width, y, x);
-    keypad (dialog, TRUE);
-
-    /* Create window for text region, used for scrolling text */
-    text = subwin (dialog, height - 4, width - 2, y + 1, x + 1);
-    wattrset (text, dialog_attr);
-    wbkgdset (text, dialog_attr & A_COLOR);
-
-    keypad (text, TRUE);
-
-    /* register the new window, along with its borders */
-    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-
-    wattrset (dialog, border_attr);
-    mvwaddch (dialog, height-3, 0, ACS_LTEE);
-    for (i = 0; i < width - 2; i++)
-       waddch (dialog, ACS_HLINE);
-    wattrset (dialog, dialog_attr);
-    wbkgdset (dialog, dialog_attr & A_COLOR);
-    waddch (dialog, ACS_RTEE);
-
-    if (title != NULL && strlen(title) >= (unsigned int)width-2 ) {
-       /* truncate long title -- mec */
-       char * title2 = malloc(width-2+1);
-       memcpy( title2, title, width-2 );
-       title2[width-2] = '\0';
-       title = title2;
-    }
-
-    if (title != NULL) {
-       wattrset (dialog, title_attr);
-       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
-       waddstr (dialog, (char *)title);
-       waddch (dialog, ' ');
-    }
-    print_button (dialog, " Exit ", height - 2, width / 2 - 4, TRUE);
-    wnoutrefresh (dialog);
-    getyx (dialog, cur_y, cur_x);      /* Save cursor position */
-
-    /* Print first page of text */
-    attr_clear (text, height - 4, width - 2, dialog_attr);
-    print_page (text, height - 4, width - 2);
-    print_position (dialog, height, width);
-    wmove (dialog, cur_y, cur_x);      /* Restore cursor position */
-    wrefresh (dialog);
-
-    while ((key != ESC) && (key != '\n')) {
-       key = wgetch (dialog);
-
-       if (should_resize)
-               do_resize_dialog();
-
-       switch (key) {
-#ifdef KEY_RESIZE
-       case KEY_RESIZE:
-#endif
-       case 'E':               /* Exit */
-       case 'e':
-       case 'X':
-       case 'x':
-           delwin (dialog);
-           free (buf);
-           close (fd);
-#ifdef KEY_RESIZE
-           return key == KEY_RESIZE ? -2 : 0;
-#else
-           return 0;
-#endif
-       case 'g':               /* First page */
-       case KEY_HOME:
-           if (!begin_reached) {
-               begin_reached = 1;
-               /* First page not in buffer? */
-               if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
-                   endwin ();
-                   fprintf (stderr,
-                     "\nError moving file pointer in dialog_textbox().\n");
-                   exit (-1);
-               }
-               if (fpos > bytes_read) {        /* Yes, we have to read it in */
-                   if (lseek (fd, 0, SEEK_SET) == -1) {
-                       endwin ();
-                       fprintf (stderr, "\nError moving file pointer in "
-                                "dialog_textbox().\n");
-                       exit (-1);
-                   }
-                   if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
-                       endwin ();
-                       fprintf (stderr,
-                            "\nError reading file in dialog_textbox().\n");
-                       exit (-1);
-                   }
-                   buf[bytes_read] = '\0';
-               }
-               page = buf;
-               print_page (text, height - 4, width - 2);
-               print_position (dialog, height, width);
-               wmove (dialog, cur_y, cur_x);   /* Restore cursor position */
-               wrefresh (dialog);
-           }
-           break;
-       case 'G':               /* Last page */
-       case KEY_END:
-
-           end_reached = 1;
-           /* Last page not in buffer? */
-           if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
-               endwin ();
-               fprintf (stderr,
-                     "\nError moving file pointer in dialog_textbox().\n");
-               exit (-1);
-           }
-           if (fpos < file_size) {     /* Yes, we have to read it in */
-               if (lseek (fd, -BUF_SIZE, SEEK_END) == -1) {
-                   endwin ();
-                   fprintf (stderr,
-                     "\nError moving file pointer in dialog_textbox().\n");
-                   exit (-1);
-               }
-               if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
-                   endwin ();
-                   fprintf (stderr,
-                            "\nError reading file in dialog_textbox().\n");
-                   exit (-1);
-               }
-               buf[bytes_read] = '\0';
-           }
-           page = buf + bytes_read;
-           back_lines (height - 4);
-           print_page (text, height - 4, width - 2);
-           print_position (dialog, height, width);
-           wmove (dialog, cur_y, cur_x);       /* Restore cursor position */
-           wrefresh (dialog);
-           break;
-       case 'K':               /* Previous line */
-       case 'k':
-       case KEY_UP:
-           if (!begin_reached) {
-               back_lines (page_length + 1);
-
-               /* We don't call print_page() here but use scrolling to ensure
-                  faster screen update. However, 'end_reached' and
-                  'page_length' should still be updated, and 'page' should
-                  point to start of next page. This is done by calling
-                  get_line() in the following 'for' loop. */
-               scrollok (text, TRUE);
-               wscrl (text, -1);       /* Scroll text region down one line */
-               scrollok (text, FALSE);
-               page_length = 0;
-               passed_end = 0;
-               for (i = 0; i < height - 4; i++) {
-                   if (!i) {
-                       /* print first line of page */
-                       print_line (text, 0, width - 2);
-                       wnoutrefresh (text);
-                   } else
-                       /* Called to update 'end_reached' and 'page' */
-                       get_line ();
-                   if (!passed_end)
-                       page_length++;
-                   if (end_reached && !passed_end)
-                       passed_end = 1;
-               }
-
-               print_position (dialog, height, width);
-               wmove (dialog, cur_y, cur_x);   /* Restore cursor position */
-               wrefresh (dialog);
-           }
-           break;
-       case 'B':               /* Previous page */
-       case 'b':
-       case KEY_PPAGE:
-           if (begin_reached)
-               break;
-           back_lines (page_length + height - 4);
-           print_page (text, height - 4, width - 2);
-           print_position (dialog, height, width);
-           wmove (dialog, cur_y, cur_x);
-           wrefresh (dialog);
-           break;
-       case 'J':               /* Next line */
-       case 'j':
-       case KEY_DOWN:
-           if (!end_reached) {
-               begin_reached = 0;
-               scrollok (text, TRUE);
-               scroll (text);  /* Scroll text region up one line */
-               scrollok (text, FALSE);
-               print_line (text, height - 5, width - 2);
-               wnoutrefresh (text);
-               print_position (dialog, height, width);
-               wmove (dialog, cur_y, cur_x);   /* Restore cursor position */
-               wrefresh (dialog);
-           }
-           break;
-       case KEY_NPAGE:         /* Next page */
-       case ' ':
-           if (end_reached)
-               break;
-
-           begin_reached = 0;
-           print_page (text, height - 4, width - 2);
-           print_position (dialog, height, width);
-           wmove (dialog, cur_y, cur_x);
-           wrefresh (dialog);
-           break;
-       case '0':               /* Beginning of line */
-       case 'H':               /* Scroll left */
-       case 'h':
-       case KEY_LEFT:
-           if (hscroll <= 0)
-               break;
-
-           if (key == '0')
-               hscroll = 0;
-           else
-               hscroll--;
-           /* Reprint current page to scroll horizontally */
-           back_lines (page_length);
-           print_page (text, height - 4, width - 2);
-           wmove (dialog, cur_y, cur_x);
-           wrefresh (dialog);
-           break;
-       case 'L':               /* Scroll right */
-       case 'l':
-       case KEY_RIGHT:
-           if (hscroll >= MAX_LEN)
-               break;
-           hscroll++;
-           /* Reprint current page to scroll horizontally */
-           back_lines (page_length);
-           print_page (text, height - 4, width - 2);
-           wmove (dialog, cur_y, cur_x);
-           wrefresh (dialog);
-           break;
-       case ESC:
-           break;
-       }
-    }
-
-    delwin (dialog);
-    free (buf);
-    close (fd);
-    return 1;                  /* ESC pressed */
-}
-
-/*
- * Go back 'n' lines in text file. Called by dialog_textbox().
- * 'page' will be updated to point to the desired line in 'buf'.
- */
-static void
-back_lines (int n)
-{
-    int i, fpos;
-
-    begin_reached = 0;
-    /* We have to distinguish between end_reached and !end_reached
-       since at end of file, the line is not ended by a '\n'.
-       The code inside 'if' basically does a '--page' to move one
-       character backward so as to skip '\n' of the previous line */
-    if (!end_reached) {
-       /* Either beginning of buffer or beginning of file reached? */
-       if (page == buf) {
-           if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
-               endwin ();
-               fprintf (stderr, "\nError moving file pointer in "
-                        "back_lines().\n");
-               exit (-1);
-           }
-           if (fpos > bytes_read) {    /* Not beginning of file yet */
-               /* We've reached beginning of buffer, but not beginning of
-                  file yet, so read previous part of file into buffer.
-                  Note that we only move backward for BUF_SIZE/2 bytes,
-                  but not BUF_SIZE bytes to avoid re-reading again in
-                  print_page() later */
-               /* Really possible to move backward BUF_SIZE/2 bytes? */
-               if (fpos < BUF_SIZE / 2 + bytes_read) {
-                   /* No, move less then */
-                   if (lseek (fd, 0, SEEK_SET) == -1) {
-                       endwin ();
-                       fprintf (stderr, "\nError moving file pointer in "
-                                "back_lines().\n");
-                       exit (-1);
-                   }
-                   page = buf + fpos - bytes_read;
-               } else {        /* Move backward BUF_SIZE/2 bytes */
-                   if (lseek (fd, -(BUF_SIZE / 2 + bytes_read), SEEK_CUR)
-                       == -1) {
-                       endwin ();
-                       fprintf (stderr, "\nError moving file pointer "
-                                "in back_lines().\n");
-                       exit (-1);
-                   }
-                   page = buf + BUF_SIZE / 2;
-               }
-               if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
-                   endwin ();
-                   fprintf (stderr, "\nError reading file in back_lines().\n");
-                   exit (-1);
-               }
-               buf[bytes_read] = '\0';
-           } else {            /* Beginning of file reached */
-               begin_reached = 1;
-               return;
-           }
-       }
-       if (*(--page) != '\n') {        /* '--page' here */
-           /* Something's wrong... */
-           endwin ();
-           fprintf (stderr, "\nInternal error in back_lines().\n");
-           exit (-1);
-       }
-    }
-    /* Go back 'n' lines */
-    for (i = 0; i < n; i++)
-       do {
-           if (page == buf) {
-               if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
-                   endwin ();
-                   fprintf (stderr,
-                         "\nError moving file pointer in back_lines().\n");
-                   exit (-1);
-               }
-               if (fpos > bytes_read) {
-                   /* Really possible to move backward BUF_SIZE/2 bytes? */
-                   if (fpos < BUF_SIZE / 2 + bytes_read) {
-                       /* No, move less then */
-                       if (lseek (fd, 0, SEEK_SET) == -1) {
-                           endwin ();
-                           fprintf (stderr, "\nError moving file pointer "
-                                    "in back_lines().\n");
-                           exit (-1);
-                       }
-                       page = buf + fpos - bytes_read;
-                   } else {    /* Move backward BUF_SIZE/2 bytes */
-                       if (lseek (fd, -(BUF_SIZE / 2 + bytes_read),
-                                  SEEK_CUR) == -1) {
-                           endwin ();
-                           fprintf (stderr, "\nError moving file pointer"
-                                    " in back_lines().\n");
-                           exit (-1);
-                       }
-                       page = buf + BUF_SIZE / 2;
-                   }
-                   if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
-                       endwin ();
-                       fprintf (stderr, "\nError reading file in "
-                                "back_lines().\n");
-                       exit (-1);
-                   }
-                   buf[bytes_read] = '\0';
-               } else {        /* Beginning of file reached */
-                   begin_reached = 1;
-                   return;
-               }
-           }
-       } while (*(--page) != '\n');
-    page++;
-}
-
-/*
- * Print a new page of text. Called by dialog_textbox().
- */
-static void
-print_page (WINDOW * win, int height, int width)
-{
-    int i, passed_end = 0;
-
-    page_length = 0;
-    for (i = 0; i < height; i++) {
-       print_line (win, i, width);
-       if (!passed_end)
-           page_length++;
-       if (end_reached && !passed_end)
-           passed_end = 1;
-    }
-    wnoutrefresh (win);
-}
-
-/*
- * Print a new line of text. Called by dialog_textbox() and print_page().
- */
-static void
-print_line (WINDOW * win, int row, int width)
-{
-    int y, x;
-    char *line;
-
-    line = get_line ();
-    line += GNUNET_MIN ((int)strlen (line), hscroll);  /* Scroll horizontally 
*/
-    wmove (win, row, 0);       /* move cursor to correct line */
-    waddch (win, ' ');
-    waddnstr (win, line, GNUNET_MIN ((int)strlen (line), width - 2));
-
-    getyx (win, y, x);
-    /* Clear 'residue' of previous line */
-#if OLD_NCURSES
-    {
-        int i;
-        for (i = 0; i < width - x; i++)
-           waddch (win, ' ');
-    }
-#else
-    wclrtoeol(win);
-#endif
-}
-
-/*
- * Return current line of text. Called by dialog_textbox() and print_line().
- * 'page' should point to start of current line before calling, and will be
- * updated to point to start of next line.
- */
-static char *
-get_line (void)
-{
-    int i = 0, fpos;
-    static char line[MAX_LEN + 1];
-
-    end_reached = 0;
-    while (*page != '\n') {
-       if (*page == '\0') {
-           /* Either end of file or end of buffer reached */
-           if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
-               endwin ();
-               fprintf (stderr, "\nError moving file pointer in "
-                        "get_line().\n");
-               exit (-1);
-           }
-           if (fpos < file_size) {     /* Not end of file yet */
-               /* We've reached end of buffer, but not end of file yet,
-                  so read next part of file into buffer */
-               if ((bytes_read = read (fd, buf, BUF_SIZE)) == -1) {
-                   endwin ();
-                   fprintf (stderr, "\nError reading file in get_line().\n");
-                   exit (-1);
-               }
-               buf[bytes_read] = '\0';
-               page = buf;
-           } else {
-               if (!end_reached)
-                   end_reached = 1;
-               break;
-           }
-       } else if (i < MAX_LEN)
-           line[i++] = *(page++);
-       else {
-           /* Truncate lines longer than MAX_LEN characters */
-           if (i == MAX_LEN)
-               line[i++] = '\0';
-           page++;
-       }
-    }
-    if (i <= MAX_LEN)
-       line[i] = '\0';
-    if (!end_reached)
-       page++;                 /* move pass '\n' */
-
-    return line;
-}
-
-/*
- * Print current position
- */
-static void
-print_position (WINDOW * win, int height, int width)
-{
-    int fpos, percent;
-
-    if ((fpos = lseek (fd, 0, SEEK_CUR)) == -1) {
-       endwin ();
-       fprintf (stderr, "\nError moving file pointer in print_position().\n");
-       exit (-1);
-    }
-    wattrset (win, position_indicator_attr);
-    wbkgdset (win, position_indicator_attr & A_COLOR);
-    percent = !file_size ?
-       100 : ((fpos - bytes_read + page - buf) * 100) / file_size;
-    wmove (win, height - 3, width - 9);
-    wprintw (win, "(%3d%%)", percent);
-}

Deleted: GNUnet/src/setup/ncurses/mconf_util.c
===================================================================
--- GNUnet/src/setup/ncurses/mconf_util.c       2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_util.c       2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,438 +0,0 @@
-/*
- *  util.c
- *
- *  ORIGINAL AUTHOR: Savio Lam (address@hidden)
- *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_util.c
- * @author Savio Lam
- * @author Nils Durner
- */
-
-#include "mconf_dialog.h"
-
-
-/* use colors by default? */
-bool use_colors = 1;
-
-const char * backtitle = NULL;
-
-const char *dialog_result;
-
-/*
- * Attribute values, default is for mono display
- */
-chtype attributes[] =
-{
-    A_NORMAL,                  /* screen_attr */
-    A_NORMAL,                  /* shadow_attr */
-    A_NORMAL,                  /* dialog_attr */
-    A_BOLD,                    /* title_attr */
-    A_NORMAL,                  /* border_attr */
-    A_REVERSE,                 /* button_active_attr */
-    A_DIM,                     /* button_inactive_attr */
-    A_REVERSE,                 /* button_key_active_attr */
-    A_BOLD,                    /* button_key_inactive_attr */
-    A_REVERSE,                 /* button_label_active_attr */
-    A_NORMAL,                  /* button_label_inactive_attr */
-    A_NORMAL,                  /* inputbox_attr */
-    A_NORMAL,                  /* inputbox_border_attr */
-    A_NORMAL,                  /* searchbox_attr */
-    A_BOLD,                    /* searchbox_title_attr */
-    A_NORMAL,                  /* searchbox_border_attr */
-    A_BOLD,                    /* position_indicator_attr */
-    A_NORMAL,                  /* menubox_attr */
-    A_NORMAL,                  /* menubox_border_attr */
-    A_NORMAL,                  /* item_attr */
-    A_REVERSE,                 /* item_selected_attr */
-    A_BOLD,                    /* tag_attr */
-    A_REVERSE,                 /* tag_selected_attr */
-    A_BOLD,                    /* tag_key_attr */
-    A_REVERSE,                 /* tag_key_selected_attr */
-    A_BOLD,                    /* check_attr */
-    A_REVERSE,                 /* check_selected_attr */
-    A_BOLD,                    /* uarrow_attr */
-    A_BOLD                     /* darrow_attr */
-};
-
-
-#include "mconf_colors.h"
-
-/*
- * Table of color values
- */
-int color_table[][3] =
-{
-    {SCREEN_FG, SCREEN_BG, SCREEN_HL},
-    {SHADOW_FG, SHADOW_BG, SHADOW_HL},
-    {DIALOG_FG, DIALOG_BG, DIALOG_HL},
-    {TITLE_FG, TITLE_BG, TITLE_HL},
-    {BORDER_FG, BORDER_BG, BORDER_HL},
-    {BUTTON_ACTIVE_FG, BUTTON_ACTIVE_BG, BUTTON_ACTIVE_HL},
-    {BUTTON_INACTIVE_FG, BUTTON_INACTIVE_BG, BUTTON_INACTIVE_HL},
-    {BUTTON_KEY_ACTIVE_FG, BUTTON_KEY_ACTIVE_BG, BUTTON_KEY_ACTIVE_HL},
-    {BUTTON_KEY_INACTIVE_FG, BUTTON_KEY_INACTIVE_BG, BUTTON_KEY_INACTIVE_HL},
-    {BUTTON_LABEL_ACTIVE_FG, BUTTON_LABEL_ACTIVE_BG, BUTTON_LABEL_ACTIVE_HL},
-    {BUTTON_LABEL_INACTIVE_FG, BUTTON_LABEL_INACTIVE_BG,
-     BUTTON_LABEL_INACTIVE_HL},
-    {INPUTBOX_FG, INPUTBOX_BG, INPUTBOX_HL},
-    {INPUTBOX_BORDER_FG, INPUTBOX_BORDER_BG, INPUTBOX_BORDER_HL},
-    {SEARCHBOX_FG, SEARCHBOX_BG, SEARCHBOX_HL},
-    {SEARCHBOX_TITLE_FG, SEARCHBOX_TITLE_BG, SEARCHBOX_TITLE_HL},
-    {SEARCHBOX_BORDER_FG, SEARCHBOX_BORDER_BG, SEARCHBOX_BORDER_HL},
-    {POSITION_INDICATOR_FG, POSITION_INDICATOR_BG, POSITION_INDICATOR_HL},
-    {MENUBOX_FG, MENUBOX_BG, MENUBOX_HL},
-    {MENUBOX_BORDER_FG, MENUBOX_BORDER_BG, MENUBOX_BORDER_HL},
-    {ITEM_FG, ITEM_BG, ITEM_HL},
-    {ITEM_SELECTED_FG, ITEM_SELECTED_BG, ITEM_SELECTED_HL},
-    {TAG_FG, TAG_BG, TAG_HL},
-    {TAG_SELECTED_FG, TAG_SELECTED_BG, TAG_SELECTED_HL},
-    {TAG_KEY_FG, TAG_KEY_BG, TAG_KEY_HL},
-    {TAG_KEY_SELECTED_FG, TAG_KEY_SELECTED_BG, TAG_KEY_SELECTED_HL},
-    {CHECK_FG, CHECK_BG, CHECK_HL},
-    {CHECK_SELECTED_FG, CHECK_SELECTED_BG, CHECK_SELECTED_HL},
-    {UARROW_FG, UARROW_BG, UARROW_HL},
-    {DARROW_FG, DARROW_BG, DARROW_HL},
-};                             /* color_table */
-
-/*
- * Set window to attribute 'attr'
- */
-void
-attr_clear (WINDOW * win, int height, int width, chtype attr)
-{
-    int i, j;
-
-    wattrset (win, attr);
-    for (i = 0; i < height; i++) {
-       wmove (win, i, 0);
-       for (j = 0; j < width; j++)
-           waddch (win, ' ');
-    }
-    touchwin (win);
-}
-
-void dialog_clear (void)
-{
-    attr_clear (stdscr, LINES, COLS, screen_attr);
-    /* Display background title if it exists ... - SLH */
-    if (backtitle != NULL) {
-        int i;
-
-        wattrset (stdscr, screen_attr);
-        mvwaddstr (stdscr, 0, 1, (char *)backtitle);
-        wmove (stdscr, 1, 1);
-        for (i = 1; i < COLS - 1; i++)
-            waddch (stdscr, ACS_HLINE);
-    }
-    wnoutrefresh (stdscr);
-}
-
-/*
- * Do some initialization for dialog
- */
-void
-init_dialog (void)
-{
-    initscr ();                        /* Init curses */
-    keypad (stdscr, TRUE);
-    cbreak ();
-    noecho ();
-
-
-    if (use_colors)    /* Set up colors */
-       color_setup ();
-
-
-    dialog_clear ();
-}
-
-/*
- * Setup for color display
- */
-void
-color_setup (void)
-{
-    int i;
-
-    if (has_colors ()) {       /* Terminal supports color? */
-       start_color ();
-
-       /* Initialize color pairs */
-       for (i = 0; i < ATTRIBUTE_COUNT; i++)
-           init_pair (i + 1, color_table[i][0], color_table[i][1]);
-
-       /* Setup color attributes */
-       for (i = 0; i < ATTRIBUTE_COUNT; i++)
-           attributes[i] = C_ATTR (color_table[i][2], i + 1);
-    }
-}
-
-/*
- * End using dialog functions.
- */
-void
-end_dialog (void)
-{
-    endwin ();
-}
-
-/*
- * This is the backend part of the resizing magic. We can't do almost anything
- * in resize_dialog() since we are most probably in an evil place like a
- * malloc() --- in fact we can't even ungetch()! And since we have no way how
- * to interrupt wgetch(), we can't react sooner than after the user presses a
- * key. Then we will immediatelly call do_resize_dialog(), process the key
- * pressed by the user and next wgetch() should immediatelly yield KEY_RESIZE,
- * which is going to make the dialog being redrawn. It could look a little
- * weird when the key pressed by the user will close the dialog, well... ;-)
- */
-
-static int new_rows, new_cols;
-bool should_resize = 0;
-
-void
-resize_dialog (int rows, int cols)
-{
-       should_resize = 1;
-       new_rows = rows;
-       new_cols = cols;
-}
-
-void
-do_resize_dialog ()
-{
-       should_resize = 0;
-  /* TODO */
-#ifndef MINGW
-       resizeterm(new_rows, new_cols);
-#endif
-       COLS = new_cols;
-       LINES = new_rows;
-#ifdef KEY_RESIZE
-       ungetch(KEY_RESIZE);
-#endif
-}
-
-/*
- * Print a string of text in a window, automatically wrap around to the
- * next line if the string is too long to fit on one line. Newline
- * characters '\n' are replaced by spaces.  We start on a new line
- * if there is no room for at least 4 nonblanks following a double-space.
- */
-void
-print_autowrap (WINDOW * win, const char *prompt, int width, int y, int x)
-{
-    int newl, cur_x, cur_y;
-    int prompt_len, room, wlen;
-    char tempstr[MAX_LEN + 1], *word, *sp, *sp2, *sp_nl;
-
-    strcpy (tempstr, prompt);
-
-    prompt_len = strlen(tempstr);
-       
-    /*
-     * Remove newlines
-     */
-/*    for(i=0; i<prompt_len; i++) {
-       if(tempstr[i] == '\n') tempstr[i] = ' ';
-    }
-*/
-    if (prompt_len <= width - x * 2) { /* If prompt is short */
-       wmove (win, y, (width - prompt_len) / 2);
-       waddstr (win, tempstr);
-    } else {
-       cur_x = x;
-       cur_y = y;
-       newl = 1;
-       word = tempstr;
-       while (word && *word) {
-           sp = strchr(word, ' ');
-           sp_nl = strchr(word, '\n');
-       
-           if (sp_nl && (sp_nl < sp || !sp))
-               sp = sp_nl;
-           else
-               sp_nl = NULL;
-       
-           if (sp)     
-               *sp++ = 0;
-
-                       if (sp_nl) {
-                               /* "\n" encountered */
-                               wmove (win, cur_y, cur_x);
-                               waddstr (win, word);
-                               cur_y++;
-                               cur_x = x;
-                               wmove (win, cur_y, cur_x);
-                               newl = 1;
-                       }
-                       else {
-                               /*      Wrap to next line if either the word 
does not fit,
-                                               or it is the first word of a 
new sentence, and it is
-                                               short, and the next word does 
not fit. */
-                               room = width - cur_x;
-                               wlen = strlen (word);
-                               if (wlen > room ||
-                                       (newl && wlen < 4 && sp && wlen + 1 + 
strlen (sp) > room &&
-                                       (!(sp2 = strchr (sp, ' ')) || wlen + 1 
+ (sp2 - sp) > room)))
-                               {
-                                       cur_y++;
-                       cur_x = x;
-                               }
-                               wmove (win, cur_y, cur_x);
-                               waddstr (win, word);
-                               getyx (win, cur_y, cur_x);
-                               cur_x++;
-                               if (sp && *sp == ' ') {
-                                       cur_x++;                        /* 
double space */
-                                       while (*++sp == ' ');
-                                 newl = 1;
-                               }
-                               else
-                               newl = 0;
-                       }
-                       word = sp;
-               }
-       }
-}
-
-/*
- * Print a button
- */
-void
-print_button (WINDOW * win, const char *label, int y, int x, int selected)
-{
-    int i, temp;
-
-    wmove (win, y, x);
-    wattrset (win, selected ? button_active_attr : button_inactive_attr);
-    waddstr (win, "<");
-    temp = strspn (label, " ");
-    label += temp;
-    wattrset (win, selected ? button_label_active_attr
-             : button_label_inactive_attr);
-    for (i = 0; i < temp; i++)
-       waddch (win, ' ');
-    wattrset (win, selected ? button_key_active_attr
-             : button_key_inactive_attr);
-    waddch (win, label[0]);
-    wattrset (win, selected ? button_label_active_attr
-             : button_label_inactive_attr);
-    waddstr (win, (char *)label + 1);
-    wattrset (win, selected ? button_active_attr : button_inactive_attr);
-    waddstr (win, ">");
-    wmove (win, y, x + temp + 1);
-}
-
-/*
- * Draw a rectangular box with line drawing characters
- */
-void
-draw_box (WINDOW * win, int y, int x, int height, int width,
-         chtype box, chtype border)
-{
-    int i, j;
-
-    wattrset (win, 0);
-    for (i = 0; i < height; i++) {
-       wmove (win, y + i, x);
-       for (j = 0; j < width; j++)
-           if (!i && !j)
-               waddch (win, border | ACS_ULCORNER);
-           else if (i == height - 1 && !j)
-               waddch (win, border | ACS_LLCORNER);
-           else if (!i && j == width - 1)
-               waddch (win, box | ACS_URCORNER);
-           else if (i == height - 1 && j == width - 1)
-               waddch (win, box | ACS_LRCORNER);
-           else if (!i)
-               waddch (win, border | ACS_HLINE);
-           else if (i == height - 1)
-               waddch (win, box | ACS_HLINE);
-           else if (!j)
-               waddch (win, border | ACS_VLINE);
-           else if (j == width - 1)
-               waddch (win, box | ACS_VLINE);
-           else
-               waddch (win, box | ' ');
-    }
-}
-
-/*
- * Draw shadows along the right and bottom edge to give a more 3D look
- * to the boxes
- */
-void
-draw_shadow (WINDOW * win, int y, int x, int height, int width)
-{
-    int i;
-
-    if (has_colors ()) {       /* Whether terminal supports color? */
-       wattrset (win, shadow_attr);
-       wmove (win, y + height, x + 2);
-       for (i = 0; i < width; i++)
-           waddch (win, winch (win) & A_CHARTEXT);
-       for (i = y + 1; i < y + height + 1; i++) {
-           wmove (win, i, x + width);
-           waddch (win, winch (win) & A_CHARTEXT);
-           waddch (win, winch (win) & A_CHARTEXT);
-       }
-       wnoutrefresh (win);
-    }
-}
-
-/*
- *  Return the position of the first alphabetic character in a string.
- */
-int
-first_alpha(const char *string, const char *exempt)
-{
-  unsigned int i;
-  int in_paren=0, c;
-
-       for (i = 0; i < strlen(string); i++) {
-               c = tolower(string[i]);
-
-               if (strchr("<[(", c)) ++in_paren;
-               if (strchr(">])", c) && in_paren > 0) --in_paren;
-
-               if ((! in_paren) && isalpha(c) &&
-                    strchr(exempt, c) == 0)
-                       return i;
-       }
-
-       return 0;
-}
-
-/*
- * Get the first selected item in the dialog_list_item list.
- */
-struct dialog_list_item *
-first_sel_item(int item_no, struct dialog_list_item ** items)
-{
-       int i;
-       for (i = 0; i < item_no; i++) {
-               if (items[i]->selected)
-                       return items[i];
-       }
-
-       return NULL;
-}

Deleted: GNUnet/src/setup/ncurses/mconf_yesno.c
===================================================================
--- GNUnet/src/setup/ncurses/mconf_yesno.c      2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/mconf_yesno.c      2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,134 +0,0 @@
-/*
- *  yesno.c -- implements the yes/no box
- *
- *  ORIGINAL AUTHOR: Savio Lam (address@hidden)
- *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (address@hidden)
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-/**
- * @brief GNUnet Setup
- * @file conf/mconf_yesno.c
- * @author Savio Lam
- * @author Nils Durner
- */
-
-#include "mconf_dialog.h"
-
-/*
- * Display termination buttons
- */
-static void
-print_buttons(WINDOW *dialog, int height, int width, int selected)
-{
-    int x = width / 2 - 10;
-    int y = height - 2;
-
-    print_button (dialog, " Yes ", y, x, selected == 0);
-    print_button (dialog, "  No  ", y, x + 13, selected == 1);
-
-    wmove(dialog, y, x+1 + 13*selected );
-    wrefresh (dialog);
-}
-
-/*
- * Display a dialog box with two buttons - Yes and No
- */
-int
-dialog_yesno (const char *title, const char *prompt, int height, int width)
-{
-    int i, x, y, key = 0, button = 0;
-    WINDOW *dialog;
-
-    /* center dialog box on screen */
-    x = (COLS - width) / 2;
-    y = (LINES - height) / 2;
-
-    draw_shadow (stdscr, y, x, height, width);
-
-    dialog = newwin (height, width, y, x);
-    keypad (dialog, TRUE);
-
-    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);
-    wattrset (dialog, border_attr);
-    mvwaddch (dialog, height-3, 0, ACS_LTEE);
-    for (i = 0; i < width - 2; i++)
-       waddch (dialog, ACS_HLINE);
-    wattrset (dialog, dialog_attr);
-    waddch (dialog, ACS_RTEE);
-
-    if ( (title != NULL) &&
-        (strlen(title) >= (unsigned int) width-2) ) {
-       /* truncate long title -- mec */
-       char * title2 = malloc(width-2+1);
-       memcpy( title2, title, width-2 );
-       title2[width-2] = '\0';
-       title = title2;
-    }
-
-    if (title != NULL) {
-       wattrset (dialog, title_attr);
-       mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');
-       waddstr (dialog, (char *)title);
-       waddch (dialog, ' ');
-    }
-
-    wattrset (dialog, dialog_attr);
-    print_autowrap (dialog, prompt, width - 2, 1, 3);
-
-    print_buttons(dialog, height, width, 0);
-
-    while (key != ESC) {
-       key = wgetch (dialog);
-
-       if (should_resize)
-               do_resize_dialog();     
-
-       switch (key) {
-       case 'Y':
-       case 'y':
-           delwin (dialog);
-           return 0;
-       case 'N':
-       case 'n':
-           delwin (dialog);
-           return 1;
-
-       case TAB:
-       case KEY_LEFT:
-       case KEY_RIGHT:
-           button = ((key == KEY_LEFT ? --button : ++button) < 0)
-                       ? 1 : (button > 1 ? 0 : button);
-
-           print_buttons(dialog, height, width, button);
-           wrefresh (dialog);
-           break;
-#ifdef KEY_RESIZE
-       case KEY_RESIZE:
-           button = -2;
-#endif
-       case ' ':
-       case '\n':
-           delwin (dialog);
-           return button;
-       case ESC:
-           break;
-       }
-    }
-
-    delwin (dialog);
-    return -1;                 /* ESC pressed */
-}

Modified: GNUnet/src/setup/ncurses/wizard_curs.c
===================================================================
--- GNUnet/src/setup/ncurses/wizard_curs.c      2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/wizard_curs.c      2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2005 Christian Grothoff (and other contributing authors)
+     (C) 2005, 2006 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -19,30 +19,28 @@
 */
 
 /**
- * @file conf/wizard_curs.c
+ * @file setup/ncurses/wizard_curs.c
  * @brief A easy-to-use configuration assistant for curses
  * @author Nils Durner
  */
 
+#include <dialog.h>
+
+#undef _
+#undef OK
+#include "platform.h"
 #include "gnunet_util.h"
-#include "platform.h"
+#include "gnunet_setup_lib.h"
 
+#include "wizard_curs.h"
+#include "mconf.h"
+
 #ifndef MINGW
-  #include <grp.h>
+#include <grp.h>
 #endif
 
-#define LKC_DIRECT_LINK
-#include "lkc.h"
 
-#include "mconf_dialog.h"
-#include "wizard_util.h"
-#include "mconf.h"
-#include "wizard_curs.h"
-#include "confdata.h"
 
-
-extern int cols, rows;
-
 static struct dialog_list_item **nic_items;
 static int nic_item_count = 0;
 
@@ -82,8 +80,14 @@
   item->selected = wiz_is_nic_default(name, defaultNIC);
 }
 
-int wizard_curs_main(int argc, char **argv)
-{
+int wizard_curs_main_ncurses(int argc,
+                            const char **argv,
+                            struct PluginHandle * self,
+                            struct GE_Context * ectx,
+                            struct GC_Configuration * cfg,
+                            struct GNS_Context * gns,
+                            const char * filename,
+                            int is_daemon) 
   void *active_ptr = NULL;
   int idx, ret, autostart = 0, adv = 0;
   struct symbol *sym;

Modified: GNUnet/src/setup/ncurses/wizard_curs.h
===================================================================
--- GNUnet/src/setup/ncurses/wizard_curs.h      2006-09-06 00:22:25 UTC (rev 
3365)
+++ GNUnet/src/setup/ncurses/wizard_curs.h      2006-09-06 03:25:16 UTC (rev 
3366)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2001, 2002, 2005 Christian Grothoff (and other contributing authors)
+     (C) 2001, 2002, 2005, 2006 Christian Grothoff (and other contributing 
authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -20,14 +20,21 @@
 
 
 /**
- * @file conf/gconf.h
+ * @file setup/ncurses/wizard_curs.h
  * @brief GNUnet Setup
  * @author Nils Durner
  */
 
-#ifndef GCONF_H
-#define GCONF_H
+#ifndef WIZARD_CURS_H
+#define WIZARD_CURS_H
 
-int wizard_curs_main(int argc, char **argv);
+int wizard_curs_main_ncurses(int argc,
+                            const char **argv,
+                            struct PluginHandle * self,
+                            struct GE_Context * ectx,
+                            struct GC_Configuration * cfg,
+                            struct GNS_Context * gns,
+                            const char * filename,
+                            int is_daemon);
 
 #endif

Modified: GNUnet/todo
===================================================================
--- GNUnet/todo 2006-09-06 00:22:25 UTC (rev 3365)
+++ GNUnet/todo 2006-09-06 03:25:16 UTC (rev 3366)
@@ -59,7 +59,6 @@
       - gnunet-setup memory leaks (#878)
       - gnunet-setup category switch update bug (#892)  [ RC ]
     + gtk wizard
-    + ncurses config
     + ncurses wizard
     + scm specification of configuration
 - fix known bugs (see Mantis for updates):





reply via email to

[Prev in Thread] Current Thread [Next in Thread]