--- /dev/null
+Small walk trough of libtool patch (what in there ...)
+
+- Toplevel Makefile.in
+ - Added depend definition for LIBTOOL
+ - Rewrote some of the autoconf targets for the new name and always remove the cache autoconf makes
+ - Updated some install targets to use the RMF macro (minor cleanup)
+ - Remove libtool (which is autogenerated by configure) on make distclean
+
+- autoconf/Make.common.in
+ - Added libdir and includedir
+ - Changed RM and RMF macros (See configure.in warning why its named @REMOVE@ now)
+ - Small update in INSTALL_ macros to use the INSTALL_PROGRAM macro better and not have configure
+ replace all the instances.
+ - Added the LIBTOOL macros which are used when building with libtool (the DEFAULT_* macros
+ are a workaround for easily disabling libtool and build in the old fashion way but still use
+ the same Makefile.in everywhere.
+
+- autoconf/aclocal.m4
+ - Added libtool m4 files to be included
+
+- autoconf/bacula-macros/db.m4
+ - Updated all help strings to use the Autoconf AC_HELP_STRING function which formats help strings
+ better so we never have to change those in the future (e.g. relayout ever again even when changing the content)
+
+- autoconf/config.h.in
+ - updated by configure run with libtool updates
+
+- autoconf/config.on.save
+ - removed redundant file (because things are in SVN don't see why you want this)
+
+- autoconf/configure.in
+ - This is a complete overhaul of the original file I reindented most stuff
+ (killed all tabs ...) I think its better readable now and when changing it I think
+ I also got some small bugs fixed. Also updated all comments to use dnl and not
+ sometimes # and then dnl as comment. As we probably never gonna read the resulting
+ configure script generated by autoconf anyhow I think using this style in configure.in is
+ more consistent.
+ - also added all libtool specific coding which gives us the --disable-libtool option
+ which makes sure we can build everything using the old tools too. The LT_INIT is not in
+ the if statement because it breaks the generated configure. So we always test for libtool
+ but you can overwrite it usage by using the --disable-libtool option.
+
+- autoconf/gettext-macros/gettext.m4
+ - updated to use AC_HELP_STRING function
+
+- autoconf/libtool/libtool.m4
+- autoconf/libtool/ltoptions.m4
+- autoconf/libtool/ltsugar.m4
+- autoconf/libtool/ltversion.m4
+- autoconf/libtool/lt~obsolete.m4
+- autoconf/libtool/ltmain.sh
+ - Files from libtool 2.2.6 install which are needed to build libtool support in package
+
+- configure
+ - Regenerated file from autoconf 2.63 run on new configure.in
+
+- src/Makefile.in
+ - removed stray empty line
+
+- src/cats/Makefile.in
+ - added support for libtool
+ - use dynamic generation of names of object files
+ - add version for shared lib
+ - new inference rule for .c.lo
+ - changed lib name from libsql to libbacsql (to make it linked to the Bacula project)
+ - extra target to create libtool .la (libtool archive)
+ - extra libtool-clean target only called when libtool is used
+ - libtool-install and libtool-uninstall target only called when libtool is used
+ - install include files when using libtool
+
+- src/console/Makefile.in
+ - added support for libtool
+ - updated to use libtool when defined and have depend on correct archive type
+ - extra libtool-clean target only called when libtool is used
+
+- src/dird/Makefile.in
+ - use dynamic generation of names of object files
+ - added support for libtool
+ - updated to use libtool when defined and have depend on correct archive type
+ - extra libtool-clean target only called when libtool is used
+
+- src/dird/dird.c
+ - update for python interface change (because of full prototypes we wrap things in #ifdef HAVE_PYTHON)
+
+- src/dird/pythondir.c
+ - update for python interface change (some prototypes are moved to pythonlib.h)
+
+- src/dird/ua_cmds.c
+ - update for python interface change (because of full prototypes we wrap things in #ifdef HAVE_PYTHON)
+
+- src/filed/Makefile.in
+ - use dynamic generation of names of object files
+ - added support for libtool
+ - updated to use libtool when defined and have depend on correct archive type
+ - extra libtool-clean target only called when libtool is used
+
+- src/filed/filed.c
+ - update for python interface change (because of full prototypes we wrap things in #ifdef HAVE_PYTHON)
+
+- src/filed/pythonfd.c
+ - update for python interface change (some prototypes are moved to pythonlib.h)
+
+- src/findlib/Makefile.in
+ - added support for libtool
+ - use dynamic generation of names of object files
+ - add version for shared lib
+ - new inference rule for .c.lo
+ - changed lib name from libfind to libbacfind (to make it linked to the Bacula project)
+ - extra target to create libtool .la (libtool archive)
+ - extra libtool-clean target only called when libtool is used
+ - libtool-install and libtool-uninstall target only called when libtool is used
+ - install include files when using libtool
+
+- src/gnome2-console/Makefile.in
+ - added support for libtool
+
+- src/lib/Makefile.in
+ - added support for libtool
+ - use dynamic generation of names of object files
+ - splitted objects into 3 libs (because of symbol reference problems otherwise)
+ - kept all in the same dir to not interfere with win32 build etc. (first moved it to configlib and pythonlib
+ but that would break non libtool/unix builds.
+ - add version for shared libs
+ - new inference rule for .c.lo and .cc.lo
+ - extra target to create libtool .la (libtool archive)
+ - extra libtool-clean target only called when libtool is used
+ - libtool-install and libtool-uninstall target only called when libtool is used
+ - install include files when using libtool
+ - need to see if we need all those include files (already removed tcpd.h)
+
+- src/lib/protos.h
+ - update for python interface change (some prototypes are moved to pythonlib.h)
+
+- src/lib/pythonlib.c
+ - update for python interface change (some prototypes are moved to pythonlib.h)
+ - extern references to global vars/functions not needed anymore
+
+- src/lib/pythonlib.h
+ - new file for python interface change (some prototypes are moved here)
+
+- src/plugins/fd/Makefile.in
+ - added support for libtool
+ - new inference rule for .c.lo and .cc.lo
+ - kept old rule but that doesn't get called for libtool builds
+ - install rule extended to remove .la file which gets installed by the libtool --mode=install (Apache does same for DSO)
+
+- src/qt-console/bat.pro.in
+ - added support for libtool
+
+- src/stored/Makefile.in
+ - removed pythond.o from BEXTOBJS unneeded
+ - added support for libtool
+ - updated to use libtool when defined and have depend on correct archive type
+ - extra libtool-clean target only called when libtool is used
+
+- src/stored/pythonsd.c
+ - update for python interface change (some prototypes are moved to pythonlib.h)
+
+- src/stored/stored.c
+ - update for python interface change (because of full prototypes we wrap things in #ifdef HAVE_PYTHON)
+
+- src/tools/Makefile.in
+ - added support for libtool
+ - updated to use libtool when defined and have depend on correct archive type
+ - extra libtool-clean target only called when libtool is used
+
+- src/tray-monitor/Makefile.in
+ - added support for libtool
+ - updated to use libtool when defined and have depend on correct archive type
+ - extra libtool-clean target only called when libtool is used
+
+- src/wx-console/Makefile.in
+ - added support for libtool
+ - updated to use libtool when defined and have depend on correct archive type
+ - extra libtool-clean target only called when libtool is used
+
+Todo:
+
+- check if install of libs and includes also goes nicely when you don't do things like --prefix=/opt/ELMbacula
+ e.g. where does the stuff then gets installed.
+- do a full regression test on the new stuff build with libtool
+- see how it works on a real install (currently running 72 hours with shared libs on Solaris 10 64 bits)
+
static int tls_pem_callback(char *buf, int size, const void *userdata);
-Console::Console(QStackedWidget *parent)
+Console::Console(QStackedWidget *parent):
+m_notifier(NULL),
+m_api_set(false),
+m_messages_pending(false)
{
QFont font;
m_parent = parent;
mainWin->set_status(_("Initializing ..."));
+#ifndef HAVE_WIN32
/* Set up input notifier */
m_notifier = new QSocketNotifier(m_sock->m_fd, QSocketNotifier::Read, 0);
QObject::connect(m_notifier, SIGNAL(activated(int)), this, SLOT(read_dir(int)));
+#endif
write(".api 1");
+ m_api_set = true;
displayToPrompt();
beginNewCommand();
{
int stat;
#ifdef HAVE_WIN32
- bool isEnabled = m_notifier->isEnabled();
- if (isEnabled) {
- m_notifier->setEnabled(false);
- }
+ bool wasEnabled = notify(false);
stat = m_sock->recv();
- if (isEnabled) {
- m_notifier->setEnabled(true);
- }
+ notify(wasEnabled);
#else
stat = m_sock->recv();
#endif
break;
}
app->processEvents();
- if (m_api_set && m_messages_pending && m_notifier->isEnabled()) {
+ if (m_api_set && m_messages_pending && is_notify_enabled()) {
write_dir(".messages");
m_messages_pending = false;
}
}
switch (m_sock->msglen) {
case BNET_MSGS_PENDING :
- if (m_notifier->isEnabled()) {
+ if (is_notify_enabled()) {
if (mainWin->m_commDebug) Pmsg0(000, "MSGS PENDING\n");
write_dir(".messages");
displayToPrompt();
QBrush redBrush(Qt::red);
QTreeWidgetItem *item = mainWin->getFromHash(this);
item->setForeground(0, redBrush);
- m_notifier->setEnabled(false);
- delete m_notifier;
- m_notifier = NULL;
+ if (m_notifier) {
+ m_notifier->setEnabled(false);
+ delete m_notifier;
+ m_notifier = NULL;
+ }
mainWin->set_status(_("Director disconnected."));
QApplication::restoreOverrideCursor();
stat = BNET_HARDEOF;
* from the Directory, so we set notify to off.
* m_console->notifiy(false);
*/
-void Console::notify(bool enable)
+bool Console::notify(bool enable)
{
- m_notifier->setEnabled(enable);
+ bool prev_enabled = false;
+ if (m_notifier) {
+ prev_enabled = m_notifier->isEnabled();
+ m_notifier->setEnabled(enable);
+ }
+ return prev_enabled;
+}
+
+bool Console::is_notify_enabled() const
+{
+ bool enabled = false;
+ if (m_notifier)
+ enabled = m_notifier->isEnabled();
+ return enabled;
}
void Console::setDirectorTreeItem(QTreeWidgetItem *item)