You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-misc/rdate/files/rdate-1.10.2-fix-musl-compa...

181 lines
4.5 KiB

https://github.com/resurrecting-open-source-projects/openrdate/pull/3
From: Sam James <sam@gentoo.org>
Date: Thu, 3 Feb 2022 09:23:35 +0000
Subject: [PATCH] Use <stdint.h> to fix musl compatibility
uint32_t and friends are provided by <stdint.h> and the types
previously being relied on are non-standard, so let's swap.
This fixes building rdate on e.g. musl rather than glibc.
Bug: https://bugs.gentoo.org/832554
Signed-off-by: Sam James <sam@gentoo.org>
--- a/src/ntp.c
+++ b/src/ntp.c
@@ -52,6 +52,7 @@
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
+#include <stdint.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
@@ -106,11 +107,11 @@ struct ntp_data {
double receive;
double transmit;
double current;
- u_int64_t recvck;
+ uint64_t recvck;
/* Local State */
double originate;
- u_int64_t xmitck;
+ uint64_t xmitck;
};
void ntp_client(const char *, int, struct timeval *, struct timeval *, int, int, int);
@@ -282,7 +283,7 @@ write_packet(int fd, struct ntp_data *data)
packet[0] = (NTP_VERSION << 3) | (NTP_MODE_CLIENT);
- data->xmitck = (u_int64_t)arc4random() << 32 | arc4random();
+ data->xmitck = (uint64_t)arc4random() << 32 | arc4random();
/*
* Send out a random 64-bit number as our transmit time. The NTP
@@ -300,7 +301,7 @@ write_packet(int fd, struct ntp_data *data)
* the transmit field intelligible.
*/
- *(u_int64_t *)(packet + NTP_TRANSMIT) = data->xmitck;
+ *(uint64_t *)(packet + NTP_TRANSMIT) = data->xmitck;
data->originate = current_time(JAN_1970);
@@ -453,7 +454,7 @@ double
current_time(double offset)
{
struct timeval current;
- u_int64_t t;
+ uint64_t t;
if (gettimeofday(&current, NULL))
err(1, "Could not get local time of day");
--- a/src/ntpleaps.c
+++ b/src/ntpleaps.c
@@ -45,12 +45,13 @@
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
+#include <stdint.h>
#include <string.h>
#include <unistd.h>
#include "ntpleaps.h"
-static u_int64_t *leapsecs;
+static uint64_t *leapsecs;
static unsigned int leapsecs_num;
@@ -81,10 +82,10 @@ ntpleaps_init(void)
}
int
-ntpleaps_sub(u_int64_t *t)
+ntpleaps_sub(uint64_t *t)
{
unsigned int i = 0;
- u_int64_t u;
+ uint64_t u;
int r = 1;
if (ntpleaps_init() == -1)
@@ -105,10 +106,10 @@ ntpleaps_sub(u_int64_t *t)
return (r);
}
-u_int32_t
-read_be_dword(u_int8_t *ptr)
+uint32_t
+read_be_dword(uint8_t *ptr)
{
- u_int32_t res;
+ uint32_t res;
memcpy(&res, ptr, 4);
return (ntohl(res));
@@ -120,10 +121,10 @@ ntpleaps_read(void)
{
int fd;
unsigned int r;
- u_int8_t buf[32];
- u_int32_t m1, m2, m3;
- u_int64_t s;
- u_int64_t *l;
+ uint8_t buf[32];
+ uint32_t m1, m2, m3;
+ uint64_t s;
+ uint64_t *l;
fd = open("/usr/share/zoneinfo/right/UTC", O_RDONLY | O_NDELAY);
if (fd == -1)
@@ -153,7 +154,7 @@ ntpleaps_read(void)
close(fd);
return (-1);
}
- if ((l = (u_int64_t *)malloc(r << 3)) == NULL) {
+ if ((l = (uint64_t *)malloc(r << 3)) == NULL) {
close(fd);
return (-1);
}
--- a/src/ntpleaps.h
+++ b/src/ntpleaps.h
@@ -46,11 +46,13 @@
#ifndef _NTPLEAPS_H
#define _NTPLEAPS_H
+#include <stdint.h>
+
/* Offset between struct timeval.tv_sec and a tai64_t */
#define NTPLEAPS_OFFSET (4611686018427387914ULL)
/* Hide this ugly value from programmes */
-#define SEC_TO_TAI64(s) (NTPLEAPS_OFFSET + (u_int64_t)(s))
+#define SEC_TO_TAI64(s) (NTPLEAPS_OFFSET + (uint64_t)(s))
#define TAI64_TO_SEC(t) ((t) - NTPLEAPS_OFFSET)
/* Initializes the leap second table. Does not need to be called
@@ -70,6 +72,6 @@ int ntpleaps_read(void);
* to posix clock tick time.
* returns 0 on success, -1 on error (time is unchanged), 1 on leap second
*/
-int ntpleaps_sub(u_int64_t *);
+int ntpleaps_sub(uint64_t *);
#endif
--- a/src/rfc868time.c
+++ b/src/rfc868time.c
@@ -50,6 +50,7 @@
#include <stdio.h>
#include <ctype.h>
#include <err.h>
+#include <stdint.h>
#include <string.h>
#include <netdb.h>
#include <unistd.h>
@@ -68,10 +69,10 @@ rfc868time_client (const char *hostname, int family, struct timeval *new,
{
struct addrinfo hints, *res0, *res;
struct timeval old;
- u_int32_t tim; /* RFC 868 states clearly this is an uint32 */
+ uint32_t tim; /* RFC 868 states clearly this is an uint32 */
int s;
int error;
- u_int64_t td;
+ uint64_t td;
memset(&hints, 0, sizeof(hints));
hints.ai_family = family;