summaryrefslogtreecommitdiffstats
path: root/po/nl.po
diff options
context:
space:
mode:
authorPablo Saratxaga <pablo@mandriva.com>2005-02-03 13:06:57 +0000
committerPablo Saratxaga <pablo@mandriva.com>2005-02-03 13:06:57 +0000
commitc927940b252c6d646daf85b7822974f16fbef3cb (patch)
tree30bef3808516e44abfb2d044731bda75e44e3421 /po/nl.po
parent5133b31aa37a27e35d2b2af3bc8eb076962d294d (diff)
downloadurpmi-c927940b252c6d646daf85b7822974f16fbef3cb.tar
urpmi-c927940b252c6d646daf85b7822974f16fbef3cb.tar.gz
urpmi-c927940b252c6d646daf85b7822974f16fbef3cb.tar.bz2
urpmi-c927940b252c6d646daf85b7822974f16fbef3cb.tar.xz
urpmi-c927940b252c6d646daf85b7822974f16fbef3cb.zip
updated pot file
Diffstat (limited to 'po/nl.po')
-rw-r--r--po/nl.po84
1 files changed, 42 insertions, 42 deletions
diff --git a/po/nl.po b/po/nl.po
index 56ca893f..d8653aec 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: urpmi-nl\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-01-31 23:39+0800\n"
+"POT-Creation-Date: 2005-02-03 14:02+0100\n"
"PO-Revision-Date: 2004-10-18 23:24+0200\n"
"Last-Translator: Rob Teng <mandrake.tips@free.fr>\n"
"Language-Team: Nederlands\n"
@@ -81,7 +81,7 @@ msgstr " (J/n) "
msgid "%s: command not found\n"
msgstr "%s: opdracht niet gevonden\n"
-#: ../gurpmi:31 ../gurpmi2:56
+#: ../gurpmi:31 ../gurpmi2:55
#, fuzzy, c-format
msgid "RPM installation"
msgstr "Systeeminstallatie"
@@ -151,7 +151,7 @@ msgstr "Installeren"
msgid "_Save"
msgstr "Opslaan"
-#: ../gurpmi:69 ../gurpmi2:125
+#: ../gurpmi:69 ../gurpmi2:124
#, c-format
msgid "_Cancel"
msgstr "_Annuleren"
@@ -161,17 +161,17 @@ msgstr "_Annuleren"
msgid "Choose location to save file"
msgstr "Kies map om bestand in op te slaan"
-#: ../gurpmi2:37
+#: ../gurpmi2:36
#, fuzzy, c-format
msgid "Please wait..."
msgstr "Een moment aub."
-#: ../gurpmi2:46
+#: ../gurpmi2:45
#, fuzzy, c-format
msgid "Must be root"
msgstr "Muispoort"
-#: ../gurpmi2:76
+#: ../gurpmi2:75
#, fuzzy, c-format
msgid ""
"Some package requested cannot be installed:\n"
@@ -181,32 +181,32 @@ msgstr ""
"Bepaalde gevraagde pakketten konden niet worden geïnstalleerd:\n"
"%s"
-#: ../gurpmi2:116
+#: ../gurpmi2:115
#, fuzzy, c-format
msgid " (to upgrade)"
msgstr "Opwaardering"
-#: ../gurpmi2:117
+#: ../gurpmi2:116
#, fuzzy, c-format
msgid " (to install)"
msgstr "Installatie afsluiten"
-#: ../gurpmi2:121 ../urpmi:346
+#: ../gurpmi2:120 ../urpmi:346
#, c-format
msgid "One of the following packages is needed:"
msgstr "Eén van de volgende pakketten is benodigd:"
-#: ../gurpmi2:126 ../gurpmi2:142
+#: ../gurpmi2:125 ../gurpmi2:141
#, c-format
msgid "_Ok"
msgstr "_Ok"
-#: ../gurpmi2:143
+#: ../gurpmi2:142
#, fuzzy, c-format
msgid "_Abort"
msgstr "Afbreken"
-#: ../gurpmi2:163
+#: ../gurpmi2:162
#, fuzzy, c-format
msgid ""
"The following packages have to be removed for others to be upgraded:\n"
@@ -217,7 +217,7 @@ msgstr ""
"opwaarderen:\n"
"%s"
-#: ../gurpmi2:177
+#: ../gurpmi2:176
#, fuzzy, c-format
msgid ""
"To satisfy dependencies, the following %d packages are going to be "
@@ -227,27 +227,27 @@ msgstr ""
"Om aan de afhankelijkheden te voldoen worden de volgende %d pakketten "
"geïnstalleerd (%d MB)"
-#: ../gurpmi2:184
+#: ../gurpmi2:183
#, c-format
msgid "Package installation..."
msgstr "Pakket-installatie..."
-#: ../gurpmi2:186 ../urpmi:477 ../urpmq:305
+#: ../gurpmi2:185 ../urpmi:477 ../urpmq:305
#, c-format
msgid "unable to get source packages, aborting"
msgstr "kan bronpakketten niet ontvangen, bezig met afbreken"
-#: ../gurpmi2:200 ../urpmi:488
+#: ../gurpmi2:199 ../urpmi:488
#, c-format
msgid "Please insert the medium named \"%s\" on device [%s]"
msgstr "Gelieve het medium genaamd \"%s\" in apparaat [%s] te plaatsen"
-#: ../gurpmi2:228
+#: ../gurpmi2:227
#, c-format
msgid "Downloading package `%s'..."
msgstr "Bezig met downloaden van pakket `%s'..."
-#: ../gurpmi2:243
+#: ../gurpmi2:242
#, fuzzy, c-format
msgid ""
"The following packages have bad signatures:\n"
@@ -261,7 +261,7 @@ msgstr ""
"\n"
"Is het goed om door te gaan?"
-#: ../gurpmi2:250 ../gurpmi2:299 ../urpmi:559 ../urpmi:675
+#: ../gurpmi2:249 ../gurpmi2:298 ../urpmi:559 ../urpmi:675
#, c-format
msgid ""
"Installation failed, some files are missing:\n"
@@ -272,42 +272,42 @@ msgstr ""
"%s\n"
"Misschien moet u de urpmi database opwaarderen"
-#: ../gurpmi2:257 ../urpme:115 ../urpmi:600
+#: ../gurpmi2:256 ../urpme:115 ../urpmi:600
#, c-format
msgid "removing %s"
msgstr "bezig met verwijderen van %s"
-#: ../gurpmi2:265 ../urpm.pm:2779
+#: ../gurpmi2:264 ../urpm.pm:2779
#, c-format
msgid "Preparing..."
msgstr "Bezig met voorbereiden..."
-#: ../gurpmi2:267
+#: ../gurpmi2:266
#, c-format
msgid "Installing package `%s' (%s/%s)..."
msgstr "Bezig met installeren van pakket `%s' (%s/%s)..."
-#: ../gurpmi2:285 ../urpmi:569 ../urpmi:613 ../urpmi:634 ../urpmi:654
+#: ../gurpmi2:284 ../urpmi:569 ../urpmi:613 ../urpmi:634 ../urpmi:654
#, c-format
msgid "Installation failed"
msgstr "Installatie mislukt"
-#: ../gurpmi2:294
+#: ../gurpmi2:293
#, fuzzy, c-format
msgid "_Done"
msgstr "Klaar"
-#: ../gurpmi2:302 ../urpmi:691
+#: ../gurpmi2:301 ../urpmi:691
#, c-format
msgid "The package(s) are already installed"
msgstr "Alles is al geïnstalleerd"
-#: ../gurpmi2:304
+#: ../gurpmi2:303
#, c-format
msgid "Installation finished"
msgstr "Installatie voltooid"
-#: ../rpm-find-leaves:12
+#: ../rpm-find-leaves:13
#, c-format
msgid ""
"usage: %s [options]\n"
@@ -316,23 +316,23 @@ msgstr ""
"gebruik: %s [opties]\n"
"waarbij [opties] komen uit de volgende\n"
-#: ../rpm-find-leaves:14
+#: ../rpm-find-leaves:15
#, c-format
msgid " -h|--help - print this help message.\n"
msgstr " -h|--help - geeft deze hulptekst.\n"
-#: ../rpm-find-leaves:15
+#: ../rpm-find-leaves:16
#, c-format
msgid " --root <path> - use the given root instead of /\n"
msgstr ""
" --root <path> - opgegeven hoofdmap (root) gebruiken in plaats van /\n"
-#: ../rpm-find-leaves:16
+#: ../rpm-find-leaves:17
#, c-format
msgid " -g [group] - restrict results to given group.\n"
msgstr " -g [groep] - bepertkt resultaten tot gegeven groep.\n"
-#: ../rpm-find-leaves:17
+#: ../rpm-find-leaves:18
#, c-format
msgid " defaults is %s.\n"
msgstr " standaard is %s.\n"
@@ -1076,7 +1076,7 @@ msgstr ""
"gebruik:\n"
#: ../urpme:41 ../urpmf:32 ../urpmi:76 ../urpmi.addmedia:47
-#: ../urpmi.removemedia:44 ../urpmi.update:30 ../urpmq:43
+#: ../urpmi.removemedia:45 ../urpmi.update:30 ../urpmq:43
#, c-format
msgid " --help - print this help message.\n"
msgstr " --help - geeft deze hulptekst.\n"
@@ -1121,7 +1121,7 @@ msgstr ""
" --use-distrib - urpmi dynamisch configureren vanuit distrib-boom, handig\n"
" om een chroot te (de)installeren met de --root optie.\n"
-#: ../urpme:49 ../urpmi:135 ../urpmi.addmedia:79 ../urpmi.removemedia:49
+#: ../urpme:49 ../urpmi:135 ../urpmi.addmedia:79 ../urpmi.removemedia:50
#: ../urpmi.update:48 ../urpmq:90
#, c-format
msgid " -v - verbose mode.\n"
@@ -1685,7 +1685,7 @@ msgid " -s - next package is a source package (same as --src).\n"
msgstr ""
" -s - volgend pakket is een bronpakket (zelfde als --src).\n"
-#: ../urpmi:134 ../urpmi.addmedia:78 ../urpmi.removemedia:48
+#: ../urpmi:134 ../urpmi.addmedia:78 ../urpmi.removemedia:49
#: ../urpmi.update:47
#, c-format
msgid " -q - quiet mode.\n"
@@ -1987,7 +1987,7 @@ msgstr ""
msgid " --no-md5sum - disable MD5SUM file checking.\n"
msgstr " --no-md5sum - MD5SUM bestandscontrole uitschakelen.\n"
-#: ../urpmi.addmedia:76 ../urpmi.removemedia:46 ../urpmi.update:45
+#: ../urpmi.addmedia:76 ../urpmi.removemedia:47 ../urpmi.update:45
#, c-format
msgid " -c - clean headers cache directory.\n"
msgstr " -c - buffermap headers wissen.\n"
@@ -2052,7 +2052,7 @@ msgstr "`with' ontbreekt voor netwerkmedia\n"
msgid "unable to create medium \"%s\"\n"
msgstr "kon medium \"%s\" niet maken\n"
-#: ../urpmi.removemedia:42
+#: ../urpmi.removemedia:43
#, c-format
msgid ""
"usage: urpmi.removemedia [-a] <name> ...\n"
@@ -2061,17 +2061,17 @@ msgstr ""
"gebruik: urpmi.removemedia [-a] <naam> ...\n"
"waar <naam> is een medium naam die verwijderd moet worden.\n"
-#: ../urpmi.removemedia:45
+#: ../urpmi.removemedia:46
#, c-format
msgid " -a - select all media.\n"
msgstr " -a - alle media selecteren.\n"
-#: ../urpmi.removemedia:47
+#: ../urpmi.removemedia:48
#, c-format
msgid " -y - fuzzy match on media names.\n"
msgstr " -y - onprecies zoeken wat betreft medianamen.\n"
-#: ../urpmi.removemedia:50
+#: ../urpmi.removemedia:51
#, c-format
msgid ""
"\n"
@@ -2080,17 +2080,17 @@ msgstr ""
"\n"
"onbekende opties '%s'\n"
-#: ../urpmi.removemedia:57
+#: ../urpmi.removemedia:60
#, c-format
msgid "Only superuser is allowed to remove media"
msgstr "Alleen de beheerder mag media verwijderen"
-#: ../urpmi.removemedia:67
+#: ../urpmi.removemedia:70
#, c-format
msgid "nothing to remove (use urpmi.addmedia to add a media)\n"
msgstr "niets te verwijderen (gebruik urpmi.addmedia om media toe te voegen)\n"
-#: ../urpmi.removemedia:69
+#: ../urpmi.removemedia:72
#, c-format
msgid ""
"the entry to remove is missing\n"
id='n551' href='#n551'>551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972
/* Copyright (c) 1998, 1999, 2001 John E. Davis
 * This file is part of the S-Lang library.
 *
 * You may distribute under the terms of either the GNU General Public
 * License or the Perl Artistic License.
 */
