numtoa.c revision 290001
1/* 2 * numtoa - return asciized network numbers store in local array space 3 */ 4#include <config.h> 5 6#include <sys/types.h> 7#ifdef HAVE_NETINET_IN_H 8#include <netinet/in.h> /* ntohl */ 9#endif 10 11#include <stdio.h> 12 13#include "ntp_fp.h" 14#include "lib_strbuf.h" 15#include "ntp_stdlib.h" 16 17char * 18numtoa( 19 u_int32 num 20 ) 21{ 22 register u_int32 netnum; 23 register char *buf; 24 25 netnum = ntohl(num); 26 LIB_GETBUF(buf); 27 snprintf(buf, LIB_BUFLENGTH, "%lu.%lu.%lu.%lu", 28 ((u_long)netnum >> 24) & 0xff, 29 ((u_long)netnum >> 16) & 0xff, 30 ((u_long)netnum >> 8) & 0xff, 31 (u_long)netnum & 0xff); 32 return buf; 33} 34 35 36/* Convert a refid & stratum to a string */ 37const char * 38refid_str( 39 u_int32 refid, 40 int stratum 41 ) 42{ 43 char * text; 44 size_t tlen; 45 46 if (stratum > 1) 47 return numtoa(refid); 48 49 LIB_GETBUF(text); 50 text[0] = '.'; 51 memcpy(&text[1], &refid, sizeof(refid)); 52 text[1 + sizeof(refid)] = '\0'; 53 tlen = strlen(text); 54 text[tlen] = '.'; 55 text[tlen + 1] = '\0'; 56 57 return text; 58} 59 60