13 static int client(Arguments &arguments)
16 Parsed_Logger logger(arguments);
18 const Open_Mode default_mode = File::lockable
22 Client_Parser client_parser
30 if (!client_parser.get())
32 arguments.print_help(std::cerr) <<
'\n';
33 client_parser.print_help(std::cerr);
37 Client &client = *client_parser.get();
39 std::unique_ptr<Client_Command_Processor> interpreter;
41 Writable_Client *writable_client =
dynamic_cast<Writable_Client*
>(&client);
43 if (writable_client && !client.is_pullonly())
44 interpreter.reset(
new Writable_Client_Command_Processor(*writable_client));
46 interpreter.reset(
new Client_Command_Processor(client));
48 interpreter->set_prompt(
true);
49 interpreter->main_loop(std::cin, std::cout);
56int main(
int argc,
char **argv)
@ shared_write
like write_existing_or_create_new, but does not lock the file, and does not fail if locked
@ write_existing_or_create_new
either write_existing or create_new depending on whether the file exists. Racy in Posix,...
int main_wrapper(int(*main)(Arguments &), int argc, char **argv)
Process command-line arguments and catch exceptions from main.