#include "slinclud.h"

#include <signal.h>
#include <errno.h>

#include "slang.h"
#include "_slang.h"
#include "slcurses.h"

/* This file is meant to implement a primitive curses implementation in
 * terms of SLsmg calls.  The fact is that the interfaces are sufficiently
 * different that a 100% emulation is not possible.
 */

SLcurses_Window_Type *SLcurses_Stdscr;
int SLcurses_Esc_Delay = 150;	       /* 0.15 seconds */
SLtt_Char_Type SLcurses_Acs_Map [128];
int SLcurses_Is_Endwin = 1;
int SLcurses_Num_Colors = 8;

static void blank_line (SLsmg_Char_Type *b, unsigned int len, SLsmg_Char_Type color)
{
   SLsmg_Char_Type *bmax;

   bmax = b + len;
   color = SLSMG_BUILD_CHAR(' ', color);

   while (b < bmax) *b++ = color;
}

static int va_mvprintw (SLcurses_Window_Type *w, int r, int c, int do_move,
			char *fmt, va_list ap)
{
   char buf[1024];

   if (do_move) SLcurses_wmove (w, r, c);

   (void) _SLvsnprintf (buf, sizeof(buf), fmt, ap);

   SLcurses_waddnstr (w, buf, -1);
   return 0;
}

