12 static int client(Arguments &arguments)
15 const Open_Mode default_mode = File::lockable
19 Client_Parser client_parser
26 if (!client_parser.get())
28 arguments.print_help(std::cerr) <<
'\n';
29 client_parser.print_help(std::cerr);
33 Client &client = *client_parser.get();
35 std::unique_ptr<Client_Command_Processor> interpreter;
37 Writable_Client *writable_client =
dynamic_cast<Writable_Client*
>(&client);
39 if (writable_client && !client.is_pullonly())
40 interpreter.reset(
new Writable_Client_Command_Processor(*writable_client));
42 interpreter.reset(
new Client_Command_Processor(client));
44 interpreter->set_prompt(
true);
45 interpreter->main_loop(std::cin, std::cout);
52int 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.