]> git.proxmox.com Git - mirror_edk2.git/blobdiff - StdLib/BsdSocketLib/ns_print.c
StdLib: Fix parameter type errors.
[mirror_edk2.git] / StdLib / BsdSocketLib / ns_print.c
index a5d8ad3d7d2ad432aa7440ca8137e733ba9c18d5..ea29d018a5189098fbc963fa8314002cd5f22163 100644 (file)
  */\r
 \r
 /*\r
- * Portions copyright (c) 1999, 2000\r
+ * Portions copyright (c) 1999, 2000 - 2014\r
  * Intel Corporation.\r
  * All rights reserved.\r
- * \r
+ *\r
  * Redistribution and use in source and binary forms, with or without\r
  * modification, are permitted provided that the following conditions\r
  * are met:\r
- * \r
+ *\r
  * 1. Redistributions of source code must retain the above copyright\r
  *    notice, this list of conditions and the following disclaimer.\r
- * \r
+ *\r
  * 2. Redistributions in binary form must reproduce the above copyright\r
  *    notice, this list of conditions and the following disclaimer in the\r
  *    documentation and/or other materials provided with the distribution.\r
- * \r
+ *\r
  * 3. All advertising materials mentioning features or use of this software\r
  *    must display the following acknowledgement:\r
- * \r
+ *\r
  *    This product includes software developed by Intel Corporation and\r
  *    its contributors.\r
- * \r
+ *\r
  * 4. Neither the name of Intel Corporation or its contributors may be\r
  *    used to endorse or promote products derived from this software\r
  *    without specific prior written permission.\r
- * \r
+ *\r
  * THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION AND CONTRIBUTORS ``AS IS''\r
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
@@ -52,7 +52,7 @@
  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\r
  * THE POSSIBILITY OF SUCH DAMAGE.\r
- * \r
+ *\r
  */\r
 \r
 /* Import. */\r
 \r
 /* Forward. */\r
 \r
-static size_t  prune_origin(const char *name, const char *origin);\r
-static int     charstr(const u_char *rdata, const u_char *edata,\r
-                       char **buf, size_t *buflen);\r
-static int     addname(const u_char *msg, size_t msglen,\r
-                       const u_char **p, const char *origin,\r
-                       char **buf, size_t *buflen);\r
-static void    addlen(size_t len, char **buf, size_t *buflen);\r
-static int     addstr(const char *src, size_t len,\r
-                      char **buf, size_t *buflen);\r
-static int     addtab(size_t len, size_t target, int spaced,\r
-                      char **buf, size_t *buflen);\r
+static size_t prune_origin(const char *name, const char *origin);\r
+static int  charstr(const u_char *rdata, const u_char *edata,\r
+      char **buf, size_t *buflen);\r
+static int  addname(const u_char *msg, size_t msglen,\r
+      const u_char **p, const char *origin,\r
+      char **buf, size_t *buflen);\r
+static void addlen(size_t len, char **buf, size_t *buflen);\r
+static int  addstr(const char *src, size_t len,\r
+           char **buf, size_t *buflen);\r
+static int  addtab(size_t len, size_t target, int spaced,\r
+           char **buf, size_t *buflen);\r
 \r
 /* Macros. */\r
 \r