int SLcurses_mvprintw (int r, int c, char *fmt, ...)
{
   va_list ap;

   va_start(ap, fmt);
   va_mvprintw (SLcurses_Stdscr, r, c, 1, fmt, ap);
   va_end(ap);

   return 0;
}

int SLcurses_mvwprintw (SLcurses_Window_Type *w, int r, int c, char *fmt, ...)
{
   va_list ap;

   va_start(ap, fmt);
   va_mvprintw (w, r, c, 1, fmt, ap);
   va_end(ap);

   return 0;
}

int SLcurses_wprintw (SLcurses_Window_Type *w, char *fmt, ...)
{
   va_list ap;

   va_start(ap, fmt);
   va_mvprintw (w, 0, 0, 0, fmt, ap);
   va_end(ap);

   return 0;
}

int SLcurses_printw (char *fmt, ...)
{
   va_list ap;

   va_start(ap, fmt);
   va_mvprintw (SLcurses_Stdscr, 0, 0, 0, fmt, ap);
   va_end(ap);

   return 0;
}

int SLcurses_nil (void)
{
   return 0;
}

int SLcurses_has_colors(void)
{
   return SLtt_Use_Ansi_Colors;
}

int SLcurses_nodelay (SLcurses_Window_Type *w, int onoff)
{
   w->delay_off = (onoff ? 0 : -1);
   return 0;
}

