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 | 50 | |
| 51 | 51 | MKDIR=@MKDIR_P@ |
| 52 | 52 | CC=@CXX@ |
| 53 | +LD=@CXX@ | |
| 53 | 54 | AR=@AR@ |
| 54 | 55 | XGETTEXT=@XGETTEXT@ |
| 55 | 56 | MSGCAT=@MSGCAT@ |
| 56 | 57 | INSTALL=@INSTALL@ |
| 58 | +VALGRIND=@VALGRIND@ | |
| 57 | 59 | INSTALL_DATA=@INSTALL_DATA@ |
| 58 | 60 | INSTALL_PROGRAM=@INSTALL_PROGRAM@ |
| 59 | 61 | |
| 60 | 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 | 65 | #---[ Rules ]---------------------------------------------------------------------------- |
| 63 | 66 | |
| ... | ... | @@ -71,7 +74,7 @@ $(OBJDBG)/%.o: \ |
| 71 | 74 | @$(MKDIR) `dirname $@` |
| 72 | 75 | @$(CC) $(CFLAGS) \ |
| 73 | 76 | @DBG_CFLAGS@ \ |
| 74 | - -DBUILD_DATE=`date +"0x%Y%m%d"`\ | |
| 77 | + -DBUILD_DATE=`date +"%Y%m%d"`\ | |
| 75 | 78 | -o $@ -c $< |
| 76 | 79 | |
| 77 | 80 | $(OBJRLS)/%.o: \ |
| ... | ... | @@ -82,7 +85,7 @@ $(OBJRLS)/%.o: \ |
| 82 | 85 | @$(MKDIR) `dirname $@` |
| 83 | 86 | @$(CC) $(CFLAGS) \ |
| 84 | 87 | @RLS_CFLAGS@ \ |
| 85 | - -DBUILD_DATE=`date +"0x%Y%m%d"` \ | |
| 88 | + -DBUILD_DATE=`date +"%Y%m%d"` \ | |
| 86 | 89 | -o $@ -c $< |
| 87 | 90 | |
| 88 | 91 | $(POTDIR)/%.pot: %.c |
| ... | ... | @@ -154,6 +157,28 @@ $(BASEDIR)/.obj/Debug/$(MODULE_NAME).a: \ |
| 154 | 157 | @$(MKDIR) `dirname $@` |
| 155 | 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 | 182 | #---[ Clean Targets]--------------------------------------------------------------------- |
| 158 | 183 | |
| 159 | 184 | cleanDebug: | ... | ... |
src/libpw3270cpp/remote.cc
| ... | ... | @@ -411,8 +411,33 @@ |
| 411 | 411 | public: |
| 412 | 412 | |
| 413 | 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 | 441 | size_t bytes = strlen(buffer); |
| 417 | 442 | char * ptr = buffer; |
| 418 | 443 | int val; |
| ... | ... | @@ -442,9 +467,10 @@ |
| 442 | 467 | // And last, the project info |
| 443 | 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 | 476 | #endif // HAVE_DBUS |
| ... | ... | @@ -608,7 +634,7 @@ |
| 608 | 634 | int rc; |
| 609 | 635 | char * str = strdup(session); |
| 610 | 636 | char * ptr; |
| 611 | - char busname[4096]; | |
| 637 | + string busName; | |
| 612 | 638 | |
| 613 | 639 | this->sequence = (++sq) + time(0); |
| 614 | 640 | |
| ... | ... | @@ -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 | 726 | if (dbus_error_is_set(&err)) |
| 701 | 727 | { |
| ... | ... | @@ -707,12 +733,12 @@ |
| 707 | 733 | |
| 708 | 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 | 737 | throw exception("DBUS request for \"%s\" failed",session); |
| 712 | 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 | 743 | const char * id = "r"; |
| 718 | 744 | static const dbus_int32_t flag = 1; |
| ... | ... | @@ -746,8 +772,8 @@ |
| 746 | 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 | 778 | free(dest); |
| 753 | 779 | free(path); |
| ... | ... | @@ -756,7 +782,7 @@ |
| 756 | 782 | DBusError err; |
| 757 | 783 | |
| 758 | 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 | 787 | if (dbus_error_is_set(&err)) |
| 762 | 788 | { | ... | ... |
src/libpw3270cpp/testprogram.cc
| ... | ... | @@ -41,7 +41,8 @@ |
| 41 | 41 | |
| 42 | 42 | { |
| 43 | 43 | string s; |
| 44 | - session *session = session::start(""); | |
| 44 | + session *session = session::start("pw3270:a"); | |
| 45 | + // session *session = session::start(""); | |
| 45 | 46 | // session *session = session::start("new"); |
| 46 | 47 | |
| 47 | 48 | cout << "pw3270 version: " << session->get_version() << endl; | ... | ... |