-#define        T(x) \\r
-       do { \\r
-               if ((ssize_t)(x) < 0) \\r
-                       return (-1); \\r
-       } while (0)\r
+#define T(x) \\r
+  do { \\r
+    if ((ssize_t)(x) < 0) \\r
+      return (-1); \\r
+  } while (0)\r
 \r
 /* Public. */\r
 \r
 /*\r
  * int\r
  * ns_sprintrr(handle, rr, name_ctx, origin, buf, buflen)\r
- *     Convert an RR to presentation format.\r
+ *  Convert an RR to presentation format.\r
  * return:\r
- *     Number of characters written to buf, or -1 (check errno).\r
+ *  Number of characters written to buf, or -1 (check errno).\r
  */\r
 int\r
 ns_sprintrr(const ns_msg *handle, const ns_rr *rr,\r
-           const char *name_ctx, const char *origin,\r
-           char *buf, size_t buflen)\r
+      const char *name_ctx, const char *origin,\r
+      char *buf, size_t buflen)\r
 {\r
-       int n;\r
+  int n;\r
 \r
-       n = ns_sprintrrf(ns_msg_base(*handle), ns_msg_size(*handle),\r
-                        ns_rr_name(*rr), ns_rr_class(*rr), ns_rr_type(*rr),\r
-                        ns_rr_ttl(*rr), ns_rr_rdata(*rr), ns_rr_rdlen(*rr),\r
-                        name_ctx, origin, buf, buflen);\r
-       return (n);\r
+  n = ns_sprintrrf(ns_msg_base(*handle), ns_msg_size(*handle),\r
+       ns_rr_name(*rr), ns_rr_class(*rr), ns_rr_type(*rr),\r
+       ns_rr_ttl(*rr), ns_rr_rdata(*rr), ns_rr_rdlen(*rr),\r
+       name_ctx, origin, buf, buflen);\r
+  return (n);\r
 }\r
 \r
 /*\r
  * int\r
  * ns_sprintrrf(msg, msglen, name, class, type, ttl, rdata, rdlen,\r
- *            name_ctx, origin, buf, buflen)\r
- *     Convert the fields of an RR into presentation format.\r
+ *         name_ctx, origin, buf, buflen)\r
+ *  Convert the fields of an RR into presentation format.\r
  * return:\r
- *     Number of characters written to buf, or -1 (check errno).\r
+ *  Number of characters written to buf, or -1 (check errno).\r
  */\r
 int\r
 ns_sprintrrf(const u_char *msg, size_t msglen,\r
-           const char *name, ns_class class, ns_type type,\r
-           u_long ttl, const u_char *rdata, size_t rdlen,\r
-           const char *name_ctx, const char *origin,\r
-           char *buf, size_t buflen)\r
+      const char *name, ns_class class, ns_type type,\r
+      u_long ttl, const u_char *rdata, size_t rdlen,\r
+      const char *name_ctx, const char *origin,\r
+      char *buf, size_t buflen)\r
 {\r
-       const char *obuf = buf;\r
-       const u_char *edata = rdata + rdlen;\r
-       int spaced = 0;\r
-\r
-       const char *comment;\r
-       char tmp[100];\r
-       int x;\r
-       size_t len;\r
-\r
-       static  char base64_key[NS_MD5RSA_MAX_BASE64];\r
-       static  char t[255*3];\r
-\r
-       /*\r
-        * Owner.\r
-        */\r
-       if (name_ctx != NULL && strcasecmp(name_ctx, name) == 0) {\r
-               T(addstr("\t\t\t", 3, &buf, &buflen));\r
-       } else {\r
-               len = prune_origin(name, origin);\r
-               if (len == 0) {\r
-                       T(addstr("@\t\t\t", 4, &buf, &buflen));\r
-               } else {\r
-                       T(addstr(name, len, &buf, &buflen));\r
-                       /* Origin not used and no trailing dot? */\r
-                       if ((!origin || !origin[0] || name[len] == '\0') &&\r
-                           name[len - 1] != '.') {\r
-                               T(addstr(".", 1, &buf, &buflen));\r
-                               len++;\r
-                       }\r
-                       T(spaced = addtab(len, 24, spaced, &buf, &buflen));\r
-               }\r
-       }\r
-\r
-       /*\r
-        * TTL, Class, Type.\r
-        */\r
-       T(x = ns_format_ttl(ttl, buf, buflen));\r
-       addlen(x, &buf, &buflen);\r
-       len = SPRINTF((tmp, " %s %s", p_class(class), p_type(type)));\r
-       T(addstr(tmp, len, &buf, &buflen));\r
-       T(spaced = addtab(x + len, 16, spaced, &buf, &buflen));\r
-\r
-       /*\r
-        * RData.\r
-        */\r
-       switch (type) {\r
-       case ns_t_a:\r
-               if (rdlen != NS_INADDRSZ)\r
-                       goto formerr;\r
-               (void) inet_ntop(AF_INET, rdata, buf, (socklen_t)buflen);\r
-               addlen(strlen(buf), &buf, &buflen);\r
-               break;\r
-\r
-       case ns_t_cname:\r
-       case ns_t_mb:\r
-       case ns_t_mg:\r
-       case ns_t_mr:\r
-       case ns_t_ns:\r
-       case ns_t_ptr:\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-               break;\r
-\r
-       case ns_t_hinfo:\r
-       case ns_t_isdn:\r
-               /* First word. */\r
-               T(len = charstr(rdata, edata, &buf, &buflen));\r
-               if (len == 0)\r
-                       goto formerr;\r
-               rdata += len;\r
-               T(addstr(" ", 1, &buf, &buflen));\r
-\r
-               /* Second word. */\r
-               T(len = charstr(rdata, edata, &buf, &buflen));\r
-               if (len == 0)\r
-                       goto formerr;\r
-               rdata += len;\r
-               break;\r
-\r
-       case ns_t_soa: {\r
-               u_long t;\r
-\r
-               /* Server name. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-               T(addstr(" ", 1, &buf, &buflen));\r
-\r
-               /* Administrator name. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-               T(addstr(" (\n", 3, &buf, &buflen));\r
-               spaced = 0;\r
-\r
-               if ((edata - rdata) != 5*NS_INT32SZ)\r
-                       goto formerr;\r
-\r
-               /* Serial number. */\r
-               t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
-               T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
-               len = SPRINTF((tmp, "%Lu", t));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-               T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
-               T(addstr("; serial\n", 9, &buf, &buflen));\r
-               spaced = 0;\r
-\r
-               /* Refresh interval. */\r
-               t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
-               T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
-               T(len = ns_format_ttl(t, buf, buflen));\r
-               addlen(len, &buf, &buflen);\r
-               T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
-               T(addstr("; refresh\n", 10, &buf, &buflen));\r
-               spaced = 0;\r
-\r
-               /* Retry interval. */\r
-               t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
-               T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
-               T(len = ns_format_ttl(t, buf, buflen));\r
-               addlen(len, &buf, &buflen);\r
-               T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
-               T(addstr("; retry\n", 8, &buf, &buflen));\r
-               spaced = 0;\r
-\r
-               /* Expiry. */\r
-               t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
-               T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
-               T(len = ns_format_ttl(t, buf, buflen));\r
-               addlen(len, &buf, &buflen);\r
-               T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
-               T(addstr("; expiry\n", 9, &buf, &buflen));\r
-               spaced = 0;\r
-\r
-               /* Minimum TTL. */\r
-               t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
-               T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
-               T(len = ns_format_ttl(t, buf, buflen));\r
-               addlen(len, &buf, &buflen);\r
-               T(addstr(" )", 2, &buf, &buflen));\r
-               T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
-               T(addstr("; minimum\n", 10, &buf, &buflen));\r
-\r
-               break;\r
-           }\r
-\r
-       case ns_t_mx:\r
-       case ns_t_afsdb:\r
-       case ns_t_rt: {\r
-               u_int t;\r
-\r
-               if (rdlen < NS_INT16SZ)\r
-                       goto formerr;\r
-\r
-               /* Priority. */\r
-               t = ns_get16(rdata);\r
-               rdata += NS_INT16SZ;\r
-               len = SPRINTF((tmp, "%u ", (unsigned int)t));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-\r
-               /* Target. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-\r
-               break;\r
-           }\r
-\r
-       case ns_t_px: {\r
-               u_int t;\r
-\r
-               if (rdlen < NS_INT16SZ)\r
-                       goto formerr;\r
-\r
-               /* Priority. */\r
-               t = ns_get16(rdata);\r
-               rdata += NS_INT16SZ;\r
-               len = SPRINTF((tmp, "%u ", (unsigned int)t));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-\r
-               /* Name1. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-               T(addstr(" ", 1, &buf, &buflen));\r
-\r
-               /* Name2. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-\r
-               break;\r
-           }\r
-\r
-       case ns_t_x25:\r
-               T(len = charstr(rdata, edata, &buf, &buflen));\r
-               if (len == 0)\r
-                       goto formerr;\r
-               rdata += len;\r
-               break;\r
-\r
-       case ns_t_txt:\r
-               while (rdata < edata) {\r
-                       T(len = charstr(rdata, edata, &buf, &buflen));\r
-                       if (len == 0)\r
-                               goto formerr;\r
-                       rdata += len;\r
-                       if (rdata < edata)\r
-                               T(addstr(" ", 1, &buf, &buflen));\r
-               }\r
-               break;\r
-\r
-       case ns_t_nsap: {\r
-\r
-               (void) inet_nsap_ntoa((int)rdlen, rdata, t);\r
-               T(addstr(t, strlen(t), &buf, &buflen));\r
-               break;\r
-           }\r
-\r
-       case ns_t_aaaa:\r
-               if (rdlen != NS_IN6ADDRSZ)\r
-                       goto formerr;\r
-               (void) inet_ntop(AF_INET6, rdata, buf, (socklen_t)buflen);\r
-               addlen(strlen(buf), &buf, &buflen);\r
-               break;\r
-\r
-       case ns_t_loc: {\r
-               /* XXX protocol format checking? */\r
-               (void) loc_ntoa(rdata, t);\r
-               T(addstr(t, strlen(t), &buf, &buflen));\r
-               break;\r
-           }\r
-\r
-       case ns_t_naptr: {\r
-               u_int order, preference;\r
-\r
-               if (rdlen < 2*NS_INT16SZ)\r
-                       goto formerr;\r
-\r
-               /* Order, Precedence. */\r
-               order = ns_get16(rdata);        rdata += NS_INT16SZ;\r
-               preference = ns_get16(rdata);   rdata += NS_INT16SZ;\r
-               len = SPRINTF((t, "%u %u ", (unsigned int)order, (unsigned int)preference));\r
-               T(addstr(t, len, &buf, &buflen));\r
-\r
-               /* Flags. */\r
-               T(len = charstr(rdata, edata, &buf, &buflen));\r
-               if (len == 0)\r
-                       goto formerr;\r
-               rdata += len;\r
-               T(addstr(" ", 1, &buf, &buflen));\r
-\r
-               /* Service. */\r
-               T(len = charstr(rdata, edata, &buf, &buflen));\r
-               if (len == 0)\r
-                       goto formerr;\r
-               rdata += len;\r
-               T(addstr(" ", 1, &buf, &buflen));\r
-\r
-               /* Regexp. */\r
-               T(len = charstr(rdata, edata, &buf, &buflen));\r
-               if ((ssize_t)len < 0)\r
-                       return (-1);\r
-               if (len == 0)\r
-                       goto formerr;\r
-               rdata += len;\r
-               T(addstr(" ", 1, &buf, &buflen));\r
-\r
-               /* Server. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-               break;\r
-           }\r
-\r
-       case ns_t_srv: {\r
-               u_int priority, weight, port;\r
-\r
-               if (rdlen < NS_INT16SZ*3)\r
-                       goto formerr;\r
-\r
-               /* Priority, Weight, Port. */\r
-               priority = ns_get16(rdata);  rdata += NS_INT16SZ;\r
-               weight   = ns_get16(rdata);  rdata += NS_INT16SZ;\r
-               port     = ns_get16(rdata);  rdata += NS_INT16SZ;\r
-               len = SPRINTF((t, "%u %u %u ", (unsigned int)priority, (unsigned int)weight, (unsigned int)port));\r
-               T(addstr(t, len, &buf, &buflen));\r
-\r
-               /* Server. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-               break;\r
-           }\r
-\r
-       case ns_t_minfo:\r
-       case ns_t_rp:\r
-               /* Name1. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-               T(addstr(" ", 1, &buf, &buflen));\r
-\r
-               /* Name2. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-\r
-               break;\r
-\r
-       case ns_t_wks: {\r
-               int n, lcnt;\r
-\r
-               if (rdlen < NS_INT32SZ + 1)\r
-                       goto formerr;\r
-\r
-               /* Address. */\r
-               (void) inet_ntop(AF_INET, rdata, buf, (socklen_t)buflen);\r
-               addlen(strlen(buf), &buf, &buflen);\r
-               rdata += NS_INADDRSZ;\r
-\r
-               /* Protocol. */\r
-               len = SPRINTF((tmp, " %u ( ", *rdata));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-               rdata += NS_INT8SZ;\r
-\r
-               /* Bit map. */\r
-               n = 0;\r
-               lcnt = 0;\r
-               while (rdata < edata) {\r
-                       u_int c = *rdata++;\r
-                       do {\r
-                               if (c & 0200) {\r
-                                       if (lcnt == 0) {\r
-                                               T(addstr("\n\t\t\t\t", 5,\r
-                                                        &buf, &buflen));\r
-                                               lcnt = 10;\r
-                                               spaced = 0;\r
-                                       }\r
-                                       len = SPRINTF((tmp, "%d ", n));\r
-                                       T(addstr(tmp, len, &buf, &buflen));\r
-                                       lcnt--;\r
-                               }\r
-                               c <<= 1;\r
-                       } while (++n & 07);\r
-               }\r
-               T(addstr(")", 1, &buf, &buflen));\r
-\r
-               break;\r
-           }\r
-\r
-       case ns_t_key: {\r
-               u_int keyflags, protocol, algorithm;\r
-               const char *leader;\r
-               int n;\r
-\r
-               if (rdlen < NS_INT16SZ + NS_INT8SZ + NS_INT8SZ)\r
-                       goto formerr;\r
-\r
-               /* Key flags, Protocol, Algorithm. */\r
-               keyflags = ns_get16(rdata);  rdata += NS_INT16SZ;\r
-               protocol = *rdata++;\r
-               algorithm = *rdata++;\r
-               len = SPRINTF((tmp, "0x%04x %u %u",\r
-                              (unsigned int)keyflags, (unsigned int)protocol, (unsigned int)algorithm));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-\r
-               /* Public key data. */\r
-               len = b64_ntop(rdata, edata - rdata,\r
-                              base64_key, sizeof base64_key);\r
-               if ((ssize_t)len < 0)\r
-                       goto formerr;\r
-               if (len > 15) {\r
-                       T(addstr(" (", 2, &buf, &buflen));\r
-                       leader = "\n\t\t";\r
-                       spaced = 0;\r
-               } else\r
-                       leader = " ";\r
-               for (n = 0; n < (int)len; n += 48) {\r
-                       T(addstr(leader, strlen(leader), &buf, &buflen));\r
-                       T(addstr(base64_key + n, MIN(len - n, 48),\r
-                                &buf, &buflen));\r
-               }\r
-               if (len > 15)\r
-                       T(addstr(" )", 2, &buf, &buflen));\r
-\r
-               break;\r
-           }\r
-\r
-       case ns_t_sig: {\r
-               u_int type, algorithm, labels, footprint;\r
-               const char *leader;\r
-               u_long t;\r
-               int n;\r
-\r
-               if (rdlen < 22)\r
-                       goto formerr;\r
-\r
-               /* Type covered, Algorithm, Label count, Original TTL. */\r
-               type = ns_get16(rdata);  rdata += NS_INT16SZ;\r
-               algorithm = *rdata++;\r
-               labels = *rdata++;\r
-               t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
-               len = SPRINTF((tmp, " %s %d %Lu ",\r
-                              p_type((int)type), (int)algorithm, t));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-               if (labels != (u_int)dn_count_labels(name))\r
-                       goto formerr;\r
-\r
-               /* Signature expiry. */\r
-               t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
-               len = SPRINTF((tmp, "%s ", p_secstodate(t)));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-\r
-               /* Time signed. */\r
-               t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
-               len = SPRINTF((tmp, "%s ", p_secstodate(t)));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-\r
-               /* Signature Footprint. */\r
-               footprint = ns_get16(rdata);  rdata += NS_INT16SZ;\r
-               len = SPRINTF((tmp, "%u ", (unsigned int)footprint));\r
-               T(addstr(tmp, len, &buf, &buflen));\r
-\r
-               /* Signer's name. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-\r
-               /* Signature. */\r
-               len = b64_ntop(rdata, edata - rdata,\r
-                              base64_key, sizeof base64_key);\r
-               if (len > 15) {\r
-                       T(addstr(" (", 2, &buf, &buflen));\r
-                       leader = "\n\t\t";\r
-                       spaced = 0;\r
-               } else\r
-                       leader = " ";\r
-               if ((ssize_t)len < 0)\r
-                       goto formerr;\r
-               for (n = 0; n < (int)len; n += 48) {\r
-                       T(addstr(leader, strlen(leader), &buf, &buflen));\r
-                       T(addstr(base64_key + n, MIN(len - n, 48),\r
-                                &buf, &buflen));\r
-               }\r
-               if (len > 15)\r
-                       T(addstr(" )", 2, &buf, &buflen));\r
-\r
-               break;\r
-           }\r
-\r
-       case ns_t_nxt: {\r
-               int n, c;\r
-\r
-               /* Next domain name. */\r
-               T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
-\r
-               /* Type bit map. */\r
-               n = (int)(edata - rdata);\r
-               for (c = 0; c < n*8; c++)\r
-                       if (NS_NXT_BIT_ISSET(c, rdata)) {\r
-                               len = SPRINTF((tmp, " %s", p_type(c)));\r
-                               T(addstr(tmp, len, &buf, &buflen));\r
-                       }\r
-               break;\r
-           }\r
-\r
-       default:\r
-               comment = "unknown RR type";\r
-               goto hexify;\r
-       }\r
-       return ((int)(buf - obuf));\r
+  const char *obuf = buf;\r
+  const u_char *edata = rdata + rdlen;\r
+  int spaced = 0;\r
+\r
+  const char *comment;\r
+  char tmp[100];\r
+  int x;\r
+  size_t len;\r
+\r
+  static  char base64_key[NS_MD5RSA_MAX_BASE64];\r
+  static  char t[255*3];\r
+\r
+  /*\r
+   * Owner.\r
+   */\r
+  if (name_ctx != NULL && strcasecmp(name_ctx, name) == 0) {\r
+    T(addstr("\t\t\t", 3, &buf, &buflen));\r
+  } else {\r
+    len = prune_origin(name, origin);\r
+    if (len == 0) {\r
+      T(addstr("@\t\t\t", 4, &buf, &buflen));\r
+    } else {\r
+      T(addstr(name, len, &buf, &buflen));\r
+      /* Origin not used and no trailing dot? */\r
+      if ((!origin || !origin[0] || name[len] == '\0') &&\r
+          name[len - 1] != '.') {\r
+        T(addstr(".", 1, &buf, &buflen));\r
+        len++;\r
+      }\r
+      T(spaced = addtab(len, 24, spaced, &buf, &buflen));\r
+    }\r
+  }\r
+\r
+  /*\r
+   * TTL, Class, Type.\r
+   */\r
+  T(x = ns_format_ttl(ttl, buf, buflen));\r
+  addlen(x, &buf, &buflen);\r
+  len = SPRINTF((tmp, " %s %s", p_class(class), p_type(type)));\r
+  T(addstr(tmp, len, &buf, &buflen));\r
+  T(spaced = addtab(x + len, 16, spaced, &buf, &buflen));\r
+\r
+  /*\r
+   * RData.\r
+   */\r
+  switch (type) {\r
+  case ns_t_a:\r
+    if (rdlen != NS_INADDRSZ)\r
+      goto formerr;\r
+    (void) inet_ntop(AF_INET, rdata, buf, (socklen_t)buflen);\r
+    addlen(strlen(buf), &buf, &buflen);\r
+    break;\r
+\r
+  case ns_t_cname:\r
+  case ns_t_mb:\r
+  case ns_t_mg:\r
+  case ns_t_mr:\r
+  case ns_t_ns:\r
+  case ns_t_ptr:\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+    break;\r
+\r
+  case ns_t_hinfo:\r
+  case ns_t_isdn:\r
+    /* First word. */\r
+    T(len = charstr(rdata, edata, &buf, &buflen));\r
+    if (len == 0)\r
+      goto formerr;\r
+    rdata += len;\r
+    T(addstr(" ", 1, &buf, &buflen));\r
+\r
+    /* Second word. */\r
+    T(len = charstr(rdata, edata, &buf, &buflen));\r
+    if (len == 0)\r
+      goto formerr;\r
+    rdata += len;\r
+    break;\r
+\r
+  case ns_t_soa: {\r
+    u_long t;\r
+\r
+    /* Server name. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+    T(addstr(" ", 1, &buf, &buflen));\r
+\r
+    /* Administrator name. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+    T(addstr(" (\n", 3, &buf, &buflen));\r
+    spaced = 0;\r
+\r
+    if ((edata - rdata) != 5*NS_INT32SZ)\r
+      goto formerr;\r
+\r
+    /* Serial number. */\r
+    t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
+    T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
+    len = SPRINTF((tmp, "%lu", (unsigned long)t));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+    T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
+    T(addstr("; serial\n", 9, &buf, &buflen));\r
+    spaced = 0;\r
+\r
+    /* Refresh interval. */\r
+    t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
+    T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
+    T(len = ns_format_ttl(t, buf, buflen));\r
+    addlen(len, &buf, &buflen);\r
+    T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
+    T(addstr("; refresh\n", 10, &buf, &buflen));\r
+    spaced = 0;\r
+\r
+    /* Retry interval. */\r
+    t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
+    T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
+    T(len = ns_format_ttl(t, buf, buflen));\r
+    addlen(len, &buf, &buflen);\r
+    T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
+    T(addstr("; retry\n", 8, &buf, &buflen));\r
+    spaced = 0;\r
+\r
+    /* Expiry. */\r
+    t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
+    T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
+    T(len = ns_format_ttl(t, buf, buflen));\r
+    addlen(len, &buf, &buflen);\r
+    T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
+    T(addstr("; expiry\n", 9, &buf, &buflen));\r
+    spaced = 0;\r
+\r
+    /* Minimum TTL. */\r
+    t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
+    T(addstr("\t\t\t\t\t", 5, &buf, &buflen));\r
+    T(len = ns_format_ttl(t, buf, buflen));\r
+    addlen(len, &buf, &buflen);\r
+    T(addstr(" )", 2, &buf, &buflen));\r
+    T(spaced = addtab(len, 16, spaced, &buf, &buflen));\r
+    T(addstr("; minimum\n", 10, &buf, &buflen));\r
+\r
+    break;\r
+      }\r
+\r
+  case ns_t_mx:\r
+  case ns_t_afsdb:\r
+  case ns_t_rt: {\r
+    u_int t;\r
+\r
+    if (rdlen < NS_INT16SZ)\r
+      goto formerr;\r
+\r
+    /* Priority. */\r
+    t = ns_get16(rdata);\r
+    rdata += NS_INT16SZ;\r
+    len = SPRINTF((tmp, "%u ", (unsigned int)t));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+\r
+    /* Target. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+\r
+    break;\r
+      }\r
+\r
+  case ns_t_px: {\r
+    u_int t;\r
+\r
+    if (rdlen < NS_INT16SZ)\r
+      goto formerr;\r
+\r
+    /* Priority. */\r
+    t = ns_get16(rdata);\r
+    rdata += NS_INT16SZ;\r
+    len = SPRINTF((tmp, "%u ", (unsigned int)t));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+\r
+    /* Name1. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+    T(addstr(" ", 1, &buf, &buflen));\r
+\r
+    /* Name2. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+\r
+    break;\r
+      }\r
+\r
+  case ns_t_x25:\r
+    T(len = charstr(rdata, edata, &buf, &buflen));\r
+    if (len == 0)\r
+      goto formerr;\r
+    rdata += len;\r
+    break;\r
+\r
+  case ns_t_txt:\r
+    while (rdata < edata) {\r
+      T(len = charstr(rdata, edata, &buf, &buflen));\r
+      if (len == 0)\r
+        goto formerr;\r
+      rdata += len;\r
+      if (rdata < edata)\r
+        T(addstr(" ", 1, &buf, &buflen));\r
+    }\r
+    break;\r
+\r
+  case ns_t_nsap: {\r
+\r
+    (void) inet_nsap_ntoa((int)rdlen, rdata, t);\r
+    T(addstr(t, strlen(t), &buf, &buflen));\r
+    break;\r
+      }\r
+\r
+  case ns_t_aaaa:\r
+    if (rdlen != NS_IN6ADDRSZ)\r
+      goto formerr;\r
+    (void) inet_ntop(AF_INET6, rdata, buf, (socklen_t)buflen);\r
+    addlen(strlen(buf), &buf, &buflen);\r
+    break;\r
+\r
+  case ns_t_loc: {\r
+    /* XXX protocol format checking? */\r
+    (void) loc_ntoa(rdata, t);\r
+    T(addstr(t, strlen(t), &buf, &buflen));\r
+    break;\r
+      }\r
+\r
+  case ns_t_naptr: {\r
+    u_int order, preference;\r
+\r
+    if (rdlen < 2*NS_INT16SZ)\r
+      goto formerr;\r
+\r
+    /* Order, Precedence. */\r
+    order = ns_get16(rdata);  rdata += NS_INT16SZ;\r
+    preference = ns_get16(rdata); rdata += NS_INT16SZ;\r
+    len = SPRINTF((t, "%u %u ", (unsigned int)order, (unsigned int)preference));\r
+    T(addstr(t, len, &buf, &buflen));\r
+\r
+    /* Flags. */\r
+    T(len = charstr(rdata, edata, &buf, &buflen));\r
+    if (len == 0)\r
+      goto formerr;\r
+    rdata += len;\r
+    T(addstr(" ", 1, &buf, &buflen));\r
+\r
+    /* Service. */\r
+    T(len = charstr(rdata, edata, &buf, &buflen));\r
+    if (len == 0)\r
+      goto formerr;\r
+    rdata += len;\r
+    T(addstr(" ", 1, &buf, &buflen));\r
+\r
+    /* Regexp. */\r
+    T(len = charstr(rdata, edata, &buf, &buflen));\r
+    if ((ssize_t)len < 0)\r
+      return (-1);\r
+    if (len == 0)\r
+      goto formerr;\r
+    rdata += len;\r
+    T(addstr(" ", 1, &buf, &buflen));\r
+\r
+    /* Server. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+    break;\r
+      }\r
+\r
+  case ns_t_srv: {\r
+    u_int priority, weight, port;\r
+\r
+    if (rdlen < NS_INT16SZ*3)\r
+      goto formerr;\r
+\r
+    /* Priority, Weight, Port. */\r
+    priority = ns_get16(rdata);  rdata += NS_INT16SZ;\r
+    weight   = ns_get16(rdata);  rdata += NS_INT16SZ;\r
+    port     = ns_get16(rdata);  rdata += NS_INT16SZ;\r
+    len = SPRINTF((t, "%u %u %u ", (unsigned int)priority, (unsigned int)weight, (unsigned int)port));\r
+    T(addstr(t, len, &buf, &buflen));\r
+\r
+    /* Server. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+    break;\r
+      }\r
+\r
+  case ns_t_minfo:\r
+  case ns_t_rp:\r
+    /* Name1. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+    T(addstr(" ", 1, &buf, &buflen));\r
+\r
+    /* Name2. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+\r
+    break;\r
+\r
+  case ns_t_wks: {\r
+    int n, lcnt;\r
+\r
+    if (rdlen < NS_INT32SZ + 1)\r
+      goto formerr;\r
+\r
+    /* Address. */\r
+    (void) inet_ntop(AF_INET, rdata, buf, (socklen_t)buflen);\r
+    addlen(strlen(buf), &buf, &buflen);\r
+    rdata += NS_INADDRSZ;\r
+\r
+    /* Protocol. */\r
+    len = SPRINTF((tmp, " %u ( ", (unsigned int)*rdata));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+    rdata += NS_INT8SZ;\r
+\r
+    /* Bit map. */\r
+    n = 0;\r
+    lcnt = 0;\r
+    while (rdata < edata) {\r
+      u_int c = *rdata++;\r
+      do {\r
+        if (c & 0200) {\r
+          if (lcnt == 0) {\r
+            T(addstr("\n\t\t\t\t", 5,\r
+               &buf, &buflen));\r
+            lcnt = 10;\r
+            spaced = 0;\r
+          }\r
+          len = SPRINTF((tmp, "%d ", n));\r
+          T(addstr(tmp, len, &buf, &buflen));\r
+          lcnt--;\r
+        }\r
+        c <<= 1;\r
+      } while (++n & 07);\r
+    }\r
+    T(addstr(")", 1, &buf, &buflen));\r
+\r
+    break;\r
+      }\r
+\r
+  case ns_t_key: {\r
+    u_int keyflags, protocol, algorithm;\r
+    const char *leader;\r
+    int n;\r
+\r
+    if (rdlen < NS_INT16SZ + NS_INT8SZ + NS_INT8SZ)\r
+      goto formerr;\r
+\r
+    /* Key flags, Protocol, Algorithm. */\r
+    keyflags = ns_get16(rdata);  rdata += NS_INT16SZ;\r
+    protocol = *rdata++;\r
+    algorithm = *rdata++;\r
+    len = SPRINTF((tmp, "0x%04x %u %u",\r
+             (unsigned int)keyflags, (unsigned int)protocol, (unsigned int)algorithm));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+\r
+    /* Public key data. */\r
+    len = b64_ntop(rdata, edata - rdata,\r
+             base64_key, sizeof base64_key);\r
+    if ((ssize_t)len < 0)\r
+      goto formerr;\r
+    if (len > 15) {\r
+      T(addstr(" (", 2, &buf, &buflen));\r
+      leader = "\n\t\t";\r
+      spaced = 0;\r
+    } else\r
+      leader = " ";\r
+    for (n = 0; n < (int)len; n += 48) {\r
+      T(addstr(leader, strlen(leader), &buf, &buflen));\r
+      T(addstr(base64_key + n, MIN(len - n, 48),\r
+         &buf, &buflen));\r
+    }\r
+    if (len > 15)\r
+      T(addstr(" )", 2, &buf, &buflen));\r
+\r
+    break;\r
+      }\r
+\r
+  case ns_t_sig: {\r
+    u_int type, algorithm, labels, footprint;\r
+    const char *leader;\r
+    u_long t;\r
+    int n;\r
+\r
+    if (rdlen < 22)\r
+      goto formerr;\r
+\r
+    /* Type covered, Algorithm, Label count, Original TTL. */\r
+          type = ns_get16(rdata);  rdata += NS_INT16SZ;\r
+    algorithm = *rdata++;\r
+    labels = *rdata++;\r
+    t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
+    len = SPRINTF((tmp, " %s %d %lu ",\r
+                   p_type((int)type), (int)algorithm, (unsigned long)t));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+    if (labels != (u_int)dn_count_labels(name))\r
+      goto formerr;\r
+\r
+    /* Signature expiry. */\r
+    t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
+    len = SPRINTF((tmp, "%s ", p_secstodate(t)));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+\r
+    /* Time signed. */\r
+    t = ns_get32(rdata);  rdata += NS_INT32SZ;\r
+    len = SPRINTF((tmp, "%s ", p_secstodate(t)));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+\r
+    /* Signature Footprint. */\r
+    footprint = ns_get16(rdata);  rdata += NS_INT16SZ;\r
+    len = SPRINTF((tmp, "%u ", (unsigned int)footprint));\r
+    T(addstr(tmp, len, &buf, &buflen));\r
+\r
+    /* Signer's name. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+\r
+    /* Signature. */\r
+    len = b64_ntop(rdata, edata - rdata,\r
+             base64_key, sizeof base64_key);\r
+    if (len > 15) {\r
+      T(addstr(" (", 2, &buf, &buflen));\r
+      leader = "\n\t\t";\r
+      spaced = 0;\r
+    } else\r
+      leader = " ";\r
+    if ((ssize_t)len < 0)\r
+      goto formerr;\r
+    for (n = 0; n < (int)len; n += 48) {\r
+      T(addstr(leader, strlen(leader), &buf, &buflen));\r
+      T(addstr(base64_key + n, MIN(len - n, 48),\r
+         &buf, &buflen));\r
+    }\r
+    if (len > 15)\r
+      T(addstr(" )", 2, &buf, &buflen));\r
+\r
+    break;\r
+      }\r
+\r
+  case ns_t_nxt: {\r
+    int n, c;\r
+\r
+    /* Next domain name. */\r
+    T(addname(msg, msglen, &rdata, origin, &buf, &buflen));\r
+\r
+    /* Type bit map. */\r
+    n = (int)(edata - rdata);\r
+    for (c = 0; c < n*8; c++)\r
+      if (NS_NXT_BIT_ISSET(c, rdata)) {\r
+        len = SPRINTF((tmp, " %s", p_type(c)));\r
+        T(addstr(tmp, len, &buf, &buflen));\r
+      }\r
+    break;\r
+      }\r
+\r
+  default:\r
+    comment = "unknown RR type";\r
+    goto hexify;\r
+  }\r
+  return ((int)(buf - obuf));\r
  formerr:\r
-       comment = "RR format error";\r
+  comment = "RR format error";\r
  hexify: {\r
-       int n, m;\r
-       char *p;\r
-\r
-       len = SPRINTF((tmp, "\\#(\t\t; %s", comment));\r
-       T(addstr(tmp, len, &buf, &buflen));\r
-       while (rdata < edata) {\r
-               p = tmp;\r
-               p += SPRINTF((p, "\n\t"));\r
-               spaced = 0;\r
-               n = MIN(16, (int)(edata - rdata));\r
-               for (m = 0; m < n; m++)\r
-                       p += SPRINTF((p, "%02x ", rdata[m]));\r
-               T(addstr(tmp, (u_int)(p - tmp), &buf, &buflen));\r
-               if (n < 16) {\r
-                       T(addstr(")", 1, &buf, &buflen));\r
-                       T(addtab((u_int)(p - tmp) + 1, 48, spaced, &buf, &buflen));\r
-               }\r
-               p = tmp;\r
-               p += SPRINTF((p, "; "));\r
-               for (m = 0; m < n; m++)\r
-                       *p++ = (isascii(rdata[m]) && isprint(rdata[m]))\r
-                               ? rdata[m]\r
-                               : '.';\r
-               T(addstr(tmp, (u_int)(p - tmp), &buf, &buflen));\r
-               rdata += n;\r
-       }\r
-       return ((int)(buf - obuf));\r
+  int n, m;\r
+  char *p;\r
+\r
+  len = SPRINTF((tmp, "\\#(\t\t; %s", comment));\r
+  T(addstr(tmp, len, &buf, &buflen));\r
+  while (rdata < edata) {\r
+    p = tmp;\r
+    p += SPRINTF((p, "\n\t"));\r
+    spaced = 0;\r
+    n = MIN(16, (int)(edata - rdata));\r
+    for (m = 0; m < n; m++)\r
+      p += SPRINTF((p, "%02x ", rdata[m]));\r
+    T(addstr(tmp, (u_int)(p - tmp), &buf, &buflen));\r
+    if (n < 16) {\r
+      T(addstr(")", 1, &buf, &buflen));\r
+      T(addtab((u_int)(p - tmp) + 1, 48, spaced, &buf, &buflen));\r
+    }\r
+    p = tmp;\r
+    p += SPRINTF((p, "; "));\r
+    for (m = 0; m < n; m++)\r
+      *p++ = (isascii(rdata[m]) && isprint(rdata[m]))\r
+        ? rdata[m]\r
+        : '.';\r
+    T(addstr(tmp, (u_int)(p - tmp), &buf, &buflen));\r
+    rdata += n;\r
+  }\r
+  return ((int)(buf - obuf));\r
     }\r
 }\r
 \r