int SLcurses_wgetch (SLcurses_Window_Type *w)
{
   if (w == NULL)
     return ERR;

   SLcurses_wrefresh (w);

   if ((w->delay_off == -1) ||
       SLang_input_pending (w->delay_off))
     {
	if (w->use_keypad)
	  {
	     int ch = SLang_getkey ();
	     if (ch == '\033')
	       {
		  if (0 == SLang_input_pending (ESCDELAY / 100))
		    return ch;
	       }
	     else if (ch == 0xFFFF) return ERR;
	     SLang_ungetkey (ch);
	     return SLkp_getkey ();
	  }
	return SLang_getkey ();
     }

   return ERR;
}

int SLcurses_getch (void)
{
   return SLcurses_wgetch (SLcurses_Stdscr);
}

/* This is a super hack.  That fact is that SLsmg and curses
 * are incompatible.
 */
static unsigned char Color_Objects[256];

static unsigned int map_attr_to_object (SLtt_Char_Type attr)
{
   unsigned int obj;
   SLtt_Char_Type at;

   obj = (attr >> 8) & 0xFF;

   if (SLtt_Use_Ansi_Colors)
     {
	if (Color_Objects[obj] != 0) return obj;

	at = SLtt_get_color_object (obj & 0xF);

	if (attr & A_BOLD) at |= SLTT_BOLD_MASK;
	if (attr & A_UNDERLINE) at |= SLTT_ULINE_MASK;
	if (attr & A_REVERSE) at |= SLTT_REV_MASK;

	SLtt_set_color_object (obj, at);

	Color_Objects[obj] = 1;
     }
   else obj = obj & 0xF0;

   return obj;

}

int SLcurses_start_color (void)
{
   int f, b;
   int obj;

   if (SLtt_Use_Ansi_Colors == 0) return -1;

   obj = 0;
   for (f = 0; f < 16; f++)
     {
	for (b = 0; b < 16; b++)
	  {
	     obj++;
	     SLtt_set_color_fgbg (obj, f, b);
	  }
     }
   return 0;
}

#ifdef SIGINT
static void sigint_handler (int sig)
{
   SLang_reset_tty ();
   SLsmg_reset_smg ();
   exit (sig);
}
#endif

/* Values are assumed to be 0, 1, 2.  This fact is exploited */
static int TTY_State;

static int init_tty (int suspend_ok)
{
   if (-1 == SLang_init_tty (-1, 1, 0))
     return -1;

#ifdef REAL_UNIX_SYSTEM
   if (suspend_ok) SLtty_set_suspend_state (1);
#endif
   return 0;
}

int SLcurses_raw (void)
{
   TTY_State = 1;
   return init_tty (0);
}

int SLcurses_cbreak (void)
{
   TTY_State = 2;
   return init_tty (1);
}

#if defined(SIGTSTP) && defined(SIGSTOP)
static void sigtstp_handler (int sig)
{
   sig = errno;

   SLsmg_suspend_smg ();

   if (TTY_State)
     SLang_reset_tty ();

   kill(getpid(),SIGSTOP);

   SLsmg_resume_smg ();

   if (TTY_State) init_tty (TTY_State - 1);

   signal (SIGTSTP, sigtstp_handler);
   errno = sig;
}
#endif

