1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 01:57:45 +00:00

AK: Make string-to-number conversion helpers return Optional

Get rid of the weird old signature:

- int StringType::to_int(bool& ok) const

And replace it with sensible new signature:

- Optional<int> StringType::to_int() const
This commit is contained in:
Andreas Kling 2020-06-12 21:07:52 +02:00
parent 15f4043a7a
commit fdfda6dec2
55 changed files with 354 additions and 455 deletions

View file

@ -124,14 +124,13 @@ next_entry:
auto& e_passwd = parts[1];
auto& e_gid_string = parts[2];
auto& e_members_string = parts[3];
bool ok;
gid_t e_gid = e_gid_string.to_uint(ok);
if (!ok) {
auto e_gid = e_gid_string.to_uint();
if (!e_gid.has_value()) {
fprintf(stderr, "getgrent(): Malformed GID on line %u\n", __grdb_line_number);
goto next_entry;
}
auto members = e_members_string.split(',');
__grdb_entry->gr_gid = e_gid;
__grdb_entry->gr_gid = e_gid.value();
__grdb_entry->gr_name = __grdb_entry->name_buffer;
__grdb_entry->gr_passwd = __grdb_entry->passwd_buffer;
for (size_t i = 0; i < members.size(); ++i) {

View file

@ -383,12 +383,11 @@ static bool fill_getserv_buffers(char* line, ssize_t read)
perror("malformed services file: port/protocol");
return false;
}
bool conversion_checker;
__getserv_port_buffer = port_protocol_split[0].to_int(conversion_checker);
if (!conversion_checker) {
auto number = port_protocol_split[0].to_int();
if (!number.has_value())
return false;
}
__getserv_port_buffer = number.value();
//Removing any annoying whitespace at the end of the protocol.
port_protocol_split[1].replace(" ", "", true);
@ -571,12 +570,11 @@ static bool fill_getproto_buffers(char* line, ssize_t read)
return false;
}
bool conversion_checker;
__getproto_protocol_buffer = split_line[1].to_int(conversion_checker);
if (!conversion_checker) {
auto number = split_line[1].to_int();
if (!number.has_value())
return false;
}
__getproto_protocol_buffer = number.value();
__getproto_alias_list_buffer.clear();

View file

@ -128,19 +128,18 @@ next_entry:
auto& e_gecos = parts[4];
auto& e_dir = parts[5];
auto& e_shell = parts[6];
bool ok;
uid_t e_uid = e_uid_string.to_uint(ok);
if (!ok) {
auto e_uid = e_uid_string.to_uint();
if (!e_uid.has_value()) {
fprintf(stderr, "getpwent(): Malformed UID on line %u\n", __pwdb_line_number);
goto next_entry;
}
gid_t e_gid = e_gid_string.to_uint(ok);
if (!ok) {
auto e_gid = e_gid_string.to_uint();
if (!e_gid.has_value()) {
fprintf(stderr, "getpwent(): Malformed GID on line %u\n", __pwdb_line_number);
goto next_entry;
}
__pwdb_entry->pw_uid = e_uid;
__pwdb_entry->pw_gid = e_gid;
__pwdb_entry->pw_uid = e_uid.value();
__pwdb_entry->pw_gid = e_gid.value();
__pwdb_entry->pw_name = __pwdb_entry->name_buffer;
__pwdb_entry->pw_passwd = __pwdb_entry->passwd_buffer;
__pwdb_entry->pw_gecos = __pwdb_entry->gecos_buffer;