This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH COMMITTED] resolv: Deprecate unimplemented flags
- From: fweimer at redhat dot com (Florian Weimer)
- To: libc-alpha at sourceware dot org
- Date: Fri, 07 Oct 2016 17:47:53 +0200
- Subject: [PATCH COMMITTED] resolv: Deprecate unimplemented flags
- Authentication-results: sourceware.org; auth=none
RES_AAONLY, RES_PRIMARY, RES_NOCHECKNAME, RES_KEEPTSIG result
in compile-time warnings. Some of these flags are still used in
applications.
2016-10-07 Florian Weimer <fweimer@redhat.com>
resolv: Deprecate unimplemented flags.
* misc/sys/cdefs.h (__glibc_macro_warning1)
(__glibc_macro_warning): Define.
* resolv/resolv.h (RES_AAONLY, RES_PRIMARY, RES_NOCHECKNAME)
(RES_KEEPTSIG): Mark as deprecated.
* resolv/res_debug.c (p_option): Remove RES_AAONLY, RES_PRIMARY,
RES_NOCHECKNAME, RES_KEEPTSIG.
* resolv/res_init.c (res_setoptions): Remove RES_NOCHECKNAME handling.
diff --git a/NEWS b/NEWS
index b077d0a..be66f23 100644
--- a/NEWS
+++ b/NEWS
@@ -59,6 +59,10 @@ Version 2.25
for the Linux quota interface which predates kernel version 2.4.22 has
been removed.
+* The flags RES_AAONLY, RES_PRIMARY, RES_NOCHECKNAME, RES_KEEPTSIG defined
+ in the <resolv.h> header file have been deprecated. They were already
+ unimplemented.
+
* DNSSEC-related declarations and definitions have been removed from the
<arpa/nameser.h> header file, and libresolv will no longer attempt to
decode the data part of DNSSEC record types. Previous versions of glibc
diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
index 935a94b..50e00e6 100644
--- a/misc/sys/cdefs.h
+++ b/misc/sys/cdefs.h
@@ -472,4 +472,14 @@
# endif
#endif
+/* __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
+ intended for use in preprocessor macros. */
+#if __GNUC_PREREQ (4,8)
+# define __glibc_macro_warning1(message) _Pragma (#message)
+# define __glibc_macro_warning(message) \
+ __glibc_macro_warning1 (GCC warning message)
+#else
+# define __glibc_macro_warning(msg)
+#endif
+
#endif /* sys/cdefs.h */
diff --git a/resolv/res_debug.c b/resolv/res_debug.c
index 9b33e19..825e8a6 100644
--- a/resolv/res_debug.c
+++ b/resolv/res_debug.c
@@ -546,9 +546,7 @@ p_option(u_long option) {
switch (option) {
case RES_INIT: return "init";
case RES_DEBUG: return "debug";
- case RES_AAONLY: return "aaonly(unimpl)";
case RES_USEVC: return "use-vc";
- case RES_PRIMARY: return "primry(unimpl)";
case RES_IGNTC: return "igntc";
case RES_RECURSE: return "recurs";
case RES_DEFNAMES: return "defnam";
@@ -559,8 +557,6 @@ p_option(u_long option) {
case RES_NOALIASES: return "noaliases";
case RES_USE_INET6: return "inet6";
case RES_ROTATE: return "rotate";
- case RES_NOCHECKNAME: return "no-check-names(unimpl)";
- case RES_KEEPTSIG: return "keeptsig(unimpl)";
case RES_BLAST: return "blast";
case RES_USEBSTRING: return "ip6-bytestring";
case RES_NOIP6DOTINT: return "no-ip6-dotint";
diff --git a/resolv/res_init.c b/resolv/res_init.c
index 0a01fd5..1cfa4e6 100644
--- a/resolv/res_init.c
+++ b/resolv/res_init.c
@@ -442,7 +442,6 @@ res_setoptions(res_state statp, const char *options, const char *source) {
{ STRnLEN ("no-ip6-dotint"), 0, RES_NOIP6DOTINT },
{ STRnLEN ("ip6-dotint"), 1, ~RES_NOIP6DOTINT },
{ STRnLEN ("rotate"), 0, RES_ROTATE },
- { STRnLEN ("no-check-names"), 0, RES_NOCHECKNAME },
{ STRnLEN ("edns0"), 0, RES_USE_EDNS0 },
{ STRnLEN ("single-request-reopen"), 0, RES_SNGLKUPREOP },
{ STRnLEN ("single-request"), 0, RES_SNGLKUP },
diff --git a/resolv/resolv.h b/resolv/resolv.h
index 58c3c38..9146258 100644
--- a/resolv/resolv.h
+++ b/resolv/resolv.h
@@ -177,9 +177,11 @@ struct res_sym {
*/
#define RES_INIT 0x00000001 /* address initialized */
#define RES_DEBUG 0x00000002 /* print debug messages */
-#define RES_AAONLY 0x00000004 /* authoritative answers only (!IMPL)*/
+#define RES_AAONLY \
+ __glibc_macro_warning ("RES_AAONLY is deprecated") 0x00000004
#define RES_USEVC 0x00000008 /* use virtual circuit */
-#define RES_PRIMARY 0x00000010 /* query primary server only (!IMPL) */
+#define RES_PRIMARY \
+ __glibc_macro_warning ("RES_PRIMARY is deprecated") 0x00000010
#define RES_IGNTC 0x00000020 /* ignore trucation errors */
#define RES_RECURSE 0x00000040 /* recursion desired */
#define RES_DEFNAMES 0x00000080 /* use default domain name */
@@ -190,8 +192,10 @@ struct res_sym {
#define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */
#define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */
#define RES_ROTATE 0x00004000 /* rotate ns list after each query */
-#define RES_NOCHECKNAME 0x00008000 /* do not check names for sanity (!IMPL) */
-#define RES_KEEPTSIG 0x00010000 /* do not strip TSIG records */
+#define RES_NOCHECKNAME \
+ __glibc_macro_warning ("RES_NOCHECKNAME is deprecated") 0x00008000
+#define RES_KEEPTSIG \
+ __glibc_macro_warning ("RES_KEEPTSIG is deprecated") 0x00010000
#define RES_BLAST 0x00020000 /* blast all recursive servers */
#define RES_USEBSTRING 0x00040000 /* IPv6 reverse lookup with byte
strings */