- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages

- File List
- File Members

# schroot-base-run.h

Go to the documentation of this file.

    00001 /* Copyright © 2005-2006  Roger Leigh <rleigh@debian.org>
    00002  *
    00003  * schroot is free software; you can redistribute it and/or modify it
    00004  * under the terms of the GNU General Public License as published by
    00005  * the Free Software Foundation; either version 2 of the License, or
    00006  * (at your option) any later version.
    00007  *
    00008  * schroot is distributed in the hope that it will be useful, but
    00009  * WITHOUT ANY WARRANTY; without even the implied warranty of
    00010  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00011  * General Public License for more details.
    00012  *
    00013  * You should have received a copy of the GNU General Public License
    00014  * along with this program; if not, write to the Free Software
    00015  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
    00016  * MA  02111-1307  USA
    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         // Set up locale.
    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 /* SCHROOT_BASE_RUN_H */
    00078
    00079 /*
    00080  * Local Variables:
    00081  * mode:C++
    00082  * End:
    00083  */