1
0
Fork 0
mirror of https://repo.or.cz/socat.git synced 2025-06-09 03:06:51 +00:00

Corrections for Ubuntu-24 with newer compilers

This commit is contained in:
Gerhard 2025-02-10 12:46:57 +01:00
parent 676888e8cc
commit 63f67101f4
5 changed files with 27 additions and 17 deletions

View file

@ -60,6 +60,10 @@ Corrections:
now handled properly.
Test: UNIX_L_BIND
Removed unused bytes variable from gettimestamp(), corrected #elsif and
socks4 record length.
Thanks to clang-18 and gcc-13.
Features:
POSIXMQ-RECV now takes option o-nonblock; this, in combination with -T,
makes it possible to terminate Socat in case the queue is empty.

View file

@ -1339,7 +1339,6 @@ int _socat(void) {
should be at least MAXTIMESTAMPLEN bytes long.
returns 0 on success or -1 if an error occurred */
int gettimestamp(char *timestamp) {
size_t bytes;
#if HAVE_CLOCK_GETTIME
struct timespec now;
#elif HAVE_PROTOTYPE_LIB_gettimeofday
@ -1367,17 +1366,16 @@ int gettimestamp(char *timestamp) {
}
#endif
#if HAVE_STRFTIME
bytes = strftime(timestamp, 20, "%Y/%m/%d %H:%M:%S", localtime(&nowt));
strftime(timestamp, 20, "%Y/%m/%d %H:%M:%S", localtime(&nowt));
#if HAVE_CLOCK_GETTIME
bytes += sprintf(timestamp+19, "."F_tv_nsec" ", now.tv_nsec/1000);
sprintf(timestamp+19, "."F_tv_nsec" ", now.tv_nsec/1000);
#elif HAVE_PROTOTYPE_LIB_gettimeofday
bytes += sprintf(timestamp+19, "."F_tv_usec" ", now.tv_usec);
sprintf(timestamp+19, "."F_tv_usec" ", now.tv_usec);
#else
strncpy(&timestamp[bytes++], " ", 2);
#endif
#else
strcpy(timestamp, ctime(&nowt));
bytes = strlen(timestamp);
#endif
return 0;
}

26
test.sh
View file

@ -15787,25 +15787,33 @@ te="$td/test$N.stderr"
tdiff="$td/test$N.diff"
da="test$N $(date) $RANDOM"
CMD0="$TRACE $SOCAT $opts STDIO SYSTEM:'tee /dev/stdout 2>/dev/null',pty,cfmakeraw"
#set -vx
printf "test $F_n $TEST... " $N
{ echo "$da"; relsleep 10; } |eval "$CMD0" >"${tf}0" 2>"${te}0" &
pid0=$!
relsleep 2
TTY=$(tty |sed 's|/dev/||')
pkill -USR1 -t $TTY socat || { echo "pkill -t $TTY -USR1 socat"; }
CMD1="pkill -USR1 -t $TTY socat"
printf "test $F_n $TEST... " $N
# On Fedora-41 pkill can be slow (eg.20ms)
{ echo "$da"; relsleep 20; } |eval "$CMD0" >"${tf}0" 2>"${te}0" &
pid0=$!
#date +'%Y-%m-%dT%H:%M:%S.%N' >>"${te}1"
relsleep 2
pkill -t $TTY socat
#date +'%Y-%m-%dT%H:%M:%S.%N' >>"${te}1"
$CMD1 2>"${te}1"
relsleep 2
#date +'%Y-%m-%dT%H:%M:%S.%N' >>"${te}1"
wait
pkill -t $TTY socat >>"${te}1"
if [ "$(grep STATISTICS "${te}0" |wc -l)" -eq 2 ]; then
$PRINTF "$OK\n"
if [ "$VERBOSE" ]; then echo "$CMD0"; fi
if [ "$VERBOSE" ]; then echo "$CMD0 &"; fi
if [ "$DEBUG" ]; then cat "${te}0" >&2; fi
if [ "$VERBOSE" ]; then echo "$CMD1"; fi
if [ "$DEBUG" ]; then cat "${te}1" >&2; fi
ok
else
$PRINTF "$FAILED\n"
$PRINTF "$FAILED (no stats)\n"
echo "$CMD0 &"
cat "${te}0" >&2
echo "$CMD1"
cat "${te}1" >&2
failed
fi
fi # NUMCOND

View file

@ -592,7 +592,7 @@ int _xiogetaddrinfo(const char *node, const char *service,
freehostent(host);
}
#elsif 0 /* !HAVE_PROTOTYPE_LIB_getipnodebyname */
#elif 0 /* !HAVE_PROTOTYPE_LIB_getipnodebyname */
if (node != NULL) {
/* this is not a typical IP6 resolver function - but Linux

View file

@ -10,9 +10,9 @@ struct socks4 {
uint8_t action;
uint16_t port;
uint32_t dest;
char userid[1]; /* just to have access via this struct */
char userid[0]; /* just to have access via this struct */
} ;
#define SIZEOF_STRUCT_SOCKS4 8
#define SIZEOF_STRUCT_SOCKS4 ((size_t)&((struct socks4 *)0)->userid)
extern const struct optdesc opt_socksport;
extern const struct optdesc opt_socksuser;