(linenum→info "unix/slp.c:2238")

glibc/2.7/intl/loadmsgcat.c

    1: /* Load needed message catalogs.
    2:    Copyright (C) 1995-2005, 2007 Free Software Foundation, Inc.
    3:    This file is part of the GNU C Library.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: /* Tell glibc's <string.h> to provide a prototype for mempcpy().
   21:    This must come before <config.h> because <config.h> may include
   22:    <features.h>, and once <features.h> has been included, it's too late.  */
   23: #ifndef _GNU_SOURCE
   24: # define _GNU_SOURCE    1
   25: #endif
   26: 
   27: #ifdef HAVE_CONFIG_H
   28: # include <config.h>
   29: #endif
   30: 
   31: #include <ctype.h>
   32: #include <errno.h>
   33: #include <fcntl.h>
   34: #include <sys/types.h>
   35: #include <sys/stat.h>
   36: 
   37: #ifdef __GNUC__
   38: # undef  alloca
   39: # define alloca __builtin_alloca
   40: # define HAVE_ALLOCA 1
   41: #else
   42: # if defined HAVE_ALLOCA_H || defined _LIBC
   43: #  include <alloca.h>
   44: # else
   45: #  ifdef _AIX
   46:  #pragma alloca
   47: #  else
   48: #   ifndef alloca
   49: char *alloca ();
   50: #   endif
   51: #  endif
   52: # endif
   53: #endif
   54: 
   55: #include <stdlib.h>
   56: #include <string.h>
   57: 
   58: #if defined HAVE_UNISTD_H || defined _LIBC
   59: # include <unistd.h>
   60: #endif
   61: 
   62: #ifdef _LIBC
   63: # include <langinfo.h>
   64: # include <locale.h>
   65: #endif
   66: 
   67: #if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
   68:     || (defined _LIBC && defined _POSIX_MAPPED_FILES)
   69: # include <sys/mman.h>
   70: # undef HAVE_MMAP
   71: # define HAVE_MMAP      1
   72: #else
   73: # undef HAVE_MMAP
   74: #endif
   75: 
   76: #if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC
   77: # include <stdint.h>
   78: #endif
   79: #if defined HAVE_INTTYPES_H || defined _LIBC
   80: # include <inttypes.h>
   81: #endif
   82: 
   83: #include "gmo.h"
   84: #include "gettextP.h"
   85: #include "hash-string.h"
   86: #include "plural-exp.h"
   87: 
   88: #ifdef _LIBC
   89: # include "../locale/localeinfo.h"
   90: # include <not-cancel.h>
   91: # include <bits/libc-lock.h>
   92: #endif
   93: 
   94: /* Provide fallback values for macros that ought to be defined in <inttypes.h>.
   95:    Note that our fallback values need not be literal strings, because we don't
   96:    use them with preprocessor string concatenation.  */
   97: #if !defined PRId8 || PRI_MACROS_BROKEN
   98: # undef PRId8
   99: # define PRId8 "d"
  100: #endif
  101: #if !defined PRIi8 || PRI_MACROS_BROKEN
  102: # undef PRIi8
  103: # define PRIi8 "i"
  104: #endif
  105: #if !defined PRIo8 || PRI_MACROS_BROKEN
  106: # undef PRIo8
  107: # define PRIo8 "o"
  108: #endif
  109: #if !defined PRIu8 || PRI_MACROS_BROKEN
  110: # undef PRIu8
  111: # define PRIu8 "u"
  112: #endif
  113: #if !defined PRIx8 || PRI_MACROS_BROKEN
  114: # undef PRIx8
  115: # define PRIx8 "x"
  116: #endif
  117: #if !defined PRIX8 || PRI_MACROS_BROKEN
  118: # undef PRIX8
  119: # define PRIX8 "X"
  120: #endif
  121: #if !defined PRId16 || PRI_MACROS_BROKEN
  122: # undef PRId16
  123: # define PRId16 "d"
  124: #endif
  125: #if !defined PRIi16 || PRI_MACROS_BROKEN
  126: # undef PRIi16
  127: # define PRIi16 "i"
  128: #endif
  129: #if !defined PRIo16 || PRI_MACROS_BROKEN
  130: # undef PRIo16
  131: # define PRIo16 "o"
  132: #endif
  133: #if !defined PRIu16 || PRI_MACROS_BROKEN
  134: # undef PRIu16
  135: # define PRIu16 "u"
  136: #endif
  137: #if !defined PRIx16 || PRI_MACROS_BROKEN
  138: # undef PRIx16
  139: # define PRIx16 "x"
  140: #endif
  141: #if !defined PRIX16 || PRI_MACROS_BROKEN
  142: # undef PRIX16
  143: # define PRIX16 "X"
  144: #endif
  145: #if !defined PRId32 || PRI_MACROS_BROKEN
  146: # undef PRId32
  147: # define PRId32 "d"
  148: #endif
  149: #if !defined PRIi32 || PRI_MACROS_BROKEN
  150: # undef PRIi32
  151: # define PRIi32 "i"
  152: #endif
  153: #if !defined PRIo32 || PRI_MACROS_BROKEN
  154: # undef PRIo32
  155: # define PRIo32 "o"
  156: #endif
  157: #if !defined PRIu32 || PRI_MACROS_BROKEN
  158: # undef PRIu32
  159: # define PRIu32 "u"
  160: #endif
  161: #if !defined PRIx32 || PRI_MACROS_BROKEN
  162: # undef PRIx32
  163: # define PRIx32 "x"
  164: #endif
  165: #if !defined PRIX32 || PRI_MACROS_BROKEN
  166: # undef PRIX32
  167: # define PRIX32 "X"
  168: #endif
  169: #if !defined PRId64 || PRI_MACROS_BROKEN
  170: # undef PRId64
  171: # define PRId64 (sizeof (long) == 8 ? "ld" : "lld")
  172: #endif
  173: #if !defined PRIi64 || PRI_MACROS_BROKEN
  174: # undef PRIi64
  175: # define PRIi64 (sizeof (long) == 8 ? "li" : "lli")
  176: #endif
  177: #if !defined PRIo64 || PRI_MACROS_BROKEN
  178: # undef PRIo64
  179: # define PRIo64 (sizeof (long) == 8 ? "lo" : "llo")
  180: #endif
  181: #if !defined PRIu64 || PRI_MACROS_BROKEN
  182: # undef PRIu64
  183: # define PRIu64 (sizeof (long) == 8 ? "lu" : "llu")
  184: #endif
  185: #if !defined PRIx64 || PRI_MACROS_BROKEN
  186: # undef PRIx64
  187: # define PRIx64 (sizeof (long) == 8 ? "lx" : "llx")
  188: #endif
  189: #if !defined PRIX64 || PRI_MACROS_BROKEN
  190: # undef PRIX64
  191: # define PRIX64 (sizeof (long) == 8 ? "lX" : "llX")
  192: #endif
  193: #if !defined PRIdLEAST8 || PRI_MACROS_BROKEN
  194: # undef PRIdLEAST8
  195: # define PRIdLEAST8 "d"
  196: #endif
  197: #if !defined PRIiLEAST8 || PRI_MACROS_BROKEN
  198: # undef PRIiLEAST8
  199: # define PRIiLEAST8 "i"
  200: #endif
  201: #if !defined PRIoLEAST8 || PRI_MACROS_BROKEN
  202: # undef PRIoLEAST8
  203: # define PRIoLEAST8 "o"
  204: #endif
  205: #if !defined PRIuLEAST8 || PRI_MACROS_BROKEN
  206: # undef PRIuLEAST8
  207: # define PRIuLEAST8 "u"
  208: #endif
  209: #if !defined PRIxLEAST8 || PRI_MACROS_BROKEN
  210: # undef PRIxLEAST8
  211: # define PRIxLEAST8 "x"
  212: #endif
  213: #if !defined PRIXLEAST8 || PRI_MACROS_BROKEN
  214: # undef PRIXLEAST8
  215: # define PRIXLEAST8 "X"
  216: #endif
  217: #if !defined PRIdLEAST16 || PRI_MACROS_BROKEN
  218: # undef PRIdLEAST16
  219: # define PRIdLEAST16 "d"
  220: #endif
  221: #if !defined PRIiLEAST16 || PRI_MACROS_BROKEN
  222: # undef PRIiLEAST16
  223: # define PRIiLEAST16 "i"
  224: #endif
  225: #if !defined PRIoLEAST16 || PRI_MACROS_BROKEN
  226: # undef PRIoLEAST16
  227: # define PRIoLEAST16 "o"
  228: #endif
  229: #if !defined PRIuLEAST16 || PRI_MACROS_BROKEN
  230: # undef PRIuLEAST16
  231: # define PRIuLEAST16 "u"
  232: #endif
  233: #if !defined PRIxLEAST16 || PRI_MACROS_BROKEN
  234: # undef PRIxLEAST16
  235: # define PRIxLEAST16 "x"
  236: #endif
  237: #if !defined PRIXLEAST16 || PRI_MACROS_BROKEN
  238: # undef PRIXLEAST16
  239: # define PRIXLEAST16 "X"
  240: #endif
  241: #if !defined PRIdLEAST32 || PRI_MACROS_BROKEN
  242: # undef PRIdLEAST32
  243: # define PRIdLEAST32 "d"
  244: #endif
  245: #if !defined PRIiLEAST32 || PRI_MACROS_BROKEN
  246: # undef PRIiLEAST32
  247: # define PRIiLEAST32 "i"
  248: #endif
  249: #if !defined PRIoLEAST32 || PRI_MACROS_BROKEN
  250: # undef PRIoLEAST32
  251: # define PRIoLEAST32 "o"
  252: #endif
  253: #if !defined PRIuLEAST32 || PRI_MACROS_BROKEN
  254: # undef PRIuLEAST32
  255: # define PRIuLEAST32 "u"
  256: #endif
  257: #if !defined PRIxLEAST32 || PRI_MACROS_BROKEN
  258: # undef PRIxLEAST32
  259: # define PRIxLEAST32 "x"
  260: #endif
  261: #if !defined PRIXLEAST32 || PRI_MACROS_BROKEN
  262: # undef PRIXLEAST32
  263: # define PRIXLEAST32 "X"
  264: #endif
  265: #if !defined PRIdLEAST64 || PRI_MACROS_BROKEN
  266: # undef PRIdLEAST64
  267: # define PRIdLEAST64 PRId64
  268: #endif
  269: #if !defined PRIiLEAST64 || PRI_MACROS_BROKEN
  270: # undef PRIiLEAST64
  271: # define PRIiLEAST64 PRIi64
  272: #endif
  273: #if !defined PRIoLEAST64 || PRI_MACROS_BROKEN
  274: # undef PRIoLEAST64
  275: # define PRIoLEAST64 PRIo64
  276: #endif
  277: #if !defined PRIuLEAST64 || PRI_MACROS_BROKEN
  278: # undef PRIuLEAST64
  279: # define PRIuLEAST64 PRIu64
  280: #endif
  281: #if !defined PRIxLEAST64 || PRI_MACROS_BROKEN
  282: # undef PRIxLEAST64
  283: # define PRIxLEAST64 PRIx64
  284: #endif
  285: #if !defined PRIXLEAST64 || PRI_MACROS_BROKEN
  286: # undef PRIXLEAST64
  287: # define PRIXLEAST64 PRIX64
  288: #endif
  289: #if !defined PRIdFAST8 || PRI_MACROS_BROKEN
  290: # undef PRIdFAST8
  291: # define PRIdFAST8 "d"
  292: #endif
  293: #if !defined PRIiFAST8 || PRI_MACROS_BROKEN
  294: # undef PRIiFAST8
  295: # define PRIiFAST8 "i"
  296: #endif
  297: #if !defined PRIoFAST8 || PRI_MACROS_BROKEN
  298: # undef PRIoFAST8
  299: # define PRIoFAST8 "o"
  300: #endif
  301: #if !defined PRIuFAST8 || PRI_MACROS_BROKEN
  302: # undef PRIuFAST8
  303: # define PRIuFAST8 "u"
  304: #endif
  305: #if !defined PRIxFAST8 || PRI_MACROS_BROKEN
  306: # undef PRIxFAST8
  307: # define PRIxFAST8 "x"
  308: #endif
  309: #if !defined PRIXFAST8 || PRI_MACROS_BROKEN
  310: # undef PRIXFAST8
  311: # define PRIXFAST8 "X"
  312: #endif
  313: #if !defined PRIdFAST16 || PRI_MACROS_BROKEN
  314: # undef PRIdFAST16
  315: # define PRIdFAST16 "d"
  316: #endif
  317: #if !defined PRIiFAST16 || PRI_MACROS_BROKEN
  318: # undef PRIiFAST16
  319: # define PRIiFAST16 "i"
  320: #endif
  321: #if !defined PRIoFAST16 || PRI_MACROS_BROKEN
  322: # undef PRIoFAST16
  323: # define PRIoFAST16 "o"
  324: #endif
  325: #if !defined PRIuFAST16 || PRI_MACROS_BROKEN
  326: # undef PRIuFAST16
  327: # define PRIuFAST16 "u"
  328: #endif
  329: #if !defined PRIxFAST16 || PRI_MACROS_BROKEN
  330: # undef PRIxFAST16
  331: # define PRIxFAST16 "x"
  332: #endif
  333: #if !defined PRIXFAST16 || PRI_MACROS_BROKEN
  334: # undef PRIXFAST16
  335: # define PRIXFAST16 "X"
  336: #endif
  337: #if !defined PRIdFAST32 || PRI_MACROS_BROKEN
  338: # undef PRIdFAST32
  339: # define PRIdFAST32 "d"
  340: #endif
  341: #if !defined PRIiFAST32 || PRI_MACROS_BROKEN
  342: # undef PRIiFAST32
  343: # define PRIiFAST32 "i"
  344: #endif
  345: #if !defined PRIoFAST32 || PRI_MACROS_BROKEN
  346: # undef PRIoFAST32
  347: # define PRIoFAST32 "o"
  348: #endif
  349: #if !defined PRIuFAST32 || PRI_MACROS_BROKEN
  350: # undef PRIuFAST32
  351: # define PRIuFAST32 "u"
  352: #endif
  353: #if !defined PRIxFAST32 || PRI_MACROS_BROKEN
  354: # undef PRIxFAST32
  355: # define PRIxFAST32 "x"
  356: #endif
  357: #if !defined PRIXFAST32 || PRI_MACROS_BROKEN
  358: # undef PRIXFAST32
  359: # define PRIXFAST32 "X"
  360: #endif
  361: #if !defined PRIdFAST64 || PRI_MACROS_BROKEN
  362: # undef PRIdFAST64
  363: # define PRIdFAST64 PRId64
  364: #endif
  365: #if !defined PRIiFAST64 || PRI_MACROS_BROKEN
  366: # undef PRIiFAST64
  367: # define PRIiFAST64 PRIi64
  368: #endif
  369: #if !defined PRIoFAST64 || PRI_MACROS_BROKEN
  370: # undef PRIoFAST64
  371: # define PRIoFAST64 PRIo64
  372: #endif
  373: #if !defined PRIuFAST64 || PRI_MACROS_BROKEN
  374: # undef PRIuFAST64
  375: # define PRIuFAST64 PRIu64
  376: #endif
  377: #if !defined PRIxFAST64 || PRI_MACROS_BROKEN
  378: # undef PRIxFAST64
  379: # define PRIxFAST64 PRIx64
  380: #endif
  381: #if !defined PRIXFAST64 || PRI_MACROS_BROKEN
  382: # undef PRIXFAST64
  383: # define PRIXFAST64 PRIX64
  384: #endif
  385: #if !defined PRIdMAX || PRI_MACROS_BROKEN
  386: # undef PRIdMAX
  387: # define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld")
  388: #endif
  389: #if !defined PRIiMAX || PRI_MACROS_BROKEN
  390: # undef PRIiMAX
  391: # define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli")
  392: #endif
  393: #if !defined PRIoMAX || PRI_MACROS_BROKEN
  394: # undef PRIoMAX
  395: # define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo")
  396: #endif
  397: #if !defined PRIuMAX || PRI_MACROS_BROKEN
  398: # undef PRIuMAX
  399: # define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu")
  400: #endif
  401: #if !defined PRIxMAX || PRI_MACROS_BROKEN
  402: # undef PRIxMAX
  403: # define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx")
  404: #endif
  405: #if !defined PRIXMAX || PRI_MACROS_BROKEN
  406: # undef PRIXMAX
  407: # define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX")
  408: #endif
  409: #if !defined PRIdPTR || PRI_MACROS_BROKEN
  410: # undef PRIdPTR
  411: # define PRIdPTR \
  412:   (sizeof (void *) == sizeof (long) ? "ld" : \
  413:    sizeof (void *) == sizeof (int) ? "d" : \
  414:    "lld")
  415: #endif
  416: #if !defined PRIiPTR || PRI_MACROS_BROKEN
  417: # undef PRIiPTR
  418: # define PRIiPTR \
  419:   (sizeof (void *) == sizeof (long) ? "li" : \
  420:    sizeof (void *) == sizeof (int) ? "i" : \
  421:    "lli")
  422: #endif
  423: #if !defined PRIoPTR || PRI_MACROS_BROKEN
  424: # undef PRIoPTR
  425: # define PRIoPTR \
  426:   (sizeof (void *) == sizeof (long) ? "lo" : \
  427:    sizeof (void *) == sizeof (int) ? "o" : \
  428:    "llo")
  429: #endif
  430: #if !defined PRIuPTR || PRI_MACROS_BROKEN
  431: # undef PRIuPTR
  432: # define PRIuPTR \
  433:   (sizeof (void *) == sizeof (long) ? "lu" : \
  434:    sizeof (void *) == sizeof (int) ? "u" : \
  435:    "llu")
  436: #endif
  437: #if !defined PRIxPTR || PRI_MACROS_BROKEN
  438: # undef PRIxPTR
  439: # define PRIxPTR \
  440:   (sizeof (void *) == sizeof (long) ? "lx" : \
  441:    sizeof (void *) == sizeof (int) ? "x" : \
  442:    "llx")
  443: #endif
  444: #if !defined PRIXPTR || PRI_MACROS_BROKEN
  445: # undef PRIXPTR
  446: # define PRIXPTR \
  447:   (sizeof (void *) == sizeof (long) ? "lX" : \
  448:    sizeof (void *) == sizeof (int) ? "X" : \
  449:    "llX")
  450: #endif
  451: 
  452: /* @@ end of prolog @@ */
  453: 
  454: #ifdef _LIBC
  455: /* Rename the non ISO C functions.  This is required by the standard
  456:    because some ISO C functions will require linking with this object
  457: