Skip to content

Commit 005e965

Browse files
trflynn89gmta
authored andcommitted
LibCore+RequestServer: Return size_t from system read/write functions
The system uses ssize_t so it can return -1 in case of an error. But in our case, we will transform that to an AK::Error, thus we never return -1. Let's return size_t instead.
1 parent e5ea4f9 commit 005e965

File tree

9 files changed

+34
-34
lines changed

9 files changed

+34
-34
lines changed

Libraries/LibCore/File.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ ErrorOr<Bytes> File::read_some(Bytes buffer)
125125
return Error::from_errno(EBADF);
126126
}
127127

128-
ssize_t nread = TRY(System::read(m_fd, buffer));
128+
auto nread = TRY(System::read(m_fd, buffer));
129129
m_last_read_was_eof = nread == 0;
130130
m_file_offset += nread;
131131
return buffer.trim(nread);

Libraries/LibCore/Socket.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ ErrorOr<Bytes> PosixSocketHelper::read(Bytes buffer, int flags)
126126
return Error::from_errno(ENOTCONN);
127127
}
128128

129-
ssize_t nread = TRY(System::recv(m_fd, buffer, flags));
129+
auto nread = TRY(System::recv(m_fd, buffer, flags));
130130
if (nread == 0)
131131
did_reach_eof_on_read();
132132

@@ -150,7 +150,7 @@ ErrorOr<size_t> PosixSocketHelper::write(ReadonlyBytes buffer, int flags)
150150
return Error::from_errno(ENOTCONN);
151151
}
152152

153-
return TRY(System::send(m_fd, buffer, flags));
153+
return System::send(m_fd, buffer, flags);
154154
}
155155

156156
void PosixSocketHelper::close()
@@ -410,7 +410,7 @@ ErrorOr<void> LocalSocket::send_fd(int fd)
410410
#endif
411411
}
412412