SLcurses_Window_Type *SLcurses_initscr (void)
{
   SLcurses_Is_Endwin = 0;
   SLsmg_Newline_Behavior = SLSMG_NEWLINE_MOVES;
   SLtt_get_terminfo ();

#if !defined(IBMPC_SYSTEM) && !defined(VMS)
   if (-1 == (SLcurses_Num_Colors = SLtt_tgetnum ("Co")))
#endif
     SLcurses_Num_Colors = 8;

   if ((-1 == SLkp_init ())
       || (-1 == SLcurses_cbreak ())
       || (NULL == (SLcurses_Stdscr = SLcurses_newwin (0, 0, 0, 0)))
       || (-1 == SLsmg_init_smg ()))
     {
	SLang_doerror (NULL);
	SLang_exit_error ("SLcurses_initscr: init failed\n");
	return NULL;
     }

#ifdef SIGINT
   signal (SIGINT, sigint_handler);
#endif

#if defined(SIGTSTP) && defined(SIGSTOP)
   signal (SIGTSTP, sigtstp_handler);
#endif

   SLtt_set_mono (A_BOLD >> 8, NULL, SLTT_BOLD_MASK);
   SLtt_set_mono (A_UNDERLINE >> 8, NULL, SLTT_ULINE_MASK);
   SLtt_set_mono (A_REVERSE >> 8, NULL, SLTT_REV_MASK);
   /* SLtt_set_mono (A_BLINK >> 8, NULL, SLTT_BLINK_MASK); */
   SLtt_set_mono ((A_BOLD|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_BOLD_MASK);
   SLtt_set_mono ((A_REVERSE|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_REV_MASK);

   if (SLtt_Has_Alt_Charset)
     {
       SLcurses_Acs_Map[SLSMG_ULCORN_CHAR] = SLSMG_ULCORN_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_URCORN_CHAR] = SLSMG_URCORN_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_LLCORN_CHAR] = SLSMG_LLCORN_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_LRCORN_CHAR] = SLSMG_LRCORN_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_UTEE_CHAR] = SLSMG_UTEE_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_DTEE_CHAR] = SLSMG_DTEE_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_LTEE_CHAR] = SLSMG_LTEE_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_RTEE_CHAR] = SLSMG_RTEE_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_VLINE_CHAR] = SLSMG_VLINE_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_HLINE_CHAR] = SLSMG_HLINE_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_PLUS_CHAR] = SLSMG_PLUS_CHAR | A_ALTCHARSET;
       SLcurses_Acs_Map[SLSMG_CKBRD_CHAR] = SLSMG_CKBRD_CHAR | A_ALTCHARSET;
     }
   else
     {
       /* ugly defaults to use on terminals which don't support graphics */
       SLcurses_Acs_Map[SLSMG_ULCORN_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_URCORN_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_LLCORN_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_LRCORN_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_UTEE_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_DTEE_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_LTEE_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_RTEE_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_VLINE_CHAR] = '|';
       SLcurses_Acs_Map[SLSMG_HLINE_CHAR] = '-';
       SLcurses_Acs_Map[SLSMG_PLUS_CHAR] = '+';
       SLcurses_Acs_Map[SLSMG_CKBRD_CHAR] = '#';
     }

   return SLcurses_Stdscr;
}

int SLcurses_wattrset (SLcurses_Window_Type *w, SLtt_Char_Type ch)
{
   unsigned int obj;

   obj = map_attr_to_object (ch);
   w->color = obj;
   w->attr = ch;
   return 0;
}

int SLcurses_wattroff (SLcurses_Window_Type *w, SLtt_Char_Type ch)
{
   if (SLtt_Use_Ansi_Colors)
     return SLcurses_wattrset (w, 0);

   w->attr &= ~ch;
   return SLcurses_wattrset (w, w->attr);
}

int SLcurses_wattron (SLcurses_Window_Type *w, SLtt_Char_Type ch)
{
   if (SLtt_Use_Ansi_Colors)
     return SLcurses_wattrset (w, ch);

   w->attr |= ch;
   return SLcurses_wattrset (w, w->attr);
}

int SLcurses_delwin (SLcurses_Window_Type *w)
{
   if (w == NULL) return 0;
   if (w->lines != NULL)
     {
	SLsmg_Char_Type **lines = w->lines;
	if (w->is_subwin == 0)
	  {
	     unsigned int r, rmax;

	     rmax = w->nrows;
	     for (r = 0; r < rmax; r++)
	       {
		  SLfree ((char *)lines[r]);
	       }
	  }

	SLfree ((char *)lines);
     }

   SLfree ((char *)w);
   if (w == SLcurses_Stdscr)
     SLcurses_Stdscr = NULL;
   return 0;
}