@@ -621,156 +621,156 @@ ns_sprintrrf(const u_char *msg, size_t msglen,
 /*\r
  * size_t\r
  * prune_origin(name, origin)\r
- *     Find out if the name is at or under the current origin.\r
+ *  Find out if the name is at or under the current origin.\r
  * return:\r
- *     Number of characters in name before start of origin,\r
- *     or length of name if origin does not match.\r
+ *  Number of characters in name before start of origin,\r
+ *  or length of name if origin does not match.\r
  * notes:\r
- *     This function should share code with samedomain().\r
+ *  This function should share code with samedomain().\r
  */\r
 static size_t\r
 prune_origin(const char *name, const char *origin) {\r
-       const char *oname = name;\r
-\r
-       while (*name != '\0') {\r
-               if (origin != NULL && strcasecmp(name, origin) == 0)\r
-                       return ((size_t)(name - oname) - (name > oname));\r
-               while (*name != '\0') {\r
-                       if (*name == '\\') {\r
-                               name++;\r
-                               /* XXX need to handle \nnn form. */\r
-                               if (*name == '\0')\r
-                                       break;\r
-                       } else if (*name == '.') {\r
-                               name++;\r
-                               break;\r
-                       }\r
-                       name++;\r
-               }\r
-       }\r
-       return ((size_t)(name - oname));\r
+  const char *oname = name;\r
+\r
+  while (*name != '\0') {\r
+    if (origin != NULL && strcasecmp(name, origin) == 0)\r
+      return ((size_t)(name - oname) - (name > oname));\r
+    while (*name != '\0') {\r
+      if (*name == '\\') {\r
+        name++;\r
+        /* XXX need to handle \nnn form. */\r
+        if (*name == '\0')\r
+          break;\r
+      } else if (*name == '.') {\r
+        name++;\r
+        break;\r
+      }\r
+      name++;\r
+    }\r
+  }\r
+  return ((size_t)(name - oname));\r
 }\r
 \r
 /*\r
  * int\r
  * charstr(rdata, edata, buf, buflen)\r
- *     Format a <character-string> into the presentation buffer.\r
+ *  Format a <character-string> into the presentation buffer.\r
  * return:\r
- *     Number of rdata octets consumed\r
- *     0 for protocol format error\r
- *     -1 for output buffer error\r
+ *  Number of rdata octets consumed\r
+ *  0 for protocol format error\r
+ *  -1 for output buffer error\r
  * side effects:\r
- *     buffer is advanced on success.\r
+ *  buffer is advanced on success.\r
  */\r
 static int\r
 charstr(const u_char *rdata, const u_char *edata, char **buf, size_t *buflen) {\r
-       const u_char *odata = rdata;\r
-       size_t save_buflen = *buflen;\r
-       char *save_buf = *buf;\r
-\r
-       if (addstr("\"", 1, buf, buflen) < 0)\r
-               goto enospc;\r
-       if (rdata < edata) {\r
-               int n = *rdata;\r
-\r
-               if (rdata + 1 + n <= edata) {\r
-                       rdata++;\r
-                       while (n-- > 0) {\r
-                               if (strchr("\n\"\\", *rdata) != NULL)\r
-                                       if (addstr("\\", 1, buf, buflen) < 0)\r
-                                               goto enospc;\r
-                               if (addstr((const char *)rdata, 1,\r
-                                          buf, buflen) < 0)\r
-                                       goto enospc;\r
-                               rdata++;\r
-                       }\r
-               }\r
-       }\r
-       if (addstr("\"", 1, buf, buflen) < 0)\r
-               goto enospc;\r
-       return ((int)(rdata - odata));\r
+  const u_char *odata = rdata;\r
+  size_t save_buflen = *buflen;\r
+  char *save_buf = *buf;\r
+\r
+  if (addstr("\"", 1, buf, buflen) < 0)\r
+    goto enospc;\r
+  if (rdata < edata) {\r
+    int n = *rdata;\r
+\r
+    if (rdata + 1 + n <= edata) {\r
+      rdata++;\r
+      while (n-- > 0) {\r
+        if (strchr("\n\"\\", *rdata) != NULL)\r
+          if (addstr("\\", 1, buf, buflen) < 0)\r
+            goto enospc;\r
+        if (addstr((const char *)rdata, 1,\r
+             buf, buflen) < 0)\r
+          goto enospc;\r
+        rdata++;\r
+      }\r
+    }\r
+  }\r
+  if (addstr("\"", 1, buf, buflen) < 0)\r
+    goto enospc;\r
+  return ((int)(rdata - odata));\r
  enospc:\r
-       errno = ENOSPC;\r
-       *buf = save_buf;\r
-       *buflen = save_buflen;\r
-       return (-1);\r
+  errno = ENOSPC;\r
+  *buf = save_buf;\r
+  *buflen = save_buflen;\r
+  return (-1);\r
 }\r
 \r
 static int\r
 addname(const u_char *msg, size_t msglen,\r
-       const u_char **pp, const char *origin,\r
-       char **buf, size_t *buflen)\r
+  const u_char **pp, const char *origin,\r
+  char **buf, size_t *buflen)\r
 {\r
-       size_t newlen, save_buflen = *buflen;\r
-       char *save_buf = *buf;\r
-       int n;\r
-\r
-       n = dn_expand(msg, msg + msglen, *pp, *buf, (int)(*buflen));\r
-       if (n < 0)\r
-               goto enospc;    /* Guess. */\r
-       newlen = prune_origin(*buf, origin);\r
-       if ((origin == NULL || origin[0] == '\0' || (*buf)[newlen] == '\0') &&\r
-           (newlen == 0 || (*buf)[newlen - 1] != '.')) {\r
-               /* No trailing dot. */\r
-               if (newlen + 2 > *buflen)\r
-                       goto enospc;    /* No room for ".\0". */\r
-               (*buf)[newlen++] = '.';\r
-               (*buf)[newlen] = '\0';\r
-       }\r
-       if (newlen == 0) {\r
-               /* Use "@" instead of name. */\r
-               if (newlen + 2 > *buflen)\r
-                       goto enospc;        /* No room for "@\0". */\r
-               (*buf)[newlen++] = '@';\r
-               (*buf)[newlen] = '\0';\r
-       }\r
-       *pp += n;\r
-       addlen(newlen, buf, buflen);\r
-       **buf = '\0';\r
-       return ((int)newlen);\r
+  size_t newlen, save_buflen = *buflen;\r
+  char *save_buf = *buf;\r
+  int n;\r
+\r
+  n = dn_expand(msg, msg + msglen, *pp, *buf, (int)(*buflen));\r
+  if (n < 0)\r
+    goto enospc;  /* Guess. */\r
+  newlen = prune_origin(*buf, origin);\r
+  if ((origin == NULL || origin[0] == '\0' || (*buf)[newlen] == '\0') &&\r
+      (newlen == 0 || (*buf)[newlen - 1] != '.')) {\r
+    /* No trailing dot. */\r
+    if (newlen + 2 > *buflen)\r
+      goto enospc;  /* No room for ".\0". */\r
+    (*buf)[newlen++] = '.';\r
+    (*buf)[newlen] = '\0';\r
+  }\r
+  if (newlen == 0) {\r
+    /* Use "@" instead of name. */\r
+    if (newlen + 2 > *buflen)\r
+      goto enospc;        /* No room for "@\0". */\r
+    (*buf)[newlen++] = '@';\r
+    (*buf)[newlen] = '\0';\r
+  }\r
+  *pp += n;\r
+  addlen(newlen, buf, buflen);\r
+  **buf = '\0';\r
+  return ((int)newlen);\r
  enospc:\r
-       errno = ENOSPC;\r
-       *buf = save_buf;\r
-       *buflen = save_buflen;\r
-       return (-1);\r
+  errno = ENOSPC;\r
+  *buf = save_buf;\r
+  *buflen = save_buflen;\r
+  return (-1);\r
 }\r
 \r
 static void\r
 addlen(size_t len, char **buf, size_t *buflen) {\r
-       assert(len <= *buflen);\r
-       *buf += len;\r
-       *buflen -= len;\r
+  assert(len <= *buflen);\r
+  *buf += len;\r
+  *buflen -= len;\r
 }\r
 \r
 static int\r
 addstr(const char *src, size_t len, char **buf, size_t *buflen) {\r
-       if (len > *buflen) {\r
-               errno = ENOSPC;\r
-               return (-1);\r
-       }\r
-       memcpy(*buf, src, len);\r
-       addlen(len, buf, buflen);\r
-       **buf = '\0';\r
-       return (0);\r
+  if (len > *buflen) {\r
+    errno = ENOSPC;\r
+    return (-1);\r
+  }\r
+  memcpy(*buf, src, len);\r
+  addlen(len, buf, buflen);\r
+  **buf = '\0';\r
+  return (0);\r
 }\r
 \r
 static int\r
 addtab(size_t len, size_t target, int spaced, char **buf, size_t *buflen) {\r
-       size_t save_buflen = *buflen;\r
-       char *save_buf = *buf;\r
-       int t;\r
-\r
-       if (spaced || len >= target - 1) {\r
-               T(addstr("  ", 2, buf, buflen));\r
-               spaced = 1;\r
-       } else {\r
-               for (t = (int)(target - len - 1) / 8; t >= 0; t--)\r
-                       if (addstr("\t", 1, buf, buflen) < 0) {\r
-                               *buflen = save_buflen;\r
-                               *buf = save_buf;\r
-                               return (-1);\r
-                       }\r
-               spaced = 0;\r
-       }\r
-       return (spaced);\r
+  size_t save_buflen = *buflen;\r
+  char *save_buf = *buf;\r
+  int t;\r
+\r
+  if (spaced || len >= target - 1) {\r
+    T(addstr("  ", 2, buf, buflen));\r
+    spaced = 1;\r
+  } else {\r
+    for (t = (int)(target - len - 1) / 8; t >= 0; t--)\r
+      if (addstr("\t", 1, buf, buflen) < 0) {\r
+        *buflen = save_buflen;\r
+        *buf = save_buf;\r
+        return (-1);\r
+      }\r
+    spaced = 0;\r
+  }\r
+  return (spaced);\r
 }\r