Commit 2b93263e9931d71cec1349876494afba57cc70fa
1 parent
898cea22
Exists in
master
and in
5 other branches
Ajustando módulo de acesso IPC.
Showing
3 changed files
with
66 additions
and
14 deletions
Show diff stats
src/libpw3270cpp/Makefile.in
| @@ -50,14 +50,17 @@ OBJRLS=$(OBJDIR)/Release | @@ -50,14 +50,17 @@ OBJRLS=$(OBJDIR)/Release | ||
| 50 | 50 | ||
| 51 | MKDIR=@MKDIR_P@ | 51 | MKDIR=@MKDIR_P@ |
| 52 | CC=@CXX@ | 52 | CC=@CXX@ |
| 53 | +LD=@CXX@ | ||
| 53 | AR=@AR@ | 54 | AR=@AR@ |
| 54 | XGETTEXT=@XGETTEXT@ | 55 | XGETTEXT=@XGETTEXT@ |
| 55 | MSGCAT=@MSGCAT@ | 56 | MSGCAT=@MSGCAT@ |
| 56 | INSTALL=@INSTALL@ | 57 | INSTALL=@INSTALL@ |
| 58 | +VALGRIND=@VALGRIND@ | ||
| 57 | INSTALL_DATA=@INSTALL_DATA@ | 59 | INSTALL_DATA=@INSTALL_DATA@ |
| 58 | INSTALL_PROGRAM=@INSTALL_PROGRAM@ | 60 | INSTALL_PROGRAM=@INSTALL_PROGRAM@ |
| 59 | 61 | ||
| 60 | CFLAGS=@CFLAGS@ @LIB3270_CFLAGS@ @DBUS_CFLAGS@ -Wno-deprecated-declarations @GTK_CFLAGS@ -I$(BASEDIR)/src/include/pw3270 | 62 | CFLAGS=@CFLAGS@ @LIB3270_CFLAGS@ @DBUS_CFLAGS@ -Wno-deprecated-declarations @GTK_CFLAGS@ -I$(BASEDIR)/src/include/pw3270 |
| 63 | +LIBS=@LIBS@ @DBUS_LIBS@ | ||
| 61 | 64 | ||
| 62 | #---[ Rules ]---------------------------------------------------------------------------- | 65 | #---[ Rules ]---------------------------------------------------------------------------- |
| 63 | 66 | ||
| @@ -71,7 +74,7 @@ $(OBJDBG)/%.o: \ | @@ -71,7 +74,7 @@ $(OBJDBG)/%.o: \ | ||
| 71 | @$(MKDIR) `dirname $@` | 74 | @$(MKDIR) `dirname $@` |
| 72 | @$(CC) $(CFLAGS) \ | 75 | @$(CC) $(CFLAGS) \ |
| 73 | @DBG_CFLAGS@ \ | 76 | @DBG_CFLAGS@ \ |
| 74 | - -DBUILD_DATE=`date +"0x%Y%m%d"`\ | 77 | + -DBUILD_DATE=`date +"%Y%m%d"`\ |
| 75 | -o $@ -c $< | 78 | -o $@ -c $< |
| 76 | 79 | ||
| 77 | $(OBJRLS)/%.o: \ | 80 | $(OBJRLS)/%.o: \ |
| @@ -82,7 +85,7 @@ $(OBJRLS)/%.o: \ | @@ -82,7 +85,7 @@ $(OBJRLS)/%.o: \ | ||
| 82 | @$(MKDIR) `dirname $@` | 85 | @$(MKDIR) `dirname $@` |
| 83 | @$(CC) $(CFLAGS) \ | 86 | @$(CC) $(CFLAGS) \ |
| 84 | @RLS_CFLAGS@ \ | 87 | @RLS_CFLAGS@ \ |
| 85 | - -DBUILD_DATE=`date +"0x%Y%m%d"` \ | 88 | + -DBUILD_DATE=`date +"%Y%m%d"` \ |
| 86 | -o $@ -c $< | 89 | -o $@ -c $< |
| 87 | 90 | ||
| 88 | $(POTDIR)/%.pot: %.c | 91 | $(POTDIR)/%.pot: %.c |
| @@ -154,6 +157,28 @@ $(BASEDIR)/.obj/Debug/$(MODULE_NAME).a: \ | @@ -154,6 +157,28 @@ $(BASEDIR)/.obj/Debug/$(MODULE_NAME).a: \ | ||
| 154 | @$(MKDIR) `dirname $@` | 157 | @$(MKDIR) `dirname $@` |
| 155 | @$(AR) rcs $@ $^ | 158 | @$(AR) rcs $@ $^ |
| 156 | 159 | ||
| 160 | +$(BASEDIR)/.obj/Debug/$(MODULE_NAME)@EXEEXT@: \ | ||
| 161 | + $(OBJDBG)/testprogram.o \ | ||
| 162 | + $(BASEDIR)/.obj/Debug/$(MODULE_NAME).a | ||
| 163 | + | ||
| 164 | + @$(LD) $(APP_LDFLAGS) -o $@ $^ $(LIBS) | ||
| 165 | + | ||
| 166 | +run: \ | ||
| 167 | + $(BASEDIR)/.obj/Debug/$(MODULE_NAME)@EXEEXT@ | ||
| 168 | + | ||
| 169 | +ifeq ($(VALGRIND),no) | ||
| 170 | + $(BASEDIR)/.obj/Debug/$(MODULE_NAME)@EXEEXT@ | ||
| 171 | +else | ||
| 172 | + @touch valgrind.suppression | ||
| 173 | + @$(VALGRIND) \ | ||
| 174 | + --leak-check=full \ | ||
| 175 | + --track-origins=yes \ | ||
| 176 | + --gen-suppressions=all \ | ||
| 177 | + --suppressions=valgrind.suppression \ | ||
| 178 | + $(BASEDIR)/.obj/Debug/$(MODULE_NAME)@EXEEXT@ | ||
| 179 | +endif | ||
| 180 | + | ||
| 181 | + | ||
| 157 | #---[ Clean Targets]--------------------------------------------------------------------- | 182 | #---[ Clean Targets]--------------------------------------------------------------------- |
| 158 | 183 | ||
| 159 | cleanDebug: | 184 | cleanDebug: |
src/libpw3270cpp/remote.cc
| @@ -411,8 +411,33 @@ | @@ -411,8 +411,33 @@ | ||
| 411 | public: | 411 | public: |
| 412 | 412 | ||
| 413 | #if defined(HAVE_DBUS) | 413 | #if defined(HAVE_DBUS) |
| 414 | - const char * makeBusName(char *buffer, size_t sz) | 414 | + const char * makeBusName(string &name) |
| 415 | { | 415 | { |
| 416 | + int val; | ||
| 417 | + | ||
| 418 | + // First uses the object ID | ||
| 419 | + val = this->sequence; | ||
| 420 | + while(val > 0) | ||
| 421 | + { | ||
| 422 | + char str[] = { 'a'+(val % 25), 0 }; | ||
| 423 | + name.append(str); | ||
| 424 | + val /= 25; | ||
| 425 | + } | ||
| 426 | + name.append("."); | ||
| 427 | + | ||
| 428 | + val = (int) getpid(); | ||
| 429 | + while(val > 0) | ||
| 430 | + { | ||
| 431 | + char str[] = { 'a'+(val % 25), 0 }; | ||
| 432 | + name.append(str); | ||
| 433 | + val /= 25; | ||
| 434 | + } | ||
| 435 | + name.append("."); | ||
| 436 | + | ||
| 437 | + // And last, the project info | ||
| 438 | + name.append(intf); | ||
| 439 | + | ||
| 440 | + /* | ||
| 416 | size_t bytes = strlen(buffer); | 441 | size_t bytes = strlen(buffer); |
| 417 | char * ptr = buffer; | 442 | char * ptr = buffer; |
| 418 | int val; | 443 | int val; |
| @@ -442,9 +467,10 @@ | @@ -442,9 +467,10 @@ | ||
| 442 | // And last, the project info | 467 | // And last, the project info |
| 443 | strncpy(ptr,intf,sz); | 468 | strncpy(ptr,intf,sz); |
| 444 | 469 | ||
| 445 | - trace("Busname=\"%s\" sequence=%d this=%p",buffer,sequence,this); | 470 | + */ |
| 471 | + trace("Busname=\"%s\" sequence=%d this=%p",name.c_str(),sequence,this); | ||
| 446 | 472 | ||
| 447 | - return buffer; | 473 | + return name.c_str(); |
| 448 | 474 | ||
| 449 | } | 475 | } |
| 450 | #endif // HAVE_DBUS | 476 | #endif // HAVE_DBUS |
| @@ -608,7 +634,7 @@ | @@ -608,7 +634,7 @@ | ||
| 608 | int rc; | 634 | int rc; |
| 609 | char * str = strdup(session); | 635 | char * str = strdup(session); |
| 610 | char * ptr; | 636 | char * ptr; |
| 611 | - char busname[4096]; | 637 | + string busName; |
| 612 | 638 | ||
| 613 | this->sequence = (++sq) + time(0); | 639 | this->sequence = (++sq) + time(0); |
| 614 | 640 | ||
| @@ -694,8 +720,8 @@ | @@ -694,8 +720,8 @@ | ||
| 694 | } | 720 | } |
| 695 | 721 | ||
| 696 | 722 | ||
| 697 | - rc = dbus_bus_request_name(conn, makeBusName(busname,4095), DBUS_NAME_FLAG_REPLACE_EXISTING , &err); | ||
| 698 | - trace("dbus_bus_request_name(%s) rc=%d",busname,rc); | 723 | + rc = dbus_bus_request_name(conn, makeBusName(busName), DBUS_NAME_FLAG_REPLACE_EXISTING , &err); |
| 724 | + trace("dbus_bus_request_name(%s) rc=%d",busName.c_str(),rc); | ||
| 699 | 725 | ||
| 700 | if (dbus_error_is_set(&err)) | 726 | if (dbus_error_is_set(&err)) |
| 701 | { | 727 | { |
| @@ -707,12 +733,12 @@ | @@ -707,12 +733,12 @@ | ||
| 707 | 733 | ||
| 708 | if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) | 734 | if(rc != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) |
| 709 | { | 735 | { |
| 710 | - trace("%s: DBUS request for name %s failed",__FUNCTION__, busname); | 736 | + trace("%s: DBUS request for name %s failed",__FUNCTION__, busName.c_str()); |
| 711 | throw exception("DBUS request for \"%s\" failed",session); | 737 | throw exception("DBUS request for \"%s\" failed",session); |
| 712 | return; | 738 | return; |
| 713 | } | 739 | } |
| 714 | 740 | ||
| 715 | - trace("%s: Using DBUS name %s",__FUNCTION__,busname); | 741 | + trace("%s: Using DBUS name %s",__FUNCTION__,busName.c_str()); |
| 716 | 742 | ||
| 717 | const char * id = "r"; | 743 | const char * id = "r"; |
| 718 | static const dbus_int32_t flag = 1; | 744 | static const dbus_int32_t flag = 1; |
| @@ -746,8 +772,8 @@ | @@ -746,8 +772,8 @@ | ||
| 746 | std::cerr << e.what(); | 772 | std::cerr << e.what(); |
| 747 | } | 773 | } |
| 748 | 774 | ||
| 749 | - char busname[4096]; | ||
| 750 | - makeBusName(busname,4096); | 775 | + string busName; |
| 776 | + makeBusName(busName); | ||
| 751 | 777 | ||
| 752 | free(dest); | 778 | free(dest); |
| 753 | free(path); | 779 | free(path); |
| @@ -756,7 +782,7 @@ | @@ -756,7 +782,7 @@ | ||
| 756 | DBusError err; | 782 | DBusError err; |
| 757 | 783 | ||
| 758 | dbus_error_init(&err); | 784 | dbus_error_init(&err); |
| 759 | - dbus_bus_release_name(conn,busname,&err); | 785 | + dbus_bus_release_name(conn,busName.c_str(),&err); |
| 760 | 786 | ||
| 761 | if (dbus_error_is_set(&err)) | 787 | if (dbus_error_is_set(&err)) |
| 762 | { | 788 | { |
src/libpw3270cpp/testprogram.cc
| @@ -41,7 +41,8 @@ | @@ -41,7 +41,8 @@ | ||
| 41 | 41 | ||
| 42 | { | 42 | { |
| 43 | string s; | 43 | string s; |
| 44 | - session *session = session::start(""); | 44 | + session *session = session::start("pw3270:a"); |
| 45 | + // session *session = session::start(""); | ||
| 45 | // session *session = session::start("new"); | 46 | // session *session = session::start("new"); |
| 46 | 47 | ||
| 47 | cout << "pw3270 version: " << session->get_version() << endl; | 48 | cout << "pw3270 version: " << session->get_version() << endl; |