update from main archive 960921
authordrepper <drepper>
Sun, 22 Sep 1996 03:03:25 +0000 (03:03 +0000)
committerdrepper <drepper>
Sun, 22 Sep 1996 03:03:25 +0000 (03:03 +0000)
12 files changed:
posix/getconf.c
posix/unistd.h
resolv/Banner [new file with mode: 0644]
resolv/Makefile
resolv/arpa/nameser.h
resolv/base64.c
resolv/gethnamaddr.c
resolv/res_comp.c
resolv/res_debug.c
resolv/res_query.c
resolv/res_send.c
resolv/resolv.h

index 4ee1446..5a7b9b1 100644 (file)
@@ -99,6 +99,13 @@ static struct conf vars[] =
     { "_POSIX_THREAD_PRIO_INHERIT", _SC_THREAD_PRIO_INHERIT, SYSCONF },
     { "_POSIX_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT, SYSCONF },
     { "_POSIX_THREAD_PROCESS_SHARED", _SC_THREAD_PROCESS_SHARED, SYSCONF },
+    { "_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF, SYSCONF },
+    { "_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN, SYSCONF },
+    { "ATEXIT_MAX", _SC_ATEXIT_MAX, SYSCONF },
+    { "PASS_MAX", _SC_PASS_MAX, SYSCONF },
+    { "_PHYS_PAGES", _SC_PHYS_PAGES, SYSCONF },
+    { "_AVPHYS_PAGES", _SC_AVPHYS_PAGES, SYSCONF },
+    { "_XOPEN_VERSION", _SC_XOPEN_VERSION },
     /* POSIX.2  */
     { "BC_BASE_MAX", _SC_BC_BASE_MAX, SYSCONF },
     { "BC_DIM_MAX", _SC_BC_DIM_MAX, SYSCONF },
index 526832a..3b7cb0a 100644 (file)
@@ -55,6 +55,9 @@ __BEGIN_DECLS
    creation of locales with the localedef utility.  */
 #define _POSIX2_LOCALEDEF       1
 
+/* Library is conformant to X/Open version 4.  */
+#define _XOPEN_VERSION 4
+
 
 /* Get values of POSIX options:
 
diff --git a/resolv/Banner b/resolv/Banner
new file mode 100644 (file)
index 0000000..e08f0b4
--- /dev/null
@@ -0,0 +1 @@
+BIND-4.9.5-T4B
index a141fc7..9df98fa 100644 (file)
 subdir := resolv
 
 headers        := resolv.h netdb.h arpa/nameser.h sys/bitypes.h
-distribute := ../conf/portability.h mapv4v6addr.h mapv4v6hostent.h
+distribute := ../conf/portability.h mapv4v6addr.h mapv4v6hostent.h \
+             Banner
 
 routines := herror inet_addr inet_ntop inet_pton nsap_addr res_init
 
 extra-libs := libresolv
 extra-libs-others = $(extra-libs)
-libresolv-routines := gethnamaddr getnetnamadr res_comp res_debug      \
+libresolv-routines := gethnamaddr res_comp res_debug   \
                      res_data res_mkquery res_query res_send           \
                      inet_net_ntop inet_net_pton inet_neta base64
 
index 7da0aef..2352af6 100644 (file)
  * Define constants based on rfc883
  */
 #define PACKETSZ       512             /* maximum packet size */
-#define MAXDNAME       256             /* maximum domain name */
+#define MAXDNAME       1025            /* maximum domain name */
 #define MAXCDNAME      255             /* maximum compressed domain name */
 #define MAXLABEL       63              /* maximum length of domain label */
 #define HFIXEDSZ       12              /* #/bytes of fixed data in header */
index 98983e0..8b01de3 100644 (file)
@@ -127,7 +127,7 @@ static const char Pad64 = '=';
           characters followed by one "=" padding character.
    */
 
-ssize_t
+int
 b64_ntop(src, srclength, target, targsize)
        u_char const *src;
        size_t srclength;
@@ -198,7 +198,7 @@ b64_ntop(src, srclength, target, targsize)
    it returns the number of data bytes stored at the target, or -1 on error.
  */
 
-ssize_t
+int
 b64_pton(src, target, targsize)
        char const *src;
        u_char *target;
index 755fc52..fb51e31 100644 (file)
@@ -167,7 +167,7 @@ getanswer(answer, anslen, qname, qtype)
        int type, class, buflen, ancount, qdcount;
        int haveanswer, had_error;
        int toobig = 0;
-       char tbuf[MAXDNAME+1];
+       char tbuf[MAXDNAME];
        const char *tname;
        int (*name_ok) __P((const char *));
 
@@ -417,6 +417,10 @@ gethostbyname(name)
 {
        struct hostent *hp;
 
+       if ((_res.options & RES_INIT) == 0 && res_init() == -1) {
+               h_errno = NETDB_INTERNAL;
+               return (NULL);
+       }
        if (_res.options & RES_USE_INET6) {
                hp = gethostbyname2(name, AF_INET6);
                if (hp)
@@ -502,6 +506,36 @@ gethostbyname2(name, af)
                        }
                        if (!isdigit(*cp) && *cp != '.')
                                break;
+               }
+       if (isxdigit(name[0]) || name[0] == ':')
+               for (cp = name;; ++cp) {
+                       if (!*cp) {
+                               if (*--cp == '.')
+                                       break;
+                               /*
+                                * All-IPv6-legal, no dot at the end.
+                                * Fake up a hostent as if we'd actually
+                                * done a lookup.
+                                */
+                               if (inet_pton(af, name, host_addr) <= 0) {
+                                       h_errno = HOST_NOT_FOUND;
+                                       return (NULL);
+                               }
+                               strncpy(hostbuf, name, MAXDNAME);
+                               hostbuf[MAXDNAME] = '\0';
+                               bp = hostbuf + MAXDNAME;
+                               len = sizeof hostbuf - MAXDNAME;
+                               host.h_name = hostbuf;
+                               host.h_aliases = host_aliases;
+                               host_aliases[0] = NULL;
+                               h_addr_ptrs[0] = (char *)host_addr;
+                               h_addr_ptrs[1] = NULL;
+                               host.h_addr_list = h_addr_ptrs;
+                               h_errno = NETDB_SUCCESS;
+                               return (&host);
+                       }
+                       if (!isxdigit(*cp) && *cp != ':' && *cp != '.')
+                               break;
                }
 
        if ((n = res_search(name, C_IN, type, buf.buf, sizeof(buf))) < 0) {
index 7da1c3e..76f7cea 100644 (file)
@@ -526,6 +526,26 @@ putlong(l, msgp)
        __putlong(l, msgp);
 }
 
+#undef dn_comp
+int
+dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr)
+       const char *exp_dn;
+       u_char *comp_dn, **dnptrs, **lastdnptr;
+       int length;
+{
+       return (__dn_comp(exp_dn, comp_dn, length, dnptrs, lastdnptr));
+}
+
+#undef dn_expand
+int
+dn_expand(msg, eomorig, comp_dn, exp_dn, length)
+       const u_char *msg, *eomorig, *comp_dn;
+       char *exp_dn;
+       int length;
+{
+       return (__dn_expand(msg, eomorig, comp_dn, exp_dn, length));
+}
+
 #undef dn_skipname
 dn_skipname(comp_dn, eom)
        const u_char *comp_dn, *eom;
index b476676..61724bf 100644 (file)
@@ -238,6 +238,7 @@ __p_query(msg)
 }
 
 #ifdef ultrix
+#undef p_query
 /* ultrix 4.0's packaging has some icky packaging.  alias for it here.
  * there is more junk of this kind over in res_comp.c.
  */
@@ -1041,8 +1042,8 @@ __p_option(option)
 /*
  * Return a mnemonic for a time to live
  */
-char *
-__p_time(value)
+const char *
+p_time(value)
        u_int32_t value;
 {
        static char nbuf[40];
@@ -1369,7 +1370,7 @@ loc_aton(ascii, binary)
 }
 
 /* takes an on-the-wire LOC RR and formats it in a human readable format. */
-char *
+const char *
 loc_ntoa(binary, ascii)
        const u_char *binary;
        char *ascii;
index 135c6aa..2d191d0 100644 (file)
@@ -86,7 +86,7 @@ static char rcsid[] = "$Id$";
 #define MAXPACKET      1024
 #endif
 
-char *__hostalias __P((const char *));
+const char *hostalias __P((const char *));
 
 
 /*
@@ -321,7 +321,7 @@ res_querydomain(name, domain, class, type, answer, anslen)
        u_char *answer;         /* buffer to put answer */
        int anslen;             /* size of answer */
 {
-       char nbuf[2*MAXDNAME+2];
+       char nbuf[MAXDNAME];
        const char *longname = nbuf;
        int n;
 
@@ -351,8 +351,8 @@ res_querydomain(name, domain, class, type, answer, anslen)
        return (res_query(longname, class, type, answer, anslen));
 }
 
-char *
-__hostalias(name)
+const char *
+hostalias(name)
        register const char *name;
 {
        register char *cp1, *cp2;
index 841baa6..4c258b9 100644 (file)
@@ -781,3 +781,20 @@ _res_close()
                vc = 0;
        }
 }