413-
ErrorOr<ssize_t> LocalSocket::send_message(ReadonlyBytes data, int flags, Vector<int, 1> fds)
413+
ErrorOr<size_t> LocalSocket::send_message(ReadonlyBytes data, int flags, Vector<int, 1> fds)
414414
{
415415
size_t const num_fds = fds.size();
416416
if (num_fds == 0)
@@ -439,7 +439,7 @@ ErrorOr<ssize_t> LocalSocket::send_message(ReadonlyBytes data, int flags, Vector
439439
msg.msg_control = header;
440440
msg.msg_controllen = CMSG_LEN(fd_payload_size);
441441

442-
return TRY(Core::System::sendmsg(m_helper.fd(), &msg, default_flags() | flags));
442+
return Core::System::sendmsg(m_helper.fd(), &msg, default_flags() | flags);
443443
}
444444

445445
ErrorOr<Bytes> LocalSocket::receive_message(AK::Bytes buffer, int flags, Vector<int>& fds)

Libraries/LibCore/Socket.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ class LocalSocket final : public Socket {
322322
ErrorOr<void> send_fd(int fd);
323323

324324
ErrorOr<Bytes> receive_message(Bytes buffer, int flags, Vector<int>& fds);
325-
ErrorOr<ssize_t> send_message(ReadonlyBytes msg, int flags, Vector<int, 1> fds = {});
325+
ErrorOr<size_t> send_message(ReadonlyBytes msg, int flags, Vector<int, 1> fds = {});
326326

327327
ErrorOr<pid_t> peer_pid() const;
328328
ErrorOr<Bytes> read_without_waiting(Bytes buffer);

Libraries/LibCore/System.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -255,17 +255,17 @@ ErrorOr<struct stat> lstat(StringView path)
255255
return st;
256256
}
257257

258-
ErrorOr<ssize_t> read(int fd, Bytes buffer)
258+
ErrorOr<size_t> read(int fd, Bytes buffer)
259259
{
260-
ssize_t rc = ::read(fd, buffer.data(), buffer.size());
260+
auto rc = ::read(fd, buffer.data(), buffer.size());
261261
if (rc < 0)
262262
return Error::from_syscall("read"sv, errno);
263263
return rc;
264264
}
265265

266-
ErrorOr<ssize_t> write(int fd, ReadonlyBytes buffer)
266+
ErrorOr<size_t> write(int fd, ReadonlyBytes buffer)
267267
{
268-
ssize_t rc = ::write(fd, buffer.data(), buffer.size());
268+
auto rc = ::write(fd, buffer.data(), buffer.size());
269269
if (rc < 0)
270270
return Error::from_syscall("write"sv, errno);
271271
return rc;
@@ -557,47 +557,47 @@ ErrorOr<void> connect(int sockfd, struct sockaddr const* address, socklen_t addr
557557
return {};
558558
}
559559

560-
ErrorOr<ssize_t> send(int sockfd, ReadonlyBytes data, int flags)
560+
ErrorOr<size_t> send(int sockfd, ReadonlyBytes data, int flags)
561561
{
562562
auto sent = ::send(sockfd, data.data(), data.size(), flags);
563563
if (sent < 0)
564564
return Error::from_syscall("send"sv, errno);
565565
return sent;
566566
}
567567

568-
ErrorOr<ssize_t> sendmsg(int sockfd, const struct msghdr* message, int flags)
568+
ErrorOr<size_t> sendmsg(int sockfd, const struct msghdr* message, int flags)
569569
{
570570
auto sent = ::sendmsg(sockfd, message, flags);
571571
if (sent < 0)
572572
return Error::from_syscall("sendmsg"sv, errno);
573573
return sent;
574574
}
575575

576-
ErrorOr<ssize_t> sendto(int sockfd, ReadonlyBytes data, int flags, struct sockaddr const* destination, socklen_t destination_length)
576+
ErrorOr<size_t> sendto(int sockfd, ReadonlyBytes data, int flags, struct sockaddr const* destination, socklen_t destination_length)
577577
{
578578
auto sent = ::sendto(sockfd, data.data(), data.size(), flags, destination, destination_length);
579579
if (sent < 0)
580580
return Error::from_syscall("sendto"sv, errno);
581581
return sent;
582582
}
583583

584-
ErrorOr<ssize_t> recv(int sockfd, Bytes buffer, int flags)
584+
ErrorOr<size_t> recv(int sockfd, Bytes buffer, int flags)
585585
{
586586
auto received = ::recv(sockfd, buffer.data(), buffer.size(), flags);
587587
if (received < 0)
588588
return Error::from_syscall("recv"sv, errno);
589589
return received;
590590
}
591591

592-
ErrorOr<ssize_t> recvmsg(int sockfd, struct msghdr* message, int flags)
592+
ErrorOr<size_t> recvmsg(int sockfd, struct msghdr* message, int flags)
593593
{
594594
auto received = ::recvmsg(sockfd, message, flags);
595595
if (received < 0)
596596
return Error::from_syscall("recvmsg"sv, errno);
597597
return received;
598598
}
599599

600-
ErrorOr<ssize_t> recvfrom(int sockfd, Bytes buffer, int flags, struct sockaddr* address, socklen_t* address_length)
600+
ErrorOr<size_t> recvfrom(int sockfd, Bytes buffer, int flags, struct sockaddr* address, socklen_t* address_length)
601601
{
602602
auto received = ::recvfrom(sockfd, buffer.data(), buffer.size(), flags, address, address_length);
603603
if (received < 0)
@@ -879,7 +879,7 @@ ErrorOr<size_t> transfer_file_through_pipe(int source_fd, int target_fd, size_t
879879
auto* mapped = TRY(mmap(nullptr, mapped_source_length, PROT_READ, MAP_SHARED, source_fd, aligned_source_offset));
880880
ScopeGuard guard { [&]() { (void)munmap(mapped, mapped_source_length); } };
881881

882-
return TRY(write(target_fd, { static_cast<u8*>(mapped) + offset_adjustment, source_length }));
882+
return write(target_fd, { static_cast<u8*>(mapped) + offset_adjustment, source_length });
883883
#endif
884884
}
885885

Libraries/LibCore/System.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ ErrorOr<void> close(int fd);
8787
ErrorOr<void> ftruncate(int fd, off_t length);
8888
ErrorOr<struct stat> stat(StringView path);
8989
ErrorOr<struct stat> lstat(StringView path);
90-
ErrorOr<ssize_t> read(int fd, Bytes buffer);
91-
ErrorOr<ssize_t> write(int fd, ReadonlyBytes buffer);
90+
ErrorOr<size_t> read(int fd, Bytes buffer);
91+
ErrorOr<size_t> write(int fd, ReadonlyBytes buffer);
9292
ErrorOr<int> dup(int source_fd);
9393
ErrorOr<int> dup2(int source_fd, int destination_fd);
9494
ErrorOr<ByteString> getcwd();
@@ -117,12 +117,12 @@ ErrorOr<void> bind(int sockfd, struct sockaddr const*, socklen_t);
117117
ErrorOr<void> listen(int sockfd, int backlog);
118118
ErrorOr<int> accept(int sockfd, struct sockaddr*, socklen_t*);
119119
ErrorOr<void> connect(int sockfd, struct sockaddr const*, socklen_t);
120-
ErrorOr<ssize_t> send(int sockfd, ReadonlyBytes, int flags);
121-
ErrorOr<ssize_t> sendmsg(int sockfd, const struct msghdr*, int flags);
122-
ErrorOr<ssize_t> sendto(int sockfd, ReadonlyBytes, int flags, struct sockaddr const*, socklen_t);
123-
ErrorOr<ssize_t> recv(int sockfd, Bytes, int flags);
124-
ErrorOr<ssize_t> recvmsg(int sockfd, struct msghdr*, int flags);
125-
ErrorOr<ssize_t> recvfrom(int sockfd, Bytes, int flags, struct sockaddr*, socklen_t*);
120+
ErrorOr<size_t> send(int sockfd, ReadonlyBytes, int flags);
121+
ErrorOr<size_t> sendmsg(int sockfd, const struct msghdr*, int flags);
122+
ErrorOr<size_t> sendto(int sockfd, ReadonlyBytes, int flags, struct sockaddr const*, socklen_t);
123+
ErrorOr<size_t> recv(int sockfd, Bytes, int flags);
124+
ErrorOr<size_t> recvmsg(int sockfd, struct msghdr*, int flags);
125+
ErrorOr<size_t> recvfrom(int sockfd, Bytes, int flags, struct sockaddr*, socklen_t*);
126126
ErrorOr<void> getsockopt(int sockfd, int level, int option, void* value, socklen_t* value_size);
127127
ErrorOr<void> setsockopt(int sockfd, int level, int option, void const* value, socklen_t value_size);
128128
ErrorOr<void> getsockname(int sockfd, struct sockaddr*, socklen_t*);

Libraries/LibCore/SystemWindows.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,15 @@ ErrorOr<void> close(int handle)
4747
return {};
4848
}
4949

50-
ErrorOr<ssize_t> read(int handle, Bytes buffer)
50+
ErrorOr<size_t> read(int handle, Bytes buffer)
5151
{
5252
DWORD n_read = 0;
5353
if (!ReadFile(to_handle(handle), buffer.data(), buffer.size(), &n_read, NULL))
5454
return Error::from_windows_error();
5555
return n_read;
5656
}
5757

58-
ErrorOr<ssize_t> write(int handle, ReadonlyBytes buffer)
58+
ErrorOr<size_t> write(int handle, ReadonlyBytes buffer)
5959
{
6060
DWORD n_written = 0;
6161
if (!WriteFile(to_handle(handle), buffer.data(), buffer.size(), &n_written, NULL))
@@ -261,7 +261,7 @@ ErrorOr<void> connect(int sockfd, struct sockaddr const* address, socklen_t addr
261261
return {};
262262
}
263263

264-
ErrorOr<ssize_t> send(int sockfd, ReadonlyBytes data, int flags)
264+
ErrorOr<size_t> send(int sockfd, ReadonlyBytes data, int flags)
265265
{
266266
auto sent = ::send(sockfd, reinterpret_cast<char const*>(data.data()), static_cast<int>(data.size()), flags);
267267

@@ -276,15 +276,15 @@ ErrorOr<ssize_t> send(int sockfd, ReadonlyBytes data, int flags)
276276
return sent;
277277
}
278278

279-
ErrorOr<ssize_t> sendto(int sockfd, ReadonlyBytes data, int flags, struct sockaddr const* destination, socklen_t destination_length)
279+
ErrorOr<size_t> sendto(int sockfd, ReadonlyBytes data, int flags, struct sockaddr const* destination, socklen_t destination_length)
280280
{
281281
auto sent = ::sendto(sockfd, reinterpret_cast<char const*>(data.data()), static_cast<int>(data.size()), flags, destination, destination_length);
282282
if (sent == SOCKET_ERROR)
283283
return Error::from_windows_error();
284284
return sent;
285285
}
286286

287-
ErrorOr<ssize_t> recvfrom(int sockfd, Bytes buffer, int flags, struct sockaddr* address, socklen_t* address_length)
287+
ErrorOr<size_t> recvfrom(int sockfd, Bytes buffer, int flags, struct sockaddr* address, socklen_t* address_length)
288288
{
289289
auto received = ::recvfrom(sockfd, reinterpret_cast<char*>(buffer.data()), static_cast<int>(buffer.size()), flags, address, address_length);
290290
if (received == SOCKET_ERROR)
@@ -422,7 +422,7 @@ ErrorOr<size_t> transfer_file_through_pipe(int source_fd, int target_fd, size_t
422422
auto* mapped = TRY(mmap(nullptr, mapped_source_length, PROT_READ, MAP_SHARED, source_fd, aligned_source_offset));
423423
ScopeGuard guard { [&]() { (void)munmap(mapped, mapped_source_length); } };
424424

425-
return TRY(send(target_fd, { static_cast<u8*>(mapped) + offset_adjustment, source_length }, 0));
425+
return send(target_fd, { static_cast<u8*>(mapped) + offset_adjustment, source_length }, 0);
426426
}
427427

428428
}

Libraries/LibCore/UDPServerWindows.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ ErrorOr<ByteBuffer> UDPServer::receive(size_t size)
7070
ErrorOr<size_t> UDPServer::send(ReadonlyBytes buffer, sockaddr_in const& to)
7171
{
7272
socklen_t to_len = sizeof(to);
73-
return TRY(Core::System::sendto(m_fd, buffer, 0, (sockaddr const*)&to, to_len));
73+
return Core::System::sendto(m_fd, buffer, 0, (sockaddr const*)&to, to_len);
7474
}
7575

7676
Optional<IPv4Address> UDPServer::local_address() const

Services/RequestServer/RequestPipe.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ ErrorOr<RequestPipe> RequestPipe::create()
5656
#endif
5757
}
5858

59-
ErrorOr<ssize_t> RequestPipe::write(ReadonlyBytes bytes)
59+
ErrorOr<size_t> RequestPipe::write(ReadonlyBytes bytes)
6060
{
6161
#if defined(AK_OS_WINDOWS)
6262
return Core::System::send(m_writer_fd, bytes, 0);

Services/RequestServer/RequestPipe.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class RequestPipe {
2323
int reader_fd() const { return m_reader_fd; }
2424
int writer_fd() const { return m_writer_fd; }
2525

26-
ErrorOr<ssize_t> write(ReadonlyBytes bytes);
26+
ErrorOr<size_t> write(ReadonlyBytes bytes);
2727

2828
private:
2929
RequestPipe(int reader_fd, int writer_fd);

0 commit comments

Comments
 (0)