diff options
Diffstat (limited to 'libntp/numtoa.c')
-rw-r--r-- | libntp/numtoa.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/libntp/numtoa.c b/libntp/numtoa.c new file mode 100644 index 0000000..5efbe94 --- /dev/null +++ b/libntp/numtoa.c @@ -0,0 +1,59 @@ +/* + * numtoa - return asciized network numbers store in local array space + */ +#include <config.h> + +#include <sys/types.h> +#ifdef HAVE_NETINET_IN_H +#include <netinet/in.h> /* ntohl */ +#endif + +#include <stdio.h> + +#include "ntp_fp.h" +#include "lib_strbuf.h" +#include "ntp_stdlib.h" + +char * +numtoa( + u_int32 num + ) +{ + register u_int32 netnum; + register char *buf; + + netnum = ntohl(num); + LIB_GETBUF(buf); + snprintf(buf, LIB_BUFLENGTH, "%lu.%lu.%lu.%lu", + ((u_long)netnum >> 24) & 0xff, + ((u_long)netnum >> 16) & 0xff, + ((u_long)netnum >> 8) & 0xff, + (u_long)netnum & 0xff); + return buf; +} + + +/* Convert a refid & stratum to a string */ +const char * +refid_str( + u_int32 refid, + int stratum + ) +{ + char * text; + size_t tlen; + + if (stratum > 1) + return numtoa(refid); + + LIB_GETBUF(text); + text[0] = '.'; + memcpy(&text[1], &refid, sizeof(refid)); + text[1 + sizeof(refid)] = '\0'; + tlen = strlen(text); + text[tlen] = '.'; + text[tlen + 1] = '\0'; + + return text; +} + |