diff options
Diffstat (limited to 'contrib/ntp/ntpq/ntpq-subs.c')
-rw-r--r-- | contrib/ntp/ntpq/ntpq-subs.c | 97 |
1 files changed, 51 insertions, 46 deletions
diff --git a/contrib/ntp/ntpq/ntpq-subs.c b/contrib/ntp/ntpq/ntpq-subs.c index 78143b3..438c7ca 100644 --- a/contrib/ntp/ntpq/ntpq-subs.c +++ b/contrib/ntp/ntpq/ntpq-subs.c @@ -22,9 +22,9 @@ static struct varlist *findlistvar (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 void makequerydata (struct varlist *, size_t *, char *); static int doquerylist (struct varlist *, int, associd_t, int, - u_short *, int *, const char **); + u_short *, size_t *, const char **); static void doprintvlist (struct varlist *, FILE *); static void addvars (struct parse *, FILE *); static void rmvars (struct parse *, FILE *); @@ -56,7 +56,7 @@ static void authinfo (struct parse *, FILE *); static void pstats (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, const char *, FILE *, int); +static int doprintpeers (struct varlist *, int, int, size_t, const char *, FILE *, int); static int dogetpeers (struct varlist *, associd_t, FILE *, int); static void dopeers (int, FILE *, int); static void peers (struct parse *, FILE *); @@ -343,7 +343,7 @@ typedef struct var_display_collection_tag { /* * other local function prototypes */ -void mrulist_ctrl_c_hook(void); +static int mrulist_ctrl_c_hook(void); static mru * add_mru(mru *); static int collect_mru_list(const char *, l_fp *); static int fetch_nonce(char *, size_t); @@ -440,7 +440,7 @@ doaddvlist( ) { struct varlist *vl; - int len; + size_t len; char *name; char *value; @@ -475,7 +475,7 @@ dormvlist( ) { struct varlist *vl; - int len; + size_t len; char *name; char *value; @@ -527,14 +527,14 @@ doclearvlist( static void makequerydata( struct varlist *vlist, - int *datalen, + size_t *datalen, char *data ) { register struct varlist *vl; register char *cp, *cpend; - register int namelen, valuelen; - register int totallen; + register size_t namelen, valuelen; + register size_t totallen; cp = data; cpend = data + *datalen; @@ -563,7 +563,7 @@ makequerydata( cp += valuelen; } } - *datalen = cp - data; + *datalen = (size_t)(cp - data); } @@ -577,12 +577,12 @@ doquerylist( associd_t associd, int auth, u_short *rstatus, - int *dsize, + size_t *dsize, const char **datap ) { char data[CTL_MAX_DATA_LEN]; - int datalen; + size_t datalen; datalen = sizeof(data); makequerydata(vlist, &datalen, data); @@ -686,7 +686,7 @@ dolist( { const char *datap; int res; - int dsize; + size_t dsize; u_short rstatus; int quiet; @@ -766,7 +766,7 @@ writelist( const char *datap; int res; associd_t associd; - int dsize; + size_t dsize; u_short rstatus; if (pcmd->nargs == 0) { @@ -808,8 +808,8 @@ readvar( ) { associd_t associd; - u_int tmpcount; - u_int u; + size_t tmpcount; + size_t u; int type; struct varlist tmplist[MAXLIST]; @@ -849,7 +849,7 @@ writevar( int res; associd_t associd; int type; - int dsize; + size_t dsize; u_short rstatus; struct varlist tmplist[MAXLIST]; @@ -1071,7 +1071,7 @@ dogetassoc( const char *datap; const u_short *pus; int res; - int dsize; + size_t dsize; u_short rstatus; res = doquery(CTL_OP_READSTAT, 0, 0, 0, (char *)0, &rstatus, @@ -1091,7 +1091,7 @@ dogetassoc( if (numhosts > 1) fprintf(stderr, "server=%s ", currenthost); fprintf(stderr, - "***Server returned %d octets, should be multiple of 4\n", + "***Server returned %zu octets, should be multiple of 4\n", dsize); return 0; } @@ -1379,7 +1379,7 @@ saveconfig( { const char *datap; int res; - int dsize; + size_t dsize; u_short rstatus; if (0 == pcmd->nargs) @@ -1396,7 +1396,7 @@ saveconfig( if (0 == dsize) fprintf(fp, "(no response message, curiously)"); else - fprintf(fp, "%.*s", dsize, datap); + fprintf(fp, "%.*s", (int)dsize, datap); /* cast is wobbly */ } @@ -1593,7 +1593,7 @@ doprintpeers( struct varlist *pvl, int associd, int rstatus, - int datalen, + size_t datalen, const char *data, FILE *fp, int af @@ -1602,7 +1602,7 @@ doprintpeers( char *name; char *value = NULL; int c; - int len; + size_t len; int have_srchost; int have_dstadr; int have_da_rid; @@ -1881,7 +1881,7 @@ dogetpeers( { const char *datap; int res; - int dsize; + size_t dsize; u_short rstatus; #ifdef notdef @@ -2186,7 +2186,7 @@ config ( { const char *cfgcmd; u_short rstatus; - int rsize; + size_t rsize; const char *rdata; char *resp; int res; @@ -2201,7 +2201,8 @@ config ( "Keyword = %s\n" "Command = %s\n", pcmd->keyword, cfgcmd); - res = doquery(CTL_OP_CONFIGURE, 0, 1, strlen(cfgcmd), cfgcmd, + res = doquery(CTL_OP_CONFIGURE, 0, 1, + strlen(cfgcmd), cfgcmd, &rstatus, &rsize, &rdata); if (res != 0) @@ -2251,7 +2252,7 @@ config_from_file ( ) { u_short rstatus; - int rsize; + size_t rsize; const char *rdata; int res; FILE *config_fd; @@ -2302,7 +2303,7 @@ config_from_file ( rsize--; if (rsize > 0 && '\r' == rdata[rsize - 1]) rsize--; - printf("Line No: %d %.*s: %s", i, rsize, rdata, + printf("Line No: %d %.*s: %s", i, (int)rsize, rdata, /* cast is wobbly */ config_cmd); } printf("Done sending file\n"); @@ -2319,9 +2320,9 @@ fetch_nonce( const char nonce_eq[] = "nonce="; int qres; u_short rstatus; - int rsize; + size_t rsize; const char * rdata; - int chars; + size_t chars; /* * Retrieve a nonce specific to this client to demonstrate to @@ -2338,7 +2339,7 @@ fetch_nonce( if ((size_t)rsize <= sizeof(nonce_eq) - 1 || strncmp(rdata, nonce_eq, sizeof(nonce_eq) - 1)) { fprintf(stderr, "unexpected nonce response format: %.*s\n", - rsize, rdata); + (int)rsize, rdata); /* cast is wobbly */ return FALSE; } chars = rsize - (sizeof(nonce_eq) - 1); @@ -2421,10 +2422,11 @@ add_mru( } while (0) -void +int mrulist_ctrl_c_hook(void) { mrulist_interrupted = TRUE; + return TRUE; } @@ -2449,10 +2451,10 @@ collect_mru_list( char req_buf[CTL_MAX_DATA_LEN]; char *req; char *req_end; - int chars; + size_t chars; int qres; u_short rstatus; - int rsize; + size_t rsize; const char *rdata; int limit; int frags; @@ -2495,11 +2497,6 @@ collect_mru_list( mon = emalloc_zero(cb); ZERO(*pnow); ZERO(last_older); - mrulist_interrupted = FALSE; - set_ctrl_c_hook(&mrulist_ctrl_c_hook); - fprintf(stderr, - "Ctrl-C will stop MRU retrieval and display partial results.\n"); - fflush(stderr); next_report = time(NULL) + MRU_REPORT_SECS; limit = min(3 * MAXFRAGS, ntpd_row_limit); @@ -2512,8 +2509,9 @@ collect_mru_list( if (debug) fprintf(stderr, "READ_MRU parms: %s\n", req_buf); - qres = doqueryex(CTL_OP_READ_MRU, 0, 0, strlen(req_buf), - req_buf, &rstatus, &rsize, &rdata, TRUE); + qres = doqueryex(CTL_OP_READ_MRU, 0, 0, + strlen(req_buf), req_buf, + &rstatus, &rsize, &rdata, TRUE); if (CERR_UNKNOWNVAR == qres && ri > 0) { /* @@ -2863,14 +2861,13 @@ collect_mru_list( ri, sptoa(&recent->addr), ri, recent->last.l_ui, recent->last.l_uf); chars = strlen(buf); - if (REQ_ROOM - chars < 1) + if (REQ_ROOM <= chars) break; memcpy(req, buf, chars + 1); req += chars; } } - set_ctrl_c_hook(NULL); c_mru_l_rc = TRUE; goto retain_hash_table; @@ -3080,6 +3077,12 @@ mrulist( int lstint; size_t i; + mrulist_interrupted = FALSE; + push_ctrl_c_handler(&mrulist_ctrl_c_hook); + fprintf(stderr, + "Ctrl-C will stop MRU retrieval and display partial results.\n"); + fflush(stderr); + order = MRUSORT_DEF; parms_buf[0] = '\0'; parms = parms_buf; @@ -3220,6 +3223,8 @@ cleanup_return: free(hash_table); hash_table = NULL; INIT_DLIST(mru_list, mlink); + + pop_ctrl_c_handler(&mrulist_ctrl_c_hook); } @@ -3317,7 +3322,7 @@ ifstats( const char up_fmt[] = "up.%u"; /* uptime */ const char * datap; int qres; - int dsize; + size_t dsize; u_short rstatus; char * tag; char * val; @@ -3533,7 +3538,7 @@ reslist( const int qdata_chars = COUNTOF(qdata) - 1; const char * datap; int qres; - int dsize; + size_t dsize; u_short rstatus; char * tag; char * val; @@ -3632,7 +3637,7 @@ collect_display_vdc( char tagbuf[32]; vdc *pvdc; u_short rstatus; - int rsize; + size_t rsize; const char *rdata; int qres; char *tag; |