---- msgcat.c.orig 2007-02-07 01:54:34.000000000 -0800
-+++ msgcat.c 2007-02-07 02:03:33.000000000 -0800
-@@ -45,16 +45,22 @@
+--- msgcat.c.orig 2009-12-05 13:47:14.000000000 -0800
++++ msgcat.c 2009-12-05 13:49:56.000000000 -0800
+@@ -45,16 +45,22 @@ __FBSDID("$FreeBSD: src/lib/libc/nls/msg
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#define _DEFAULT_NLS_PATH "/usr/share/nls/%L/%N.cat:/usr/share/nls/%N/%L:/usr/local/share/nls/%L/%N.cat:/usr/local/share/nls/%N/%L"
-@@ -87,7 +93,7 @@
+@@ -85,7 +91,7 @@ catopen(__const char *name, int type)
return (loadCat(name));
if (type == NL_CAT_LOCALE)
else
lang = getenv("LANG");
-@@ -210,21 +216,21 @@
+@@ -208,21 +214,21 @@ catopen(__const char *name, int type)
#define LOOKUP(PARENT, CHILD, ID, NUM, SET) { \
lo = 0; \
dir = 1; \
} else { \
hi = cur; \
-@@ -240,32 +246,28 @@
- }
-
- static MCSetT *
--MCGetSet(cat, setId)
-- MCCatT *cat;
-- int setId;
-+MCGetSet(MCCatT *cat, int setId)
+@@ -241,11 +247,11 @@ static MCSetT *
+ MCGetSet(MCCatT *cat, int setId)
{
MCSetT *set;
- long lo, hi, cur, dir;
if (set->invalid && loadSet(cat, set) <= 0)
return (NULL);
return (set);
- }
-
- static MCMsgT *
--MCGetMsg(set, msgId)
-- MCSetT *set;
-- int msgId;
-+MCGetMsg(MCSetT *set, int msgId)
+@@ -255,11 +261,11 @@ static MCMsgT *
+ MCGetMsg(MCSetT *set, int msgId)
{
MCMsgT *msg;
- long lo, hi, cur, dir;
return (msg);
}
-@@ -357,7 +359,7 @@
+@@ -341,7 +347,7 @@ loadCat(__const char *catpath)
MCHeaderT header;
MCCatT *cat;
MCSetT *set;
off_t nextSet;
int saverr;
-@@ -377,27 +379,30 @@
+@@ -360,27 +366,30 @@ loadCat(__const char *catpath)
strncmp(header.magic, MCMagic, MCMagicLen) != 0)
CORRUPT();
for (i = 0; i < cat->numSets; ++i) {
if (fseeko(cat->fp, nextSet, SEEK_SET) == -1) {
__nls_free_resources(cat, i);
-@@ -414,7 +419,7 @@
+@@ -397,11 +406,11 @@ loadCat(__const char *catpath)
/* if it's invalid, skip over it (and backup 'i') */
if (set->invalid) {
--i;
+ nextSet = ntohll(set->nextSet);
continue;
}
- #if 0
-@@ -432,7 +437,7 @@
- } else
- #endif
- set->invalid = TRUE;
+ set->invalid = TRUE;
- nextSet = set->nextSet;
+ nextSet = ntohll(set->nextSet);
}
- #if 0
- if (cat->loadType == MCLoadAll) {
-@@ -453,11 +458,11 @@
+
+ return ((nl_catd) cat);
+@@ -415,11 +424,11 @@ loadSet(MCCatT *cat, MCSetT *set)
int saverr;
/* Get the data */
saverr = errno;
free(set->data.str);
errno = saverr;
-@@ -465,13 +470,13 @@
+@@ -427,13 +436,13 @@ loadSet(MCCatT *cat, MCSetT *set)
}
/* Get the messages */
NULL) {
saverr = errno;
free(set->data.str);
-@@ -479,7 +484,7 @@
+@@ -441,7 +450,7 @@ loadSet(MCCatT *cat, MCSetT *set)
return (-1);
}
msg = set->u.msgs + i;
if (fread(msg, sizeof(*msg), 1, cat->fp) != 1) {
saverr = errno;
-@@ -492,7 +497,7 @@
+@@ -454,7 +463,7 @@ loadSet(MCCatT *cat, MCSetT *set)
--i;
continue;
}