+
+#ifdef ultrix
+/* ultrix 4.0 had some icky packaging in its libc.a.  alias for it here.
+ * there is more gunk of this kind over in res_debug.c.
+ */
+
+#undef res_send
+int
+res_send(buf, buflen, ans, anssiz)
+       const u_char *buf;
+       int buflen;
+       u_char *ans;
+       int anssiz;
+{
+       return (__res_send(buf, buflen, ans, anssiz));
+}
+#endif /* Ultrix 4.0 hackery */
index 23460c5..e5ec75a 100644 (file)
@@ -112,7 +112,7 @@ struct __res_state {
 #define        nsaddr  nsaddr_list[0]          /* for backward compatibility */
        u_short id;                     /* current packet id */
        char    *dnsrch[MAXDNSRCH+1];   /* components of domain to search */
-       char    defdname[MAXDNAME];     /* default domain */
+       char    defdname[256];          /* default domain (deprecated) */
        u_long  pfcode;                 /* RES_PRF_ flags - see below. */
        unsigned ndots:4;               /* threshold for initial abs. query */
        unsigned nsort:4;               /* number of elements in sort_list[] */
@@ -205,6 +205,7 @@ extern const struct res_sym __p_type_syms[];
 #define        loc_ntoa        __loc_ntoa
 #define        loc_aton        __loc_aton
 #define        dn_skipname     __dn_skipname
+#define        fp_resstat      __fp_resstat
 #define        fp_query        __fp_query
 #define        fp_nquery       __fp_nquery
 #define        hostalias       __hostalias
@@ -213,6 +214,7 @@ extern const struct res_sym __p_type_syms[];
 #define p_class                __p_class
 #define p_time         __p_time
 #define p_type         __p_type
+#define        p_query         __p_query
 #define        p_cdnname       __p_cdnname
 #define        p_cdname        __p_cdname
 #define        p_fqnname       __p_fqnname
@@ -221,59 +223,68 @@ extern const struct res_sym __p_type_syms[];
 #define        p_option        __p_option
 #define        p_secstodate    __p_secstodate
 #define        dn_count_labels __dn_count_labels
+#define        dn_comp         __dn_comp
+#define        dn_expand       __dn_expand
+#define        res_init        __res_init
 #define        res_randomid    __res_randomid
+#define        res_query       __res_query
+#define        res_search      __res_search
+#define        res_querydomain __res_querydomain
+#define        res_mkquery     __res_mkquery
+#define        res_send        __res_send
 #define        res_isourserver __res_isourserver
 #define        res_nameinquery __res_nameinquery
 #define        res_queriesmatch __res_queriesmatch
 __BEGIN_DECLS
-int     __res_hnok __P((const char *));
-int     __res_ownok __P((const char *));
-int     __res_mailok __P((const char *));
-int     __res_dnok __P((const char *));
-int     sym_ston __P((const struct res_sym *, char *, int *));
-const char *sym_ntos __P((const struct res_sym *, int, int *));
-const char *sym_ntop __P((const struct res_sym *, int, int *));
-ssize_t         b64_ntop __P((u_char const *, size_t, char *, size_t));
-ssize_t         b64_pton __P((char const *, u_char *, size_t));
-int     __loc_aton __P((const char *ascii, u_char *binary));
-char *  __loc_ntoa __P((const u_char *binary, char *ascii));
-int     __dn_skipname __P((const u_char *, const u_char *));
-void    __fp_resstat __P((struct __res_state *, FILE *));
-void    __fp_query __P((const u_char *, FILE *));
-void    __fp_nquery __P((const u_char *, int, FILE *));
-char   *__hostalias __P((const char *));
-void    __putlong __P((u_int32_t, u_char *));
-void    __putshort __P((u_int16_t, u_char *));
-char   *__p_time __P((u_int32_t));
-void    __p_query __P((const u_char *));
-const u_char *__p_cdnname __P((const u_char *, const u_char *, int, FILE *));
-const u_char *__p_cdname __P((const u_char *, const u_char *, FILE *));
-const u_char *__p_fqnname __P((const u_char *cp, const u_char *msg,
+int            res_hnok __P((const char *));
+int            res_ownok __P((const char *));
+int            res_mailok __P((const char *));
+int            res_dnok __P((const char *));
+int            sym_ston __P((const struct res_sym *, char *, int *));
+const char *   sym_ntos __P((const struct res_sym *, int, int *));
+const char *   sym_ntop __P((const struct res_sym *, int, int *));
+int            b64_ntop __P((u_char const *, size_t, char *, size_t));
+int            b64_pton __P((char const *, u_char *, size_t));
+int            loc_aton __P((const char *, u_char *));
+const char *   loc_ntoa __P((const u_char *, char *));
+int            dn_skipname __P((const u_char *, const u_char *));
+void           fp_resstat __P((struct __res_state *, FILE *));
+void           fp_query __P((const u_char *, FILE *));
+void           fp_nquery __P((const u_char *, int, FILE *));
+const char *   hostalias __P((const char *));
+void           putlong __P((u_int32_t, u_char *));
+void           putshort __P((u_int16_t, u_char *));
+const char *   p_class __P((int));
+const char *   p_time __P((u_int32_t));
+const char *   p_type __P((int));
+void           p_query __P((const u_char *));
+const u_char * p_cdnname __P((const u_char *, const u_char *, int, FILE *));
+const u_char * p_cdname __P((const u_char *, const u_char *, FILE *));
+const u_char * p_fqnname __P((const u_char *cp, const u_char *msg,
                               int, char *, int));
-const u_char *__p_fqname __P((const u_char *, const u_char *, FILE *));
-const u_char *__p_rr __P((const u_char *, const u_char *, FILE *));
-const char *__p_type __P((int));
-const char *__p_class __P((int));
-const char *__p_option __P((u_long option));
-char *  __p_secstodate __P((unsigned long));
-int     dn_count_labels __P((char *));
-int     dn_comp __P((const char *, u_char *, int, u_char **, u_char **));
-int     dn_expand __P((const u_char *, const u_char *, const u_char *,
-                       char *, int));
-int     res_init __P((void));
-u_int16_t res_randomid __P((void));
-int     res_query __P((const char *, int, int, u_char *, int));
-int     res_search __P((const char *, int, int, u_char *, int));
-int     res_querydomain __P((const char *, const char *, int, int,
-                             u_char *, int));
-int     res_mkquery __P((int, const char *, int, int, const u_char *, int,
-                         const u_char *, u_char *, int));
-int     res_send __P((const u_char *, int, u_char *, int));
-int     res_isourserver __P((const struct sockaddr_in *));
-int     res_nameinquery __P((const char *, int, int,
-                             const u_char *, const u_char *));
-int     res_queriesmatch __P((const u_char *, const u_char *,
-                              const u_char *, const u_char *));
+const u_char * p_fqname __P((const u_char *, const u_char *, FILE *));
+const u_char * p_rr __P((const u_char *, const u_char *, FILE *));
+const char *   p_option __P((u_long option));
+char *         p_secstodate __P((u_long));
+int            dn_count_labels __P((char *));
+int            dn_comp __P((const char *, u_char *, int,
+                            u_char **, u_char **));
+int            dn_expand __P((const u_char *, const u_char *, const u_char *,
+                              char *, int));
+int            res_init __P((void));
+u_int16_t      res_randomid __P((void));
+int            res_query __P((const char *, int, int, u_char *, int));
+int            res_search __P((const char *, int, int, u_char *, int));
+int            res_querydomain __P((const char *, const char *, int, int,
+                                    u_char *, int));
+int            res_mkquery __P((int, const char *, int, int, const u_char *, int,
+                                const u_char *, u_char *, int));
+int            res_send __P((const u_char *, int, u_char *, int));
+int            res_isourserver __P((const struct sockaddr_in *));
+int            res_nameinquery __P((const char *, int, int,
+                                    const u_char *, const u_char *));
+int            res_queriesmatch __P((const u_char *, const u_char *,
+                                     const u_char *, const u_char *));
 __END_DECLS
 
 #endif /* !_RESOLV_H_ */