|
@@ -24,7 +24,7 @@
|
|
FlatPtr arg[SC_NARG];
|
|
FlatPtr arg[SC_NARG];
|
|
char outbuf[BUFSIZ];
|
|
char outbuf[BUFSIZ];
|
|
|
|
|
|
-using Arguments = Vector<char const*>;
|
|
|
|
|
|
+using Arguments = Vector<DeprecatedString>;
|
|
using ArgIter = Arguments::Iterator;
|
|
using ArgIter = Arguments::Iterator;
|
|
|
|
|
|
static FlatPtr parse_from(ArgIter&);
|
|
static FlatPtr parse_from(ArgIter&);
|
|
@@ -41,7 +41,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|
{
|
|
{
|
|
bool output_buffer = false;
|
|
bool output_buffer = false;
|
|
bool list_syscalls = false;
|
|
bool list_syscalls = false;
|
|
- Vector<char const*> syscall_arguments;
|
|
|
|
|
|
+ Arguments syscall_arguments;
|
|
|
|
|
|
Core::ArgsParser args_parser;
|
|
Core::ArgsParser args_parser;
|
|
args_parser.set_general_help(
|
|
args_parser.set_general_help(
|
|
@@ -140,7 +140,7 @@ static FlatPtr parse_parameter_buffer(ArgIter& iter)
|
|
{
|
|
{
|
|
Vector<FlatPtr> params_vec;
|
|
Vector<FlatPtr> params_vec;
|
|
while (!iter.is_end()) {
|
|
while (!iter.is_end()) {
|
|
- if (strcmp(*iter, "]") == 0) {
|
|
|
|
|
|
+ if (*iter == "]"sv) {
|
|
++iter;
|
|
++iter;
|
|
return as_buf(params_vec);
|
|
return as_buf(params_vec);
|
|
}
|
|
}
|
|
@@ -155,36 +155,34 @@ static FlatPtr parse_parameter_buffer(ArgIter& iter)
|
|
|
|
|
|
static FlatPtr parse_from(ArgIter& iter)
|
|
static FlatPtr parse_from(ArgIter& iter)
|
|
{
|
|
{
|
|
- char const* this_arg = *iter;
|
|
|
|
|
|
+ auto const& this_arg_string = *iter;
|
|
|
|
+ auto* this_arg = this_arg_string.characters();
|
|
++iter;
|
|
++iter;
|
|
|
|
|
|
// Is it a forced literal?
|
|
// Is it a forced literal?
|
|
if (this_arg[0] == ',') {
|
|
if (this_arg[0] == ',') {
|
|
this_arg += 1;
|
|
this_arg += 1;
|
|
- dbgln_if(SYSCALL_1_DEBUG, "Using (forced) string >>{}<< at {:p}", this_arg, (FlatPtr)this_arg);
|
|
|
|
|
|
+ dbgln_if(SYSCALL_1_DEBUG, "Using (forced) string >>{}<< at {:p}", this_arg_string, (FlatPtr)this_arg);
|
|
return (FlatPtr)this_arg;
|
|
return (FlatPtr)this_arg;
|
|
}
|
|
}
|
|
|
|
|
|
// Is it the output buffer?
|
|
// Is it the output buffer?
|
|
- if (strcmp(this_arg, "buf") == 0)
|
|
|
|
|
|
+ if (this_arg_string == "buf"sv)
|
|
return (FlatPtr)outbuf;
|
|
return (FlatPtr)outbuf;
|
|
|
|
|
|
// Is it a parameter buffer?
|
|
// Is it a parameter buffer?
|
|
- if (strcmp(this_arg, "[") == 0)
|
|
|
|
|
|
+ if (this_arg_string == "["sv)
|
|
return parse_parameter_buffer(iter);
|
|
return parse_parameter_buffer(iter);
|
|
|
|
|
|
// Is it a number?
|
|
// Is it a number?
|
|
- char* endptr = nullptr;
|
|
|
|
- FlatPtr l = strtoul(this_arg, &endptr, 0);
|
|
|
|
- if (*endptr == 0) {
|
|
|
|
- return l;
|
|
|
|
- }
|
|
|
|
|
|
+ if (auto l = this_arg_string.to_uint(); l.has_value())
|
|
|
|
+ return *l;
|
|
|
|
|
|
// Then it must be a string:
|
|
// Then it must be a string:
|
|
- if (strcmp(this_arg, "]") == 0)
|
|
|
|
|
|
+ if (this_arg_string == "]"sv)
|
|
fprintf(stderr, "Warning: Treating unmatched ']' as literal string\n");
|
|
fprintf(stderr, "Warning: Treating unmatched ']' as literal string\n");
|
|
|
|
|
|
- dbgln_if(SYSCALL_1_DEBUG, "Using (detected) string >>{}<< at {:p}", this_arg, (FlatPtr)this_arg);
|
|
|
|
|
|
+ dbgln_if(SYSCALL_1_DEBUG, "Using (detected) string >>{}<< at {:p}", this_arg_string, (FlatPtr)this_arg);
|
|
|
|
|
|
return (FlatPtr)this_arg;
|
|
return (FlatPtr)this_arg;
|
|
}
|
|
}
|