MCPcopy Create free account
hub / github.com/apple/foundationdb / parseArgsInternal

Method parseArgsInternal

fdbserver/fdbserver.actor.cpp:1115–1842  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1113 CLIOptions() = default;
1114
1115 void parseArgsInternal(int argc, char* argv[]) {
1116 for (int a = 0; a < argc; a++) {
1117 if (a)
1118 commandLine += ' ';
1119 commandLine += argv[a];
1120 }
1121
1122 CSimpleOpt args(argc, argv, g_rgOptions, SO_O_EXACT | SO_O_HYPHEN_TO_UNDERSCORE);
1123
1124 if (argc == 1) {
1125 printUsage(argv[0], false);
1126 flushAndExit(FDB_EXIT_ERROR);
1127 }
1128
1129 while (args.Next()) {
1130 if (args.LastError() == SO_ARG_INVALID_DATA) {
1131 fprintf(stderr, "ERROR: invalid argument to option `%s'\n", args.OptionText());
1132 printHelpTeaser(argv[0]);
1133 flushAndExit(FDB_EXIT_ERROR);
1134 }
1135 if (args.LastError() == SO_ARG_INVALID) {
1136 fprintf(stderr, "ERROR: argument given for option `%s'\n", args.OptionText());
1137 printHelpTeaser(argv[0]);
1138 flushAndExit(FDB_EXIT_ERROR);
1139 }
1140 if (args.LastError() == SO_ARG_MISSING) {
1141 fprintf(stderr, "ERROR: missing argument for option `%s'\n", args.OptionText());
1142 printHelpTeaser(argv[0]);
1143 flushAndExit(FDB_EXIT_ERROR);
1144 }
1145 if (args.LastError() == SO_OPT_INVALID) {
1146 fprintf(stderr, "ERROR: unknown option: `%s'\n", args.OptionText());
1147 printHelpTeaser(argv[0]);
1148 flushAndExit(FDB_EXIT_ERROR);
1149 }
1150 if (args.LastError() != SO_SUCCESS) {
1151 fprintf(stderr, "ERROR: error parsing options\n");
1152 printHelpTeaser(argv[0]);
1153 flushAndExit(FDB_EXIT_ERROR);
1154 }
1155 const char* sRole;
1156 Optional<uint64_t> ti;
1157 std::string argStr;
1158 std::vector<std::string> tmpStrings;
1159
1160 switch (args.OptionId()) {
1161 case OPT_HELP:
1162 printUsage(argv[0], false);
1163 flushAndExit(FDB_EXIT_SUCCESS);
1164 break;
1165 case OPT_DEVHELP:
1166 printUsage(argv[0], true);
1167 flushAndExit(FDB_EXIT_SUCCESS);
1168 break;
1169 case OPT_PRINT_CODE_PROBES:
1170 probe::ICodeProbe::printProbesJSON({ std::string(args.OptionArg()) });
1171 flushAndExit(FDB_EXIT_SUCCESS);
1172 break;

Callers 1

parseArgsMethod · 0.80

Calls 15

flushAndExitFunction · 0.85
fprintfFunction · 0.85
mutateStringFunction · 0.85
splitFunction · 0.85
parse_with_suffixFunction · 0.85
TraceEventClass · 0.85
openTracerFunction · 0.85
ProcessClassClass · 0.85
selectTraceFormatterFunction · 0.85
printfFunction · 0.85
EndpointClass · 0.85
useFutureProtocolVersionFunction · 0.85

Tested by

no test coverage detected