diff --git a/src/llnode.cc b/src/llnode.cc index 10b4b7c4..d37bf8f1 100644 --- a/src/llnode.cc +++ b/src/llnode.cc @@ -28,63 +28,6 @@ using lldb::SBValue; using lldb::eReturnStatusFailed; using lldb::eReturnStatusSuccessFinishResult; -char** CommandBase::ParseInspectOptions(char** cmd, - v8::Value::InspectOptions* options) { - static struct option opts[] = { - {"full-string", no_argument, nullptr, 'F'}, - {"string-length", required_argument, nullptr, 'l'}, - {"array-length", required_argument, nullptr, 'l'}, - {"length", required_argument, nullptr, 'l'}, - {"print-map", no_argument, nullptr, 'm'}, - {"print-source", no_argument, nullptr, 's'}, - {"verbose", no_argument, nullptr, 'v'}, - {"detailed", no_argument, nullptr, 'd'}, - {nullptr, 0, nullptr, 0}}; - - int argc = 1; - for (char** p = cmd; p != nullptr && *p != nullptr; p++) argc++; - - char* args[argc]; - - // Make this look like a command line, we need a valid element at index 0 - // for getopt_long to use in its error messages. - char name[] = "llnode"; - args[0] = name; - for (int i = 0; i < argc - 1; i++) args[i + 1] = cmd[i]; - - // Reset getopts. - optind = 0; - opterr = 1; - do { - int arg = getopt_long(argc, args, "Fmsdvl:", opts, nullptr); - if (arg == -1) break; - - switch (arg) { - case 'F': - options->length = 0; - break; - case 'm': - options->print_map = true; - break; - case 'l': - options->length = strtol(optarg, nullptr, 10); - break; - case 's': - options->print_source = true; - break; - case 'd': - case 'v': - options->detailed = true; - break; - default: - continue; - } - } while (true); - - // Use the original cmd array for our return value. - return &cmd[optind - 1]; -} - bool BacktraceCmd::DoExecute(SBDebugger d, char** cmd, SBCommandReturnObject& result) { diff --git a/src/llnode.h b/src/llnode.h index 5340571c..13ff6859 100644 --- a/src/llnode.h +++ b/src/llnode.h @@ -10,8 +10,6 @@ namespace llnode { class CommandBase : public lldb::SBCommandPluginInterface { - public: - char** ParseInspectOptions(char** cmd, v8::Value::InspectOptions* options); }; class BacktraceCmd : public CommandBase { diff --git a/src/llscan.cc b/src/llscan.cc index e9cfa404..193664af 100644 --- a/src/llscan.cc +++ b/src/llscan.cc @@ -41,6 +41,62 @@ const char* const const char* const FindReferencesCmd::StringScanner::array_reference_template = "0x%" PRIx64 ": %s[%" PRId64 "]=0x%" PRIx64 " '%s'\n"; +char** ParseInspectOptions(char** cmd, v8::Value::InspectOptions* options) { + static struct option opts[] = { + {"full-string", no_argument, nullptr, 'F'}, + {"string-length", required_argument, nullptr, 'l'}, + {"array-length", required_argument, nullptr, 'l'}, + {"length", required_argument, nullptr, 'l'}, + {"print-map", no_argument, nullptr, 'm'}, + {"print-source", no_argument, nullptr, 's'}, + {"verbose", no_argument, nullptr, 'v'}, + {"detailed", no_argument, nullptr, 'd'}, + {nullptr, 0, nullptr, 0}}; + + int argc = 1; + for (char** p = cmd; p != nullptr && *p != nullptr; p++) argc++; + + char* args[argc]; + + // Make this look like a command line, we need a valid element at index 0 + // for getopt_long to use in its error messages. + char name[] = "llnode"; + args[0] = name; + for (int i = 0; i < argc - 1; i++) args[i + 1] = cmd[i]; + + // Reset getopts. + optind = 0; + opterr = 1; + do { + int arg = getopt_long(argc, args, "Fmsdvl:", opts, nullptr); + if (arg == -1) break; + + switch (arg) { + case 'F': + options->length = 0; + break; + case 'm': + options->print_map = true; + break; + case 'l': + options->length = strtol(optarg, nullptr, 10); + break; + case 's': + options->print_source = true; + break; + case 'd': + case 'v': + options->detailed = true; + break; + default: + continue; + } + } while (true); + + // Use the original cmd array for our return value. + return &cmd[optind - 1]; +} + bool FindObjectsCmd::DoExecute(SBDebugger d, char** cmd, SBCommandReturnObject& result) { SBTarget target = d.GetSelectedTarget(); diff --git a/src/llscan.h b/src/llscan.h index 9e352984..9b2ff069 100644 --- a/src/llscan.h +++ b/src/llscan.h @@ -18,6 +18,7 @@ typedef std::map ReferencesByValueMap; typedef std::map ReferencesByPropertyMap; typedef std::map ReferencesByStringMap; +char** ParseInspectOptions(char** cmd, v8::Value::InspectOptions* options); class FindObjectsCmd : public CommandBase { public: