from char to std string in getRcFilename and updated to match the new expandFilename

This commit is contained in:
fluxgen 2002-08-14 23:03:07 +00:00
parent 9a8eee45ea
commit 7cb7a71561

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE. // DEALINGS IN THE SOFTWARE.
// $Id: fluxbox.cc,v 1.67 2002/08/14 00:01:10 fluxgen Exp $ // $Id: fluxbox.cc,v 1.68 2002/08/14 23:03:07 fluxgen Exp $
#include "fluxbox.hh" #include "fluxbox.hh"
@ -134,7 +134,8 @@ char *basename (char *s) {
return save; return save;
} }
};
}; // end anonymous namespace
#endif // HAVE_BASENAME #endif // HAVE_BASENAME
@ -290,7 +291,7 @@ Fluxbox::Titlebar Fluxbox::m_titlebar_left[] = {STICK};
Fluxbox::Titlebar Fluxbox::m_titlebar_right[] = {MINIMIZE, MAXIMIZE, CLOSE}; Fluxbox::Titlebar Fluxbox::m_titlebar_right[] = {MINIMIZE, MAXIMIZE, CLOSE};
Fluxbox::Fluxbox(int m_argc, char **m_argv, const char *dpy_name, const char *rc) Fluxbox::Fluxbox(int m_argc, char **m_argv, const char *dpy_name, const char *rc)
: BaseDisplay(m_argv[0], dpy_name), : BaseDisplay(m_argv[0], dpy_name), FbAtoms(getXDisplay()),
m_resourcemanager(), m_screen_rm(), m_resourcemanager(), m_screen_rm(),
m_rc_tabs(m_resourcemanager, true, "session.tabs", "Session.Tabs"), m_rc_tabs(m_resourcemanager, true, "session.tabs", "Session.Tabs"),
m_rc_iconbar(m_resourcemanager, true, "session.iconbar", "Session.Iconbar"), m_rc_iconbar(m_resourcemanager, true, "session.iconbar", "Session.Iconbar"),
@ -348,18 +349,18 @@ key(0)
masked = None; masked = None;
#ifdef SLIT #ifdef SLIT
#ifdef KDE #ifdef KDE
//For KDE dock applets //For KDE dock applets
kwm1_dockwindow = XInternAtom(getXDisplay(), "KWM_DOCKWINDOW", False); //KDE v1.x kwm1_dockwindow = XInternAtom(getXDisplay(), "KWM_DOCKWINDOW", False); //KDE v1.x
kwm2_dockwindow = XInternAtom(getXDisplay(), "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", False); //KDE v2.x kwm2_dockwindow = XInternAtom(getXDisplay(), "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", False); //KDE v2.x
#endif //KDE #endif //KDE
#endif // SLIT #endif // SLIT
#ifdef HAVE_GETPID #ifdef HAVE_GETPID
fluxbox_pid = XInternAtom(getXDisplay(), "_BLACKBOX_PID", False); fluxbox_pid = XInternAtom(getXDisplay(), "_BLACKBOX_PID", False);
#endif // HAVE_GETPID #endif // HAVE_GETPID
int i; int i;
load_rc(); load_rc();
@ -397,10 +398,8 @@ key(0)
timer.setTimeout(0); timer.setTimeout(0);
timer.fireOnce(True); timer.fireOnce(True);
//create keybindings handler and load keys file //create keybindings handler and load keys file
char *keyfilename = StringUtil::expandFilename((*m_rc_keyfile).c_str()); key = new Keys(getXDisplay(), StringUtil::expandFilename(*m_rc_keyfile).c_str());
key = new Keys(getXDisplay(), const_cast<char *>(keyfilename));
delete keyfilename;
ungrab(); ungrab();
} }
@ -1787,16 +1786,11 @@ void Fluxbox::save_rc(void) {
char rc_string[1024]; char rc_string[1024];
auto_ptr<char> dbfile(getRcFilename()); string dbfile(getRcFilename());
// load_rc();
// This overwrites configs made while running, for example
// usage of iconbar and tabs
if (dbfile.size() != 0) {
if (*dbfile) { m_resourcemanager.save(dbfile.c_str(), dbfile.c_str());
m_resourcemanager.save(dbfile.get(), dbfile.get()); m_screen_rm.save(dbfile.c_str(), dbfile.c_str());
m_screen_rm.save(dbfile.get(), dbfile.get());
} else } else
cerr<<"database filename is invalid!"<<endl; cerr<<"database filename is invalid!"<<endl;
@ -1942,10 +1936,10 @@ void Fluxbox::save_rc(void) {
} }
XrmDatabase old_blackboxrc = XrmGetFileDatabase(dbfile.get()); XrmDatabase old_blackboxrc = XrmGetFileDatabase(dbfile.c_str());
XrmMergeDatabases(new_blackboxrc, &old_blackboxrc); //merge database together XrmMergeDatabases(new_blackboxrc, &old_blackboxrc); //merge database together
XrmPutFileDatabase(old_blackboxrc, dbfile.get()); XrmPutFileDatabase(old_blackboxrc, dbfile.c_str());
XrmDestroyDatabase(old_blackboxrc); XrmDestroyDatabase(old_blackboxrc);
#ifdef DEBUG #ifdef DEBUG
cerr<<__FILE__<<"("<<__LINE__<<"): ------------ SAVING DONE"<<endl; cerr<<__FILE__<<"("<<__LINE__<<"): ------------ SAVING DONE"<<endl;
@ -1955,17 +1949,14 @@ void Fluxbox::save_rc(void) {
//-------- getRcFilename ------------- //-------- getRcFilename -------------
// Returns filename of resource file // Returns filename of resource file
//------------------------------------ //------------------------------------
char *Fluxbox::getRcFilename() { string Fluxbox::getRcFilename() {
char *dbfile=0;
if (rc_file.size() == 0) { if (rc_file.size() == 0) { // set default filename
string str(getenv("HOME")+string("/.")+RC_PATH+string("/")+RC_INIT_FILE); string defaultfile(getenv("HOME")+string("/.")+RC_PATH+string("/")+RC_INIT_FILE);
return StringUtil::strdup(str.c_str()); return defaultfile;
}
} else return rc_file;
dbfile = StringUtil::strdup(rc_file.c_str());
return dbfile;
} }
//-------- getDefaultDataFilename ------------- //-------- getDefaultDataFilename -------------
@ -1979,10 +1970,11 @@ void Fluxbox::load_rc(void) {
XrmDatabaseHelper database; XrmDatabaseHelper database;
//get resource filename //get resource filename
auto_ptr<char> dbfile(getRcFilename()); string dbfile(getRcFilename());
if (dbfile.get()) {
if (!m_resourcemanager.load(dbfile.get())) { if (dbfile.size() != 0) {
cerr<<"Faild to load database:"<<dbfile.get()<<endl; if (!m_resourcemanager.load(dbfile.c_str())) {
cerr<<"Faild to load database:"<<dbfile<<endl;
cerr<<"Trying with: "<<DEFAULT_INITFILE<<endl; cerr<<"Trying with: "<<DEFAULT_INITFILE<<endl;
if (!m_resourcemanager.load(DEFAULT_INITFILE)) if (!m_resourcemanager.load(DEFAULT_INITFILE))
cerr<<"Faild to load database: "<<DEFAULT_INITFILE<<endl; cerr<<"Faild to load database: "<<DEFAULT_INITFILE<<endl;
@ -1996,21 +1988,15 @@ void Fluxbox::load_rc(void) {
char *value_type; char *value_type;
if (m_rc_menufile->size()) { if (m_rc_menufile->size()) {
char *tmpvar =StringUtil::expandFilename(m_rc_menufile->c_str()); *m_rc_menufile = StringUtil::expandFilename(*m_rc_menufile);
*m_rc_menufile = (tmpvar==0 ? "" : tmpvar);
if (!m_rc_menufile->size()) if (!m_rc_menufile->size())
m_rc_menufile.setDefaultValue(); m_rc_menufile.setDefaultValue();
delete [] tmpvar;
} else } else
m_rc_menufile.setDefaultValue(); m_rc_menufile.setDefaultValue();
if (m_rc_slitlistfile->size()) { if (m_rc_slitlistfile->size() != 0) {
char *tmpvar =StringUtil::expandFilename(m_rc_slitlistfile->c_str()); *m_rc_slitlistfile = StringUtil::expandFilename(*m_rc_slitlistfile);
*m_rc_slitlistfile = (tmpvar==0 ? "" : tmpvar); } else {
delete [] tmpvar;
}
if (!m_rc_slitlistfile->size()) {
string filename; string filename;
getDefaultDataFilename("slitlist", filename); getDefaultDataFilename("slitlist", filename);
m_rc_slitlistfile.setFromString(filename.c_str()); m_rc_slitlistfile.setFromString(filename.c_str());
@ -2021,17 +2007,15 @@ void Fluxbox::load_rc(void) {
else if (*m_rc_colors_per_channel > 6) else if (*m_rc_colors_per_channel > 6)
*m_rc_colors_per_channel = 6; *m_rc_colors_per_channel = 6;
if (*m_rc_stylefile=="") if (m_rc_stylefile->size() == 0)
*m_rc_stylefile = DEFAULTSTYLE; *m_rc_stylefile = DEFAULTSTYLE;
else { else // expand tilde
auto_ptr<char> tmpvar(StringUtil::expandFilename(m_rc_stylefile->c_str())); *m_rc_stylefile = StringUtil::expandFilename(*m_rc_stylefile);
*m_rc_stylefile = (tmpvar.get()==0 ? "" : tmpvar.get());
}
//load file //load file
database = XrmGetFileDatabase(dbfile.get()); database = XrmGetFileDatabase(dbfile.c_str());
if (database==0) { if (database==0) {
cerr<<"Fluxbox: Cant open "<<dbfile.get()<<" !"<<endl; cerr<<"Fluxbox: Cant open "<<dbfile<<" !"<<endl;
cerr<<"Using: "<<DEFAULT_INITFILE<<endl; cerr<<"Using: "<<DEFAULT_INITFILE<<endl;
database = XrmGetFileDatabase(DEFAULT_INITFILE); database = XrmGetFileDatabase(DEFAULT_INITFILE);
} }
@ -2055,10 +2039,9 @@ void Fluxbox::load_rc(void) {
(resource.auto_raise_delay.tv_sec * 1000); (resource.auto_raise_delay.tv_sec * 1000);
resource.auto_raise_delay.tv_usec *= 1000; resource.auto_raise_delay.tv_usec *= 1000;
{ // expand tilde // expand tilde
auto_ptr<char> tmpvar(StringUtil::expandFilename(m_rc_groupfile->c_str())); *m_rc_groupfile = StringUtil::expandFilename(*m_rc_groupfile);
*m_rc_groupfile = (tmpvar.get()==0 ? "" : tmpvar.get());
}
#ifdef DEBUG #ifdef DEBUG
cerr<<__FILE__<<": Loading groups ("<<*m_rc_groupfile<<")"<<endl; cerr<<__FILE__<<": Loading groups ("<<*m_rc_groupfile<<")"<<endl;
#endif // DEBUG #endif // DEBUG
@ -2069,10 +2052,10 @@ void Fluxbox::load_rc(void) {
void Fluxbox::load_rc(BScreen *screen) { void Fluxbox::load_rc(BScreen *screen) {
//get resource filename //get resource filename
auto_ptr<char> dbfile(getRcFilename()); string dbfile(getRcFilename());
if (dbfile.get()) { if (dbfile.size() != 0) {
if (!m_screen_rm.load(dbfile.get())) { if (!m_screen_rm.load(dbfile.c_str())) {
cerr<<"Faild to load database:"<<dbfile.get()<<endl; cerr<<"Faild to load database:"<<dbfile<<endl;
cerr<<"Trying with: "<<DEFAULT_INITFILE<<endl; cerr<<"Trying with: "<<DEFAULT_INITFILE<<endl;
if (!m_screen_rm.load(DEFAULT_INITFILE)) if (!m_screen_rm.load(DEFAULT_INITFILE))
cerr<<"Faild to load database: "<<DEFAULT_INITFILE<<endl; cerr<<"Faild to load database: "<<DEFAULT_INITFILE<<endl;
@ -2084,7 +2067,7 @@ void Fluxbox::load_rc(BScreen *screen) {
XrmDatabaseHelper database; XrmDatabaseHelper database;
database = XrmGetFileDatabase(dbfile.get()); database = XrmGetFileDatabase(dbfile.c_str());
if (database==0) if (database==0)
database = XrmGetFileDatabase(DEFAULT_INITFILE); database = XrmGetFileDatabase(DEFAULT_INITFILE);
@ -2120,9 +2103,9 @@ void Fluxbox::load_rc(BScreen *screen) {
sprintf(class_lookup, "Session.Screen%d.WorkspaceNames", screen_number); sprintf(class_lookup, "Session.Screen%d.WorkspaceNames", screen_number);
if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
&value)) { &value)) {
#ifdef DEBUG #ifdef DEBUG
cerr<<__FILE__<<"("<<__LINE__<<"): Workspaces="<<screen->getNumberOfWorkspaces()<<endl; cerr<<__FILE__<<"("<<__LINE__<<"): Workspaces="<<screen->getNumberOfWorkspaces()<<endl;
#endif #endif // DEBUG
char *search = StringUtil::strdup(value.addr); char *search = StringUtil::strdup(value.addr);
int i; int i;
@ -2130,7 +2113,7 @@ void Fluxbox::load_rc(BScreen *screen) {
char *nn; char *nn;
if (! i) nn = strtok(search, ","); if (! i) nn = strtok(search, ",");
else nn = strtok(NULL, ","); else nn = strtok(0, ",");
if (nn) if (nn)
screen->addWorkspaceName(nn); screen->addWorkspaceName(nn);
@ -2146,54 +2129,54 @@ void Fluxbox::load_rc(BScreen *screen) {
if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
&value)) { &value)) {
if (! strncasecmp(value.addr, "clicktofocus", value.size)) { if (! strncasecmp(value.addr, "clicktofocus", value.size)) {
screen->saveAutoRaise(False); screen->saveAutoRaise(false);
screen->saveSloppyFocus(False); screen->saveSloppyFocus(false);
screen->saveSemiSloppyFocus(False); screen->saveSemiSloppyFocus(false);
} else if (! strncasecmp(value.addr, "autoraisesloppyfocus", value.size)) { } else if (! strncasecmp(value.addr, "autoraisesloppyfocus", value.size)) {
screen->saveSemiSloppyFocus(False); screen->saveSemiSloppyFocus(false);
screen->saveSloppyFocus(True); screen->saveSloppyFocus(true);
screen->saveAutoRaise(True); screen->saveAutoRaise(true);
} else if (! strncasecmp(value.addr, "autoraisesemisloppyfocus", value.size)) { } else if (! strncasecmp(value.addr, "autoraisesemisloppyfocus", value.size)) {
screen->saveSloppyFocus(False); screen->saveSloppyFocus(false);
screen->saveSemiSloppyFocus(True); screen->saveSemiSloppyFocus(true);
screen->saveAutoRaise(True); screen->saveAutoRaise(true);
} else if (! strncasecmp(value.addr, "semisloppyfocus", value.size)) { } else if (! strncasecmp(value.addr, "semisloppyfocus", value.size)) {
screen->saveSloppyFocus(False); screen->saveSloppyFocus(false);
screen->saveSemiSloppyFocus(True); screen->saveSemiSloppyFocus(true);
screen->saveAutoRaise(False); screen->saveAutoRaise(false);
} else { } else {
screen->saveSemiSloppyFocus(False); screen->saveSemiSloppyFocus(false);
screen->saveSloppyFocus(True); screen->saveSloppyFocus(true);
screen->saveAutoRaise(False); screen->saveAutoRaise(false);
} }
} else { } else {
screen->saveSemiSloppyFocus(False); screen->saveSemiSloppyFocus(false);
screen->saveSloppyFocus(True); //TODO: fluxgen, shouldn't this be false? screen->saveSloppyFocus(true);
screen->saveAutoRaise(False); //as click should be default, or? screen->saveAutoRaise(false);
} }
sprintf(name_lookup, "session.screen%d.windowPlacement", screen_number); sprintf(name_lookup, "session.screen%d.windowPlacement", screen_number);
sprintf(class_lookup, "Session.Screen%d.WindowPlacement", screen_number); sprintf(class_lookup, "Session.Screen%d.WindowPlacement", screen_number);
if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
&value)) &value)) {
if (! strncasecmp(value.addr, "RowSmartPlacement", value.size)) if (! strncasecmp(value.addr, "RowSmartPlacement", value.size))
screen->savePlacementPolicy(BScreen::ROWSMARTPLACEMENT); screen->savePlacementPolicy(BScreen::ROWSMARTPLACEMENT);
else if (! strncasecmp(value.addr, "ColSmartPlacement", value.size)) else if (! strncasecmp(value.addr, "ColSmartPlacement", value.size))
screen->savePlacementPolicy(BScreen::COLSMARTPLACEMENT); screen->savePlacementPolicy(BScreen::COLSMARTPLACEMENT);
else else
screen->savePlacementPolicy(BScreen::CASCADEPLACEMENT); screen->savePlacementPolicy(BScreen::CASCADEPLACEMENT);
else } else
screen->savePlacementPolicy(BScreen::ROWSMARTPLACEMENT); screen->savePlacementPolicy(BScreen::ROWSMARTPLACEMENT);
#ifdef SLIT #ifdef SLIT
sprintf(name_lookup, "session.screen%d.slit.placement", screen_number); sprintf(name_lookup, "session.screen%d.slit.placement", screen_number);
sprintf(class_lookup, "Session.Screen%d.Slit.Placement", screen_number); sprintf(class_lookup, "Session.Screen%d.Slit.Placement", screen_number);
if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
&value)) &value)) {
if (! strncasecmp(value.addr, "TopLeft", value.size)) if (! strncasecmp(value.addr, "TopLeft", value.size))
screen->saveSlitPlacement(Slit::TOPLEFT); screen->saveSlitPlacement(Slit::TOPLEFT);
else if (! strncasecmp(value.addr, "CenterLeft", value.size)) else if (! strncasecmp(value.addr, "CenterLeft", value.size))
@ -2210,40 +2193,40 @@ void Fluxbox::load_rc(BScreen *screen) {
screen->saveSlitPlacement(Slit::BOTTOMRIGHT); screen->saveSlitPlacement(Slit::BOTTOMRIGHT);
else else
screen->saveSlitPlacement(Slit::CENTERRIGHT); screen->saveSlitPlacement(Slit::CENTERRIGHT);
else } else
screen->saveSlitPlacement(Slit::CENTERRIGHT); screen->saveSlitPlacement(Slit::CENTERRIGHT);
sprintf(name_lookup, "session.screen%d.slit.direction", screen_number); sprintf(name_lookup, "session.screen%d.slit.direction", screen_number);
sprintf(class_lookup, "Session.Screen%d.Slit.Direction", screen_number); sprintf(class_lookup, "Session.Screen%d.Slit.Direction", screen_number);
if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
&value)) &value)) {
if (! strncasecmp(value.addr, "Horizontal", value.size)) if (! strncasecmp(value.addr, "Horizontal", value.size))
screen->saveSlitDirection(Slit::HORIZONTAL); screen->saveSlitDirection(Slit::HORIZONTAL);
else else
screen->saveSlitDirection(Slit::VERTICAL); screen->saveSlitDirection(Slit::VERTICAL);
else } else
screen->saveSlitDirection(Slit::VERTICAL); screen->saveSlitDirection(Slit::VERTICAL);
sprintf(name_lookup, "session.screen%d.slit.onTop", screen_number); sprintf(name_lookup, "session.screen%d.slit.onTop", screen_number);
sprintf(class_lookup, "Session.Screen%d.Slit.OnTop", screen_number); sprintf(class_lookup, "Session.Screen%d.Slit.OnTop", screen_number);
if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
&value)) &value)) {
if (! strncasecmp(value.addr, "True", value.size)) if (! strncasecmp(value.addr, "True", value.size))
screen->saveSlitOnTop(True); screen->saveSlitOnTop(True);
else else
screen->saveSlitOnTop(False); screen->saveSlitOnTop(False);
else } else
screen->saveSlitOnTop(False); screen->saveSlitOnTop(False);
sprintf(name_lookup, "session.screen%d.slit.autoHide", screen_number); sprintf(name_lookup, "session.screen%d.slit.autoHide", screen_number);
sprintf(class_lookup, "Session.Screen%d.Slit.AutoHide", screen_number); sprintf(class_lookup, "Session.Screen%d.Slit.AutoHide", screen_number);
if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
&value)) &value)) {
if (! strncasecmp(value.addr, "True", value.size)) if (! strncasecmp(value.addr, "True", value.size))
screen->saveSlitAutoHide(True); screen->saveSlitAutoHide(True);
else else
screen->saveSlitAutoHide(False); screen->saveSlitAutoHide(False);
else } else
screen->saveSlitAutoHide(False); screen->saveSlitAutoHide(False);
#ifdef XINERAMA #ifdef XINERAMA
@ -2287,9 +2270,12 @@ void Fluxbox::load_rc(BScreen *screen) {
if (XrmGetResource(*database, name_lookup, class_lookup, &value_type, if (XrmGetResource(*database, name_lookup, class_lookup, &value_type,
&value)) { &value)) {
int clock; int clock;
if (sscanf(value.addr, "%d", &clock) != 1) screen->saveClock24Hour(False); if (sscanf(value.addr, "%d", &clock) != 1)
else if (clock == 24) screen->saveClock24Hour(True); screen->saveClock24Hour(False);
else screen->saveClock24Hour(False); else if (clock == 24)
screen->saveClock24Hour(True);
else
screen->saveClock24Hour(False);
} else } else
screen->saveClock24Hour(False); screen->saveClock24Hour(False);
#endif // HAVE_STRFTIME #endif // HAVE_STRFTIME
@ -2313,9 +2299,9 @@ void Fluxbox::load_rc(BScreen *screen) {
void Fluxbox::loadRootCommand(BScreen *screen) { void Fluxbox::loadRootCommand(BScreen *screen) {
XrmDatabase database = (XrmDatabase) 0; XrmDatabase database = (XrmDatabase) 0;
auto_ptr<char> dbfile(getRcFilename()); string dbfile(getRcFilename());
database = XrmGetFileDatabase(dbfile.get()); database = XrmGetFileDatabase(dbfile.c_str());
if (!database) if (!database)
database = XrmGetFileDatabase(DEFAULT_INITFILE); database = XrmGetFileDatabase(DEFAULT_INITFILE);
@ -2331,28 +2317,29 @@ void Fluxbox::loadRootCommand(BScreen *screen) {
} }
void Fluxbox::reload_rc(void) { void Fluxbox::reload_rc() {
load_rc(); load_rc();
reconfigure(); reconfigure();
} }
void Fluxbox::reconfigure(void) { void Fluxbox::reconfigure() {
reconfigure_wait = true; reconfigure_wait = true;
if (! timer.isTiming()) timer.start(); if (! timer.isTiming())
timer.start();
} }
void Fluxbox::real_reconfigure(void) { void Fluxbox::real_reconfigure() {
XrmDatabase new_blackboxrc = (XrmDatabase) 0; XrmDatabase new_blackboxrc = (XrmDatabase) 0;
auto_ptr<char> dbfile(getRcFilename()); string dbfile(getRcFilename());
XrmDatabase old_blackboxrc = XrmGetFileDatabase(dbfile.get()); XrmDatabase old_blackboxrc = XrmGetFileDatabase(dbfile.c_str());
XrmMergeDatabases(new_blackboxrc, &old_blackboxrc); XrmMergeDatabases(new_blackboxrc, &old_blackboxrc);
XrmPutFileDatabase(old_blackboxrc, dbfile.get()); XrmPutFileDatabase(old_blackboxrc, dbfile.c_str());
if (old_blackboxrc) if (old_blackboxrc)
XrmDestroyDatabase(old_blackboxrc); XrmDestroyDatabase(old_blackboxrc);
@ -2377,9 +2364,7 @@ void Fluxbox::real_reconfigure(void) {
(*sit)->reconfigure(); (*sit)->reconfigure();
//reconfigure keys //reconfigure keys
char *keyfilename = StringUtil::expandFilename(m_rc_keyfile->c_str()); key->reconfigure(StringUtil::expandFilename(*m_rc_keyfile).c_str());
key->reconfigure(keyfilename);
delete keyfilename;
//reconfigure tabs //reconfigure tabs
reconfigureTabs(); reconfigureTabs();