aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/FbTk/App.cc9
-rw-r--r--src/FbTk/FileUtil.cc11
-rw-r--r--src/FbTk/I18n.cc8
-rw-r--r--src/FbTk/SignalHandler.cc8
-rw-r--r--src/FbTk/Timer.cc4
-rw-r--r--src/Makefile.am1
-rw-r--r--src/RootTheme.cc3
-rw-r--r--src/fluxbox.cc2
-rw-r--r--src/main.cc22
9 files changed, 48 insertions, 20 deletions
diff --git a/src/FbTk/App.cc b/src/FbTk/App.cc
index 8157839..f494a0e 100644
--- a/src/FbTk/App.cc
+++ b/src/FbTk/App.cc
@@ -60,8 +60,13 @@ App::App(const char *displayname):m_done(false), m_display(0) {
60 if (displayname != 0 && displayname[0] == '\0') 60 if (displayname != 0 && displayname[0] == '\0')
61 displayname = 0; 61 displayname = 0;
62 m_display = XOpenDisplay(displayname); 62 m_display = XOpenDisplay(displayname);
63 if (!m_display) 63 if (!m_display) {
64 throw std::string("Couldn't connect to XServer"); 64 if (displayname) {
65 throw std::string("Couldn't connect to XServer") + displayname;
66 } else {
67 throw std::string("Couldn't connect to XServer passing null display");
68 }
69 }
65 70
66 FbStringUtil::init(); 71 FbStringUtil::init();
67} 72}
diff --git a/src/FbTk/FileUtil.cc b/src/FbTk/FileUtil.cc
index 5de560b..c92b336 100644
--- a/src/FbTk/FileUtil.cc
+++ b/src/FbTk/FileUtil.cc
@@ -63,9 +63,14 @@ bool FileUtil::isExecutable(const char* filename) {
63 if (!filename || stat(filename, &buf)) 63 if (!filename || stat(filename, &buf))
64 return false; 64 return false;
65 65
66 return buf.st_mode & S_IXUSR || 66 return buf.st_mode & S_IXUSR
67 buf.st_mode & S_IXGRP || 67#ifdef S_IXGRP
68 buf.st_mode & S_IXOTH; 68 || buf.st_mode & S_IXGRP
69#endif
70#ifdef S_IXOTH
71 || buf.st_mode & S_IXOTH
72#endif
73 ;
69} 74}
70 75
71bool FileUtil::copyFile(const char* from, const char* to) { 76bool FileUtil::copyFile(const char* from, const char* to) {
diff --git a/src/FbTk/I18n.cc b/src/FbTk/I18n.cc
index 81ff078..3daa2e9 100644
--- a/src/FbTk/I18n.cc
+++ b/src/FbTk/I18n.cc
@@ -72,17 +72,17 @@ void NLSInit(const char *catalog) {
72 72
73 73
74I18n::I18n():m_multibyte(false), m_utf8_translate(false), m_catalog_fd((nl_catd)(-1)) { 74I18n::I18n():m_multibyte(false), m_utf8_translate(false), m_catalog_fd((nl_catd)(-1)) {
75#ifdef HAVE_SETLOCALE 75#if defined(HAVE_SETLOCALE) && defined(NLS)
76 //make sure we don't get 0 to m_locale string 76 //make sure we don't get 0 to m_locale string
77 char *temp = setlocale(LC_MESSAGES, ""); 77 char *temp = setlocale(LC_MESSAGES, "");
78 m_locale = ( temp ? temp : ""); 78 m_locale = ( temp ? temp : "");
79 if (m_locale.empty()) { 79 if (m_locale.empty()) {
80 cerr<<"Warning: Failed to set locale, reverting to \"C\""<<endl; 80 cerr<<"Warning: Failed to set locale, reverting to \"C\""<<endl;
81#endif // HAVE_SETLOCALE 81#endif // defined(HAVE_SETLOCALE) && defined(NLS)
82 82
83 m_locale = "C"; 83 m_locale = "C";
84 84
85#ifdef HAVE_SETLOCALE 85#if defined(HAVE_SETLOCALE) && defined(NLS)
86 86
87 } else { 87 } else {
88 88
@@ -102,7 +102,7 @@ I18n::I18n():m_multibyte(false), m_utf8_translate(false), m_catalog_fd((nl_catd)
102 if (index != string::npos) 102 if (index != string::npos)
103 m_locale.erase(0,index+1); //erase all characters starting up to index 103 m_locale.erase(0,index+1); //erase all characters starting up to index
104 } 104 }
105#endif // HAVE_SETLOCALE 105#endif // defined(HAVE_SETLOCALE) && defined(NLS)
106} 106}
107 107
108 108
diff --git a/src/FbTk/SignalHandler.cc b/src/FbTk/SignalHandler.cc
index a0a4c4c..5f06210 100644
--- a/src/FbTk/SignalHandler.cc
+++ b/src/FbTk/SignalHandler.cc
@@ -46,6 +46,7 @@ bool SignalHandler::registerHandler(int signum, SignalEventHandler *eh,
46 if (oldhandler_ret != 0) 46 if (oldhandler_ret != 0)
47 *oldhandler_ret = s_signal_handler[signum]; 47 *oldhandler_ret = s_signal_handler[signum];
48 48
49#ifdef HAVE_SIGACTION
49 struct sigaction sa; 50 struct sigaction sa;
50 // set callback 51 // set callback
51 sa.sa_handler = SignalHandler::handleSignal; 52 sa.sa_handler = SignalHandler::handleSignal;
@@ -54,7 +55,12 @@ bool SignalHandler::registerHandler(int signum, SignalEventHandler *eh,
54 55
55 if (sigaction(signum, &sa, 0) == -1) 56 if (sigaction(signum, &sa, 0) == -1)
56 return false; 57 return false;
57 58#else
59 // Fallback code for Windows and other platforms lacking sigaction.
60 if (signal(signum, &SignalHandler::handleSignal) == SIG_ERR) {
61 return false;
62 }
63#endif
58 s_signal_handler[signum] = eh; 64 s_signal_handler[signum] = eh;
59 65
60 return true; 66 return true;
diff --git a/src/FbTk/Timer.cc b/src/FbTk/Timer.cc
index 9b3fe8c..4d9f54f 100644
--- a/src/FbTk/Timer.cc
+++ b/src/FbTk/Timer.cc
@@ -49,7 +49,9 @@
49# include <string.h> 49# include <string.h>
50#endif 50#endif
51 51
52#include <sys/select.h> 52#ifdef HAVE_SYS_SELECT_H
53# include <sys/select.h>
54#endif
53 55
54namespace FbTk { 56namespace FbTk {
55 57
diff --git a/src/Makefile.am b/src/Makefile.am
index 8c204db..1a04e4e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -63,6 +63,7 @@ defaults.hh: Makefile
63defaults.cc: force 63defaults.cc: force
64 @( \ 64 @( \
65 GITDIR=$(top_srcdir)/.git; \ 65 GITDIR=$(top_srcdir)/.git; \
66 echo '// This file is generated from Makefile. Do not edit!'; \
66 echo '#include "defaults.hh"'; \ 67 echo '#include "defaults.hh"'; \
67 echo ''; \ 68 echo ''; \
68 echo 'std::string realProgramName(const std::string& name) {'; \ 69 echo 'std::string realProgramName(const std::string& name) {'; \
diff --git a/src/RootTheme.cc b/src/RootTheme.cc
index d303834..a2aa4a8 100644
--- a/src/RootTheme.cc
+++ b/src/RootTheme.cc
@@ -40,7 +40,10 @@
40#include <iostream> 40#include <iostream>
41 41
42#include <sys/types.h> 42#include <sys/types.h>
43#ifdef HAVE_SYS_WAIT_H
43#include <sys/wait.h> 44#include <sys/wait.h>
45#endif
46
44#ifdef HAVE_CSTRING 47#ifdef HAVE_CSTRING
45 #include <cstring> 48 #include <cstring>
46#else 49#else
diff --git a/src/fluxbox.cc b/src/fluxbox.cc
index 2e5e373..ff44e9f 100644
--- a/src/fluxbox.cc
+++ b/src/fluxbox.cc
@@ -124,7 +124,9 @@
124#include <sys/stat.h> 124#include <sys/stat.h>
125#endif // HAVE_SYS_STAT_H 125#endif // HAVE_SYS_STAT_H
126 126
127#ifdef HAVE_SYS_WAIT_H
127#include <sys/wait.h> 128#include <sys/wait.h>
129#endif // HAVE_SYS_WAIT_H
128 130
129#include <iostream> 131#include <iostream>
130#include <memory> 132#include <memory>
diff --git a/src/main.cc b/src/main.cc
index c47e1d8..7541a28 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -34,6 +34,7 @@
34#include "FbTk/I18n.hh" 34#include "FbTk/I18n.hh"
35#include "FbTk/CommandParser.hh" 35#include "FbTk/CommandParser.hh"
36#include "FbTk/FileUtil.hh" 36#include "FbTk/FileUtil.hh"
37#include "FbTk/StringUtil.hh"
37 38
38//use GNU extensions 39//use GNU extensions
39#ifndef _GNU_SOURCE 40#ifndef _GNU_SOURCE
@@ -114,22 +115,22 @@ static void showInfo(ostream &ostr) {
114 115
115 ostr <<_FB_CONSOLETEXT(Common, DefaultMenuFile, " menu", "default menu file (right aligned - make sure same width as other default values)") 116 ostr <<_FB_CONSOLETEXT(Common, DefaultMenuFile, " menu", "default menu file (right aligned - make sure same width as other default values)")
116 << ": " 117 << ": "
117 << DEFAULTMENU << endl; 118 << FbTk::StringUtil::expandFilename(DEFAULTMENU) << endl;
118 ostr << _FB_CONSOLETEXT(Common, DefaultStyle, " style", "default style (right aligned - make sure same width as other default values)") 119 ostr << _FB_CONSOLETEXT(Common, DefaultStyle, " style", "default style (right aligned - make sure same width as other default values)")
119 << ": " 120 << ": "
120 << DEFAULTSTYLE << endl; 121 << FbTk::StringUtil::expandFilename(DEFAULTSTYLE) << endl;
121 122
122 ostr << _FB_CONSOLETEXT(Common, DefaultKeyFile, " keys", "default key file (right aligned - make sure same width as other default values)") 123 ostr << _FB_CONSOLETEXT(Common, DefaultKeyFile, " keys", "default key file (right aligned - make sure same width as other default values)")
123 << ": " 124 << ": "
124 << DEFAULTKEYSFILE << endl; 125 << FbTk::StringUtil::expandFilename(DEFAULTKEYSFILE) << endl;
125 ostr << _FB_CONSOLETEXT(Common, DefaultInitFile, " init", "default init file (right aligned - make sure same width as other default values)") 126 ostr << _FB_CONSOLETEXT(Common, DefaultInitFile, " init", "default init file (right aligned - make sure same width as other default values)")
126 << ": " 127 << ": "
127 << DEFAULT_INITFILE << endl; 128 << FbTk::StringUtil::expandFilename(DEFAULT_INITFILE) << endl;
128 129
129#ifdef NLS 130#ifdef NLS
130 ostr << _FB_CONSOLETEXT(Common, DefaultLocalePath, " nls", "location for localization files (right aligned - make sure same width as other default values)") 131 ostr << _FB_CONSOLETEXT(Common, DefaultLocalePath, " nls", "location for localization files (right aligned - make sure same width as other default values)")
131 << ": " 132 << ": "
132 << LOCALEPATH << endl; 133 << FbTk::StringUtil::expandFilename(LOCALEPATH) << endl;
133#endif 134#endif
134 135
135 const char NOT[] = "-"; 136 const char NOT[] = "-";
@@ -220,12 +221,12 @@ struct Options {
220 const char* env; 221 const char* env;
221 222
222 env = getenv("DISPLAY"); 223 env = getenv("DISPLAY");
223 if (env) { 224 if (env && strlen(env) > 0) {
224 session_display.assign(env); 225 session_display.assign(env);
225 } 226 }
226 227
227 env = getenv("HOME"); 228 env = getenv("HOME");
228 if (env) { 229 if (env && strlen(env) > 0) {
229 rc_path.assign(std::string(env) + "/." + realProgramName("fluxbox")); 230 rc_path.assign(std::string(env) + "/." + realProgramName("fluxbox"));
230 rc_file = rc_path + "/init"; 231 rc_file = rc_path + "/init";
231 } 232 }
@@ -369,14 +370,15 @@ void setupConfigFiles(const std::string& dirname, const std::string& rc) {
369 // copy default files if needed 370 // copy default files if needed
370 for (size_t i = 0; i < nr_of_cfiles; ++i) { 371 for (size_t i = 0; i < nr_of_cfiles; ++i) {
371 if (cfiles[i].create_file) { 372 if (cfiles[i].create_file) {
372 FbTk::FileUtil::copyFile(cfiles[i].default_name, cfiles[i].filename.c_str()); 373 FbTk::FileUtil::copyFile(FbTk::StringUtil::expandFilename(cfiles[i].default_name).c_str(), cfiles[i].filename.c_str());
373 sync_fs = true; 374 sync_fs = true;
374 } 375 }
375 } 376 }
376 377#ifdef HAVE_SYNC
377 if (sync_fs) { 378 if (sync_fs) {
378 sync(); 379 sync();
379 } 380 }
381#endif
380} 382}
381 383
382 384
@@ -413,7 +415,9 @@ void updateConfigFilesIfNeeded(const std::string& rc_file) {
413 << commandargs 415 << commandargs
414 << "' failed." << endl; 416 << "' failed." << endl;
415 } 417 }
418#ifdef HAVE_SYNC
416 sync(); 419 sync();
420#endif // HAVE_SYNC
417 } 421 }
418} 422}
419 423