diff --git a/src/libpw3270cpp/Makefile.in b/src/libpw3270cpp/Makefile.in index baaa266..73fef30 100644 --- a/src/libpw3270cpp/Makefile.in +++ b/src/libpw3270cpp/Makefile.in @@ -50,14 +50,17 @@ OBJRLS=$(OBJDIR)/Release MKDIR=@MKDIR_P@ CC=@CXX@ +LD=@CXX@ AR=@AR@ XGETTEXT=@XGETTEXT@ MSGCAT=@MSGCAT@ INSTALL=@INSTALL@ +VALGRIND=@VALGRIND@ INSTALL_DATA=@INSTALL_DATA@ INSTALL_PROGRAM=@INSTALL_PROGRAM@ CFLAGS=@CFLAGS@ @LIB3270_CFLAGS@ @DBUS_CFLAGS@ -Wno-deprecated-declarations @GTK_CFLAGS@ -I$(BASEDIR)/src/include/pw3270 +LIBS=@LIBS@ @DBUS_LIBS@ #---[ Rules ]---------------------------------------------------------------------------- @@ -71,7 +74,7 @@ $(OBJDBG)/%.o: \ @$(MKDIR) `dirname $@` @$(CC) $(CFLAGS) \ @DBG_CFLAGS@ \ - -DBUILD_DATE=`date +"0x%Y%m%d"`\ + -DBUILD_DATE=`date +"%Y%m%d"`\ -o $@ -c $< $(OBJRLS)/%.o: \ @@ -82,7 +85,7 @@ $(OBJRLS)/%.o: \ @$(MKDIR) `dirname $@` @$(CC) $(CFLAGS) \ @RLS_CFLAGS@ \ - -DBUILD_DATE=`date +"0x%Y%m%d"` \ + -DBUILD_DATE=`date +"%Y%m%d"` \ -o $@ -c $< $(POTDIR)/%.pot: %.c @@ -154,6 +157,28 @@ $(BASEDIR)/.obj/Debug/$(MODULE_NAME).a: \ @$(MKDIR) `dirname $@` @$(AR) rcs $@ $^ +$(BASEDIR)/.obj/Debug/$(MODULE_NAME)@EXEEXT@: \ + $(OBJDBG)/testprogram.o \ + $(BASEDIR)/.obj/Debug/$(MODULE_NAME).a + + @$(LD) $(APP_LDFLAGS) -o $@ $^ $(LIBS) + +run: \ + $(BASEDIR)/.obj/Debug/$(MODULE_NAME)@EXEEXT@ + +ifeq ($(VALGRIND),no) + $(BASEDIR)/.obj/Debug/$(MODULE_NAME)@EXEEXT@ +else + @touch valgrind.suppression + @$(VALGRIND) \ + --leak-check=full \ + --track-origins=yes \ + --gen-suppressions=all \ + --suppressions=valgrind.suppression \ + $(BASEDIR)/.obj/Debug/$(MODULE_NAME)@EXEEXT@ +endif + + #---[ Clean Targets]--------------------------------------------------------------------- cleanDebug: diff --git a/src/libpw3270cpp/remote.cc b/src/libpw3270cpp/remote.cc index 77310ef..d255e7c 100644 --- a/src/libpw3270cpp/remote.cc +++ b/src/libpw3270cpp/remote.cc @@ -411,8 +411,33 @@ public: #if defined(HAVE_DBUS) - const char * makeBusName(char *buffer, size_t sz) + const char * makeBusName(string &name) { + int val; + + // First uses the object ID + val = this->sequence; + while(val > 0) + { + char str[] = { 'a'+(val % 25), 0 }; + name.append(str); + val /= 25; + } + name.append("."); + + val = (int) getpid(); + while(val > 0) + { + char str[] = { 'a'+(val % 25), 0 }; + name.append(str); + val /= 25; + } + name.append("."); + + // And last, the project info + name.append(intf); + + /* size_t bytes = strlen(buffer); char * ptr = buffer; int val; @@ -442,9 +467,10 @@ // And last, the project info strncpy(ptr,intf,sz); - trace("Busname=\"%s\" sequence=%d this=%p",buffer,sequence,this); + */ + trace("Busname=\"%s\" sequence=%d this=%p",name.c_str(),sequence,this); - return buffer; + return name.c_str(); } #endif // HAVE_DBUS @@ -608,7 +634,7 @@ int rc; char * str = strdup(session); char * ptr; - char busname[4096]; + string busName; this->sequence = (++sq) + time(0); @@ -694,8 +720,8 @@ } - rc = dbus_bus_request_name(conn, makeBusName(busname,4095), DBUS_NAME_FLAG_REPLACE_EXISTING , &err); - trace("dbus_bus_request_name(%s) rc=%d",busname,rc); + rc = dbus_bus_request_name(conn, makeBusName(busName), DBUS_NAME_FLAG_REPLACE_EXISTING , &err); + trace("dbus_bus_request_name(%s) rc=%d",busName.c_str(),rc); if (dbus_error_is_set(&err)) { @@ -707,12 +733,12 @@ if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { - trace("%s: DBUS request for name %s failed",__FUNCTION__, busname); + trace("%s: DBUS request for name %s failed",__FUNCTION__, busName.c_str()); throw exception("DBUS request for \"%s\" failed",session); return; } - trace("%s: Using DBUS name %s",__FUNCTION__,busname); + trace("%s: Using DBUS name %s",__FUNCTION__,busName.c_str()); const char * id = "r"; static const dbus_int32_t flag = 1; @@ -746,8 +772,8 @@ std::cerr << e.what(); } - char busname[4096]; - makeBusName(busname,4096); + string busName; + makeBusName(busName); free(dest); free(path); @@ -756,7 +782,7 @@ DBusError err; dbus_error_init(&err); - dbus_bus_release_name(conn,busname,&err); + dbus_bus_release_name(conn,busName.c_str(),&err); if (dbus_error_is_set(&err)) { diff --git a/src/libpw3270cpp/testprogram.cc b/src/libpw3270cpp/testprogram.cc index 7232bff..49776a4 100644 --- a/src/libpw3270cpp/testprogram.cc +++ b/src/libpw3270cpp/testprogram.cc @@ -41,7 +41,8 @@ { string s; - session *session = session::start(""); + session *session = session::start("pw3270:a"); + // session *session = session::start(""); // session *session = session::start("new"); cout << "pw3270 version: " << session->get_version() << endl; -- libgit2 0.21.2