Message ID | 20240331100737.2724186-5-mjt@tls.msk.ru (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | small linux-user/syscall:do_setsockopt() cleanups and fixes | expand |
On 31/3/24 12:07, Michael Tokarev wrote: > There's identical code for SO_SNDTIMEO and SO_RCVTIMEO, currently > implemented using an ugly goto into another switch case. Eliminate > that using arithmetic if, making code flow more natural. > > Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> > --- > linux-user/syscall.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 988b6422fb..cdf26c43ba 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -2294,12 +2294,10 @@ static abi_long do_setsockopt(int sockfd, int level, int optname, case TARGET_SOL_SOCKET: switch (optname) { case TARGET_SO_RCVTIMEO: + case TARGET_SO_SNDTIMEO: { struct timeval tv; - optname = SO_RCVTIMEO; - -set_timeout: if (optlen != sizeof(struct target_timeval)) { return -TARGET_EINVAL; } @@ -2308,13 +2306,12 @@ set_timeout: return -TARGET_EFAULT; } - ret = get_errno(setsockopt(sockfd, SOL_SOCKET, optname, + ret = get_errno(setsockopt(sockfd, SOL_SOCKET, + optname == TARGET_SO_RCVTIMEO ? + SO_RCVTIMEO : SO_SNDTIMEO, &tv, sizeof(tv))); return ret; } - case TARGET_SO_SNDTIMEO: - optname = SO_SNDTIMEO; - goto set_timeout; case TARGET_SO_ATTACH_FILTER: { struct target_sock_fprog *tfprog;
There's identical code for SO_SNDTIMEO and SO_RCVTIMEO, currently implemented using an ugly goto into another switch case. Eliminate that using arithmetic if, making code flow more natural. Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> --- linux-user/syscall.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)