SLcurses_Window_Type *SLcurses_newwin (unsigned int nrows, unsigned int ncols,
				       unsigned int r, unsigned int c)
{
   SLcurses_Window_Type *win;
   SLsmg_Char_Type **lines;

   if (r >= (unsigned int) SLtt_Screen_Rows)
     return NULL;
   if (c >= (unsigned int) SLtt_Screen_Cols)
     return NULL;

   if (NULL == (win = (SLcurses_Window_Type *) SLmalloc (sizeof (SLcurses_Window_Type))))
     return NULL;

   SLMEMSET ((char *) win, 0, sizeof (SLcurses_Window_Type));

   if (nrows == 0)
     nrows = (unsigned int) SLtt_Screen_Rows - r;
   if (ncols == 0)
     ncols = (unsigned int) SLtt_Screen_Cols - c;

   lines = (SLsmg_Char_Type **) SLmalloc (nrows * sizeof (SLsmg_Char_Type *));
   if (lines == NULL)
     {
	SLcurses_delwin (win);
	return NULL;
     }

   SLMEMSET ((char *) lines, 0, nrows * sizeof (SLsmg_Char_Type *));

   win->lines = lines;
   win->scroll_max = win->nrows = nrows;
   win->ncols = ncols;
   win->_begy = r;
   win->_begx = c;
   win->_maxx = (c + ncols) - 1;
   win->_maxy = (r + nrows) - 1;
   win->modified = 1;
   win->delay_off = -1;

   for (r = 0; r < nrows; r++)
     {
	SLsmg_Char_Type *b;

	b = (SLsmg_Char_Type *) SLmalloc (ncols * sizeof (SLsmg_Char_Type));
	if (b == NULL)
	  {
	     SLcurses_delwin (win);
	     return NULL;
	  }
	lines [r] = b;
	blank_line (b, ncols, 0);
     }

   return win;
}

int SLcurses_wmove (SLcurses_Window_Type *win, unsigned int r, unsigned int c)
{
   if (win == NULL) return -1;
   win->_cury = r;
   win->_curx = c;
   win->modified = 1;
   return 0;
}

static int do_newline (SLcurses_Window_Type *w)
{
   w->_curx = 0;
   w->_cury += 1;
   if (w->_cury >= w->scroll_max)
     {
	w->_cury = w->scroll_max - 1;
	if (w->scroll_ok)
	  SLcurses_wscrl (w, 1);
     }

   return 0;
}

int SLcurses_waddch (SLcurses_Window_Type *win, SLtt_Char_Type attr)
{
   SLsmg_Char_Type *b, ch;
   SLsmg_Char_Type color;

   if (win == NULL) return -1;

   if (win->_cury >= win->nrows)
     {
	/* Curses seems to move current postion to top of window. */
	win->_cury = win->_curx = 0;
	return -1;
     }

   win->modified = 1;

   ch = SLSMG_EXTRACT_CHAR(attr);

   if (attr == ch)
     color = win->color;
   else
     {
	/* hack to pick up the default color for graphics chars */
	if (((attr & A_COLOR) == 0) && ((attr & A_ALTCHARSET) != 0))
	  {
	     /* FIXME: priority=medium: Use SLSMG_?? instead of << */
	     attr |= win->color << 8;
	  }
	color = map_attr_to_object (attr);
     }

   if (ch < ' ')
     {
	if (ch == '\n')
	  {
	     SLcurses_wclrtoeol (win);
	     return do_newline (win);
	  }

	if (ch == '\r')
	  {
	     win->_curx = 0;
	     return 0;
	  }

	if (ch == '\b')
	  {
	     if (win->_curx > 0)
	       win->_curx--;

	     return 0;
	  }

	/* HACK HACK!!!! */
	if (ch == '\t') ch = ' ';
     }

   if (win->_curx >= win->ncols)
     do_newline (win);

   b = win->lines[win->_cury] + win->_curx;
   *b = SLSMG_BUILD_CHAR(ch,color);
   win->_curx++;

   return 0;
}

int SLcurses_wnoutrefresh (SLcurses_Window_Type *w)
{
   unsigned int len;
   unsigned int r, c;
   unsigned int i, imax;

   if (SLcurses_Is_Endwin)
     {
	if (TTY_State) init_tty (TTY_State - 1);
       	SLsmg_resume_smg ();
	SLcurses_Is_Endwin = 0;
     }

   if (w == NULL)
     {
	SLsmg_refresh ();
	return -1;
     }

   if (w->modified == 0)
     return 0;

   r = w->_begy;
   c = w->_begx;

   len = w->ncols;
   imax = w->nrows;

   for (i = 0; i < imax; i++)
     {
	SLsmg_gotorc (r, c);
	SLsmg_write_color_chars (w->lines[i], len);
	r++;
     }

   if (w->has_box)
     SLsmg_draw_box(w->_begy, w->_begx, w->nrows, w->ncols);

   SLsmg_gotorc (w->_begy + w->_cury, w->_begx + w->_curx);
   w->modified = 0;
   return 0;
}

