-
-bool _shutdown = false;
-char **_argv;
-char *_display_name = 0;
-Display *_display = 0;
-
-#ifdef HAVE_SIGACTION
-static void signalhandler(int sig)
-#else // HAVE_SIGACTION
-static RETSIGTYPE signalhandler(int sig)
-#endif // HAVE_SIGACTION
-{
- switch (sig) {
- case SIGSEGV:
- cout << "Segmentation fault. Aborting and dumping core.\n";
- abort();
- case SIGHUP:
- cout << "Restarting on request.\n";
- execvp(_argv[0], _argv);
- execvp(basename(_argv[0]), _argv);
- }
- _shutdown = true;
-
-#ifndef HAVE_SIGACTION
- // assume broken, braindead sysv signal semantics
- signal(sig, (RETSIGTYPE (*)(int)) signalhandler);
-#endif // HAVE_SIGACTION
-}
-
-
-int main(int, char **argv) {
- _argv = argv;
-
-#ifdef HAVE_SIGACTION
- struct sigaction action;
-
- action.sa_handler = signalhandler;
- action.sa_mask = sigset_t();
- action.sa_flags = SA_NOCLDSTOP | SA_NODEFER;
-
- sigaction(SIGPIPE, &action, NULL);
- sigaction(SIGSEGV, &action, NULL);
- sigaction(SIGFPE, &action, NULL);
- sigaction(SIGTERM, &action, NULL);
- sigaction(SIGINT, &action, NULL);
- sigaction(SIGHUP, &action, NULL);
-#else // !HAVE_SIGACTION
- signal(SIGPIPE, (RETSIGTYPE (*)(int)) signalhandler);
- signal(SIGSEGV, (RETSIGTYPE (*)(int)) signalhandler);
- signal(SIGFPE, (RETSIGTYPE (*)(int)) signalhandler);
- signal(SIGTERM, (RETSIGTYPE (*)(int)) signalhandler);
- signal(SIGINT, (RETSIGTYPE (*)(int)) signalhandler);
- signal(SIGHUP, (RETSIGTYPE (*)(int)) signalhandler);
-#endif // HAVE_SIGACTION
-
- _display = XOpenDisplay(_display_name);
- if (! _display) {
- cout << "Connection to X server '" << _display_name << "' failed.\n";
- return 1;
- }
-
- while (! _shutdown) {
- usleep(500);
+using std::string;
+
+#include "epist.hh"
+#include "../../src/i18n.hh"
+
+I18n i18n;
+
+int main(int argc, char **argv) {
+ i18n.openCatalog("openbox.cat");
+
+ // parse the command line
+ char *display_name = 0;
+ char *rc_file = 0;
+
+ for (int i = 1; i < argc; ++i) {
+ if (string(argv[i]) == "-display") {
+ if (++i >= argc) {
+ fprintf(stderr, i18n(mainSet, mainDISPLAYRequiresArg,
+ "error: '-display' requires an argument\n"));
+ exit(1);
+ }
+ display_name = argv[i];
+ } else if (string(argv[i]) == "-rc") {
+ if (++i >= argc) {
+ fprintf(stderr, i18n(mainSet, mainRCRequiresArg,
+ "error: '-rc' requires an argument\n"));
+ exit(1);
+ }
+ rc_file = argv[i];
+ }