12 static int joedb_client(
int argc,
char **argv)
15 const Open_Mode default_mode = File::lockable
23 std::cerr <<
"usage: " << argv[0];
24 client_parser.print_help(std::cerr);
28 Client &client = client_parser.parse(argc - 1, argv + 1);
30 std::unique_ptr<Client_Command_Processor> interpreter;
32 Writable_Client *writable_client =
dynamic_cast<Writable_Client*
>(&client);
34 if (writable_client && !client.is_pullonly())
35 interpreter.reset(
new Writable_Client_Command_Processor(*writable_client));
37 interpreter.reset(
new Client_Command_Processor(client));
39 interpreter->set_prompt(
true);
40 interpreter->main_loop(std::cin, std::cout);
47int 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_exception_catcher(int(*main)(int, char **), int argc, char **argv)
Catch exception from main.