int SLcurses_wrefresh (SLcurses_Window_Type *w)
{
   if (w == NULL)
     return -1;

   if (w->modified == 0)
     return 0;

   SLcurses_wnoutrefresh (w);
   SLsmg_refresh ();
   return 0;
}

int SLcurses_wclrtoeol (SLcurses_Window_Type *w)
{
   SLsmg_Char_Type *b, *bmax;
   SLsmg_Char_Type blank;

   if (w == NULL) return -1;
   if (w->_cury >= w->nrows)
     return 0;

   w->modified = 1;

   blank = SLSMG_BUILD_CHAR(' ',w->color);

   b = w->lines[w->_cury];
   bmax = b + w->ncols;
   b += w->_curx;

   while (b < bmax) *b++ = blank;
   return 0;
}

int SLcurses_wclrtobot (SLcurses_Window_Type *w)
{
   SLsmg_Char_Type *b, *bmax;
   SLsmg_Char_Type blank;
   unsigned int r;

   if (w == NULL) return -1;

   w->modified = 1;
   blank = SLSMG_BUILD_CHAR(' ',w->color);
   SLcurses_wclrtoeol (w);
   for (r = w->_cury + 1; r < w->nrows; r++)
     {
	b = w->lines [r];
	bmax = b + w->ncols;

	while (b < bmax) *b++ = blank;
     }

   return 0;
}

int SLcurses_wscrl (SLcurses_Window_Type *w, int n)
{
   SLsmg_Char_Type **lines;
   unsigned int r, rmax, rmin, ncols;
   SLsmg_Char_Type color;

   if ((w == NULL) || (w->scroll_ok == 0))
     return -1;

   w->modified = 1;
#if 0
   if (w->is_subwin)
     {
	SLang_reset_tty ();
	SLsmg_reset_smg ();
	fprintf (stderr, "\rAttempt to scroll a subwindow\n");
	exit (1);
     }
#endif

   color = w->color;
   ncols = w->ncols;
   lines = w->lines;
   rmax = w->scroll_max;
   rmin = w->scroll_min;
   if (rmax > w->nrows)
     rmax = w->nrows;
   if (rmin >= rmax)
     return 0;

   while (n > 0)
     {
	for (r = rmin + 1; r < rmax; r++)
	  {
	     /* lines[r - 1] = lines[r]; */
	     memcpy ((char *)lines[r - 1], (char *)lines[r],
		     sizeof (SLsmg_Char_Type) * ncols);
	  }
	blank_line (lines[rmax - 1], ncols, color);
	n--;
     }

   rmax--;
   while (n < 0)
     {
	for (r = rmax; r > rmin; r--)
	  {
	     memcpy ((char *)lines[r], (char *)lines[r - 1],
		     sizeof (SLsmg_Char_Type) * ncols);
	  }
	blank_line (lines[rmin], ncols, color);
	n++;
     }

   /* wmove (w, w->nrows - 1, 0); */
   /* wclrtobot (w); */
   return 0;
}

/* Note: if len is < 0, entire string will be used.
 */
int SLcurses_waddnstr (SLcurses_Window_Type *w, char *str, int len)
{
   SLsmg_Char_Type *b;
   SLsmg_Char_Type color;
   unsigned char ch;
   unsigned int nrows, ncols, crow, ccol;

   if ((w == NULL)
       || (str == NULL))
     return -1;

   w->modified = 1;
   nrows = w->nrows;
   ncols = w->ncols;
   crow = w->_cury;
   ccol = w->_curx;
   color = w->color;

   if (w->scroll_max <= nrows)
     nrows = w->scroll_max;

   if (crow >= nrows)
     crow = 0;			       /* wrap back to top */

   b = w->lines [crow] + ccol;

   while (len && ((ch = (unsigned char) *str++) != 0))
     {
	len--;

	if (ch == '\n')
	  {
	     w->_cury = crow;
	     w->_curx = ccol;
	     SLcurses_wclrtoeol (w);
	     do_newline (w);
	     crow = w->_cury;
	     ccol = w->_curx;
	     b = w->lines[crow];
	     continue;
	  }

	if (ccol >= ncols)
	  {
	     ccol = 0;
	     crow++;
	     if (crow >= nrows)
	       {
		  w->_curx = 0;
		  w->_cury = crow;
		  do_newline (w);
		  crow = w->_cury;
		  ccol = w->_curx;
	       }

	     b = w->lines [crow];
	  }

	if (ch == '\t')
	  {
	     unsigned int n = ccol;
	     n += SLsmg_Tab_Width;
	     n = SLsmg_Tab_Width - (n % SLsmg_Tab_Width);
	     if (ccol + n > ncols) n = ncols - len;
	     ccol += n;
	     while (n--)
	       *b++ = SLSMG_BUILD_CHAR(' ',color);
	     continue;
	  }

	*b++ = SLSMG_BUILD_CHAR(ch, color);
	ccol++;
     }

   w->_curx = ccol;
   w->_cury = crow;

   return 0;
}

/* This routine IS NOT CORRECT.  It needs to compute the proper overlap
 * and copy accordingly.  Here, I just assume windows are same size.
 */
#if 0
int SLcurses_overlay (SLcurses_Window_Type *swin, SLcurses_Window_Type *dwin)
{
   SLsmg_Char_Type *s, *smax, *d, *dmax;

   if ((swin == NULL) || (dwin == NULL))
     return -1;

   s = swin->buf;
   smax = swin->bufmax;
   d = dwin->buf;
   dmax = dwin->bufmax;

   while ((s < smax) && (d < dmax))
     {
	SLsmg_Char_Type ch = *s++;
	if (SLSMG_EXTRACT_CHAR(ch) != ' ')
	  *d = ch;
	d++;
     }

   return -1;			       /* not implemented */
}

#endif

SLcurses_Window_Type *SLcurses_subwin (SLcurses_Window_Type *orig,
				       unsigned int nlines, unsigned int ncols,
				       unsigned int begin_y, unsigned int begin_x)
{
   SLcurses_Window_Type *sw;
   int r, c;
   unsigned int i;

   if (orig == NULL)
     return NULL;

   sw = (SLcurses_Window_Type *) SLmalloc (sizeof (SLcurses_Window_Type));
   if (sw == NULL)
     return NULL;

   SLMEMSET ((char *)sw, 0, sizeof (SLcurses_Window_Type));
#if 1
   r = begin_y - orig->_begy;
#else
   r = 1 + ((int)orig->nrows - (int)nlines) / 2;
#endif
   if (r < 0) r = 0;
   if (r + nlines > orig->nrows) nlines = orig->nrows - r;

   c = ((int)orig->ncols - (int)ncols) / 2;
   if (c < 0) c = 0;
   if (c + ncols > orig->ncols) ncols = orig->ncols - c;

   sw->scroll_min = 0;
   sw->scroll_max = sw->nrows = nlines;
   sw->ncols = ncols;
   sw->_begy = begin_y;
   sw->_begx = begin_x;
   sw->_maxx = (begin_x + ncols) - 1;
   sw->_maxy = (begin_y + nlines) - 1;

   sw->lines = (SLsmg_Char_Type **) SLmalloc (nlines * sizeof (SLsmg_Char_Type *));
   if (sw->lines == NULL)
     {
	SLcurses_delwin (sw);
	return NULL;
     }

   for (i = 0; i < nlines; i++)
     {
	sw->lines [i] = orig->lines [r + i] + c;
     }

   sw->is_subwin = 1;
   return sw;
}

int SLcurses_wclear (SLcurses_Window_Type *w)
{
   unsigned int i;

   if (w != NULL) w->modified = 1;
   for (i=0; i < w->nrows; i++)
     blank_line (w->lines[i], w->ncols, w->color);
   return 0;
}

int SLcurses_wdelch (SLcurses_Window_Type *w)
{
   SLsmg_Char_Type *p, *p1, *pmax;

   p = w->lines[w->_cury];
   pmax = p + w->ncols;
   p += w->_curx;
   p1 = p + 1;

   while (p1 < pmax)
     {
	*p = *p1;
	p = p1;
	p1++;
     }

   if (p < pmax)
     *p = SLSMG_BUILD_CHAR(' ',w->color);

   w->modified = 1;
   return 0;
}

int SLcurses_winsch (SLcurses_Window_Type *w, int ch)
{
   SLsmg_Char_Type *p, *p1, *pmax;

   p = w->lines[w->_cury];
   pmax = p + w->ncols;
   p += w->_curx;
   p1 = pmax - 1;

   while (pmax > p)
     {
	*pmax = *p1;
	pmax = p1;
	p1--;
     }

   if (p < pmax)
     *p = SLSMG_BUILD_CHAR(ch, w->color);

   w->modified = 1;
   return 0;
}

int SLcurses_endwin (void)
{
   SLcurses_Is_Endwin = 1;
   SLsmg_suspend_smg ();
   SLang_reset_tty ();
   return 0;
}

#if 0
int SLcurses_mvwscanw (SLcurses_Window_Type *w, unsigned int r, unsigned int c,
		       char *fmt, ...)
{
#if HAVE_VFSCANF
   int ret;
   va_list ap;

   SLcurses_wmove (w, r, c);
   SLcurses_wrefresh (w);

   va_start(ap, fmt);
   ret = vfscanf (stdin, fmt, ap);
   va_end(ap);
   return ret;
#else
   return 0;
#endif
}

int SLcurses_wscanw (SLcurses_Window_Type *w, char *fmt, ...)
{