summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorStefan Sperling <stsp@cvs.openbsd.org>2013-06-01 21:26:19 +0000
committerStefan Sperling <stsp@cvs.openbsd.org>2013-06-01 21:26:19 +0000
commit680afd29e952c382d1e3af6801ceffc386c95454 (patch)
tree060943c2f53c7a7d386a9903fd2f725b0d7cd13b /lib
parentf0764df13c314ac5090101325e3fceafa9628e7d (diff)
Fix catopen(3) for UTF-8 locales and update the implementation to POSIX-2008.
Catalogs had an arbitrary character set which was used regardless of locale. Add UTF-8-encoded catalogs for libc error messages, and rename existing ones to indicate their character sets. catopen(3) now chooses a catalog which matches the locale's encoding, if available. help & ok matthew, man page bits ok jmc, input from naddy and bluhm
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/Makefile8
-rw-r--r--lib/libc/nls/catopen.324
-rw-r--r--lib/libc/nls/catopen.c67
-rw-r--r--lib/libc/nls/da.ISO8859-1.msg (renamed from lib/libc/nls/da.msg)0
-rw-r--r--lib/libc/nls/da.UTF-8.msg246
-rw-r--r--lib/libc/nls/de.ISO8859-1.msg (renamed from lib/libc/nls/de.msg)0
-rw-r--r--lib/libc/nls/de.UTF-8.msg246
-rw-r--r--lib/libc/nls/es.ISO8859-1.msg (renamed from lib/libc/nls/es.msg)0
-rw-r--r--lib/libc/nls/es.UTF-8.msg222
-rw-r--r--lib/libc/nls/fi.ISO8859-1.msg (renamed from lib/libc/nls/fi.msg)0
-rw-r--r--lib/libc/nls/fi.UTF-8.msg222
-rw-r--r--lib/libc/nls/fr.ISO8859-1.msg (renamed from lib/libc/nls/fr.msg)0
-rw-r--r--lib/libc/nls/fr.UTF-8.msg222
-rw-r--r--lib/libc/nls/it.UTF-8.msg (renamed from lib/libc/nls/it.msg)8
-rw-r--r--lib/libc/nls/nl.ISO8859-1.msg (renamed from lib/libc/nls/nl.msg)0
-rw-r--r--lib/libc/nls/nl.UTF-8.msg246
-rw-r--r--lib/libc/nls/no.ISO8859-1.msg (renamed from lib/libc/nls/no.msg)0
-rw-r--r--lib/libc/nls/no.UTF-8.msg222
-rw-r--r--lib/libc/nls/ru.KOI8-R.msg (renamed from lib/libc/nls/ru.msg)0
-rw-r--r--lib/libc/nls/ru.UTF-8.msg246
-rw-r--r--lib/libc/nls/sv.ISO8859-1.msg (renamed from lib/libc/nls/sv.msg)0
-rw-r--r--lib/libc/nls/sv.UTF-8.msg222
-rw-r--r--lib/libc/string/strerror_r.c4
23 files changed, 2176 insertions, 29 deletions
diff --git a/lib/libc/Makefile b/lib/libc/Makefile
index dda879185c7..e933ff59154 100644
--- a/lib/libc/Makefile
+++ b/lib/libc/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.31 2012/08/15 18:08:22 matthew Exp $
+# $OpenBSD: Makefile,v 1.32 2013/06/01 21:26:17 stsp Exp $
#
# The NLS (message catalog) functions are always in libc. To choose that
# strerror(), perror(), strsignal(), psignal(), etc. actually call the NLS
@@ -17,7 +17,11 @@ LDADD=-nodefaultlibs -lgcc
LIBCSRCDIR=${.CURDIR}
.include "${LIBCSRCDIR}/Makefile.inc"
-NLS= C.msg Pig.msg da.msg de.msg es.msg fi.msg fr.msg nl.msg no.msg ru.msg sv.msg it.msg
+NLS= C.msg Pig.msg da.ISO8859-1.msg da.UTF-8.msg de.ISO8859-1.msg \
+ de.UTF-8.msg es.ISO8859-1.msg es.UTF-8.msg fi.ISO8859-1.msg \
+ fi.UTF-8.msg fr.ISO8859-1.msg fr.UTF-8.msg it.UTF-8.msg \
+ nl.ISO8859-1.msg nl.UTF-8.msg no.ISO8859-1.msg no.UTF-8.msg \
+ ru.KOI8-R.msg ru.UTF-8.msg sv.ISO8859-1.msg sv.UTF-8.msg
copy-to-libkern: copy-to-libkern-machind copy-to-libkern-machdep
diff --git a/lib/libc/nls/catopen.3 b/lib/libc/nls/catopen.3
index fcce72af9ce..2bd99aa21c4 100644
--- a/lib/libc/nls/catopen.3
+++ b/lib/libc/nls/catopen.3
@@ -1,9 +1,9 @@
-.\" $OpenBSD: catopen.3,v 1.6 2007/05/31 19:19:30 jmc Exp $
+.\" $OpenBSD: catopen.3,v 1.7 2013/06/01 21:26:17 stsp Exp $
.\"
.\" Written by J.T. Conklin <jtc@netbsd.org>.
.\" Public domain.
.\"
-.Dd $Mdocdate: May 31 2007 $
+.Dd $Mdocdate: June 1 2013 $
.Dt CATOPEN 3
.Os
.Sh NAME
@@ -33,9 +33,18 @@ is used with
substituted for
.Ql \&%N .
.Pp
-The
+If the
+.Fa oflag
+argument is
+.Dv NL_CAT_LOCALE ,
+the
+.Ev LC_MESSAGES
+environment variable is used to select the message catalog.
+If the
.Fa oflag
-argument is reserved for future use and should be set to zero.
+argument is zero, the
+.Ev LANG
+environment variable is used to select the message catalog.
.Sh RETURN VALUES
Upon successful completion,
.Fn catopen
@@ -43,11 +52,6 @@ returns a message catalog descriptor.
Otherwise, \-1 is returned and
.Va errno
is set to indicate the error.
-.Sh ERRORS
-.Bl -tag -width Er
-.It Bq Er ENOMEM
-Insufficient memory available.
-.El
.Sh SEE ALSO
.Xr catclose 3 ,
.Xr catgets 3
@@ -55,4 +59,4 @@ Insufficient memory available.
The
.Fn catopen
function conforms to
-.St -xpg3 .
+.St -p1003.1-2008 .
diff --git a/lib/libc/nls/catopen.c b/lib/libc/nls/catopen.c
index 4efedfa3da0..37f8ee20f35 100644
--- a/lib/libc/nls/catopen.c
+++ b/lib/libc/nls/catopen.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: catopen.c,v 1.14 2011/07/12 21:31:20 matthew Exp $ */
+/* $OpenBSD: catopen.c,v 1.15 2013/06/01 21:26:17 stsp Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -41,7 +41,7 @@
#include <fcntl.h>
#include <nl_types.h>
-#define NLS_DEFAULT_PATH "/usr/share/nls/%L/%N.cat:/usr/share/nls/%N/%L"
+#define NLS_DEFAULT_PATH "/usr/share/nls/%L/%N.cat:/usr/share/nls/%l.%c/%N.cat:/usr/share/nls/%l/%N.cat"
#define NLS_DEFAULT_LANG "C"
static nl_catd load_msgcat(const char *);
@@ -53,7 +53,7 @@ _catopen(const char *name, int oflag)
char tmppath[PATH_MAX];
char *nlspath;
char *lang;
- char *s, *t;
+ char *s, *t, *sep, *dot;
const char *u;
nl_catd catd;
@@ -66,28 +66,73 @@ _catopen(const char *name, int oflag)
if (issetugid() != 0 || (nlspath = getenv("NLSPATH")) == NULL)
nlspath = NLS_DEFAULT_PATH;
- if ((lang = getenv("LANG")) == NULL)
+
+ lang = NULL;
+ if (oflag & NL_CAT_LOCALE) {
+ lang = getenv("LC_ALL");
+ if (lang == NULL)
+ lang = getenv("LC_MESSAGES");
+ }
+ if (lang == NULL)
+ lang = getenv("LANG");
+ if (lang == NULL)
+ lang = NLS_DEFAULT_LANG;
+ if (strcmp(lang, "POSIX") == 0)
lang = NLS_DEFAULT_LANG;
s = nlspath;
- t = tmppath;
+ t = tmppath;
+
+ /*
+ * Locale names are of the form language[_territory][.codeset].
+ * See POSIX-1-2008 "8.2 Internationalization Variables"
+ */
+ sep = strchr(lang, '_');
+ dot = strrchr(lang, '.');
+ if (dot && sep && dot < sep)
+ dot = NULL; /* ignore dots preceeding _ */
+ if (dot == NULL)
+ lang = NLS_DEFAULT_LANG; /* no codeset specified */
do {
while (*s && *s != ':') {
if (*s == '%') {
switch (*(++s)) {
- case 'L': /* locale */
+ case 'L': /* LANG or LC_MESSAGES */
u = lang;
while (*u && t < tmppath + PATH_MAX-1)
*t++ = *u++;
break;
- case 'N': /* name */
+ case 'N': /* value of name parameter */
u = name;
while (*u && t < tmppath + PATH_MAX-1)
*t++ = *u++;
break;
- case 'l': /* lang */
- case 't': /* territory */
- case 'c': /* codeset */
+ case 'l': /* language part */
+ u = lang;
+ while (*u && t < tmppath + PATH_MAX-1) {
+ *t++ = *u++;
+ if (sep && u >= sep)
+ break;
+ if (dot && u >= dot)
+ break;
+ }
+ break;
+ case 't': /* territory part */
+ if (sep == NULL)
+ break;
+ u = sep + 1;
+ while (*u && t < tmppath + PATH_MAX-1) {
+ *t++ = *u++;
+ if (dot && u >= dot)
+ break;
+ }
+ break;
+ case 'c': /* codeset part */
+ if (dot == NULL)
+ break;
+ u = dot + 1;
+ while (*u && t < tmppath + PATH_MAX-1)
+ *t++ = *u++;
break;
default:
if (t < tmppath + PATH_MAX-1)
@@ -121,7 +166,7 @@ load_msgcat(const char *path)
void *data;
int fd;
- if ((fd = open(path, O_RDONLY)) == -1)
+ if ((fd = open(path, O_RDONLY|O_CLOEXEC)) == -1)
return (nl_catd) -1;
if (fstat(fd, &st) != 0) {
diff --git a/lib/libc/nls/da.msg b/lib/libc/nls/da.ISO8859-1.msg
index 8507bc5d5e0..8507bc5d5e0 100644
--- a/lib/libc/nls/da.msg
+++ b/lib/libc/nls/da.ISO8859-1.msg
diff --git a/lib/libc/nls/da.UTF-8.msg b/lib/libc/nls/da.UTF-8.msg
new file mode 100644
index 00000000000..488d44e5d84
--- /dev/null
+++ b/lib/libc/nls/da.UTF-8.msg
@@ -0,0 +1,246 @@
+$set 1
+$ EPERM
+1 Handling ikke tilladt
+$ ENOENT
+2 Filen eller biblioteket findes ikke
+$ ESRCH
+3 Denna process findes ikke
+$ EINTR
+4 Systemkald afbrudt
+$ EIO
+5 I/O-fejl
+$ ENXIO
+6 Enheden er ikke konfigureret
+$ E2BIG
+7 Argumentlisten er for lang
+$ ENOEXEC
+8 Ikke-eksekverbar fil
+$ EBADF
+9 Defekt fildeskriptor
+$ ECHILD
+10 Ingen barneprocesser
+$ EDEADLK
+11 Undgik baglås
+$ ENOMEM
+12 Ingen hukommelse
+$ EACCES
+13 Adgang forbudt
+$ EFAULT
+14 Fejlagtig adresse
+$ ENOTBLK
+15 Blokenhed kræves
+$ EBUSY
+16 Enheden er optaget
+$ EEXIST
+17 Filen findes i forvejen
+$ EXDEV
+18 Linket krydser enheder
+$ ENODEV
+19 Enheden understøtter ikke operationen
+$ ENOTDIR
+20 Er ikke et bibliotek
+$ EISDIR
+21 Er et bibliotek
+$ EINVAL
+22 Ugyldigt argument
+$ ENFILE
+23 For mange åbne filer i systemet
+$ EMFILE
+24 For mange åbne filer
+$ ENOTTY
+25 Ikke-understøttet ioctl
+$ ETXTBSY
+26 Programfilen er optaget
+$ EFBIG
+27 Filen er for stor
+$ ENOSPC
+28 Ingen plads på enheden
+$ ESPIPE
+29 Ikke-tilladt søgning
+$ EROFS
+30 Skrivebeskyttet filsystem
+$ EMLINK
+31 For mange links
+$ EPIPE
+32 Afbrudt kommunikationskanal
+$ EDOM
+33 Numerisk argument udenfor definitionsmængden
+$ ERANGE
+34 Resultatet er for stort
+$ EAGAIN, EWOULDBLOCK
+35 Ressourcen er midlertidigt utilgængelig
+$ EINPROGRESS
+36 Operationen er i gang
+$ EALREADY
+37 Operationen ar allerede i gang
+$ ENOTSOCK
+38 Socketoperation på ikke-socket
+$ EDESTADDRREQ
+39 Destinationsadresse kræves
+$ EMSGSIZE
+40 For lang besked
+$ EPROTOTYPE
+41 Forkert protokoltype for socket
+$ ENOPROTOOPT
+42 Protokollen ikke tilgængelig
+$ EPROTONOSUPPORT
+43 Protokollen ikke understøttet
+$ ESOCKTNOSUPPORT
+44 Sockettypen ikke understøttet
+$ EOPNOTSUPP
+45 Operationen ikke understøttet
+$ EPFNOSUPPORT
+46 Protokolfamilien ikke understøttet
+$ EAFNOSUPPORT
+47 Adressefamilien ikke understøttet af protokolfamilien
+$ EADDRINUSE
+48 Adressen er optaget
+$ EADDRNOTAVAIL
+49 Kan ikke tildele den ønskede adresse
+$ ENETDOWN
+50 Netværket ude af drift
+$ ENETUNREACH
+51 Netværket er utilgængeligt
+$ ENETRESET
+52 Netværket mistede forbindelsen ved oprettelsen
+$ ECONNABORTED
+53 Programmel forårsagede forbindelsestab
+$ ECONNRESET
+54 Modparten afbrød forbindelsen
+$ ENOBUFS
+55 Ingen bufferplads tilgængelig
+$ EISCONN
+56 Socketen allerede forbundet
+$ ENOTCONN
+57 Socketen ikke forbundet
+$ ESHUTDOWN
+58 Kan ikke sende efter nedlukning af socket
+$ ETOOMANYREFS
+59 For mange referencer: kan ikke dele
+$ ETIMEDOUT
+60 Forbindelsen ikke forbundet i tide
+$ ECONNREFUSED
+61 Forbindelsen afvist
+$ ELOOP
+62 For mange niveauer af symbolske links
+$ ENAMETOOLONG
+63 Filnavn for langt
+$ EHOSTDOWN
+64 Værten er nede
+$ EHOSTUNREACH
+65 Værten kan ikke nås
+$ ENOTEMPTY
+66 Biblioteket ikke tomt
+$ EPROCLIM
+67 For mange processer
+$ EUSERS
+68 For mange brugere
+$ EDQUOT
+69 Diskkvote overskredet
+$ ESTALE
+70 Forældet NFS-filreference
+$ EREMOTE
+71 For mange fjernniveauer i stien
+$ EBADRPC
+72 Defekt RPC-struktur
+$ ERPCMISMATCH
+73 Defekt RPC-version
+$ EPROGUNAVAIL
+74 RPC-programmet utilgængeligt
+$ EPROGMISMATCH
+75 Defekt programversion
+$ EPROCUNAVAIL
+76 Fejlagtig procedure for programmet
+$ ENOLCK
+77 Ingen tilgængelige låse
+$ ENOSYS
+78 Funktionen ikke implementeret
+$ EFTYPE
+79 Upassende filtype eller format
+$ EAUTH
+80 Autentifikationsfejl
+$ ENEEDAUTH
+81 Behøver autentifikator
+$ EIPSEC
+82 IPsec-processeringsfejl
+$ NOATTR
+83 Attribute ikke fundet
+$ EILSEQ
+84 Illegal bytesequence
+$ ENOMEDIUM
+85 Intet medie fundet
+$ EMEDIUMTYPE
+86 Forkert medietype
+$ EOVERFLOW
+87 Værdi for stor til at gemmes i datatypen
+$ ECANCELED
+88 Operation aflyst
+$ EIDRM
+89 Identifikator fjernet
+$ ENOMSG
+90 Ingen besked af ønsket type
+$ ENOTSUP
+91 Ikke understøttet
+$set 2
+$ SIGHUP
+1 Læg på
+$ SIGINT
+2 Afbryd
+$ SIGQUIT
+3 Slut
+$ SIGILL
+4 Ulovlig instruktion
+$ SIGTRAP
+5 Sporings- eller afbrydelsespunktfælde
+$ SIGABRT
+6 Abortfælde
+$ SIGEMT
+7 Emuleringsfælde
+$ SIGFPE
+8 Kommatalsundtagelse
+$ SIGKILL
+9 Dræbt
+$ SIGBUS
+10 Busfejl
+$ SIGSEGV
+11 Segmenteringsfejl
+$ SIGSYS
+12 Defekt systemkald
+$ SIGPIPE
+13 Afbrudt kommunikationskanal
+$ SIGALRM
+14 Alarmsignal
+$ SIGTERM
+15 Afsluttet
+$ SIGURG
+16 Hastende I/O-tilstand
+$ SIGSTOP
+17 Stoppet (signal)
+$ SIGTSTP
+18 Stoppet
+$ SIGCONT
+19 Fortsat
+$ SIGCHLD
+20 Barn afsluttet
+$ SIGTTIN
+21 Stoppet (terminalindlæsning)
+$ SIGTTOU
+22 Stoppet (terminaludskrivning)
+$ SIGIO
+23 I/O muligt
+$ SIGXCPU
+24 Processortidgrænse overskredet
+$ SIGXFSZ
+25 Filstørrelsesgrænse overskredet
+$ SIGVTALRM
+26 Virtuelt ur udløbet
+$ SIGPROF
+27 Profileringsur udløbet
+$ SIGWINCH
+28 Vinduesstørrelse ændret
+$ SIGINFO
+29 Informationsforespørgsel
+$ SIGUSR1
+30 Brugerdefineret signal 1
+$ SIGUSR2
+31 Brugerdefineret signal 2
diff --git a/lib/libc/nls/de.msg b/lib/libc/nls/de.ISO8859-1.msg
index 719098244e5..719098244e5 100644
--- a/lib/libc/nls/de.msg
+++ b/lib/libc/nls/de.ISO8859-1.msg
diff --git a/lib/libc/nls/de.UTF-8.msg b/lib/libc/nls/de.UTF-8.msg
new file mode 100644
index 00000000000..40f56b64fce
--- /dev/null
+++ b/lib/libc/nls/de.UTF-8.msg
@@ -0,0 +1,246 @@
+$set 1
+$ EPERM
+1 Operation nicht erlaubt
+$ ENOENT
+2 Datei oder Verzeichnis nicht gefunden
+$ ESRCH
+3 Prozess nicht gefunden
+$ EINTR
+4 Unterbrochener Systemaufruf
+$ EIO
+5 Ein/Ausgabefehler
+$ ENXIO
+6 Gerät ist nicht konfiguriert
+$ E2BIG
+7 Argumentliste ist zu lang
+$ ENOEXEC
+8 Unbekanntes ausführbares Format
+$ EBADF
+9 Ungültiger Dateideskriptor
+$ ECHILD
+10 Kein Kindprozess
+$ EDEADLK
+11 Ein "Deadlock" wurde vermieden
+$ ENOMEM
+12 Kann nicht genug Speicher belegen
+$ EACCES
+13 Zugriff verboten
+$ EFAULT
+14 Ungültige Adresse
+$ ENOTBLK
+15 Blockgerät wird benötigt
+$ EBUSY
+16 Gerät ist belegt
+$ EEXIST
+17 Datei existiert bereits
+$ EXDEV
+18 Link zwischen verschiedenen Geräten
+$ ENODEV
+19 Die Operation wird von diesem Gerät nicht unterstützt
+$ ENOTDIR
+20 Kein Verzeichnis
+$ EISDIR
+21 Ist ein Verzeichnis
+$ EINVAL
+22 Ungültiges Argument
+$ ENFILE
+23 Zu viele offene Dateien im gesamten System
+$ EMFILE
+24 Zu viele offene Dateien
+$ ENOTTY
+25 Ungültiger ioctl für dieses Gerät
+$ ETXTBSY
+26 Ausführbare Datei wird benutzt
+$ EFBIG
+27 Datei zu groß
+$ ENOSPC
+28 Kein Platz mehr auf dem Gerät
+$ ESPIPE
+29 Ungültige Positionierung
+$ EROFS
+30 Dateisystem ist schreibgeschützt
+$ EMLINK
+31 Zu viele Links
+$ EPIPE
+32 Unterbrochene pipe
+$ EDOM
+33 Numerisches Argument ausserhalb des Wertebereichs
+$ ERANGE
+34 Ergebnis zu groß
+$ EAGAIN, EWOULDBLOCK
+35 Resource vorübergehend nicht verfügbar
+$ EINPROGRESS
+36 Operation wird jetzt fortgeführt
+$ EALREADY
+37 Operation wird bereits ausgeführt
+$ ENOTSOCK
+38 Deskriptor ist kein Socket
+$ EDESTADDRREQ
+39 Zieladresse benötigt
+$ EMSGSIZE
+40 Nachricht zu lang
+$ EPROTOTYPE
+41 Ungültiger Protokolltyp für diesen Socket
+$ ENOPROTOOPT
+42 Protokoll nicht verfügbar
+$ EPROTONOSUPPORT
+43 Protokoll nicht unterstützt
+$ ESOCKTNOSUPPORT
+44 Sockettyp nicht unterstützt
+$ EOPNOTSUPP
+45 Operation nicht unterstützt
+$ EPFNOSUPPORT
+46 Protokollfamilie nicht unterstützt
+$ EAFNOSUPPORT
+47 Addressart wird von der Protokollfamilie nicht unterstützt
+$ EADDRINUSE
+48 Addresse wird bereits benutzt
+$ EADDRNOTAVAIL
+49 Kann angeforderte Adresse nicht belegen
+$ ENETDOWN
+50 Netzwerk nicht verfügbar
+$ ENETUNREACH
+51 Netzwerk nicht erreichbar
+$ ENETRESET
+52 Netzwerk hat Verbindung mit Reset abgebrochen
+$ ECONNABORTED
+53 Software verursachte einen Verbindungsabbruch
+$ ECONNRESET
+54 Verbindung wurde von der Gegenstelle geschlossen
+$ ENOBUFS
+55 Keine Buffer verfügbar
+$ EISCONN
+56 Socket ist schon verbunden
+$ ENOTCONN
+57 Socket ist nicht verbunden
+$ ESHUTDOWN
+58 Kann nach einem Socket-Shutdown nicht mehr senden
+$ ETOOMANYREFS
+59 Zu viele Referenzen, kann nicht verbinden
+$ ETIMEDOUT
+60 Verbindungsabbruch durch Zeitüberschreitung
+$ ECONNREFUSED
+61 Verbindung wurde verweigert
+$ ELOOP
+62 Zu viele Ebenen von symbolischen Links
+$ ENAMETOOLONG
+63 Dateiname zu lang
+$ EHOSTDOWN
+64 Host nicht verfügbar
+$ EHOSTUNREACH
+65 Keine Route zum Host
+$ ENOTEMPTY
+66 Verzeichnis ist nicht leer
+$ EPROCLIM
+67 Zu viele Prozesse
+$ EUSERS
+68 Zu viele Benutzer
+$ EDQUOT
+69 Plattenplatzlimit erschöpft
+$ ESTALE
+70 Verwaister NFS-Dateideskriptor
+$ EREMOTE
+71 Zu viele Fernverweise in diesem Zugriff
+$ EBADRPC
+72 RPC-Struktur ist ungültig
+$ ERPCMISMATCH
+73 RPC-Version stimmt nicht
+$ EPROGUNAVAIL
+74 RPC-Programm nicht verfügbar
+$ EPROGMISMATCH
+75 Falsche Programmversion
+$ EPROCUNAVAIL
+76 Falsche Prozedur für dieses Programm
+$ ENOLCK
+77 Keine Dateisperren verfügbar
+$ ENOSYS
+78 Funktion nicht implementiert
+$ EFTYPE
+79 Ungültiger Dateityp oder Dateiformat
+$ EAUTH
+80 Authentikationsfehler
+$ ENEEDAUTH
+81 Authentikator benötigt
+$ EIPSEC
+82 IPsec Verarbeitungsfehler
+$ ENOATTR
+83 Attribut nicht gefunden
+$ EILSEQ
+84 Illegale Byte-Sequenz
+$ ENOMEDIUM
+85 Kein Medium gefunden
+$ EMEDIUMTYPE
+86 Falscher Medientyp
+$ EOVERFLOW
+87 Wert zu groß, um in Datentyp zu speichern
+$ ECANCELED
+88 Operation abgebrochen
+$ EIDRM
+89 Identifizierung entfernt
+$ ENOMSG
+90 Keine Nachricht vom gewünschten Typ
+$ ENOTSUP
+91 Nicht unterstützt
+$set 2
+$ SIGHUP
+1 Verbindungsende
+$ SIGINT
+2 Unterbrechung
+$ SIGQUIT
+3 Ende
+$ SIGILL
+4 Ungültiger Maschinenbefehl
+$ SIGTRAP
+5 Trace/BPT trap
+$ SIGABRT
+6 Abort trap
+$ SIGEMT
+7 EMT trap
+$ SIGFPE
+8 Fließkommafehler
+$ SIGKILL
+9 Killed
+$ SIGBUS
+10 Bus Fehler
+$ SIGSEGV
+11 Illegaler Speicherzugriff
+$ SIGSYS
+12 Ungültiger Systemaufruf
+$ SIGPIPE
+13 Unterbrochene Pipe
+$ SIGALRM
+14 Wecker
+$ SIGTERM
+15 Beendet
+$ SIGURG
+16 Dringende Ein/Ausgabeanforderung
+$ SIGSTOP
+17 Angehalten (Signal)
+$ SIGTSTP
+18 Angehalten
+$ SIGCONT
+19 Fortgesetzt
+$ SIGCHLD
+20 Kindprozess beendet
+$ SIGTTIN
+21 Angehalten (tty Eingabe)
+$ SIGTTOU
+22 Angehalten (tty Ausgabe)
+$ SIGIO
+23 Ein/Ausgabe ist möglich
+$ SIGXCPU
+24 CPU-Zeitlimit erschöpft
+$ SIGXFSZ
+25 Dateigröße hat das Limit erreicht
+$ SIGVTALRM
+26 Virtueller Zähler abgelaufen
+$ SIGPROF
+27 Profil-Zähler abgelaufen
+$ SIGWINCH
+28 Fenstergröße hat sich geändert
+$ SIGINFO
+29 Informationsanforderung
+$ SIGUSR1
+30 Benutzerdefiniertes Signal 1
+$ SIGUSR2
+31 Benutzerdefiniertes Signal 2
diff --git a/lib/libc/nls/es.msg b/lib/libc/nls/es.ISO8859-1.msg
index 6ee6483ce00..6ee6483ce00 100644
--- a/lib/libc/nls/es.msg
+++ b/lib/libc/nls/es.ISO8859-1.msg
diff --git a/lib/libc/nls/es.UTF-8.msg b/lib/libc/nls/es.UTF-8.msg
new file mode 100644
index 00000000000..9b89b5f5b35
--- /dev/null
+++ b/lib/libc/nls/es.UTF-8.msg
@@ -0,0 +1,222 @@
+$set 1
+$ EPERM
+1 Operación no permitida
+$ ENOENT
+2 Fichero o directorio no existente
+$ ESRCH
+3 Proceso inexistente
+$ EINTR
+4 Llamada del sistema interrumpida
+$ EIO
+5 Error de E/S
+$ ENXIO
+6 Dispositivo no configurado
+$ E2BIG
+7 La lista de argumentos es demasiado amplia
+$ ENOEXEC
+8 Error en el formato del ejecutable
+$ EBADF
+9 Descriptor de fichero incorrecto
+$ ECHILD
+10 No hay procesos hijo
+$ EDEADLK
+11 Se ha evitado bloqueo del recurso
+$ ENOMEM
+12 No se pudo asignar la memoria pedida
+$ EACCES
+13 Permiso denegado
+$ EFAULT
+14 Dirección incorrecta
+$ ENOTBLK
+15 Se necesita un dispositivo de bloques
+$ EBUSY
+16 Dispositivo ocupado
+$ EEXIST
+17 El fichero ya existe
+$ EXDEV
+18 Enlace entre dispositivos
+$ ENODEV
+19 Operación inadecuada para este dispositivo
+$ ENOTDIR
+20 No es un directorio
+$ EISDIR
+21 Es un directorio
+$ EINVAL
+22 Argumento inadecuado
+$ ENFILE
+23 Hay demasiados ficheros abiertos en el sistema
+$ EMFILE
+24 Hay demasiados ficheros abiertos
+$ ENOTTY
+25 IOCTL inapropiado para el dispositivo
+$ ETXTBSY
+26 Fichero de texto ocupado
+$ EFBIG
+27 Fichero demasiado grande
+$ ENOSPC
+28 No queda espacio libre en el dispositivo
+$ ESPIPE
+29 Búsqueda ilegal
+$ EROFS
+30 Fichero del sistema de sólo lectura
+$ EMLINK
+31 Demasiados enlaces
+$ EPIPE
+32 Canal (pipe) roto
+$ EDOM
+33 El argumento numérico está fuera de rango
+$ ERANGE
+34 El resultado es demasiado grande
+$ EAGAIN, EWOULDBLOCK
+35 El recurso está temporalmente no disponible
+$ EINPROGRESS
+36 Operación actualmente en proceso
+$ EALREADY
+37 La operación ya estaba realizándose
+$ ENOTSOCK
+38 Se ha intentado realizar una operación de socket en algo que no es un socket
+$ EDESTADDRREQ
+39 Se necesita una dirección de destino
+$ EMSGSIZE
+40 Mensaje demasiado largo
+$ EPROTOTYPE
+41 Tipo erróneo de protocolo para el socket
+$ ENOPROTOOPT
+42 Protocolo no disponible
+$ EPROTONOSUPPORT
+43 Protocolo no contemplado
+$ ESOCKTNOSUPPORT
+44 Tipo de socket no contemplado
+$ EOPNOTSUPP
+45 Operación no contemplada
+$ EPFNOSUPPORT
+46 Familia de protocolos no contemplada
+$ EAFNOSUPPORT
+47 Familia de direcciones no contemplada por la familia de protocolos
+$ EADDRINUSE
+48 La dirección ya está en uso
+$ EADDRNOTAVAIL
+49 No se pudo asignar la dirección pedida
+$ ENETDOWN
+50 La red no funciona
+$ ENETUNREACH
+51 No se puede acceder a la red
+$ ENETRESET
+52 La conexión a la red se interrumpió al reinicializar
+$ ECONNABORTED
+53 La conexi@@@n se ha abortado debid a problemas en el software
+$ ECONNRESET
+54 El interlocutor ha reinicializado la comunicación
+$ ENOBUFS
+55 No queda espacio en el almacenamiento intermedio
+$ EISCONN
+56 El socket ya estaba conectado
+$ ENOTCONN
+57 El socket no está conectado
+$ ESHUTDOWN
+58 No se puede enviar tras la desconexión del socket
+$ ETOOMANYREFS
+59 Demasiadas referencias: no se puede unir
+$ ETIMEDOUT
+60 El tiempo de conexión ha expirado
+$ ECONNREFUSED
+61 Conexión rehusada
+$ ELOOP
+62 Demasiados niveles de enlaces simbólicos
+$ ENAMETOOLONG
+63 Nombre de fichero demasiado largo
+$ EHOSTDOWN
+64 La máquina está caída
+$ EHOSTUNREACH
+65 No hay ruta hasta la máquina
+$ ENOTEMPTY
+66 Directorio no vacío
+$ EPROCLIM
+67 Demasiados procesos
+$ EUSERS
+68 Demasiados usuarios
+$ EDQUOT
+69 Cuota de disco sobrepasada
+$ ESTALE
+70 Manejador de fichero NFS inválido
+$ EREMOTE
+71 Camino con demasiados niveles
+$ EBADRPC
+72 La estructura de la RPC es errónea
+$ ERPCMISMATCH
+73 La versión de la RPC es errónea
+$ EPROGUNAVAIL
+74 La RPC no está accesible
+$ EPROGMISMATCH
+75 Versión errónea del programa
+$ EPROCUNAVAIL
+76 Procedimiento erróneo para el programa
+$ ENOLCK
+77 No hay cerrojos disponibles
+$ ENOSYS
+78 Función no realizada
+$ EFTYPE
+79 Tipo de fichero o formato inapropiado
+$set 2
+$ SIGHUP
+1 Bloqueo del sistema
+$ SIGINT
+2 Interrupción
+$ SIGQUIT
+3 Terminación
+$ SIGILL
+4 Instrucción ilegal
+$ SIGTRAP
+5 Depuración
+$ SIGABRT
+6 Llamada de aborto
+$ SIGEMT
+7 EMT trap
+$ SIGFPE
+8 Excepción de coma flotante
+$ SIGKILL
+9 Asesinato
+$ SIGBUS
+10 Error en el bus
+$ SIGSEGV
+11 Fallo de segmentación
+$ SIGSYS
+12 Llamada al sistema errónea
+$ SIGPIPE
+13 Canal (pipe) roto
+$ SIGALRM
+14 Alarma del reloj
+$ SIGTERM
+15 Terminado
+$ SIGURG
+16 Condición urgente de E/S
+$ SIGSTOP
+17 Detenido (señal)
+$ SIGTSTP
+18 Detenido
+$ SIGCONT
+19 Continuado {continuando}
+$ SIGCHLD
+20 Proceso hijo finalizado
+$ SIGTTIN
+21 Detenido (entrada tty)
+$ SIGTTOU
+22 Detenido (salida tty)
+$ SIGIO
+23 E/S posible {permisible}
+$ SIGXCPU
+24 Se ha sobrepasado el tiempo límite de la CPU
+$ SIGXFSZ
+25 Se ha sobrepasado el límite de longitud de fichero
+$ SIGVTALRM
+26 Temporizador virtual expirado
+$ SIGPROF
+27 Perfilador expirado
+$ SIGWINCH
+28 Cambios en el tamaño de la ventana
+$ SIGINFO
+29 Petición de información
+$ SIGUSR1
+30 Señal definida por el usuario nº 1
+$ SIGUSR2
+31 Señal definida por el usuario nº 2
diff --git a/lib/libc/nls/fi.msg b/lib/libc/nls/fi.ISO8859-1.msg
index b81349bf088..b81349bf088 100644
--- a/lib/libc/nls/fi.msg
+++ b/lib/libc/nls/fi.ISO8859-1.msg
diff --git a/lib/libc/nls/fi.UTF-8.msg b/lib/libc/nls/fi.UTF-8.msg
new file mode 100644
index 00000000000..54ca2e5ac2e
--- /dev/null
+++ b/lib/libc/nls/fi.UTF-8.msg
@@ -0,0 +1,222 @@
+$set 1
+$ EPERM
+1 Toimintoa ei sallita
+$ ENOENT
+2 Tiedostoa tai hakemistoa ei löydy
+$ ESRCH
+3 Prosessia ei löydy
+$ EINTR
+4 Systeemikutsu keskeytyi
+$ EIO
+5 Syöttö/tulostusvirhe
+$ ENXIO
+6 Laitetta ei määritelty
+$ E2BIG
+7 Liikaa argumentteja
+$ ENOEXEC
+8 Tuntematon ohjelmatyyppi
+$ EBADF
+9 Virheellinen tiedosto-osoitin
+$ ECHILD
+10 Ei lapsiprosesseja
+$ EDEADLK
+11 Resurssin ristiinlukitus vältetty
+$ ENOMEM
+12 Muistinvaraus epäonnistui
+$ EACCES
+13 Lupa kielletty
+$ EFAULT
+14 Virheellinen osoite
+$ ENOTBLK
+15 Tarvitaan lohko-osoitettava laite
+$ EBUSY
+16 Laite käytössä
+$ EEXIST
+17 Tiedosto on jo olemassa
+$ EXDEV
+18 Laitteiden välinen linkki
+$ ENODEV
+19 Laite ei tue toimintoa
+$ ENOTDIR
+20 Kohde ei ole hakemisto
+$ EISDIR
+21 Kohde on hakemisto
+$ EINVAL
+22 Virheellinen argumentti
+$ ENFILE
+23 Järjestelmässä on liian monta avointa tiedostoa
+$ EMFILE
+24 Liian monta avointa tiedostoa
+$ ENOTTY
+25 Virheellinen ohjaustoiminto laitteelle
+$ ETXTBSY
+26 Tiedosto on käytössä
+$ EFBIG
+27 Tiedosto liian suuri
+$ ENOSPC
+28 Laitteella ei ole tilaa
+$ ESPIPE
+29 Virheellinen haku
+$ EROFS
+30 Vain luettava tiedostojärjestelmä
+$ EMLINK
+31 Liian monta linkkiä
+$ EPIPE
+32 Katkennut putki
+$ EDOM
+33 Numeerinen syöte virheellinen
+$ ERANGE
+34 Tulos liian suuri
+$ EAGAIN, EWOULDBLOCK
+35 Resurssi ei ole tilapäisesti saatavilla
+$ EINPROGRESS
+36 Toiminta on käynnissä
+$ EALREADY
+37 Toiminta oli jo käynnissä
+$ ENOTSOCK
+38 Socket-operaatio muulla kuin socketilla
+$ EDESTADDRREQ
+39 Tarvitaan kohdeosoite
+$ EMSGSIZE
+40 Sanoma liian pitkä
+$ EPROTOTYPE
+41 Väärä protokolla socketille
+$ ENOPROTOOPT
+42 Protokolla ei ole käytettävissä
+$ EPROTONOSUPPORT
+43 Protokollaa ei tueta
+$ ESOCKTNOSUPPORT
+44 Socket-tyyppiä ei tueta
+$ EOPNOTSUPP
+45 Toimintoa ei tueta
+$ EPFNOSUPPORT
+46 Protokollaperhettä ei tueta
+$ EAFNOSUPPORT
+47 Protokollaperhe ei tue osoiteperhettä
+$ EADDRINUSE
+48 Osoite on jo käytössä
+$ EADDRNOTAVAIL
+49 Ei pysty antamaan pyydettyä osoitetta
+$ ENETDOWN
+50 Verkko ei ole käytettävissä
+$ ENETUNREACH
+51 Verkkoon ei ole yhteyttä
+$ ENETRESET
+52 Verkko sulki yhteyden
+$ ECONNABORTED
+53 Ohjelmiston aiheuttama yhteyden keskeytyminen
+$ ECONNRESET
+54 Isäntä nollasi yhteyden
+$ ENOBUFS
+55 Puskuritila on lopussa
+$ EISCONN
+56 Yhteys on jo olemassa
+$ ENOTCONN
+57 Yhteyttä ei ole olemassa
+$ ESHUTDOWN
+58 Lähettäminen ei ole mahdollista yhteyden katkaisun jälkeen
+$ ETOOMANYREFS
+59 Liikaa viittauksia: ei voi yhdistää
+$ ETIMEDOUT
+60 Yhteyden aikavalvontakatkaisu
+$ ECONNREFUSED
+61 Yhteys hylätty
+$ ELOOP
+62 Liian monta peräkkäistä symbolista linkkiä
+$ ENAMETOOLONG
+63 Tiedoston nimi on liian pitkä
+$ EHOSTDOWN
+64 Isäntä ei vastaa
+$ EHOSTUNREACH
+65 Ei reittiä isäntään
+$ ENOTEMPTY
+66 Hakemisto ei ole tyhjä
+$ EPROCLIM
+67 Liian monta prosessia
+$ EUSERS
+68 Liian monta käyttäjää
+$ EDQUOT
+69 Levytilarajoitus ylittyi
+$ ESTALE
+70 Vanhentunut NFS-yhteys
+$ EREMOTE
+71 Liian monta verkkolevyä polussa
+$ EBADRPC
+72 Virheellinen RPC-pyyntö
+$ ERPCMISMATCH
+73 Väärä RPC-versio
+$ EPROGUNAVAIL
+74 RPC ei käytettävissä
+$ EPROGMISMATCH
+75 Väärä ohjelmaversio
+$ EPROCUNAVAIL
+76 Väärä RPC-pyyntö ohjelmalle
+$ ENOLCK
+77 Lukitus ei käytettävissä
+$ ENOSYS
+78 Toimintoa ei ole
+$ EFTYPE
+79 Väärä tiedostotyyppi tai -formaatti
+$set 2
+$ SIGHUP
+1 Katkaisu
+$ SIGINT
+2 Keskeytys
+$ SIGQUIT
+3 Lopetus
+$ SIGILL
+4 Laiton käsky
+$ SIGTRAP
+5 Jäljitys/BPT ansa
+$ SIGABRT
+6 Poistumisansa
+$ SIGEMT
+7 EMT-ansa
+$ SIGFPE
+8 Liukulukuvirhe
+$ SIGKILL
+9 Tapettu
+$ SIGBUS
+10 Väylävirhe
+$ SIGSEGV
+11 Suojausvirhe
+$ SIGSYS
+12 Virheellinen systeemikutsu
+$ SIGPIPE
+13 Katkennut putki
+$ SIGALRM
+14 Hälytyskello
+$ SIGTERM
+15 Lopetettu
+$ SIGURG
+16 Kiireellinen syöttö/tulostus
+$ SIGSTOP
+17 Pysäytetty (signaali)
+$ SIGTSTP
+18 Pysäytetty
+$ SIGCONT
+19 Jatkettu
+$ SIGCHLD
+20 Lapsiprosessi päättynyt
+$ SIGTTIN
+21 Pysäytetty (tty-syöte)
+$ SIGTTOU
+22 Pysäytetty (tty-tuloste)
+$ SIGIO
+23 Syöttö ja tulostus mahdollisia
+$ SIGXCPU
+24 Keskusyksikköaikarajoitus ylitetty
+$ SIGXFSZ
+25 Tiedoston kokorajoitus ylitetty
+$ SIGVTALRM
+26 Virtuaali-ajastin laukesi
+$ SIGPROF
+27 Profilointiajastin laukesi
+$ SIGWINCH
+28 Ikkunan koko muuttuu
+$ SIGINFO
+29 Informaatiopyyntö
+$ SIGUSR1
+30 Käyttäjän määriteltävä signaali 1
+$ SIGUSR2
+31 Käyttäjän määriteltävä signaali 2
diff --git a/lib/libc/nls/fr.msg b/lib/libc/nls/fr.ISO8859-1.msg
index 0a90f35c3a7..0a90f35c3a7 100644
--- a/lib/libc/nls/fr.msg
+++ b/lib/libc/nls/fr.ISO8859-1.msg
diff --git a/lib/libc/nls/fr.UTF-8.msg b/lib/libc/nls/fr.UTF-8.msg
new file mode 100644
index 00000000000..5a49ea76d0a
--- /dev/null
+++ b/lib/libc/nls/fr.UTF-8.msg
@@ -0,0 +1,222 @@
+$set 1
+$ EPERM
+1 Opération non autorisée
+$ ENOENT
+2 Fichier ou répertoire introuvable
+$ ESRCH
+3 Processus introuvable
+$ EINTR
+4 Appel système interrompu
+$ EIO
+5 Erreur d'entrée/sortie
+$ ENXIO
+6 Périphérique non configuré
+$ E2BIG
+7 Liste de paramètres trop longue
+$ ENOEXEC
+8 Erreur de format d'exécutable
+$ EBADF
+9 Descripteur de fichier invalide
+$ ECHILD
+10 Pas de processus fils
+$ EDEADLK
+11 Etreinte fatale évitée
+$ ENOMEM
+12 Plus de mémoire
+$ EACCES
+13 Autorisation refusée
+$ EFAULT
+14 Adresse invalide
+$ ENOTBLK
+15 Nécessite un périphérique en mode bloc
+$ EBUSY
+16 Périphérique occupé
+$ EEXIST
+17 Fichier existant
+$ EXDEV
+18 Lien hors du périphérique
+$ ENODEV
+19 Opération non supportée par le périphérique
+$ ENOTDIR
+20 N'est pas un répertoire
+$ EISDIR
+21 Est un répertoire
+$ EINVAL
+22 Paramètre invalide
+$ ENFILE
+23 Trop de fichiers ouverts dans le système
+$ EMFILE
+24 Trop de fichiers ouverts
+$ ENOTTY
+25 Ioctl inconnu du périphérique
+$ ETXTBSY
+26 Fichier exécutable utilisé
+$ EFBIG
+27 Fichier trop grand
+$ ENOSPC
+28 Plus de place sur le périphérique
+$ ESPIPE
+29 Positionnement illégal
+$ EROFS
+30 Système de fichier protégé en écriture
+$ EMLINK
+31 Trop de liens
+$ EPIPE
+32 Tube cassé
+$ EDOM
+33 Paramètre numérique hors du domaine
+$ ERANGE
+34 Résultat trop grand
+$ EAGAIN, EWOULDBLOCK
+35 Ressource temporairement indisponible
+$ EINPROGRESS
+36 Opération actuellement en cours
+$ EALREADY
+37 Opération déjà en cours
+$ ENOTSOCK
+38 Opération réservée aux sockets
+$ EDESTADDRREQ
+39 Adresse de destination nécessaire
+$ EMSGSIZE
+40 Message trop long
+$ EPROTOTYPE
+41 Protocole inadapté au socket
+$ ENOPROTOOPT
+42 Protocole non disponible
+$ EPROTONOSUPPORT
+43 Protocole non supporté
+$ ESOCKTNOSUPPORT
+44 Type de socket non supporté
+$ EOPNOTSUPP
+45 Opération non supportée
+$ EPFNOSUPPORT
+46 Famille de protocoles non supportée
+$ EAFNOSUPPORT
+47 Famille d'adresses non supportée par cette famille de protocoles
+$ EADDRINUSE
+48 Adresse déjà utilisée
+$ EADDRNOTAVAIL
+49 Impossible d'affecter l'adresse demandée
+$ ENETDOWN
+50 Réseau arrêté
+$ ENETUNREACH
+51 Réseau non atteignable
+$ ENETRESET
+52 Connexion perdue après RAZ du réseau
+$ ECONNABORTED
+53 Fin de connexion causée par logiciel
+$ ECONNRESET
+54 Connexion terminée par le correspondant
+$ ENOBUFS
+55 Plus de place pour la mémoire tampon
+$ EISCONN
+56 Socket déjà connecté
+$ ENOTCONN
+57 Socket non connecté
+$ ESHUTDOWN
+58 Impossible de transmettre après fermeture du socket
+$ ETOOMANYREFS
+59 Trop de références: impossible à réassembler
+$ ETIMEDOUT
+60 Délai de connexion expiré
+$ ECONNREFUSED
+61 Connexion refusée
+$ ELOOP
+62 Trop de niveaux de liens symboliques
+$ ENAMETOOLONG
+63 Nom de fichier trop long
+$ EHOSTDOWN
+64 Machine arrêtée
+$ EHOSTUNREACH
+65 Pas de route vers cette machine
+$ ENOTEMPTY
+66 Répertoire non vide
+$ EPROCLIM
+67 Trop de processus
+$ EUSERS
+68 Trop d'utilisateurs
+$ EDQUOT
+69 Quota disque épuisé
+$ ESTALE
+70 Identificateur NFS périmé
+$ EREMOTE
+71 Trop de points de montages dans le chemin
+$ EBADRPC
+72 Structure RPC invalide
+$ ERPCMISMATCH
+73 Mauvaise version RPC
+$ EPROGUNAVAIL
+74 Programme RPC non disponible
+$ EPROGMISMATCH
+75 Mauvaise version de programme
+$ EPROCUNAVAIL
+76 Procédure inexistante
+$ ENOLCK
+77 Pas de verrous disponibles
+$ ENOSYS
+78 Fonction non implémentée
+$ EFTYPE
+79 Type ou format de fichier inadapté
+$set 2
+$ SIGHUP
+1 Raccroché
+$ SIGINT
+2 Interruption
+$ SIGQUIT
+3 Quitte
+$ SIGILL
+4 Instruction illégale
+$ SIGTRAP
+5 Point de trace/arrêt
+$ SIGABRT
+6 Avorté
+$ SIGEMT
+7 Appel émulateur
+$ SIGFPE
+8 Exception numérique
+$ SIGKILL
+9 Tué
+$ SIGBUS
+10 Erreur bus
+$ SIGSEGV
+11 Erreur de segmentation
+$ SIGSYS
+12 Appel système invalide
+$ SIGPIPE
+13 Tube cassé
+$ SIGALRM
+14 Alarme
+$ SIGTERM
+15 Terminé
+$ SIGURG
+16 Condition d'E/S urgente
+$ SIGSTOP
+17 Arrêté par un signal
+$ SIGTSTP
+18 Arrêté
+$ SIGCONT
+19 Reprise
+$ SIGCHLD
+20 Fin d'un fils
+$ SIGTTIN
+21 Arrêté (lecture sur tty)
+$ SIGTTOU
+22 Arrêté (écriture sur tty)
+$ SIGIO
+23 E/S possible
+$ SIGXCPU
+24 Limite du temps CPU atteinte
+$ SIGXFSZ
+25 Limite de taille de fichier atteinte
+$ SIGVTALRM
+26 Timer virtuel expiré
+$ SIGPROF
+27 Timer de profiling expiré
+$ SIGWINCH
+28 Changement de taille de la fenêtre
+$ SIGINFO
+29 Demande d'informations
+$ SIGUSR1
+30 Signal utilisateur 1
+$ SIGUSR2
+31 Signal utilisateur 2
diff --git a/lib/libc/nls/it.msg b/lib/libc/nls/it.UTF-8.msg
index 746f4b8cee8..1708548b5f3 100644
--- a/lib/libc/nls/it.msg
+++ b/lib/libc/nls/it.UTF-8.msg
@@ -38,7 +38,7 @@ $ EXDEV
$ ENODEV
19 Operazione non supportata dalla periferica
$ ENOTDIR
-20 Non è una directory
+20 Non è una directory
$ EISDIR
21 E' una directory
$ EINVAL
@@ -72,7 +72,7 @@ $ EAGAIN, EWOULDBLOCK
$ EINPROGRESS
36 Operazione in esecuzione
$ EALREADY
-37 Operazione già in esecuzione
+37 Operazione già in esecuzione
$ ENOTSOCK
38 Operazione sui socket eseguita su un non-socket
$ EDESTADDRREQ
@@ -94,7 +94,7 @@ $ EPFNOSUPPORT
$ EAFNOSUPPORT
47 Famiglia di indirizzi non supportata dalla famiglia di protocolli
$ EADDRINUSE
-48 Indirizzo già in uso
+48 Indirizzo già in uso
$ EADDRNOTAVAIL
49 Impossibile assegnare l'indirizzo richiesto
$ ENETDOWN
@@ -110,7 +110,7 @@ $ ECONNRESET
$ ENOBUFS
55 Spazio del buffer esaurito
$ EISCONN
-56 Socket già connesso
+56 Socket già connesso
$ ENOTCONN
57 Socket non connesso
$ ESHUTDOWN
diff --git a/lib/libc/nls/nl.msg b/lib/libc/nls/nl.ISO8859-1.msg
index fcec400912c..fcec400912c 100644
--- a/lib/libc/nls/nl.msg
+++ b/lib/libc/nls/nl.ISO8859-1.msg
diff --git a/lib/libc/nls/nl.UTF-8.msg b/lib/libc/nls/nl.UTF-8.msg
new file mode 100644
index 00000000000..fcec400912c
--- /dev/null
+++ b/lib/libc/nls/nl.UTF-8.msg
@@ -0,0 +1,246 @@
+$set 1
+$ EPERM
+1 Bewerking niet toegestaan
+$ ENOENT
+2 Bestand of directory niet gevonden
+$ ESRCH
+3 Proces bestaat niet
+$ EINTR
+4 Onderbroken systeemaanroep
+$ EIO
+5 Invoer/uitvoer-fout
+$ ENXIO
+6 Apparaat niet geconfigureerd
+$ E2BIG
+7 Te veel of te lange argumenten
+$ ENOEXEC
+8 Ongeldige bestandsindeling voor uitvoering
+$ EBADF
+9 Ongeldige bestandsverwijzing
+$ ECHILD
+10 Proces heeft geen kinderen
+$ EDEADLK
+11 "Deadlock" in systeem voorkomen
+$ ENOMEM
+12 Kan geen geheugen verkrijgen
+$ EACCES
+13 Toegang geweigerd
+$ EFAULT
+14 Ongeldig geheugenadres
+$ ENOTBLK
+15 Apparaat niet per blok addresseerbaar
+$ EBUSY
+16 Apparaat bezig
+$ EEXIST
+17 Bestandsnaam in gebruik
+$ EXDEV
+18 Koppeling kruist twee bestandssystemen
+$ ENODEV
+19 Bewerking niet ondersteund door apparaat
+$ ENOTDIR
+20 Geen directory
+$ EISDIR
+21 Is een directory
+$ EINVAL
+22 Ongeldig argument
+$ ENFILE
+23 Te veel open bestanden in het systeem
+$ EMFILE
+24 Te veel open bestanden
+$ ENOTTY
+25 ioctl niet ondersteund door apparaat
+$ ETXTBSY
+26 Programmabestand in gebruik
+$ EFBIG
+27 Bestand te groot
+$ ENOSPC
+28 Bestandssysteem vol
+$ ESPIPE
+29 Ongeldige zoekopdracht
+$ EROFS
+30 Alleen leestoegang tot bestandssysteem
+$ EMLINK
+31 Te veel koppelingen
+$ EPIPE
+32 Gebroken pijp
+$ EDOM
+33 Numeriek argument buiten domein
+$ ERANGE
+34 Numeriek resultaat buiten bereik
+$ EAGAIN, EWOULDBLOCK
+35 Hulpmiddel tijdelijk niet beschikbaar
+$ EINPROGRESS
+36 Bewerking in gang gezet
+$ EALREADY
+37 Bewerking reeds aan de gang
+$ ENOTSOCK
+38 Bewerking alleen toepasbaar op socket
+$ EDESTADDRREQ
+39 Bestemmingsadres vereist
+$ EMSGSIZE
+40 Boodschap te lang
+$ EPROTOTYPE
+41 Onjuist protocoltype voor socket
+$ ENOPROTOOPT
+42 Protocol niet beschikbaar
+$ EPROTONOSUPPORT
+43 Protocol niet ondersteund
+$ ESOCKTNOSUPPORT
+44 Sockettype niet ondersteund
+$ EOPNOTSUPP
+45 Bewerking niet ondersteund
+$ EPFNOSUPPORT
+46 Protocolfamilie niet ondersteund
+$ EAFNOSUPPORT
+47 Adresfamilie niet ondersteund door protocolfamilie
+$ EADDRINUSE
+48 Adres al in gebruik
+$ EADDRNOTAVAIL
+49 Gewenst adres kan niet worden toegekend
+$ ENETDOWN
+50 Netwerk onbruikbaar
+$ ENETUNREACH
+51 Netwerk niet bereikbaar
+$ ENETRESET
+52 Netwerk verbrak verbinding na herstart
+$ ECONNABORTED
+53 Verbinding verbroken door applicatie
+$ ECONNRESET
+54 Verbinding verbroken door tegenpartij
+$ ENOBUFS
+55 Geen bufferruimte beschikbaar
+$ EISCONN
+56 Socket reeds verbonden
+$ ENOTCONN
+57 Socket is niet verbonden
+$ ESHUTDOWN
+58 Kan geen data verzenden via gesloten socket
+$ ETOOMANYREFS
+59 Te veel verwijzingen: splitsen niet mogelijk
+$ ETIMEDOUT
+60 Verbinding verbroken wegens inactiviteit
+$ ECONNREFUSED
+61 Verbinding geweigerd
+$ ELOOP
+62 Te veel niveaus van symbolische verwijzingen
+$ ENAMETOOLONG
+63 Bestandsnaam te lang
+$ EHOSTDOWN
+64 Tegenpartij vertoont geen netwerkactiviteit
+$ EHOSTUNREACH
+65 Tegenpartij onbereikbaar
+$ ENOTEMPTY
+66 Directory niet leeg
+$ EPROCLIM
+67 Te veel processen
+$ EUSERS
+68 Te veel gebruikers
+$ EDQUOT
+69 Diskquotum overschreden
+$ ESTALE
+70 Bestandsverwijzing op NFS ongeldig geworden
+$ EREMOTE
+71 Te veel verwijzingen in dit pad
+$ EBADRPC
+72 RPC-structuur misvormd
+$ ERPCMISMATCH
+73 Verkeerde RPC-versie
+$ EPROGUNAVAIL
+74 RPC-programma niet beschikbaar
+$ EPROGMISMATCH
+75 Verkeerde programmaversie
+$ EPROCUNAVAIL
+76 Verkeerde procedure voor programma
+$ ENOLCK
+77 Geen locks beschikbaar
+$ ENOSYS
+78 Systeemfunctie niet geimplementeerd
+$ EFTYPE
+79 Bestandstype of -indeling ongeldig
+$ EAUTH
+80 Authenticatie fout
+$ ENEEDAUTH
+81 Authenticatie procedure benodigd
+$ EIPSEC
+82 IPsec verwerkingsfout
+$ ENOATTR
+83 Attribuut niet gevonden
+$ EILSEQ
+84 Ongeldige coderings reeks
+$ ENOMEDIUM
+85 Medium niet gevonden
+$ EMEDIUMTYPE
+86 Verkeerd medium type
+$ EOVERFLOW
+87 Waarde te groot om te bewaren in data type
+$ ECANCELED
+88 Bewerking afgebroken
+$ EIDRM
+89 Identificeerder verwijderd
+$ ENOMSG
+90 Geen boodschap van het gewenste type
+$ ENOTSUP
+91 Niet ondersteund
+$set 2
+$ SIGHUP
+1 Opgehangen
+$ SIGINT
+2 Onderbroken
+$ SIGQUIT
+3 Opgegeven
+$ SIGILL
+4 Ongeldige instructie
+$ SIGTRAP
+5 Tracing/BPT-onderbreking
+$ SIGABRT
+6 Afgebroken
+$ SIGEMT
+7 Emulatiefout
+$ SIGFPE
+8 Fout bij deling
+$ SIGKILL
+9 Gedood
+$ SIGBUS
+10 Busfout
+$ SIGSEGV
+11 Segmentatiefout
+$ SIGSYS
+12 Verkeerde systeemaanroep
+$ SIGPIPE
+13 Gebroken pijp
+$ SIGALRM
+14 Alarmsignaal
+$ SIGTERM
+15 Beeindigd
+$ SIGURG
+16 Invoer/uitvoer dringend
+$ SIGSTOP
+17 Gestopt (signaal)
+$ SIGTSTP
+18 Gestopt
+$ SIGCONT
+19 Voortgezet
+$ SIGCHLD
+20 Kindproces geeindigd
+$ SIGTTIN
+21 Gestopt (invoer van terminal)
+$ SIGTTOU
+22 Gestopt (uitvoer naar terminal)
+$ SIGIO
+23 Invoer/uitvoer mogelijk
+$ SIGXCPU
+24 Limiet op CPU-tijd overschreden
+$ SIGXFSZ
+25 Maximale bestandsgrootte overschreden
+$ SIGVTALRM
+26 Alarmsignaal van virtuele wekker
+$ SIGPROF
+27 Alarmsignaal van profiling-wekker
+$ SIGWINCH
+28 Vensterafmeting gewijzigd
+$ SIGINFO
+29 Verzoek om informatie
+$ SIGUSR1
+30 Gebruikersignaal 1
+$ SIGUSR2
+31 Gebruikersignaal 2
diff --git a/lib/libc/nls/no.msg b/lib/libc/nls/no.ISO8859-1.msg
index 762f45c50a3..762f45c50a3 100644
--- a/lib/libc/nls/no.msg
+++ b/lib/libc/nls/no.ISO8859-1.msg
diff --git a/lib/libc/nls/no.UTF-8.msg b/lib/libc/nls/no.UTF-8.msg
new file mode 100644
index 00000000000..2435e20158e
--- /dev/null
+++ b/lib/libc/nls/no.UTF-8.msg
@@ -0,0 +1,222 @@
+$set 1
+$ EPERM
+1 Operasjonen er ikke tillatt
+$ ENOENT
+2 Filen eller katalogen finnes ikke
+$ ESRCH
+3 Prosessen finnes ikke
+$ EINTR
+4 Avbrudt systemkall
+$ EIO
+5 I/O feil
+$ ENXIO
+6 Enheten er ikke konfigurert
+$ E2BIG
+7 Argumentlisten er for lang
+$ ENOEXEC
+8 Ukjent kjørbart format
+$ EBADF
+9 Ugyldig fildeskriptor
+$ ECHILD
+10 Ingen barneprosess
+$ EDEADLK
+11 Vranglås unngått
+$ ENOMEM
+12 Kan ikke allokere nok minne
+$ EACCES
+13 Ingen adgang
+$ EFAULT
+14 Ugyldig adresse
+$ ENOTBLK
+15 Blokk-enhet påkrevd
+$ EBUSY
+16 Enheten er opptatt
+$ EEXIST
+17 Filen finnes
+$ EXDEV
+18 Link mellom forskjellige enheter
+$ ENODEV
+19 Operasjonen er ikke støttet av enheten
+$ ENOTDIR
+20 Ikke en katalog
+$ EISDIR
+21 Er en katalog
+$ EINVAL
+22 Ugyldig argument
+$ ENFILE
+23 For mange åpne filer i systemet
+$ EMFILE
+24 For mange åpne filer
+$ ENOTTY
+25 Ugyldig ioctl for enheten
+$ ETXTBSY
+26 Kjørbar fil i bruk
+$ EFBIG
+27 Filen er for stor
+$ ENOSPC
+28 Ingen ledig plass på enheten
+$ ESPIPE
+29 Ugyldig seek operasjon
+$ EROFS
+30 Filsystemet er skrivebeskyttet
+$ EMLINK
+31 For mange linker
+$ EPIPE
+32 Brudt pipe
+$ EDOM
+33 Numerisk argument utenfor arbeidsområdet
+$ ERANGE
+34 Resultatet er for stort
+$ EAGAIN, EWOULDBLOCK
+35 Ressurs midlertidig utilgjengelig
+$ EINPROGRESS
+36 Operasjonen er nå i gang
+$ EALREADY
+37 Operasjonen er allerede i gang
+$ ENOTSOCK
+38 Deskriptoren er ikke en socket
+$ EDESTADDRREQ
+39 Mottakeradresse er påkrevd
+$ EMSGSIZE
+40 Meldingen er for lang
+$ EPROTOTYPE
+41 Ugyldig protokolltype for denne socketen
+$ ENOPROTOOPT
+42 Protokollen er ikke tilgjengelig
+$ EPROTONOSUPPORT
+43 Protokollen er ikke støttet
+$ ESOCKTNOSUPPORT
+44 Socket-typen er ikke støttet
+$ EOPNOTSUPP
+45 Operasjonen er ikke støttet
+$ EPFNOSUPPORT
+46 Protokollfamilien er ikke støttet
+$ EAFNOSUPPORT
+47 Adressetypen er ikke støttet av protokollfamilien
+$ EADDRINUSE
+48 Adressen er allerede i bruk
+$ EADDRNOTAVAIL
+49 Kan ikke bruke den ønskede adressen
+$ ENETDOWN
+50 Nettverket er nede
+$ ENETUNREACH
+51 Nettverket er utilgjengelig
+$ ENETRESET
+52 Nettverket kuttet forbindelsen ved reset
+$ ECONNABORTED
+53 Programvaren forårsaket brudd av forbindelsen
+$ ECONNRESET
+54 Forbindelsen avbrudt av korrespondenten
+$ ENOBUFS
+55 Buffer-plass ikke tilgjengelig
+$ EISCONN
+56 Socketen er allerede forbundet
+$ ENOTCONN
+57 Socketen er ikke forbundet
+$ ESHUTDOWN
+58 Kan ikke sende etter at socketen er tatt ned
+$ ETOOMANYREFS
+59 For mange referanser: kan ikke slå dem sammen
+$ ETIMEDOUT
+60 Tiden til forbindelsen utløp
+$ ECONNREFUSED
+61 Forbindelse nektet
+$ ELOOP
+62 For mange nivåer med symbolske linker
+$ ENAMETOOLONG
+63 Filnavnet er for langt
+$ EHOSTDOWN
+64 Maskinen er nede
+$ EHOSTUNREACH
+65 Ingen rute til maskinen
+$ ENOTEMPTY
+66 Katalogen er ikke tom
+$ EPROCLIM
+67 For mange prosesser
+$ EUSERS
+68 For mange brukere
+$ EDQUOT
+69 Diskkvote overskredet
+$ ESTALE
+70 Fastlåst NFS fildeskriptor
+$ EREMOTE
+71 For mange nivåer med remote i stien
+$ EBADRPC
+72 Ugyldig RPC struktur
+$ ERPCMISMATCH
+73 Feil RPC versjon
+$ EPROGUNAVAIL
+74 RPC program ikke tilgjengelig
+$ EPROGMISMATCH
+75 Feil programversjon
+$ EPROCUNAVAIL
+76 Prosedyren finnes ikke i programmet
+$ ENOLCK
+77 Ingen låsing tilgjengelig
+$ ENOSYS
+78 Funksjonen er ikke implementert
+$ EFTYPE
+79 Ugyldig filtype eller format
+$set 2
+$ SIGHUP
+1 Hangup
+$ SIGINT
+2 Avbrudd
+$ SIGQUIT
+3 Avslutt
+$ SIGILL
+4 Ugyldig instruksjon
+$ SIGTRAP
+5 Trace/BPT trap
+$ SIGABRT
+6 Abort trap
+$ SIGEMT
+7 EMT trap
+$ SIGFPE
+8 Flyttallsfeil
+$ SIGKILL
+9 Drept
+$ SIGBUS
+10 Buss feil
+$ SIGSEGV
+11 Segmenteringsfeil
+$ SIGSYS
+12 Ugyldig systemkall
+$ SIGPIPE
+13 Brudt pipe
+$ SIGALRM
+14 Alarmklokke
+$ SIGTERM
+15 Terminert
+$ SIGURG
+16 Urgent I/O condition
+$ SIGSTOP
+17 Stoppet (signal)
+$ SIGTSTP
+18 Stoppet
+$ SIGCONT
+19 Fortsetter
+$ SIGCHLD
+20 Barn avsluttet
+$ SIGTTIN
+21 Stoppet (tty input)
+$ SIGTTOU
+22 Stoppet (tty output)
+$ SIGIO
+23 I/O mulig
+$ SIGXCPU
+24 CPU-tid overskredet
+$ SIGXFSZ
+25 Maksimal filstørrelse overskredet
+$ SIGVTALRM
+26 Virtuell timer utløpt
+$ SIGPROF
+27 Profileringstimer utløpt
+$ SIGWINCH
+28 Vindustørrelse endres
+$ SIGINFO
+29 Informasjonsforespørsel
+$ SIGUSR1
+30 Brukerdefinert signal 1
+$ SIGUSR2
+31 Brukerdefinert signal 2
diff --git a/lib/libc/nls/ru.msg b/lib/libc/nls/ru.KOI8-R.msg
index d5364a3ad5e..d5364a3ad5e 100644
--- a/lib/libc/nls/ru.msg
+++ b/lib/libc/nls/ru.KOI8-R.msg
diff --git a/lib/libc/nls/ru.UTF-8.msg b/lib/libc/nls/ru.UTF-8.msg
new file mode 100644
index 00000000000..f678193f4bc
--- /dev/null
+++ b/lib/libc/nls/ru.UTF-8.msg
@@ -0,0 +1,246 @@
+$set 1
+$ EPERM
+1 Операция не разрешена
+$ ENOENT
+2 Нет такого файла или каталога
+$ ESRCH
+3 Нет такого процесса
+$ EINTR
+4 Прерванный системный вызов
+$ EIO
+5 Ошибка ввода/вывода
+$ ENXIO
+6 Устройство не подключено
+$ E2BIG
+7 Слишком длинный список аргументов
+$ ENOEXEC
+8 Неверный формат выполняемого файла
+$ EBADF
+9 Неверный дескриптор файла
+$ ECHILD
+10 Нет порожденных процессов
+$ EDEADLK
+11 Предотвращена взаимная блокировка
+$ ENOMEM
+12 Невозможно выделить блок памяти
+$ EACCES
+13 Доступ запрещен
+$ EFAULT
+14 Неверный адрес
+$ ENOTBLK
+15 Требуется блочное устройство
+$ EBUSY
+16 Устройство занято
+$ EEXIST
+17 Файл существует
+$ EXDEV
+18 Ссылка между устройствами
+$ ENODEV
+19 Операция не поддерживается устройством
+$ ENOTDIR
+20 Это не каталог
+$ EISDIR
+21 Это каталог
+$ EINVAL
+22 Неверный аргумент
+$ ENFILE
+23 Слишком много открытых файлов в системе
+$ EMFILE
+24 Слишком много открытых файлов
+$ ENOTTY
+25 Вызов ioctl не соответствует устройству
+$ ETXTBSY
+26 Текстовый файл занят
+$ EFBIG
+27 Файл слишком большой
+$ ENOSPC
+28 Нет места на устройстве
+$ ESPIPE
+29 Недопустимое позиционирование
+$ EROFS
+30 Файловая система только для чтения
+$ EMLINK
+31 Слишком много ссылок
+$ EPIPE
+32 Разорваный конвейер
+$ EDOM
+33 Цифровой аргумент вне области определения
+$ ERANGE
+34 Результат слишком велик
+$ EAGAIN, EWOULDBLOCK
+35 Ресурс временно недоступен
+$ EINPROGRESS
+36 Операция в процессе выполнения
+$ EALREADY
+37 Операция уже выполняется
+$ ENOTSOCK
+38 Канальная операция не на канале
+$ EDESTADDRREQ
+39 Требуется адрес приемника
+$ EMSGSIZE
+40 Сообщение слишком длинное
+$ EPROTOTYPE
+41 Неверный протокол для канала
+$ ENOPROTOOPT
+42 Протокол недоступен
+$ EPROTONOSUPPORT
+43 Протокол не поддерживается
+$ ESOCKTNOSUPPORT
+44 Тип канала не поддерживается
+$ EOPNOTSUPP
+45 Операция не поддерживается
+$ EPFNOSUPPORT
+46 Семейство протоколов не поддерживается
+$ EAFNOSUPPORT
+47 Семейство адресов не поддерживается семейством протоколов
+$ EADDRINUSE
+48 Адрес уже используется
+$ EADDRNOTAVAIL
+49 Невозможно назначить запрошенный адрес
+$ ENETDOWN
+50 Сеть не работает
+$ ENETUNREACH
+51 Сеть недостижима
+$ ENETRESET
+52 Сеть разорвала соединение по сбросу
+$ ECONNABORTED
+53 Программа вызвала разрыв соединения
+$ ECONNRESET
+54 Соединение сброшено другой стороной
+$ ENOBUFS
+55 Нет свободных буферов
+$ EISCONN
+56 Канал уже подключен
+$ ENOTCONN
+57 Канал не подключен
+$ ESHUTDOWN
+58 Посылка невозможна после отключения канала
+$ ETOOMANYREFS
+59 Слишком много ссылок: невозможно сплести
+$ ETIMEDOUT
+60 Время для соединения вышло
+$ ECONNREFUSED
+61 Соединение отвергнуто
+$ ELOOP
+62 Слишком много уровней ссылок
+$ ENAMETOOLONG
+63 Слишком длинное имя файла
+$ EHOSTDOWN
+64 Компьютер не работает
+$ EHOSTUNREACH
+65 Нет пути до компьютера
+$ ENOTEMPTY
+66 Каталог не пуст
+$ EPROCLIM
+67 Слишком много процессов
+$ EUSERS
+68 Слишком много пользователей
+$ EDQUOT
+69 Превышено ограничение на использование диска
+$ ESTALE
+70 Устаревший дескриптор NFS
+$ EREMOTE
+71 Слишком много не-локальных уровней в пути
+$ EBADRPC
+72 Неверная структура RPC
+$ ERPCMISMATCH
+73 Неверная версия RPC
+$ EPROGUNAVAIL
+74 RPC программа недоступна
+$ EPROGMISMATCH
+75 Неверная версия программы
+$ EPROCUNAVAIL
+76 Неверная процедура для программы
+$ ENOLCK
+77 Невозможно выполнить захват
+$ ENOSYS
+78 Функция не действует
+$ EFTYPE
+79 Неверный тип или формат файла
+$ EAUTH
+80 Ошибка аутентификации
+$ ENEEDAUTH
+81 Требуется аутентификация
+$ EIPSEC
+82 Ошибка обработки IPSec
+$ ENOATTR
+83 Атрибут не найден
+$ EILSEQ
+84 Неверная последовательность байтов
+$ ENOMEDIUM
+85 Носитель не найден
+$ EMEDIUMTYPE
+86 Неверный тип носителя
+$ EOVERFLOW
+87 Значение слишком велико для этого типа данных
+$ ECANCELED
+88 Операция отменена
+$ EIDRM
+89 Идентификатор удален
+$ ENOMSG
+90 Нет сообщения запрошенного типа
+$ ENOTSUP
+91 Не поддерживается
+$set 2
+$ SIGHUP
+1 Обрыв связи
+$ SIGINT
+2 Прерывание
+$ SIGQUIT
+3 Выход
+$ SIGILL
+4 Неверная инструкция
+$ SIGTRAP
+5 Точка останова или трассировка
+$ SIGABRT
+6 Аварийное завершение
+$ SIGEMT
+7 Прерывание EMT
+$ SIGFPE
+8 Исключительная ситуация FPT
+$ SIGKILL
+9 Уничтожен
+$ SIGBUS
+10 Ошибка шины
+$ SIGSEGV
+11 Ошибка сегментации
+$ SIGSYS
+12 Неверный системный вызов
+$ SIGPIPE
+13 Разорваный конвейер
+$ SIGALRM
+14 Таймер
+$ SIGTERM
+15 Завершен
+$ SIGURG
+16 Экстренное состояние ввода/вывода
+$ SIGSTOP
+17 Остановлен (сигнал)
+$ SIGTSTP
+18 Остановлен
+$ SIGCONT
+19 Продолжен
+$ SIGCHLD
+20 Порожденный процесс завершен
+$ SIGTTIN
+21 Остановлен (ввод с терминала)
+$ SIGTTOU
+22 Остановлен (вывод на терминал)
+$ SIGIO
+23 Возможен ввод/вывод
+$ SIGXCPU
+24 Превышен лимит времени процессора
+$ SIGXFSZ
+25 Привышен лимит размера файла
+$ SIGVTALRM
+26 Виртуальный таймер
+$ SIGPROF
+27 Таймер профилирования
+$ SIGWINCH
+28 Изменен размер окна
+$ SIGINFO
+29 Информационный запрос
+$ SIGUSR1
+30 Сигнал пользователя 1
+$ SIGUSR2
+31 Сигнал пользователя 2
diff --git a/lib/libc/nls/sv.msg b/lib/libc/nls/sv.ISO8859-1.msg
index a37b8642ac4..a37b8642ac4 100644
--- a/lib/libc/nls/sv.msg
+++ b/lib/libc/nls/sv.ISO8859-1.msg
diff --git a/lib/libc/nls/sv.UTF-8.msg b/lib/libc/nls/sv.UTF-8.msg
new file mode 100644
index 00000000000..a4c7e3e9c18
--- /dev/null
+++ b/lib/libc/nls/sv.UTF-8.msg
@@ -0,0 +1,222 @@
+$set 1
+$ EPERM
+1 Otillåten operation
+$ ENOENT
+2 Filen eller katalogen finns ej
+$ ESRCH
+3 Denna process finns ej
+$ EINTR
+4 Avbrutet systemanrop
+$ EIO
+5 In-/utmatningsfel
+$ ENXIO
+6 Enheten är ej konfigurerad
+$ E2BIG
+7 Argumentlistan är för lång
+$ ENOEXEC
+8 Ej körbar fil
+$ EBADF
+9 Felaktigt filhandtag
+$ ECHILD
+10 Inga barnprocesser
+$ EDEADLK
+11 Undvek resursdödläge
+$ ENOMEM
+12 Kan ej erhålla minne
+$ EACCES
+13 Tillstånd nekas
+$ EFAULT
+14 Felaktig adress
+$ ENOTBLK
+15 Blockenhet krävs
+$ EBUSY
+16 Enheten är upptagen
+$ EEXIST
+17 Filen finns redan
+$ EXDEV
+18 Länken korsar enheter
+$ ENODEV
+19 Enheten stöder ej operationen
+$ ENOTDIR
+20 Är ej en katalog
+$ EISDIR
+21 Är en katalog
+$ EINVAL
+22 Ogiltigt argument
+$ ENFILE
+23 För många öppna filer i systemet
+$ EMFILE
+24 För många öppna filer
+$ ENOTTY
+25 Olämplig ioctl för enheten
+$ ETXTBSY
+26 Programfilen är upptagen
+$ EFBIG
+27 Filen är för stor
+$ ENOSPC
+28 Inget utrymme kvar på enheten
+$ ESPIPE
+29 Otillåten sökning
+$ EROFS
+30 Skrivskyddat filsystem
+$ EMLINK
+31 För många länkar
+$ EPIPE
+32 Avbruten kommunikationskanal
+$ EDOM
+33 Numeriskt argument utanför domänen
+$ ERANGE
+34 Resultatet är för stort
+$ EAGAIN, EWOULDBLOCK
+35 Resursen är tillfälligt otillgänglig
+$ EINPROGRESS
+36 Operationen är igång
+$ EALREADY
+37 Operationen är redan igång
+$ ENOTSOCK
+38 Sockeloperation på icke-sockel
+$ EDESTADDRREQ
+39 Destinationsadress erfordras
+$ EMSGSIZE
+40 För långt meddelande
+$ EPROTOTYPE
+41 Fel protokolltyp för sockeln
+$ ENOPROTOOPT
+42 Protokollet otillgängligt
+$ EPROTONOSUPPORT
+43 Protokollet är ej understött
+$ ESOCKTNOSUPPORT
+44 Sockeltypen är ej understödd
+$ EOPNOTSUPP
+45 Operationen är ej understödd
+$ EPFNOSUPPORT
+46 Protokollfamiljen är ej understödd
+$ EAFNOSUPPORT
+47 Adressfamiljen är ej understödd av protokollfamiljen
+$ EADDRINUSE
+48 Adressen är upptagen
+$ EADDRNOTAVAIL
+49 Kan ej tilldela den begärda adressen
+$ ENETDOWN
+50 Nätverket fungerar inte
+$ ENETUNREACH
+51 Nätverket är ej kontaktbart
+$ ENETRESET
+52 Nätverket tappade kontakten vid återställningen
+$ ECONNABORTED
+53 Mjukvara orsakade nedkoppling
+$ ECONNRESET
+54 Motparten avbröt uppkopplingen
+$ ENOBUFS
+55 Inget buffertutrymme tillgängligt
+$ EISCONN
+56 Sockeln är redan uppkopplad
+$ ENOTCONN
+57 Sockeln är ej uppkopplad
+$ ESHUTDOWN
+58 Kan ej sända efter att sockeln nedkopplats
+$ ETOOMANYREFS
+59 För många referenser: kan inte delas
+$ ETIMEDOUT
+60 Uppkopplingstiden tog slut
+$ ECONNREFUSED
+61 Uppkopplingen nekad
+$ ELOOP
+62 För många nivåer av symboliska länkar
+$ ENAMETOOLONG
+63 Alldeles för långt filnamn
+$ EHOSTDOWN
+64 Värddatorn är nere
+$ EHOSTUNREACH
+65 Väg till värddatorn saknas
+$ ENOTEMPTY
+66 Katalogen ej tom
+$ EPROCLIM
+67 För många processer
+$ EUSERS
+68 För många användare
+$ EDQUOT
+69 Diskkvot överskriden
+$ ESTALE
+70 Inaktuellt NFS-filhandtag
+$ EREMOTE
+71 För många fjärrnivåer i sökvägen
+$ EBADRPC
+72 Felaktig RPC-struktur
+$ ERPCMISMATCH
+73 Felaktig RPC-version
+$ EPROGUNAVAIL
+74 RPC-programmet otillgängligt
+$ EPROGMISMATCH
+75 Fel programversion
+$ EPROCUNAVAIL
+76 Felaktig procedur för programmet
+$ ENOLCK
+77 Inga lås tillgängliga
+$ ENOSYS
+78 Funktionen är ej implementerad
+$ EFTYPE
+79 Olämplig filtyp eller format
+$set 2
+$ SIGHUP
+1 Lägg på
+$ SIGINT
+2 Avbryt
+$ SIGQUIT
+3 Avsluta
+$ SIGILL
+4 Olaglig instruktion
+$ SIGTRAP
+5 Spår- eller brytpunktsfälla
+$ SIGABRT
+6 Avslutsfälla
+$ SIGEMT
+7 Emuleringsfälla
+$ SIGFPE
+8 Flyttalsavbrott
+$ SIGKILL
+9 Dräpt
+$ SIGBUS
+10 Bussfel
+$ SIGSEGV
+11 Segmentfel
+$ SIGSYS
+12 Felaktigt systemanrop
+$ SIGPIPE
+13 Avbruten kommunikationskanal
+$ SIGALRM
+14 Äggklocka
+$ SIGTERM
+15 Terminerad
+$ SIGURG
+16 Brådskande In/Ut-tillstånd
+$ SIGSTOP
+17 Stoppad (signal)
+$ SIGTSTP
+18 Stoppad
+$ SIGCONT
+19 Fortsätter
+$ SIGCHLD
+20 Barn avslutat
+$ SIGTTIN
+21 Stoppad (terminalinmatning)
+$ SIGTTOU
+22 Stoppad (terminalutmatning)
+$ SIGIO
+23 In- och utmatning möjlig
+$ SIGXCPU
+24 Cputidsgränsen överskriden
+$ SIGXFSZ
+25 Filstorleksgränsen överskriden
+$ SIGVTALRM
+26 Virtuella äggklockan ringde
+$ SIGPROF
+27 Profileringsäggklockan ringde
+$ SIGWINCH
+28 Fönsterstorleken ändras
+$ SIGINFO
+29 Informationsförfrågan
+$ SIGUSR1
+30 Användardefinierad signal 1
+$ SIGUSR2
+31 Användardefinierad signal 2
diff --git a/lib/libc/string/strerror_r.c b/lib/libc/string/strerror_r.c
index aa63408ab86..b85136055b1 100644
--- a/lib/libc/string/strerror_r.c
+++ b/lib/libc/string/strerror_r.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: strerror_r.c,v 1.7 2007/03/01 16:29:09 bluhm Exp $ */
+/* $OpenBSD: strerror_r.c,v 1.8 2013/06/01 21:26:18 stsp Exp $ */
/* Public Domain <marc@snafu.org> */
#ifdef NLS
@@ -75,7 +75,7 @@ __num2string(int num, int sign, int setid, char *buf, size_t buflen,
#ifdef NLS
nl_catd catd;
- catd = catopen("libc", 0);
+ catd = catopen("libc", NL_CAT_LOCALE);
#endif
if (0 <= num && num < max) {