]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
const additions needed for ntp-dev
authorDave Hart <hart@ntp.org>
Thu, 14 Oct 2010 14:07:21 +0000 (14:07 +0000)
committerDave Hart <hart@ntp.org>
Thu, 14 Oct 2010 14:07:21 +0000 (14:07 +0000)
bk: 4cb70e99z4bjAcKDZcEFAl4K6z7B7A

ChangeLog
ntpd/ntp_io.c
ntpq/libntpq.c
ntpq/libntpq.h
ntpq/libntpq_subs.c
ntpq/ntpq-subs.c
ntpq/ntpq.c
ntpq/ntpq.h

index e62ae134bb3bd2b93321526c4e6d84b9bb77f244..08ba2660b4bd4111d8e1a9bf746fe23a4d291617 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 ---
 
+* [Bug 1665] is_anycast() u_int32_t should be u_int32.
 * ntpsnmpd, libntpq warning cleanup.
 
 ---
index 366927a0f1df48026895ad191816e74146c2d8e6..6a0bb483f3723dba1a47bfd1822c79dd4c44a001 100644 (file)
@@ -1484,7 +1484,7 @@ is_anycast(
     defined(IN6_IFF_ANYCAST)
        struct in6_ifreq ifr6;
        int fd;
-       u_int32_t flags6;
+       u_int32 flags6;
 
        if (psau->sa.sa_family != AF_INET6)
                return ISC_FALSE;
index c0a5c7c147b706eb2c03aa53a3afccda93e0516a..9363d0743ebac10a0cc18ba2c02b3f94a5149b50 100644 (file)
@@ -179,7 +179,7 @@ ntpq_getvar(
 
 int ntpq_queryhost(unsigned short VARSET, unsigned short association, char *resultbuf, int maxlen)
 {
-       char *datap;
+       const char *datap;
        int res;
        int dsize;
        u_short rstatus;
@@ -403,53 +403,55 @@ int ntpq_get_assoc_number ( int associd )
  *                     0 (zero) if an error occured
  ****************************************************************************/
 
-  int ntpq_read_assoc_peervars( int associd, char *resultbuf, int maxsize )
+int
+ntpq_read_assoc_peervars(
+       int associd,
+       char *resultbuf,
+       int maxsize
+       )
 {
+       const char *datap;
+       int res;
+       int dsize;
+       u_short rstatus;
+       l_fp rec;
+       l_fp ts;
+       char value[NTPQ_BUFLEN];
 
-    char *datap;
-    int res;
-    int dsize;
-    u_short rstatus;
-       l_fp rec;
-         l_fp ts;
-    char value[NTPQ_BUFLEN];
-
-
-    res = doquery(CTL_OP_READVAR, associd, 0, 0, (char *)0, &rstatus,
-              &dsize, &datap);
-    
-    if (res != 0)
-        return 0;
-
-       get_systime(&ts);
-
-    if (dsize == 0) {
-        if (numhosts > 1)
-            (void) fprintf(stderr, "server=%s ", currenthost);
-        (void) fprintf(stderr,
-                   "***No information returned for association %d\n",
-                   associd);
-        return 0;
-    } else {
-        if ( dsize > maxsize ) 
-            dsize = maxsize;
 
-        memcpy(resultbuf,datap,dsize);        
-        resultbuf[dsize]=0x0;
-        
-        ntpq_getvar(resultbuf, dsize, "rec", value, sizeof (value) );
+       res = doquery(CTL_OP_READVAR, associd, 0, 0, NULL, &rstatus,
+                     &dsize, &datap);
 
-        if (!decodets(value, &rec))
-                                 L_CLR(&rec);
+       if (res != 0)
+               return 0;
 
-        memcpy(resultbuf,value,maxsize);        
-        resultbuf[dsize]=0x0;
-        dsize=strlen(resultbuf);
-        
+       get_systime(&ts);
 
-    }
-    return dsize;
+       if (dsize == 0) {
+               if (numhosts > 1)
+                       fprintf(stderr, "server=%s ", currenthost);
+               fprintf(stderr,
+                       "***No information returned for association %d\n",
+                       associd);
+               return 0;
+       } else {
+               if ( dsize > maxsize ) 
+                       dsize = maxsize;
+               memcpy(resultbuf, datap, dsize);
+               resultbuf[dsize] = '\0';
+               ntpq_getvar(resultbuf, dsize, "rec", value,
+                           sizeof(value));
 
+               if (!decodets(value, &rec))
+                       L_CLR(&rec);
+
+               memcpy(resultbuf, value, maxsize);
+               resultbuf[dsize] = '\0';
+               dsize = strlen(resultbuf);
+       }
+
+       return dsize;
 }
 
 
@@ -483,7 +485,6 @@ ntpq_read_sysvars(
        char *  resultbuf,
        size_t  maxsize)
 {
-
        char *  datap;
        int     res;
        int     i_dsize;
@@ -658,30 +659,33 @@ int ntpq_get_peervar( const char *varname, char *varvalue, int maxlen)
  *                     0 (zero) if an error occured
  ****************************************************************************/
 
-int ntpq_read_assoc_clockvars( int associd, char *resultbuf, int maxsize )
+int
+ntpq_read_assoc_clockvars(
+       int     associd,
+       char *  resultbuf,
+       int     maxsize
+       )
 {
+       const char *datap;
+       int res;
+       int dsize;
+       u_short rstatus;
 
-    char *datap;
-    int res;
-    int dsize;
-    u_short rstatus;
-    
-    res = ntpq_doquerylist(ntpq_varlist, CTL_OP_READCLOCK, associd, 0, &rstatus, &dsize, &datap);
-    
-    if (res != 0)
-        return 0;
-
-    if (dsize == 0) {
-        if (numhosts > 1) /* no information returned from server */
-       return 0;
-    } else {
-        if ( dsize > maxsize ) 
-            dsize = maxsize;
+       res = ntpq_doquerylist(ntpq_varlist, CTL_OP_READCLOCK, associd,
+                              0, &rstatus, &dsize, &datap);
+       if (res != 0)
+               return 0;
 
-        memcpy(resultbuf,datap,dsize);
-    }
+       if (dsize == 0) {
+               if (numhosts > 1) /* no information returned from server */
+                       return 0;
+       } else {
+               if (dsize > maxsize) 
+                       dsize = maxsize;
+               memcpy(resultbuf, datap, dsize);
+       }
 
-    return dsize;
+       return dsize;
 }
 
 
index 18f565a291bfcd33280fe2b65ca23b9df45cf97c..5bf35f4aab4c87de9b4fae5a4e084073c3591c92 100644 (file)
@@ -83,7 +83,7 @@ extern struct ntpq_varlist ntpq_varlist[MAXLIST];
 extern int ntpq_openhost(char *);
 extern int ntpq_closehost(void);
 extern int ntpq_queryhost(unsigned short VARSET, unsigned short association, char *resultbuf, int maxlen);
-extern size_t ntpq_getvar(char *resultbuf, size_t datalen,
+extern size_t ntpq_getvar(const char *resultbuf, size_t datalen,
                          const char *varname, char *varvalue,
                          size_t maxlen);
 extern int ntpq_stripquotes ( char *resultbuf, char *srcbuf, int datalen, int maxlen );
@@ -105,6 +105,6 @@ extern int ntpq_read_assoc_clockvars( int associd, char *resultbuf, int maxsize
 #ifndef _LIBNTPQSUBSC
 extern int ntpq_dogetassoc(void);
 extern char ntpq_decodeaddrtype(sockaddr_u *sock);
-extern int ntpq_doquerylist(struct ntpq_varlist *, int , int , int , u_short *, int *, char **datap );
+extern int ntpq_doquerylist(struct ntpq_varlist *, int , int , int , u_short *, int *, const char **datap );
 #endif
 
index ce182f41a38bc41826ddcc18022b5ffdcaf85478..b30ee3d6260bc25c2eef7c04a37997e98bb63daf 100644 (file)
@@ -20,7 +20,7 @@
 /* Function Prototypes */
 int ntpq_dogetassoc(void);
 char ntpq_decodeaddrtype(sockaddr_u *sock);
-int ntpq_doquerylist(struct varlist *, int , int , int , u_short *, int *, char **datap );
+int ntpq_doquerylist(struct varlist *, int , int , int , u_short *, int *, const char **datap);
 
 
 /* the following functions are required internally by a number of libntpq functions 
@@ -43,8 +43,18 @@ char ntpq_decodeaddrtype(sockaddr_u *sock)
        return decodeaddrtype(sock);
 }
 
-int ntpq_doquerylist(struct varlist *vlist, int op, int associd, int auth, u_short *rstatus, int *dsize, char **datap )
+int
+ntpq_doquerylist(
+       struct varlist *vlist,
+       int op,
+       int associd,
+       int auth,
+       u_short *rstatus,
+       int *dsize,
+       const char **datap
+       )
 {
-    return doquerylist(vlist, op, associd, auth, rstatus, dsize,  &*datap );
+       return doquerylist(vlist, op, associd, auth, rstatus, dsize,
+                          datap);
 }
 
index 54d2fb6336495c84eb926b94da02f3fb0679125d..a5c230824143298845bde4bb59eb3eeae5801337 100644 (file)
@@ -21,12 +21,12 @@ int         maxhostlen;
  */
 static int     checkassocid    (u_int32);
 static struct varlist *findlistvar (struct varlist *, char *);
-static void    doaddvlist      (struct varlist *, char *);
-static void    dormvlist       (struct varlist *, char *);
+static void    doaddvlist      (struct varlist *, const char *);
+static void    dormvlist       (struct varlist *, const char *);
 static void    doclearvlist    (struct varlist *);
 static void    makequerydata   (struct varlist *, int *, char *);
 static int     doquerylist     (struct varlist *, int, int, int, 
-                                u_short *, int *, char **);
+                                u_short *, int *, const char **);
 static void    doprintvlist    (struct varlist *, FILE *);
 static void    addvars         (struct parse *, FILE *);
 static void    rmvars          (struct parse *, FILE *);
@@ -57,7 +57,7 @@ static        void    radiostatus (struct parse *, FILE *);
 static void    pstatus         (struct parse *, FILE *);
 static long    when            (l_fp *, l_fp *, l_fp *);
 static char *  prettyinterval  (char *, size_t, long);
-static int     doprintpeers    (struct varlist *, int, int, int, char *, FILE *, int);
+static int     doprintpeers    (struct varlist *, int, int, int, const char *, FILE *, int);
 static int     dogetpeers      (struct varlist *, int, FILE *, int);
 static void    dopeers         (int, FILE *, int);
 static void    peers           (struct parse *, FILE *);
@@ -257,7 +257,7 @@ findlistvar(
 static void
 doaddvlist(
        struct varlist *vlist,
-       char *vars
+       const char *vars
        )
 {
        register struct varlist *vl;
@@ -292,7 +292,7 @@ doaddvlist(
 static void
 dormvlist(
        struct varlist *vlist,
-       char *vars
+       const char *vars
        )
 {
        register struct varlist *vl;
@@ -395,7 +395,7 @@ doquerylist(
        int auth,
        u_short *rstatus,
        int *dsize,
-       char **datap
+       const char **datap
        )
 {
        char data[CTL_MAX_DATA_LEN];
@@ -502,7 +502,7 @@ dolist(
        FILE *fp
        )
 {
-       char *datap;
+       const char *datap;
        int res;
        int dsize;
        u_short rstatus;
@@ -577,7 +577,7 @@ writelist(
        FILE *fp
        )
 {
-       char *datap;
+       const char *datap;
        int res;
        int associd;
        int dsize;
@@ -650,7 +650,7 @@ writevar(
        FILE *fp
        )
 {
-       char *datap;
+       const char *datap;
        int res;
        int associd;
        int dsize;
@@ -874,7 +874,7 @@ dogetassoc(
        FILE *fp
        )
 {
-       char *datap;
+       const char *datap;
        int res;
        int dsize;
        u_short rstatus;
@@ -903,9 +903,9 @@ dogetassoc(
 
        numassoc = 0;
        while (dsize > 0) {
-               assoc_cache[numassoc].assid = ntohs(*((u_short *)datap));
+               assoc_cache[numassoc].assid = ntohs(*((const u_short *)datap));
                datap += sizeof(u_short);
-               assoc_cache[numassoc].status = ntohs(*((u_short *)datap));
+               assoc_cache[numassoc].status = ntohs(*((const u_short *)datap));
                datap += sizeof(u_short);
                if (++numassoc >= MAXASSOC)
                        break;
@@ -1172,7 +1172,7 @@ saveconfig(
        FILE *fp
        )
 {
-       char *datap;
+       const char *datap;
        int res;
        int dsize;
        u_short rstatus;
@@ -1190,10 +1190,8 @@ saveconfig(
 
        if (0 == dsize)
                fprintf(fp, "(no response message, curiously)");
-       else {
-               datap[dsize] = '\0';
-               fprintf(fp, "%s", datap);
-       }
+       else
+               fprintf(fp, "%.*s", dsize, datap);
 }
 
 
@@ -1239,7 +1237,7 @@ pstatus(
        FILE *fp
        )
 {
-       char *datap;
+       const char *datap;
        int res;
        int associd;
        int dsize;
@@ -1422,7 +1420,7 @@ doprintpeers(
        int associd,
        int rstatus,
        int datalen,
-       char *data,
+       const char *data,
        FILE *fp,
        int af
        )
@@ -1643,7 +1641,7 @@ dogetpeers(
        int af
        )
 {
-       char *datap;
+       const char *datap;
        int res;
        int dsize;
        u_short rstatus;
@@ -1865,18 +1863,19 @@ config (
        char *cfgcmd;
        u_short rstatus;
        int rsize;
-       char *rdata;
+       const char *rdata;
+       char *resp;
        int res;
        int col;
        int i;
 
        cfgcmd = pcmd->argval[0].string;
 
-       if (debug > 2) {
-               printf("In Config\n");
-               printf("Keyword = %s\n", pcmd->keyword);
-               printf("Command = %s\n", cfgcmd);
-       }
+       if (debug > 2)
+               fprintf(stderr, 
+                       "In Config\n"
+                       "Keyword = %s\n"
+                       "Command = %s\n", pcmd->keyword, cfgcmd);
 
        res = doquery(CTL_OP_CONFIGURE, 0, 1, strlen(cfgcmd), cfgcmd,
                      &rstatus, &rsize, &rdata);
@@ -1886,10 +1885,13 @@ config (
 
        if (rsize > 0 && '\n' == rdata[rsize - 1])
                rsize--;
-       rdata[rsize] = '\0';
+
+       resp = emalloc(rsize + 1);
+       memcpy(resp, rdata, rsize);
+       resp[rsize] = '\0';
 
        col = -1;
-       if (1 == sscanf(rdata, "column %d syntax error", &col)
+       if (1 == sscanf(resp, "column %d syntax error", &col)
            && col >= 0 && (size_t)col <= strlen(cfgcmd) + 1) {
                if (interactive) {
                        printf("______");       /* "ntpq> " */
@@ -1900,7 +1902,8 @@ config (
                        putchar('_');
                printf("^\n");
        }
-       printf("%s\n", rdata);
+       printf("%s\n", resp);
+       free(resp);
 }
 
 
@@ -1925,7 +1928,7 @@ config_from_file (
 {
        u_short rstatus;
        int rsize;
-       char *rdata;
+       const char *rdata;
        int res;
        FILE *config_fd;
        char config_cmd[MAXLINE];
@@ -1933,11 +1936,12 @@ config_from_file (
        int i;
        int retry_limit;
 
-       if (debug > 2) {
-               printf("In Config\n");
-               printf("Keyword = %s\n", pcmd->keyword);
-               printf("Filename = %s\n", pcmd->argval[0].string);
-       }
+       if (debug > 2)
+               fprintf(stderr,
+                       "In Config\n"
+                       "Keyword = %s\n"
+                       "Filename = %s\n", pcmd->keyword,
+                       pcmd->argval[0].string);
 
        config_fd = fopen(pcmd->argval[0].string, "r");
        if (NULL == config_fd) {
@@ -1974,8 +1978,8 @@ config_from_file (
                        rsize--;
                if (rsize > 0 && '\r' == rdata[rsize - 1])
                        rsize--;
-               rdata[rsize] = '\0';
-               printf("Line No: %d %s: %s", i, rdata, config_cmd);
+               printf("Line No: %d %.*s: %s", i, rsize, rdata,
+                      config_cmd);
        }
        printf("Done sending file\n");
        fclose(config_fd);
index 382b25cba47aecfd4e0e58e81f24efb98b931bf3..5000bb624fc57913aac555c3771dee3fe3ef9010 100644 (file)
@@ -244,7 +244,7 @@ int         ntpqmain        (int,   char **);
 static int     openhost        (const char *);
 
 static int     sendpkt         (void *, size_t);
-static int     getresponse     (int, int, u_short *, int *, char **, int);
+static int     getresponse     (int, int, u_short *, int *, const char **, int);
 static int     sendrequest     (int, int, int, int, char *);
 static char *  tstflags        (u_long);
 #ifndef BUILD_AS_LIB
@@ -285,8 +285,8 @@ static      void    warning         (const char *, const char *, const char *);
 static void    error           (const char *, const char *, const char *);
 static u_long  getkeyid        (const char *);
 static void    atoascii        (const char *, size_t, char *, size_t);
-static void    cookedprint     (int, int, char *, int, int, FILE *);
-static void    rawprint        (int, int, char *, int, int, FILE *);
+static void    cookedprint     (int, int, const char *, int, int, FILE *);
+static void    rawprint        (int, int, const char *, int, int, FILE *);
 static void    startoutput     (void);
 static void    output          (FILE *, char *, char *);
 static void    endoutput       (FILE *);
@@ -821,7 +821,7 @@ getresponse(
        int associd,
        u_short *rstatus,
        int *rsize,
-       char **rdata,
+       const char **rdata,
        int timeo
        )
 {
@@ -856,17 +856,17 @@ getresponse(
 
        /*
         * Loop until we have an error or a complete response.  Nearly all
-        * aths to loop again use continue.
+        * code paths to loop again use continue.
         */
        for (;;) {
 
                if (numfrags == 0)
-                   tvo = tvout;
+                       tvo = tvout;
                else
-                   tvo = tvsout;
+                       tvo = tvsout;
                
                FD_SET(sockfd, &fds);
-               n = select(sockfd+1, &fds, (fd_set *)0, (fd_set *)0, &tvo);
+               n = select(sockfd + 1, &fds, NULL, NULL, &tvo);
 
                if (n == -1) {
                        warning("select fails", "", "");
@@ -878,24 +878,30 @@ getresponse(
                         */
                        if (numfrags == 0) {
                                if (timeo)
-                                   (void) fprintf(stderr,
-                                                  "%s: timed out, nothing received\n",
-                                                  currenthost);
+                                       fprintf(stderr,
+                                               "%s: timed out, nothing received\n",
+                                               currenthost);
                                return ERR_TIMEOUT;
                        } else {
                                if (timeo)
-                                   (void) fprintf(stderr,
+                                       fprintf(stderr,
                                                   "%s: timed out with incomplete data\n",
                                                   currenthost);
                                if (debug) {
-                                       printf("Received fragments:\n");
+                                       fprintf(stderr,
+                                               "ERR_INCOMPLETE: Received fragments:\n");
                                        for (n = 0; n < numfrags; n++)
-                                           printf("%4d %d\n", offsets[n],
-                                                  counts[n]);
-                                       if (seenlastfrag)
-                                           printf("last fragment received\n");
-                                       else
-                                           printf("last fragment not received\n");
+                                               fprintf(stderr,
+                                                       "%2d: %5d %5d\t%3d octets\n",
+                                                       n, offsets[n],
+                                                       offsets[n] +
+                                                       counts[n],
+                                                       counts[n]);
+                                       fprintf(stderr,
+                                               "last fragment %sreceived\n",
+                                               (seenlastfrag)
+                                                   ? ""
+                                                   : "not ");
                                }
                                return ERR_INCOMPLETE;
                        }
@@ -1177,7 +1183,7 @@ getresponse(
                /*
                 * Copy the data into the data buffer.
                 */
-               memmove((char *)pktdata + offset, (char *)rpkt.data, count);
+               memcpy((char *)pktdata + offset, rpkt.data, count);
 
                /*
                 * If we've seen the last fragment, look for holes in the sequence.
@@ -1190,6 +1196,10 @@ getresponse(
                        }
                        if (n == numfrags) {
                                *rsize = offsets[numfrags-1] + counts[numfrags-1];
+                               if (debug)
+                                       fprintf(stderr,
+                                               "%d packets reassembled into response\n",
+                                               numfrags);
                                return 0;
                        }
                }
@@ -1310,18 +1320,112 @@ sendrequest(
 
 
 /*
- * doquery - send a request and process the response
+ * show_error_msg - display the error text for a mode 6 error response.
+ */
+void
+show_error_msg(
+       int             m6resp,
+       associd_t       associd
+       )
+{
+       if (numhosts > 1)
+               fprintf(stderr, "server=%s ", currenthost);
+
+       switch(m6resp) {
+
+       case CERR_BADFMT:
+               fprintf(stderr,
+                   "***Server reports a bad format request packet\n");
+               break;
+
+       case CERR_PERMISSION:
+               fprintf(stderr,
+                   "***Server disallowed request (authentication?)\n");
+               break;
+
+       case CERR_BADOP:
+               fprintf(stderr,
+                   "***Server reports a bad opcode in request\n");
+               break;
+
+       case CERR_BADASSOC:
+               fprintf(stderr,
+                   "***Association ID %d unknown to server\n",
+                   associd);
+               break;
+
+       case CERR_UNKNOWNVAR:
+               fprintf(stderr,
+                   "***A request variable unknown to the server\n");
+               break;
+
+       case CERR_BADVALUE:
+               fprintf(stderr,
+                   "***Server indicates a request variable was bad\n");
+               break;
+
+       case ERR_UNSPEC:
+               fprintf(stderr,
+                   "***Server returned an unspecified error\n");
+               break;
+
+       case ERR_TIMEOUT:
+               fprintf(stderr, "***Request timed out\n");
+               break;
+
+       case ERR_INCOMPLETE:
+               fprintf(stderr,
+                   "***Response from server was incomplete\n");
+               break;
+
+       case ERR_TOOMUCH:
+               fprintf(stderr,
+                   "***Buffer size exceeded for returned data\n");
+               break;
+
+       default:
+               fprintf(stderr,
+                   "***Server returns unknown error code %d\n",
+                   m6resp);
+       }
+}
+
+/*
+ * doquery - send a request and process the response, displaying
+ *          error messages for any error responses.
  */
 int
 doquery(
        int opcode,
-       int associd,
+       associd_t associd,
+       int auth,
+       int qsize,
+       char *qdata,
+       u_short *rstatus,
+       int *rsize,
+       const char **rdata
+       )
+{
+       return doqueryex(opcode, associd, auth, qsize, qdata, rstatus,
+                        rsize, rdata, FALSE);
+}
+
+
+/*
+ * doqueryex - send a request and process the response, optionally
+ *            displaying error messages for any error responses.
+ */
+int
+doqueryex(
+       int opcode,
+       associd_t associd,
        int auth,
        int qsize,
        char *qdata,
        u_short *rstatus,
        int *rsize,
-       char **rdata
+       const char **rdata,
+       int quiet
        )
 {
        int res;
@@ -1331,7 +1435,7 @@ doquery(
         * Check to make sure host is open
         */
        if (!havehost) {
-               (void) fprintf(stderr, "***No host open, use `host' command\n");
+               fprintf(stderr, "***No host open, use `host' command\n");
                return -1;
        }
 
@@ -1344,7 +1448,7 @@ doquery(
         */
        res = sendrequest(opcode, associd, auth, qsize, qdata);
        if (res != 0)
-           return res;
+               return res;
        
        /*
         * Get the response.  If we got a standard error, print a message
@@ -1363,53 +1467,9 @@ doquery(
                        done = 1;
                        goto again;
                }
-               if (numhosts > 1)
-                       (void) fprintf(stderr, "server=%s ", currenthost);
-               switch(res) {
-                   case CERR_BADFMT:
-                       (void) fprintf(stderr,
-                           "***Server reports a bad format request packet\n");
-                       break;
-                   case CERR_PERMISSION:
-                       (void) fprintf(stderr,
-                           "***Server disallowed request (authentication?)\n");
-                       break;
-                   case CERR_BADOP:
-                       (void) fprintf(stderr,
-                           "***Server reports a bad opcode in request\n");
-                       break;
-                   case CERR_BADASSOC:
-                       (void) fprintf(stderr,
-                           "***Association ID %d unknown to server\n",associd);
-                       break;
-                   case CERR_UNKNOWNVAR:
-                       (void) fprintf(stderr,
-                           "***A request variable unknown to the server\n");
-                       break;
-                   case CERR_BADVALUE:
-                       (void) fprintf(stderr,
-                           "***Server indicates a request variable was bad\n");
-                       break;
-                   case ERR_UNSPEC:
-                       (void) fprintf(stderr,
-                           "***Server returned an unspecified error\n");
-                       break;
-                   case ERR_TIMEOUT:
-                       (void) fprintf(stderr, "***Request timed out\n");
-                       break;
-                   case ERR_INCOMPLETE:
-                       (void) fprintf(stderr,
-                           "***Response from server was incomplete\n");
-                       break;
-                   case ERR_TOOMUCH:
-                       (void) fprintf(stderr,
-                           "***Buffer size exceeded for returned data\n");
-                       break;
-                   default:
-                       (void) fprintf(stderr,
-                           "***Server returns unknown error code %d\n", res);
-                       break;
-               }
+               if (!quiet)
+                       show_error_msg(res, associd);
+
        }
        return res;
 }
@@ -2799,15 +2859,15 @@ int nextcb = 0;
 int
 nextvar(
        int *datalen,
-       char **datap,
+       const char **datap,
        char **vname,
        char **vvalue
        )
 {
-       register char *cp;
-       register char *np;
-       register char *cpend;
-       register char *npend;   /* character after last */
+       const char *cp;
+       char *np;
+       const char *cpend;
+       char *npend;    /* character after last */
        int quoted = 0;
        static char name[MAXVARLEN];
        static char value[MAXVALLEN];
@@ -2819,9 +2879,9 @@ nextvar(
         * Space past commas and white space
         */
        while (cp < cpend && (*cp == ',' || isspace((int)*cp)))
-           cp++;
+               cp++;
        if (cp == cpend)
-           return 0;
+               return 0;
        
        /*
         * Copy name until we hit a ',', an '=', a '\r' or a '\n'.  Backspace
@@ -2930,7 +2990,7 @@ findvar(
 void
 printvars(
        int length,
-       char *data,
+       const char *data,
        int status,
        int sttype,
        int quiet,
@@ -2951,14 +3011,14 @@ static void
 rawprint(
        int datatype,
        int length,
-       char *data,
+       const char *data,
        int status,
        int quiet,
        FILE *fp
        )
 {
-       register char *cp;
-       register char *cpend;
+       const char *cp;
+       const char *cpend;
 
        /*
         * Essentially print the data as is.  We reformat unprintables, though.
@@ -3150,7 +3210,7 @@ static void
 cookedprint(
        int datatype,
        int length,
-       char *data,
+       const char *data,
        int status,
        int quiet,
        FILE *fp
index e5ca4edc7de434ec09bcff5d2947e54d4c7059ef..d03a5b26a92de9bcc8eafa18aa0443c166699983 100644 (file)
@@ -85,13 +85,17 @@ extern int  old_rv;         /* use old rv behavior? --old-rv */
 extern void    asciize         (int, char *, FILE *);
 extern int     getnetnum       (const char *, sockaddr_u *, char *, int);
 extern void    sortassoc       (void);
-extern int     doquery         (int, int, int, int, char *, u_short *, int *, char **);
+extern void    show_error_msg  (int, associd_t);
+extern int     doquery         (int, associd_t, int, int, char *,
+                                u_short *, int *, const char **);
+extern int     doqueryex       (int, associd_t, int, int, char *,
+                                u_short *, int *, const char **, int);
 extern char *  nntohost        (sockaddr_u *);
 extern int     decodets        (char *, l_fp *);
 extern int     decodeuint      (char *, u_long *);
-extern int     nextvar         (int *, char **, char **, char **);
+extern int     nextvar         (int *, const char **, char **, char **);
 extern int     decodetime      (char *, l_fp *);
-extern void    printvars       (int, char *, int, int, int, FILE *);
+extern void    printvars       (int, const char *, int, int, int, FILE *);
 extern int     decodeint       (char *, long *);
 extern int     findvar         (char *, struct ctl_var *, int code);
 extern void    makeascii       (int, const char *, FILE *);