+Thu Aug 29 00:28:08 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * stdio-common/printf_fp.c (__printf_fp): Use default value `.` if
+ `decimal' char is 0.
+
+ * C-numeric.c (not_available): New constant.
+ (_nl_C_LC_NUMERIC): Use `not_available' for grouping value.
+
+ * nss/nsswitch.conf: Example configuration file.
+ * nss/db-Makefile: Example Makefile for generation of databases
+ for nss_db.
+ * nss/Makefile (distribute): Add nsswitch.conf and db-Makefile.
+
+1996-08-28 Paul Eggert <eggert@twinsun.com>
+
+ * C-messages.c (_nl_C_LC_MESSAGES): Set yesexpr to "^[yY]" and
+ noexpr to "^[nN]"; this conforms to POSIX.2.
+
+ * C-time.c (_nl_C_LC_TIME): Change %d to %e in d_t_format, to
+ conform to POSIX.2.
+
+1996-08-28 Paul Eggert <eggert@twinsun.com>
+
+ * C-monetary.c (not_available): New constant.
+ (_nl_C_LC_MONETARY): Set mon_decimal_point to "", and set
+ mon_grouping, int_frac_digits, frac_digits, p_cs_precedes,
+ p_sep_by_space, n_cs_precedes, n_sep_by_space, p_sign_posn, and
+ n_sign_posn to CHAR_MAX, as required by the POSIX Standard.
+
+Wed Aug 28 23:12:28 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * nss/nss_db/db-XXX.c: Correct function names. They must be
+ `_nss_db_*' instead of `_nss_files_*'.
+ (lookup): `parse_line' returns 1 if succesful.
+ * nss/nss_files/files-service.c (servbyname): Key for database
+ must also contain protocol names.
+ (servbypt): Likewise.
+ Test must also check for protocol. Add `proto' argument.
+
+Tue Aug 27 09:56:13 1996 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * MakeTAGS ($P/subdirs.pot): Prefix all file names, not only the
+ first one.
+
Tue Aug 27 17:45:21 1996 Ulrich Drepper <drepper@cygnus.com>
* Makerules: Add some test for correct version of GNU Make.
* sysdeps/unix/sysv/linux/Makefile [$(subdir) = csu]: Use
-fkeep-inline-functions flag instead.
+Fri Aug 16 16:11:25 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * nss/nss_dns/dns-host.c (_nss_dns_gethostbyname2_r): Treat
+ EPFNOSUPPORT and EAFNOSUPPORT as implying NSS_STATUS_UNAVAIL just
+ like ECONNREFUSED already does.
+ (_nss_dns_gethostbyaddr_r): Likewise.
+ * nss/nss_dns/dns-network.c (_nss_dns_getnetbyname_r): Likewise.
+ (_nss_dns_getnetbyaddr_r): Likewise.
+
+ * sysdeps/mach/hurd/socket.c (socket): For message transmission
+ and RPC errors that indicate that the socket server is not really
+ present and able to do its job, turn the error into EPFNOSUPPORT.
+
Fri Aug 16 01:24:33 1996 Ulrich Drepper <drepper@cygnus.com>
* inet/ruserpass.c (userpass): Allocate buffer for .netrc file
always only if in static libc or if statically linked program
uses libc.so.
+ * sysdeps/generic/sbrk.c (__sbrk): Get kernel brk address
+ always only if in static libc or if statically linked program
+ uses libc.so.
+
Sun Aug 11 01:12:38 1996 Richard Henderson <rth@tamu.edu>
* sysdeps/alpha/dl-machine.h (elf_alpha_fix_plt): Optimize LD_BIND_NOW
$P/subdirs.pot: $(subdirs:%=$P/%.pot)
@rm -f $@.new
(for d in $(subdirs); \
- do sed "s%^#: %&$$d/%" $P/$$d.pot; done) > $@.new
+ do sed "/^#:/s% % $$d/%g" $P/$$d.pot; done) > $@.new
mv -f $@.new $@
# Get $(version) defined.
This makefile requires GNU Make.
endif
+REQUIRED_MAKE_VERSION = 3.74
+
+ifneq ($(REQUIRED_MAKE_VERSION), \
+ $(firstword $(sort $(MAKE_VERSION) $(REQUIRED_MAKE_VERSION))))
+Wrong GNU Make version. See above for the version needed.
+endif
+
ifdef subdir
.. := ../
* The new header file <fts.h> and suite of functions simplify programs that
operate on directory trees. This code comes from 4.4 BSD.
-* The resolver code has been updated from the BIND 4.9.5-T1A release.
+* The resolver code has been updated from the BIND 4.9.5-T3A release.
* The new function `malloc_find_object_address' finds the starting address
of a malloc'd block, given any address within the block;
Open jobs for finishing GNU libc:
---------------------------------
-Status: July 1996
+Status: August 1996
If you have time and talent to take over any of the jobs below please
contact <bug-glibc@prep.ai.mit.edu>
Implementation idea: use some functions from bash.
-[ 5] Write reentrant versions of crypt() et.al.
-
- Implementation idea: Define in <crypt.h>
-
- struct crypt_data
- {
- <... all the needed data ...>
- };
-
- and define additional functions
-
- char *crypt_r (__const char *__key, __const char *__salt,
- struct crypt_data *__data);
-
- void setkey_r (__const char *__key, struct crypt_data *__data);
-
- void encrypt_r (char *__block, int __edflag,
- struct crypt_data *__data);
-
- If possible the non-reentrant functions should use the reentrant
- ones.
-
- Because of the US export restrictions it might be a good idea if
- some non-american person does this job.
-
-
-[ 6] Write `long double' versions of the math functions. This should be
+[ 5] Write `long double' versions of the math functions. This should be
done in collaboration with the NetBSD and FreeBSD people.
The libm is in fact fdlibm (not the same as in Linux libc).
**** Partly done.
-[ 7] If you enjoy assembler programming (as I do --drepper :-) you might
+[ 6] If you enjoy assembler programming (as I do --drepper :-) you might
be interested in writing optimized versions for some functions.
Especially the string handling functions can be optimized a lot.
on this.
-[ 8] Write nftw() function. Perhaps it might be good to reimplement the
+[ 7] Write nftw() function. Perhaps it might be good to reimplement the
ftw() function as well to share most of the code.
**** Almost done!
-[ 9] Write AVL-tree based tsearch() et.al. functions. Currently only
+[ 8] Write AVL-tree based tsearch() et.al. functions. Currently only
a very simple algorithm is used.
There is a public domain version but using this would cause problems
with the assignment.
-[10] Extend regex and/or rx to work with wide characters.
+[ 9] Extend regex and/or rx to work with wide characters.
-[11] Add mmap() support to malloc().
+[10] Add mmap() support to malloc().
Doug Lea's malloc implementation might give some ideas. Perhaps
switching completly to his implementation is an option if it
a) can work without mmap() support (not all system GNU libc
Please contact bug-glibc@prep.ai.mit.edu before starting to avoid
duplicated work.
-[12] Write access function for netmasks, bootparams, netgroup, publickey,
+[11] Write access function for netmasks, bootparams, netgroup, publickey,
automount, aliases databases for nss_files and nss_db module.
The functions should be embedded in the nss scheme. This is not
hard and not all services must be supported at once.
hash/extern.h hash/hash.h hash/page.h \
recno/extern.h recno/recno.h
+others := makedb
+install-bin := makedb
+
include ../Rules
CPPFLAGS += -D__DBINTERFACE_PRIVATE
# The db code outsmarts the compiler frequently.
override CFLAGS += -Wno-uninitialized
+
+$(objpfx)makedb: -ldb
{ "help", no_argument, NULL, 'h' },
{ "fold-case", no_argument, NULL, 'f' },
{ "output", required_argument, NULL, 'o' },
+ { "quiet", no_argument, NULL, 'q' },
{ "undo", no_argument, NULL, 'u' },
{ "version", no_argument, NULL, 'V' },
- { NULL, }
+ { NULL, 0, NULL, 0}
};
/* Prototypes for local functions. */
static void usage __P ((int status)) __attribute__ ((noreturn));
static int process_input __P ((FILE *input, const char *inname, DB *output,
- int to_lowercase));
+ int to_lowercase, int be_quiet));
static int print_database __P ((DB *db));
int do_version;
int to_lowercase;
int do_undo;
+ int be_quiet;
int status;
int opt;
do_version = 0;
to_lowercase = 0;
do_undo = 0;
+ be_quiet = 0;
output_name = NULL;
while ((opt = getopt_long (argc, argv, "fho:uV", long_options, NULL)) != EOF)
case 'o':
output_name = optarg;
break;
+ case 'q':
+ be_quiet = 1;
+ break;
case 'u':
do_undo = 1;
break;
error (EXIT_FAILURE, errno, gettext ("cannot open output file `%s'"));
/* Start the real work. */
- status = process_input (input_file, input_name, db_file, to_lowercase);
+ status = process_input (input_file, input_name, db_file, to_lowercase,
+ be_quiet);
/* Close files. */
if (input_file != stdin)
-f, --fold-case convert key to lower case\n\
-h, --help display this help and exit\n\
-o, --output=NAME write output to file NAME\n\
+ --quiet don't print messages while building database\n\
-u, --undo print content of database file, one entry a line\n\
-V, --version output version information and exit\n\
If INPUT-FILE is -, input is read from standard input.\n"),
static int
-process_input (input, inname, output, to_lowercase)
+process_input (input, inname, output, to_lowercase, be_quiet)
FILE *input;
const char *inname;
DB *output;
int to_lowercase;
+ int be_quiet;
{
char *line;
size_t linelen;
if (status != 0)
{
if (status == 1)
- error_at_line (0, 0, inname, linenr, gettext ("duplicate key"));
+ {
+ if (!be_quiet)
+ error_at_line (0, 0, inname, linenr,
+ gettext ("duplicate key"));
+ /* This is no real error. Just give a warning. */
+ status = 0;
+ }
else
error (0, errno, gettext ("while writing data base file"));
- status = EXIT_FAILURE;
+ status = status ? EXIT_FAILURE : EXIT_SUCCESS;
+
clearerr (input);
break;
}
#include <stddef.h>
#include <link.h>
#include <setjmp.h>
+#include <stdlib.h>
#include <string.h>
/* This structure communicates state between _dl_catch_error and
_dl_signal_error. */
struct catch
{
- const char *errstring, *objname; /* Error detail filled in here. */
+ char *errstring; /* Error detail filled in here. */
+ const char *objname;
jmp_buf env; /* longjmp here on error. */
};
}
int
-_dl_catch_error (const char **errstring,
+_dl_catch_error (char **errstring,
const char **objname,
void (*operate) (void))
{
catch = &c;
(*operate) ();
catch = NULL;
- *errstring = *objname = NULL;
+ *errstring = NULL;
+ *objname = NULL;
return 0;
}
{
int fd;
char *realname;
+ char *name_copy;
struct link_map *l;
/* Look for this name among those already loaded. */
if (fd != -1)
{
- name = local_strdup (name);
- if (name == NULL)
+ name_copy = local_strdup (name);
+ if (name_copy == NULL)
{
__close (fd);
fd = -1;
if (fd == -1)
_dl_signal_error (errno, name, "cannot open shared object file");
- return _dl_map_object_from_fd (name, fd, realname, loader, type);
+ return _dl_map_object_from_fd (name_copy, fd, realname, loader, type);
}
#include <stdlib.h>
static int last_errcode;
-static const char *last_errstring;
+static char *last_errstring;
static const char *last_object_name;
char *
/* Call OPERATE, catching errors from `dl_signal_error'. If there is no
error, *ERRSTRING is set to null. If there is an error, *ERRSTRING and
*OBJECT are set to the strings passed to _dl_signal_error, and the error
- code passed is the return value. */
-extern int _dl_catch_error (const char **errstring,
+ code passed is the return value. ERRSTRING if nonzero points to a
+ malloc'ed string which the caller has to free after use. */
+extern int _dl_catch_error (char **errstring,
const char **object,
void (*operate) (void));
ElfW(Addr) *user_entry));
extern void _dl_sysdep_start_cleanup (void);
+/* System-dependent function to read a file's whole contents
+ in the most convenient manner available. */
+extern void *_dl_sysdep_read_whole_file (const char *filename,
+ size_t *filesize_ptr,
+ int mmap_prot);
+
int _dl_argc;
char **_dl_argv;
const char *_dl_rpath;
enum { normal, list, verify, trace } mode;
struct link_map **preloads;
unsigned int npreloads;
+ size_t file_size;
+ char *file;
mode = getenv ("LD_TRACE_LOADED_OBJECTS") != NULL ? trace : normal;
l->l_next = &_dl_rtld_map;
_dl_rtld_map.l_prev = l;
+ /* We have two ways to specify objects to preload: via environment
+ variable and via the file /etc/ld.so.preload. The later can also
+ be used when security is enabled. */
preloads = NULL;
npreloads = 0;
+
+ /* Read the contents of the file. */
+ file = _dl_sysdep_read_whole_file ("/etc/ld.so.preload", &file_size,
+ PROT_READ | PROT_WRITE);
+ if (file)
+ {
+ /* Parse the file. It contains names of libraries to be loaded,
+ separated by white spaces or `:'. It may also contain
+ comments introduced by `#'. */
+ char *problem;
+ char *runp;
+ size_t rest;
+
+ /* Eliminate comments. */
+ runp = file;
+ rest = file_size;
+ while (rest > 0)
+ {
+ char *comment = memchr (runp, '#', rest);
+ if (comment == NULL)
+ break;
+
+ rest -= comment - runp;
+ do
+ *comment = ' ';
+ while (--rest > 0 && *++comment != '\n');
+ }
+
+ /* We have one problematic case: if we have a name at the end of
+ the file without a trailing terminating characters, we cannot
+ place the \0. Handle the case separately. */
+ if (file[file_size - 1] != ' ' && file[file_size] != '\t'
+ && file[file_size] != '\n')
+ {
+ problem = &file[file_size];
+ while (problem > file && problem[-1] != ' ' && problem[-1] != '\t'
+ && problem[-1] != '\n')
+ --problem;
+
+ if (problem > file)
+ problem[-1] = '\0';
+ }
+ else
+ problem = NULL;
+
+ if (file != problem)
+ {
+ char *p;
+ runp = file;
+ while ((p = strsep (&runp, ": \t\n")) != NULL)
+ {
+ (void) _dl_map_object (NULL, p, lt_library);
+ ++npreloads;
+ }
+ }
+
+ if (problem != NULL)
+ {
+ char *p = strndupa (problem, file_size - (problem - file));
+ (void) _dl_map_object (NULL, p, lt_library);
+ }
+
+ /* We don't need the file anymore. */
+ __munmap (file, file_size);
+ }
+
if (! __libc_enable_secure)
{
const char *preloadlist = getenv ("LD_PRELOAD");
(void) _dl_map_object (NULL, p, lt_library);
++npreloads;
}
-
- if (npreloads != 0)
- {
- /* Set up PRELOADS with a vector of the preloaded libraries. */
- struct link_map *l;
- unsigned int i;
- preloads = __alloca (npreloads * sizeof preloads[0]);
- l = _dl_rtld_map.l_next; /* End of the chain before preloads. */
- i = 0;
- do
- {
- preloads[i++] = l;
- l = l->l_next;
- } while (l);
- assert (i == npreloads);
- }
}
}
+ if (npreloads != 0)
+ {
+ /* Set up PRELOADS with a vector of the preloaded libraries. */
+ struct link_map *l;
+ unsigned int i;
+ preloads = __alloca (npreloads * sizeof preloads[0]);
+ l = _dl_rtld_map.l_next; /* End of the chain before preloads. */
+ i = 0;
+ do
+ {
+ preloads[i++] = l;
+ l = l->l_next;
+ } while (l);
+ assert (i == npreloads);
+ }
+
/* Load all the libraries specified by DT_NEEDED entries. If LD_PRELOAD
specified some libraries to load, these are inserted before the actual
dependencies in the executable's searchlist for symbol resolution. */
char buf[20], *bp;
buf[sizeof buf - 1] = '\0';
bp = _itoa (l->l_addr, &buf[sizeof buf - 1], 16, 0);
- while (&buf[sizeof buf - 1] - bp < sizeof l->l_addr * 2)
+ while ((size_t) (&buf[sizeof buf - 1] - bp) < sizeof l->l_addr * 2)
*--bp = '0';
_dl_sysdep_message ("\t", l->l_libname, " => ", l->l_name,
" (0x", bp, ")\n", NULL);
char buf[20], *bp;
buf[sizeof buf - 1] = '\0';
bp = _itoa (ref->st_value, &buf[sizeof buf - 1], 16, 0);
- while (&buf[sizeof buf - 1] - bp < sizeof loadbase * 2)
+ while ((size_t) (&buf[sizeof buf - 1] - bp) < sizeof loadbase * 2)
*--bp = '0';
_dl_sysdep_message (_dl_argv[i], " found at 0x", bp, NULL);
buf[sizeof buf - 1] = '\0';
bp = _itoa (loadbase, &buf[sizeof buf - 1], 16, 0);
- while (&buf[sizeof buf - 1] - bp < sizeof loadbase * 2)
+ while ((size_t) (&buf[sizeof buf - 1] - bp) < sizeof loadbase * 2)
*--bp = '0';
_dl_sysdep_message (" in object at 0x", bp, "\n", NULL);
}
#endif
#endif /* Use misc. */
-/* Define some more compatibility macros to be backward compatible with
- BSD systems which did not managed to hide these kernel macros. */
-#ifdef __USE_BSD
-#define FAPPEND O_APPEND
-#define FASYNC O_ASYNC
-#define FFSYNC O_FSYNC
-#define FNONBLOCK O_NONBLOCK
-#define FNDELAY O_NDELAY
-#endif /* Use BSD. */
-
/* Do the file control operation described by CMD on FD.
The remaining arguments are interpreted depending on CMD. */
extern int __fcntl __P ((int __fd, int __cmd, ...));
#include <endian.h>
#include "localeinfo.h"
+/* These tables' entries contain values which make the function behave
+ accoriding to POSIX.2 Table 2-8 ``LC_COLLATE Category Definition in
+ the POSIX Locale''. */
const u_int32_t _nl_C_LC_COLLATE_symbol_hash[446] =
{
#include "localeinfo.h"
#include <endian.h>
+/* This table's entries are taken from POSIX.2 Table 2-6
+ ``LC_CTYPE Category Definitionin the POSIX Locale''.
+
+ The `_nl_C_LC_CTYPE_width' array is a GNU extension.
+
+ In the `_nl_C_LC_CTYPE_class' array the value for EOF (== -1)
+ is set to always return 0 and the conversion arrays return EOF. */
+
const char _nl_C_LC_CTYPE_class[768] =
/* 0x80 */ "\002\000" "\002\000" "\002\000" "\002\000" "\002\000" "\002\000"
/* 0x86 */ "\002\000" "\002\000" "\002\000" "\002\000" "\002\000" "\002\000"
#include "localeinfo.h"
+/* This table's entries are taken from POSIX.2 Table 2-12
+ ``LC_MESSAGES Category Definition in the POSIX Locale''.
+
+ The last two fields are a GNU extension. */
+
const struct locale_data _nl_C_LC_MESSAGES =
{
_nl_C_name,
NULL, 0, /* no file mapped */
4,
{
- { string: "[yY][[:alpha:]]*" },
- { string: "[nN][[:alpha:]]*" },
+ { string: "^[yY]" },
+ { string: "^[nN]" },
{ string: "" },
{ string: "" }
}
#include "localeinfo.h"
+/* This table's entries are taken from POSIX.2 Table 2-9
+ ``LC_MONETARY Category Definition in the POSIX Locale''. */
+#ifdef __CHAR_UNSIGNED__
+static const char not_available[] = "\377";
+#else
+static const char not_available[] = "\177";
+#endif
+
const struct locale_data _nl_C_LC_MONETARY =
{
_nl_C_name,
{
{ string: "" },
{ string: "" },
- { string: "." },
{ string: "" },
- { string: "\177" },
+ { string: "" },
+ { string: not_available },
{ string: "" },
{ string: "" },
- { string: "\177" },
- { string: "\177" },
- { string: "\177" },
- { string: "\177" },
- { string: "\177" },
- { string: "\177" },
- { string: "\177" },
- { string: "\177" }
+ { string: not_available },
+ { string: not_available },
+ { string: not_available },
+ { string: not_available },
+ { string: not_available },
+ { string: not_available },
+ { string: not_available },
+ { string: not_available }
}
};
#include "localeinfo.h"
+/* This table's entries are taken from POSIX.2 Table 2-10
+ ``LC_NUMERIC Category Definition in the POSIX Locale''. */
+#ifdef __CHAR_UNSIGNED__
+static const char not_available[] = "\377";
+#else
+static const char not_available[] = "\177";
+#endif
+
const struct locale_data _nl_C_LC_NUMERIC =
{
_nl_C_name,
{
{ string: "." },
{ string: "" },
- { string: "\177" }
+ { string: not_available }
}
};
#include "localeinfo.h"
+/* This table's entries are taken from POSIX.2 Table 2-11
+ ``LC_TIME Category Definition in the POSIX Locale''. */
+
const struct locale_data _nl_C_LC_TIME =
{
_nl_C_name,
{ string: "December" },
{ string: "AM" },
{ string: "PM" },
- { string: "%a %b %d %H:%M:%S %Y" },
+ { string: "%a %b %e %H:%M:%S %Y" },
{ string: "%m/%d/%y" },
{ string: "%H:%M:%S" },
{ string: "%I:%M:%S %p" },
headers := nss.h
distribute := nsswitch.h XXX-lookup.c getXXbyYY.c getXXbyYY_r.c \
- getXXent.c getXXent_r.c databases.def
+ getXXent.c getXXent_r.c databases.def \
+ nsswitch.conf db-Makefile
# This is the trivial part which goes into libc itself.
routines = nsswitch $(addsuffix -lookup,$(databases))
#define ENTNAME_r CONCAT(ENTNAME,_r)
#include <paths.h>
-#define DBFILE _PATH_VARDB DATABASE
+#define DBFILE _PATH_VARDB DATABASE ".db"
#ifdef NEED_H_ERRNO
#define H_ERRNO_PROTO , int *herrnop
/* Thread-safe, exported version of that. */
int
-CONCAT(_nss_files_set,ENTNAME) (int stayopen)
+CONCAT(_nss_db_set,ENTNAME) (int stayopen)
{
int status;
/* Thread-safe, exported version of that. */
int
-CONCAT(_nss_files_end,ENTNAME) (void)
+CONCAT(_nss_db_end,ENTNAME) (void)
{
__libc_lock_lock (lock);
DBT value;
/* Open the database. */
- internal_setent (keep_db);
+ status = internal_setent (keep_db);
+ if (status != NSS_STATUS_SUCCESS)
+ return status;
/* Succeed iff it matches a value that parses correctly. */
status = (((*db->get) (db, key, &value, 0) == 0 &&
- parse_line (value.data, result, buffer, buflen) == 0)
+ parse_line (value.data, result, buffer, buflen))
? NSS_STATUS_SUCCESS : NSS_STATUS_NOTFOUND);
if (! keep_db)
#define DB_LOOKUP(name, keysize, keypattern, break_if_match, proto...) \
enum nss_status \
-_nss_files_get##name##_r (proto, \
- struct STRUCTURE *result, \
- char *buffer, int buflen H_ERRNO_PROTO) \
+_nss_db_get##name##_r (proto, \
+ struct STRUCTURE *result, \
+ char *buffer, int buflen H_ERRNO_PROTO) \
{ \
DBT key; \
enum nss_status status; \
/* Return the next entry from the database file, doing locking. */
enum nss_status
-CONCAT(_nss_files_get,ENTNAME_r) (struct STRUCTURE *result,
- char *buffer, int buflen H_ERRNO_PROTO)
+CONCAT(_nss_db_get,ENTNAME_r) (struct STRUCTURE *result,
+ char *buffer, int buflen H_ERRNO_PROTO)
{
/* Return next entry in host file. */
enum nss_status status;
#include GENERIC
-DB_LOOKUP (servbyname, 1 + strlen (name), (".%s", name),
+DB_LOOKUP (servbyname, 1 + strlen (name), (".%s/%s", name, proto),
{
/* Must match both protocol and name. */
if (strcmp (result->s_proto, proto))
},
const char *name, const char *proto)
-DB_LOOKUP (servbyport, 20, ("=%d", port),
+DB_LOOKUP (servbyport, 20, ("=%d/%s", port, proto),
{
- if (result->s_port == port)
+ /* Must match both port and protocol. */
+ if (result->s_port == port
+ && strcmp (result->s_proto, proto) == 0)
break;
- }, int port)
+ }, int port, const char *proto)
-# SOME DESCRIPTIVE TITLE.
+# GNU libc message catalog of translations
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: libc 1.93\n"
-"POT-Creation-Date: 1996-08-14 18:02\n"
+"POT-Creation-Date: 1996-08-29 1:37\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+DIST\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid " (rule from \"%s\", line %d)"
msgstr ""
-#: locale/programs/ld-collate.c:360 programs/ld-ctype.c:1233
+#: locale/programs/ld-collate.c:360 locale/programs/ld-ctype.c:1233
msgid " done\n"
msgstr ""
msgid "%s: command was '%s', result was %d\n"
msgstr ""
-#: locale/programs/charmap.c:593 programs/locfile.c:878
+#: locale/programs/charmap.c:593 locale/programs/locfile.c:878
#, c-format
msgid "%s: error in state machine"
msgstr ""
msgid "%s: output would overwrite %s\n"
msgstr ""
-#: time/zic.c:838 zic.c:1249 zic.c:1269
+#: time/zic.c:838 time/zic.c:1249 time/zic.c:1269
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr ""
msgid ".rhosts writeable by other than owner"
msgstr ""
-#: clnt_perr.c:133 sunrpc/clnt_perr.c:112
+#: sunrpc/clnt_perr.c:112 sunrpc/clnt_perr.c:133
#, c-format
msgid "; low version = %lu, high version = %lu"
msgstr ""
msgid "Error in unknown error system: "
msgstr ""
+#: inet/ruserpass.c:156
+msgid "Error: .netrc file is readable by others."
+msgstr ""
+
#: stdio-common/../sysdeps/gnu/errlist.c:662
msgid "Exchange full"
msgstr ""
msgid "Remote address changed"
msgstr ""
+#: inet/ruserpass.c:157
+msgid "Remove password or make file unreadable by others."
+msgstr ""
+
#: resolv/herror.c:73
msgid "Resolver Error 0 (no error)"
msgstr ""
msgid "Transport endpoint is not connected"
msgstr ""
-#: catgets/gencat.c:202
+#: catgets/gencat.c:202 db/makedb.c:196
#, c-format
msgid "Try `%s --help' for more information.\n"
msgstr ""
msgid "Trying %s...\n"
msgstr ""
-#: ../sysdeps/mach/_strerror.c:58 string/../sysdeps/generic/_strerror.c:36
+#: inet/ruserpass.c:241
+#, c-format
+msgid "Unknown .netrc keyword %s"
+msgstr ""
+
+#: string/../sysdeps/generic/_strerror.c:36
+#: string/../sysdeps/mach/_strerror.c:58
msgid "Unknown error "
msgstr ""
"is -, output is written to standard output.\n"
msgstr ""
+#: db/makedb.c:199
+#, c-format
+msgid ""
+"Usage: %s [OPTION]... INPUT-FILE OUTPUT-FILE\n"
+" %s [OPTION]... -o OUTPUT-FILE INPUT-FILE\n"
+" %s [OPTION]... -u INPUT-FILE\n"
+"Mandatory arguments to long options are mandatory for short options too.\n"
+" -f, --fold-case convert key to lower case\n"
+" -h, --help display this help and exit\n"
+" -o, --output=NAME write output to file NAME\n"
+" --quiet don't print messages while building database\n"
+" -u, --undo print content of database file, one entry a line\n"
+" -V, --version output version information and exit\n"
+"If INPUT-FILE is -, input is read from standard input.\n"
+msgstr ""
+
#: posix/getconf.c:131
#, c-format
msgid "Usage: %s variable_name [pathname]\n"
msgid "Zone continuation line end time is not after end time of previous line"
msgstr ""
-#: locale/programs/charmap.c:397 programs/locfile.c:341
+#: locale/programs/charmap.c:397 locale/programs/locfile.c:341
#, c-format
msgid "`%1$s' definition does not end with `END %1$s'"
msgstr ""
-#: locale/programs/ld-monetary.c:358 programs/ld-numeric.c:190
+#: locale/programs/ld-monetary.c:358 locale/programs/ld-numeric.c:190
#, c-format
msgid "`-1' must be last entry in `%s' field in `%s' category"
msgstr ""
msgid "bad .rhosts owner"
msgstr ""
-#: locale/programs/charmap.c:212 programs/locfile.c:209
+#: locale/programs/charmap.c:212 locale/programs/locfile.c:209
msgid "bad argument"
msgstr ""
msgid "cannot insert collation element `%.*s'"
msgstr ""
-#: locale/programs/ld-collate.c:1492 programs/ld-collate.c:1497
+#: locale/programs/ld-collate.c:1492 locale/programs/ld-collate.c:1497
msgid "cannot insert into result table"
msgstr ""
-#: locale/programs/ld-collate.c:1165 programs/ld-collate.c:1207
+#: locale/programs/ld-collate.c:1165 locale/programs/ld-collate.c:1207
#, c-format
msgid "cannot insert new collating symbol definition: %s"
msgstr ""
-#: catgets/gencat.c:249
+#: db/makedb.c:148
+#, c-format
+msgid "cannot open database file `%s': %s"
+msgstr ""
+
+#: catgets/gencat.c:249 db/makedb.c:167
#, c-format
msgid "cannot open input file `%s'"
msgstr ""
-#: catgets/gencat.c:754 gencat.c:795
+#: catgets/gencat.c:754 catgets/gencat.c:795 db/makedb.c:176
#, c-format
msgid "cannot open output file `%s'"
msgstr ""
msgid "character `%c' not defined while needed as default value"
msgstr ""
-#: locale/programs/ld-ctype.c:938 locale/programs/ld-ctype.c:1017
-#: locale/programs/ld-ctype.c:1041 locale/programs/ld-ctype.c:1113
-#: programs/ld-ctype.c:1001 programs/ld-ctype.c:1009 programs/ld-ctype.c:1025
-#: programs/ld-ctype.c:1033 programs/ld-ctype.c:1067 programs/ld-ctype.c:1075
-#: programs/ld-ctype.c:1151
+#: locale/programs/ld-ctype.c:938 locale/programs/ld-ctype.c:1001
+#: locale/programs/ld-ctype.c:1009 locale/programs/ld-ctype.c:1017
+#: locale/programs/ld-ctype.c:1025 locale/programs/ld-ctype.c:1033
+#: locale/programs/ld-ctype.c:1041 locale/programs/ld-ctype.c:1067
+#: locale/programs/ld-ctype.c:1075 locale/programs/ld-ctype.c:1113
+#: locale/programs/ld-ctype.c:1151
#, c-format
msgid "character `%s' not defined while needed as default value"
msgstr ""
msgid "definition keyword expected"
msgstr ""
-#: locale/programs/charset.c:87 programs/charset.c:132
+#: locale/programs/charset.c:87 locale/programs/charset.c:132
#, c-format
msgid "duplicate character name `%s'"
msgstr ""
msgid "duplicate definition for character `%.*s'"
msgstr ""
+#: db/makedb.c:293
+msgid "duplicate key"
+msgstr ""
+
#: catgets/gencat.c:368
msgid "duplicate set definition"
msgstr ""
msgid "failure while writing data for category `%s'"
msgstr ""
-#: locale/programs/ld-monetary.c:154 programs/ld-numeric.c:95
+#: locale/programs/ld-monetary.c:154 locale/programs/ld-numeric.c:95
#, c-format
msgid "field `%s' in category `%s' not defined"
msgstr ""
-#: locale/programs/ld-messages.c:81 programs/ld-messages.c:102
+#: locale/programs/ld-messages.c:81 locale/programs/ld-messages.c:102
#, c-format
msgid "field `%s' in category `%s' undefined"
msgstr ""
msgid "illegal result type"
msgstr ""
-#: catgets/gencat.c:341 gencat.c:418
+#: catgets/gencat.c:341 catgets/gencat.c:418
msgid "illegal set number"
msgstr ""
msgid "implementation limit: no more than %d character maps allowed"
msgstr ""
+#: db/makedb.c:150
+msgid "incorrectly formatted file"
+msgstr ""
+
#: time/zic.c:815
msgid "input line of unknown type"
msgstr ""
msgid "invalid abbreviation format"
msgstr ""
-#: time/zic.c:1115 zic.c:1314 zic.c:1328
+#: time/zic.c:1115 time/zic.c:1314 time/zic.c:1328
msgid "invalid day of month"
msgstr ""
msgid "invalid leaping year"
msgstr ""
-#: time/zic.c:1102 zic.c:1205
+#: time/zic.c:1102 time/zic.c:1205
msgid "invalid month name"
msgstr ""
msgid "invalid starting year"
msgstr ""
-#: time/zic.c:1131 zic.c:1233
+#: time/zic.c:1131 time/zic.c:1233
msgid "invalid time of day"
msgstr ""
msgid "memory clobbered past end of allocated block"
msgstr ""
-#: locale/programs/ld-collate.c:167 locale/programs/ld-collate.c:177
-#: locale/programs/ld-collate.c:1467 posix/getconf.c:174
-#: programs/ld-collate.c:173 programs/ld-collate.c:1438 programs/locfile.c:940
-#: programs/xmalloc.c:64
+#: locale/programs/ld-collate.c:167 locale/programs/ld-collate.c:173
+#: locale/programs/ld-collate.c:177 locale/programs/ld-collate.c:1438
+#: locale/programs/ld-collate.c:1467 locale/programs/locfile.c:940
+#: locale/programs/xmalloc.c:64 posix/getconf.c:174
msgid "memory exhausted"
msgstr ""
msgid "never registered prog %d\n"
msgstr ""
-#: rpc_parse.c:313 sunrpc/rpc_parse.c:305
+#: sunrpc/rpc_parse.c:305 sunrpc/rpc_parse.c:313
msgid "no array-of-pointer declarations -- use typedef"
msgstr ""
-#: locale/programs/ld-messages.c:95 programs/ld-messages.c:116
+#: locale/programs/ld-messages.c:95 locale/programs/ld-messages.c:116
#, c-format
msgid "no correct regular expression for field `%s' in category `%s': %s"
msgstr ""
msgid "no other keyword shall be specified when `copy' is used"
msgstr ""
-#: locale/programs/charmap.c:315 programs/charmap.c:466 programs/charmap.c:545
+#: locale/programs/charmap.c:315 locale/programs/charmap.c:466
+#: locale/programs/charmap.c:545
msgid "no symbolic name given"
msgstr ""
-#: locale/programs/charmap.c:380 programs/charmap.c:512 programs/charmap.c:578
+#: locale/programs/charmap.c:380 locale/programs/charmap.c:512
+#: locale/programs/charmap.c:578
msgid "no symbolic name given for end of range"
msgstr ""
msgid "portmap CALLIT: cannot fork.\n"
msgstr ""
-#: portmap.c:116 sunrpc/portmap.c:94
+#: sunrpc/portmap.c:94 sunrpc/portmap.c:116
msgid "portmap cannot bind"
msgstr ""
-#: portmap.c:112 sunrpc/portmap.c:86
+#: sunrpc/portmap.c:86 sunrpc/portmap.c:112
msgid "portmap cannot create socket"
msgstr ""
-#: rpc_scan.c:464 sunrpc/rpc_scan.c:456
+#: sunrpc/rpc_scan.c:456 sunrpc/rpc_scan.c:464
msgid "preprocessor error"
msgstr ""
-#: rpcinfo.c:350 sunrpc/rpcinfo.c:222
+#: db/makedb.c:309
+#, c-format
+msgid "problems while reading `%s'"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:222 sunrpc/rpcinfo.c:350
#, c-format
msgid "program %lu is not available\n"
msgstr ""
-#: rpcinfo.c:282 rpcinfo.c:371 rpcinfo.c:408 rpcinfo.c:429
-#: sunrpc/rpcinfo.c:245 sunrpc/rpcinfo.c:462
+#: sunrpc/rpcinfo.c:245 sunrpc/rpcinfo.c:282 sunrpc/rpcinfo.c:371
+#: sunrpc/rpcinfo.c:408 sunrpc/rpcinfo.c:429 sunrpc/rpcinfo.c:462
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr ""
msgid "run_svc returned unexpectedly\n"
msgstr ""
-#: time/zic.c:709 zic.c:711
+#: time/zic.c:709 time/zic.c:711
msgid "same rule name in multiple files"
msgstr ""
msgid "sorting order `forward' and `backward' are mutually exclusive"
msgstr ""
-#: locale/programs/ld-collate.c:1567 programs/ld-collate.c:1613
+#: locale/programs/ld-collate.c:1567 locale/programs/ld-collate.c:1613
msgid ""
"specification of sorting weight for collation symbol does not make sense"
msgstr ""
msgid "starting year greater than ending year"
msgstr ""
-#: sunrpc/svc_tcp.c:199 svc_tcp.c:204
+#: sunrpc/svc_tcp.c:199 sunrpc/svc_tcp.c:204
msgid "svc_tcp: makefd_xprt: out of memory\n"
msgstr ""
msgid "svctcp_.c - udp socket creation problem"
msgstr ""
-#: sunrpc/svc_tcp.c:154 svc_tcp.c:161
+#: sunrpc/svc_tcp.c:154 sunrpc/svc_tcp.c:161
msgid "svctcp_create: out of memory\n"
msgstr ""
"definition"
msgstr ""
-#: locale/programs/ld-collate.c:1054 programs/ld-collate.c:1181
+#: locale/programs/ld-collate.c:1054 locale/programs/ld-collate.c:1181
#, c-format
msgid ""
"symbol for multicharacter collating element `%.*s' duplicates symbolic name "
"in charset"
msgstr ""
-#: locale/programs/charmap.c:314 locale/programs/charmap.c:465
-#: locale/programs/charmap.c:576 programs/charmap.c:348 programs/charmap.c:378
-#: programs/charmap.c:511 programs/charmap.c:544
+#: locale/programs/charmap.c:314 locale/programs/charmap.c:348
+#: locale/programs/charmap.c:378 locale/programs/charmap.c:465
+#: locale/programs/charmap.c:511 locale/programs/charmap.c:544
+#: locale/programs/charmap.c:576
#, c-format
msgid "syntax error in %s definition: %s"
msgstr ""
msgid "syntax error in order specification"
msgstr ""
-#: locale/programs/charmap.c:195 programs/charmap.c:211
+#: locale/programs/charmap.c:195 locale/programs/charmap.c:211
#, c-format
msgid "syntax error in prolog: %s"
msgstr ""
msgid "syntax error: not inside a locale definition section"
msgstr ""
-#: catgets/gencat.c:370 gencat.c:506 gencat.c:533
+#: catgets/gencat.c:370 catgets/gencat.c:506 catgets/gencat.c:533
msgid "this is the first definition"
msgstr ""
msgid "time before zero"
msgstr ""
-#: time/zic.c:1128 zic.c:1960 zic.c:1979
+#: time/zic.c:1128 time/zic.c:1960 time/zic.c:1979
msgid "time overflow"
msgstr ""
msgid "typed single year"
msgstr ""
-#: locale/programs/charmap.c:617 programs/charmap.c:628
+#: locale/programs/charmap.c:617 locale/programs/charmap.c:628
#, c-format
msgid "unknown character `%s'"
msgstr ""
-#: locale/programs/ld-messages.c:193 locale/programs/ld-messages.c:215
-#: programs/ld-messages.c:204 programs/ld-messages.c:226
+#: locale/programs/ld-messages.c:193 locale/programs/ld-messages.c:204
+#: locale/programs/ld-messages.c:215 locale/programs/ld-messages.c:226
#, c-format
msgid "unknown character in field `%s' of category `%s'"
msgstr ""
msgid "unknown signal"
msgstr ""
-#: locale/programs/ld-collate.c:1366 locale/programs/ld-collate.c:1731
-#: programs/ld-collate.c:1557
+#: locale/programs/ld-collate.c:1366 locale/programs/ld-collate.c:1557
+#: locale/programs/ld-collate.c:1731
#, c-format
msgid "unknown symbol `%.*s': line ignored"
msgstr ""
msgid "unterminated message"
msgstr ""
-#: locale/programs/linereader.c:515 programs/linereader.c:550
+#: locale/programs/linereader.c:515 locale/programs/linereader.c:550
msgid "unterminated string"
msgstr ""
msgid "use of 2/29 in non leap-year"
msgstr ""
-#: locale/programs/charmap.c:438 programs/charmap.c:492
+#: locale/programs/charmap.c:438 locale/programs/charmap.c:492
#, c-format
msgid "value for %s must be an integer"
msgstr ""
msgid "value for <%s> must lie between 1 and 4"
msgstr ""
-#: locale/programs/ld-monetary.c:148 programs/ld-numeric.c:89
+#: locale/programs/ld-monetary.c:148 locale/programs/ld-numeric.c:89
#, c-format
msgid "value for field `%s' in category `%s' must not be the empty string"
msgstr ""
"value of field `int_curr_symbol' in category `LC_MONETARY' has wrong length"
msgstr ""
-#: locale/programs/ld-monetary.c:370 programs/ld-numeric.c:199
+#: locale/programs/ld-monetary.c:370 locale/programs/ld-numeric.c:199
#, c-format
msgid "values for field `%s' in category `%s' must be smaller than 127"
msgstr ""
msgid "while opening old catalog file"
msgstr ""
+#: db/makedb.c:336
+msgid "while reading database"
+msgstr ""
+
+#: db/makedb.c:298
+msgid "while writing data base file"
+msgstr ""
+
+#: db/makedb.c:129
+msgid "wrong number of arguments"
+msgstr ""
+
#: time/zic.c:1078
msgid "wrong number of fields on Leap line"
msgstr ""
#define mode_t __mode_t
#define nlink_t __nlink_t
#define off_t __off_t
+#define loff_t __loff_t
#define pid_t __pid_t
#define uid_t __uid_t
#ifndef ssize_t
#define STATUS 0x2 /* nameserver status query */
/*#define xxx 0x3*/ /* 0x3 reserved */
#define NS_NOTIFY_OP 0x4 /* notify secondary of SOA change */
-#ifdef ALLOW_UPDATES
- /* non standard - supports ALLOW_UPDATES stuff from Mike Schwartz */
-# define UPDATEA 0x9 /* add resource record */
-# define UPDATED 0xa /* delete a specific resource record */
-# define UPDATEDA 0xb /* delete all named resource record */
-# define UPDATEM 0xc /* modify a specific resource record */
-# define UPDATEMA 0xd /* modify all named resource record */
-# define ZONEINIT 0xe /* initial zone transfer */
-# define ZONEREF 0xf /* incremental zone referesh */
-#endif
-
/*
* Currently defined response codes
*/
#define NXDOMAIN 3 /* non existent domain */
#define NOTIMP 4 /* not implemented */
#define REFUSED 5 /* query refused */
-#ifdef ALLOW_UPDATES
- /* non standard */
-# define NOCHANGE 0xf /* update failed to change db */
-#endif
/*
* Type values for resources and queries
#define T_AAAA 28 /* IP6 Address */
#define T_LOC 29 /* Location Information */
#define T_NXT 30 /* Next Valid Name in Zone */
+#define T_EID 31 /* Endpoint identifier */
+#define T_NIMLOC 32 /* Nimrod locator */
+#define T_SRV 33 /* Server selection */
+#define T_ATMA 34 /* ATM Address */
/* non standard */
#define T_UINFO 100 /* user (finger) information */
#define T_UID 101 /* user ID */
#define T_GID 102 /* group ID */
#define T_UNSPEC 103 /* Unspecified format (binary data) */
/* Query type values which do not appear in resource records */
+#define T_IXFR 251 /* incremental zone transfer */
#define T_AXFR 252 /* transfer zone of authority */
#define T_MAILB 253 /* transfer mailbox records */
#define T_MAILA 254 /* transfer mail agent records */
*/
#define INDIR_MASK 0xc0
-/*
- * Structure for passing resource records around.
- */
-struct rrec {
- int16_t r_zone; /* zone number */
- int16_t r_class; /* class number */
- int16_t r_type; /* type number */
- u_int32_t r_ttl; /* time to live */
- int r_size; /* size of data area */
- char *r_data; /* pointer to data */
-};
-
extern u_int16_t _getshort __P((const u_char *));
extern u_int32_t _getlong __P((const u_char *));
case T_AAAA: {
char t[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"];
- fprintf(file, "\t%s\n", inet_ntop(AF_INET6, cp, t, sizeof t));
+ fprintf(file, "\t%s", inet_ntop(AF_INET6, cp, t, sizeof t));
cp += dlen;
break;
}
case T_LOC: {
char t[255];
- (void) fprintf(file, "\t%s\n", loc_ntoa(cp, t));
+ (void) fprintf(file, "\t%s", loc_ntoa(cp, t));
cp += dlen;
break;
}
+ case T_SRV: {
+ u_int priority, weight, port;
+
+ priority = _getshort(cp); cp += INT16SZ;
+ weight = _getshort(cp); cp += INT16SZ;
+ port = _getshort(cp); cp += INT16SZ;
+ fprintf(file, "\t%u %u %u ", priority, weight, port);
+ if ((cp = p_fqname(cp, msg, file)) == NULL)
+ return (NULL);
+ break;
+ }
+
case T_MINFO:
case T_RP:
putc('\t', file);
const struct res_sym __p_type_syms[] = {
{T_A, "A", "address"},
{T_NS, "NS", "name server"},
+ {T_MD, "MD", "mail destination (deprecated)"},
+ {T_MF, "MF", "mail forwarder (deprecated)"},
{T_CNAME, "CNAME", "canonical name"},
{T_SOA, "SOA", "start of authority"},
{T_MB, "MB", "mailbox"},
{T_MG, "MG", "mail group member"},
{T_MR, "MR", "mail rename"},
{T_NULL, "NULL", "null"},
- {T_WKS, "WKS", "well-known service"},
+ {T_WKS, "WKS", "well-known service (deprecated)"},
{T_PTR, "PTR", "domain name pointer"},
{T_HINFO, "HINFO", "host information"},
{T_MINFO, "MINFO", "mailbox information"},
{T_NSAP_PTR, "NSAP_PTR", "domain name pointer"},
{T_SIG, "SIG", "signature"},
{T_KEY, "KEY", "key"},
- {T_NXT, "NXT", "next valid name"},
{T_PX, "PX", "mapping information"},
- {T_GPOS, "GPOS", "geographical position"},
+ {T_GPOS, "GPOS", "geographical position (withdrawn)"},
{T_AAAA, "AAAA", "IPv6 address"},
{T_LOC, "LOC", "location"},
+ {T_NXT, "NXT", "next valid name (unimplemented)"},
+ {T_EID, "EID", "endpoint identifier (unimplemented)"},
+ {T_NIMLOC, "NIMLOC", "NIMROD locator (unimplemented)"},
+ {T_SRV, "SRV", "server selection"},
+ {T_ATMA, "ATMA", "ATM address (unimplemented)"},
+ {T_IXFR, "IXFR", "incremental zone transfer"},
{T_AXFR, "AXFR", "zone transfer"},
- {T_MAILB, "MAILB", "mailbox-related data"},
- {T_MAILA, "MAILA", "mail agent"},
- {T_UINFO, "UINFO", "user information"},
- {T_UID, "UID", "user ID"},
- {T_GID, "GID", "group ID"},
+ {T_MAILB, "MAILB", "mailbox-related data (deprecated)"},
+ {T_MAILA, "MAILA", "mail agent (deprecated)"},
+ {T_UINFO, "UINFO", "user information (nonstandard)"},
+ {T_UID, "UID", "user ID (nonstandard)"},
+ {T_GID, "GID", "group ID (nonstandard)"},
#ifdef ALLOW_T_UNSPEC
- {T_UNSPEC, "UNSPEC", "unspecified data"},
+ {T_UNSPEC, "UNSPEC", "unspecified data (nonstandard)"},
#endif /* ALLOW_T_UNSPEC */
{T_ANY, "ANY", "\"any\""},
- {0, (char *)0, (char *)0}
+ {0, NULL, NULL}
};
int
* Resolver state default settings.
*/
-struct __res_state _res;
+struct __res_state _res
+# if defined(__BIND_RES_TEXT)
+ = { RES_TIMEOUT, } /* Motorola, et al. */
+# endif
+ ;
/*
* Set up default settings. If the configuration file exist, the values
register HEADER *hp;
register u_char *cp;
register int n;
-#ifdef ALLOW_UPDATES
- struct rrec *newrr = (struct rrec *) newrr_in;
-#endif
u_char *dnptrs[20], **dpp, **lastdnptr;
if ((_res.options & RES_INIT) == 0 && res_init() == -1) {
hp->ancount = htons(1);
break;
-#ifdef ALLOW_UPDATES
- /*
- * For UPDATEM/UPDATEMA, do UPDATED/UPDATEDA followed by UPDATEA
- * (Record to be modified is followed by its replacement in msg.)
- */
- case UPDATEM:
- case UPDATEMA:
-
- case UPDATED:
- /*
- * The res code for UPDATED and UPDATEDA is the same; user
- * calls them differently: specifies data for UPDATED; server
- * ignores data if specified for UPDATEDA.
- */
- case UPDATEDA:
- buflen -= RRFIXEDSZ + datalen;
- if ((n = dn_comp(dname, cp, buflen, dnptrs, lastdnptr)) < 0)
- return (-1);
- cp += n;
- __putshort(type, cp);
- cp += INT16SZ;
- __putshort(class, cp);
- cp += INT16SZ;
- __putlong(0, cp);
- cp += INT32SZ;
- __putshort(datalen, cp);
- cp += INT16SZ;
- if (datalen) {
- bcopy(data, cp, datalen);
- cp += datalen;
- }
- if ( (op == UPDATED) || (op == UPDATEDA) ) {
- hp->ancount = htons(0);
- break;
- }
- /* Else UPDATEM/UPDATEMA, so drop into code for UPDATEA */
-
- case UPDATEA: /* Add new resource record */
- buflen -= RRFIXEDSZ + datalen;
- if ((n = dn_comp(dname, cp, buflen, dnptrs, lastdnptr)) < 0)
- return (-1);
- cp += n;
- __putshort(newrr->r_type, cp);
- cp += INT16SZ;
- __putshort(newrr->r_class, cp);
- cp += INT16SZ;
- __putlong(0, cp);
- cp += INT32SZ;
- __putshort(newrr->r_size, cp);
- cp += INT16SZ;
- if (newrr->r_size) {
- bcopy(newrr->r_data, cp, newrr->r_size);
- cp += newrr->r_size;
- }
- hp->ancount = htons(0);
- break;
-#endif /* ALLOW_UPDATES */
default:
return (-1);
}
#include <stdio.h>
/*
- * revision information. this is the release date in YYYYMMDD format.
- * it can change every day so the right thing to do with it is use it
- * in preprocessor commands such as "#if (__RES > 19931104)". do not
+ * Revision information. This is the release date in YYYYMMDD format.
+ * It can change every day so the right thing to do with it is use it
+ * in preprocessor commands such as "#if (__RES > 19931104)". Do not
* compare for equality; rather, use it to determine whether your resolver
* is new enough to contain a certain feature.
*/
struct in_addr addr;
u_int32_t mask;
} sort_list[MAXRESOLVSORT];
- char pad[72]; /* On an i38this means 512b total. */
+ char pad[72]; /* on an i386 this means 512b total */
};
/*
strlen (_NL_CURRENT (LC_MONETARY, MON_DECIMAL_POINT))) <= 0)
decimal = (wchar_t) *_NL_CURRENT (LC_MONETARY, MON_DECIMAL_POINT);
}
+ /* Give default value. */
+ if (decimal == L'\0')
+ decimal = L'.';
if (info->group)
grouping = _NL_CURRENT (LC_NUMERIC, GROUPING);
else
grouping = _NL_CURRENT (LC_MONETARY, MON_GROUPING);
-
+
if (*grouping <= 0 || *grouping == CHAR_MAX)
grouping = NULL;
else
thousands_sep = (wchar_t) *_NL_CURRENT (LC_MONETARY,
MON_THOUSANDS_SEP);
}
-
+
if (thousands_sep == L'\0')
grouping = NULL;
}
extern int _dl_argc;
extern char **_dl_argv;
extern char **_environ;
+extern void _end;
extern void _start (void);
int __libc_enable_secure;
+int __libc_multiple_libcs; /* Defining this here avoids the inclusion
+ of init-first. */
ElfW(Addr)
_dl_sysdep_start (void **start_argptr,
void (*dl_main) (const ElfW(Phdr) *phdr, ElfW(Word) phnum,
ElfW(Addr) *user_entry))
{
- const ElfW(Phdr) *phdr;
- ElfW(Word) phnum;
+ const ElfW(Phdr) *phdr = NULL;
+ ElfW(Word) phnum = 0;
ElfW(Addr) user_entry;
ElfW(auxv_t) *av;
- uid_t uid, euid;
- gid_t gid, egid;
+ uid_t uid = 0;
+ uid_t euid = 0;
+ gid_t gid = 0;
+ gid_t egid = 0;
unsigned int seen;
user_entry = (ElfW(Addr)) &_start;
DL_SYSDEP_INIT;
#endif
+ if (__sbrk (0) == &_end)
+ {
+ /* The dynamic linker was run as a program, and so the initial break
+ starts just after our bss, at &_end. The malloc in dl-minimal.c
+ will consume the rest of this page, so tell the kernel to move the
+ break up that far. When the user program examines its break, it
+ will see this new value and not clobber our data. */
+ size_t pg = __getpagesize ();
+
+ __sbrk (pg - ((&_end - (void *) 0) & (pg - 1)));
+ }
+
(*dl_main) (phdr, phnum, &user_entry);
return user_entry;
}
instances of __brk and __sbrk can share the heap, returning
interleaved pieces of it. */
if (__curbrk == NULL || __libc_multiple_libcs)
- {
- extern void _end;
-
- if (__brk (0) < 0) /* Initialize the break. */
- return (void *) -1;
-
- /* Align break address to page boundary if not happened before. */
- if (!__libc_multiple_libcs && __curbrk == &_end)
- {
- size_t pg = __getpagesize ();
- ptrdiff_t rest = pg - ((&_end - (void *) 0) & (pg - 1));
-
- if (__brk (__curbrk + rest) < 0)
- return (void *) -1;
- }
- }
+ if (__brk (0) < 0) /* Initialize the break. */
+ return (void *) -1;
if (increment == 0)
return __curbrk;
/* O_*, F_*, FD_* bit values for Linux.
-Copyright (C) 1995 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
#include <sys/types.h>
#include <linux/fcntl.h>
+/* Define some more compatibility macros to be backward compatible with
+ BSD systems which did not managed to hide these kernel macros. */
+#ifdef __USE_BSD
+#define FAPPEND O_APPEND
+#define FFSYNC O_FSYNC
+#define FNONBLOCK O_NONBLOCK
+#define FNDELAY O_NDELAY
+#endif /* Use BSD. */
+
#endif /* fcntlbits.h */
typedef __kernel_mode_t __mode_t; /* Type of file attribute bitmasks. */
typedef __kernel_nlink_t __nlink_t; /* Type of file link counts. */
typedef __kernel_off_t __off_t; /* Type of file sizes and offsets. */
+typedef __kernel_loff_t __loff_t; /* Type of file sizes and offsets. */
typedef __kernel_pid_t __pid_t; /* Type of process identifications. */
typedef __kernel_ssize_t __ssize_t; /* Type of a byte count, or error. */
typedef __kernel_fsid_t __fsid_t; /* Type of file system IDs. */