00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef SCHROOT_BASE_RUN_H
00021 #define SCHROOT_BASE_RUN_H
00022
00023 #include <schroot/schroot-base-options.h>
00024
00025 #include <cstdlib>
00026 #include <iostream>
00027 #include <string>
00028
00029 namespace schroot_base
00030 {
00031
00041 template<class O, class M>
00042 static int
00043 run (int argc,
00044 char *argv[])
00045 {
00046 typedef O options_type;
00047 typedef M main_type;
00048
00049 try
00050 {
00051
00052 std::locale::global(std::locale(""));
00053 std::cout.imbue(std::locale());
00054 std::cerr.imbue(std::locale());
00055
00056 bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
00057 textdomain (GETTEXT_PACKAGE);
00058
00059 typename options_type::ptr opts(new options_type);
00060 main_type kit(opts);
00061 exit (kit.run(argc, argv));
00062 }
00063 catch (std::exception const& e)
00064 {
00065 sbuild::log_exception_error(e);
00066 exit(EXIT_FAILURE);
00067 }
00068 catch (...)
00069 {
00070 sbuild::log_error() << _("An unknown exception occurred") << std::endl;
00071 exit(EXIT_FAILURE);
00072 }
00073 }
00074
00075 }
00076
00077 #endif
00078
00079
00080
00081
00082
00083