Commit 0f63e4adfe4d747a0647ec43d9bc6f070aa81f17
1 parent
276af5ac
Exists in
master
and in
3 other branches
Incluindo estruturas de sessão em mais chamadas
Showing
1 changed file
with
57 additions
and
63 deletions
Show diff stats
ctlr.c
... | ... | @@ -542,16 +542,15 @@ process_ds(unsigned char *buf, int buflen) |
542 | 542 | /* |
543 | 543 | * Functions to insert SA attributes into the inbound data stream. |
544 | 544 | */ |
545 | -static void | |
546 | -insert_sa1(unsigned char attr, unsigned char value, unsigned char *currentp, Boolean *anyp) | |
545 | +static void insert_sa1(H3270 *hSession, unsigned char attr, unsigned char value, unsigned char *currentp, Boolean *anyp) | |
547 | 546 | { |
548 | 547 | if (value == *currentp) |
549 | 548 | return; |
550 | 549 | *currentp = value; |
551 | 550 | space3270out(3); |
552 | - *h3270.obptr++ = ORDER_SA; | |
553 | - *h3270.obptr++ = attr; | |
554 | - *h3270.obptr++ = value; | |
551 | + *hSession->obptr++ = ORDER_SA; | |
552 | + *hSession->obptr++ = attr; | |
553 | + *hSession->obptr++ = value; | |
555 | 554 | if (*anyp) |
556 | 555 | trace_ds("'"); |
557 | 556 | trace_ds(" SetAttribute(%s)", see_efa(attr, value)); |
... | ... | @@ -575,27 +574,30 @@ host_cs(unsigned char cs) |
575 | 574 | } |
576 | 575 | } |
577 | 576 | |
578 | -static void | |
579 | -insert_sa(int baddr, unsigned char *current_fgp, unsigned char *current_bgp, | |
580 | - unsigned char *current_grp, unsigned char *current_csp, Boolean *anyp) | |
577 | +static void insert_sa(H3270 *hSession, int baddr, unsigned char *current_fgp, unsigned char *current_bgp,unsigned char *current_grp, unsigned char *current_csp, Boolean *anyp) | |
581 | 578 | { |
582 | - if (h3270.reply_mode != SF_SRM_CHAR) | |
579 | + if (hSession->reply_mode != SF_SRM_CHAR) | |
583 | 580 | return; |
584 | 581 | |
585 | - if (memchr((char *) h3270.crm_attr, XA_FOREGROUND, h3270.crm_nattr)) | |
586 | - insert_sa1(XA_FOREGROUND, h3270.ea_buf[baddr].fg, current_fgp, anyp); | |
587 | - if (memchr((char *) h3270.crm_attr, XA_BACKGROUND, h3270.crm_nattr)) | |
588 | - insert_sa1(XA_BACKGROUND, h3270.ea_buf[baddr].bg, current_bgp, anyp); | |
589 | - if (memchr((char *) h3270.crm_attr, XA_HIGHLIGHTING, h3270.crm_nattr)) { | |
582 | + if (memchr((char *) hSession->crm_attr, XA_FOREGROUND, hSession->crm_nattr)) | |
583 | + insert_sa1(hSession, XA_FOREGROUND, hSession->ea_buf[baddr].fg, current_fgp, anyp); | |
584 | + | |
585 | + if (memchr((char *) hSession->crm_attr, XA_BACKGROUND, hSession->crm_nattr)) | |
586 | + insert_sa1(hSession, XA_BACKGROUND, hSession->ea_buf[baddr].bg, current_bgp, anyp); | |
587 | + | |
588 | + if (memchr((char *) hSession->crm_attr, XA_HIGHLIGHTING, hSession->crm_nattr)) | |
589 | + { | |
590 | 590 | unsigned char gr; |
591 | 591 | |
592 | - gr = h3270.ea_buf[baddr].gr; | |
592 | + gr = hSession->ea_buf[baddr].gr; | |
593 | 593 | if (gr) |
594 | 594 | gr |= 0xf0; |
595 | - insert_sa1(XA_HIGHLIGHTING, gr, current_grp, anyp); | |
595 | + insert_sa1(hSession, XA_HIGHLIGHTING, gr, current_grp, anyp); | |
596 | 596 | } |
597 | - if (memchr((char *) h3270.crm_attr, XA_CHARSET, h3270.crm_nattr)) { | |
598 | - insert_sa1(XA_CHARSET, host_cs(h3270.ea_buf[baddr].cs), current_csp,anyp); | |
597 | + | |
598 | + if (memchr((char *) hSession->crm_attr, XA_CHARSET, hSession->crm_nattr)) | |
599 | + { | |
600 | + insert_sa1(hSession, XA_CHARSET, host_cs(hSession->ea_buf[baddr].cs), current_csp,anyp); | |
599 | 601 | } |
600 | 602 | } |
601 | 603 | |
... | ... | @@ -689,12 +691,7 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all) |
689 | 691 | |
690 | 692 | if (send_data && |
691 | 693 | h3270.ea_buf[baddr].cc) { |
692 | - insert_sa(baddr, | |
693 | - ¤t_fg, | |
694 | - ¤t_bg, | |
695 | - ¤t_gr, | |
696 | - ¤t_cs, | |
697 | - &any); | |
694 | + insert_sa(&h3270,baddr,¤t_fg,¤t_bg,¤t_gr,¤t_cs,&any); | |
698 | 695 | if (h3270.ea_buf[baddr].cs & CS_GE) { |
699 | 696 | space3270out(1); |
700 | 697 | *h3270.obptr++ = ORDER_GE; |
... | ... | @@ -734,12 +731,7 @@ ctlr_read_modified(unsigned char aid_byte, Boolean all) |
734 | 731 | |
735 | 732 | do { |
736 | 733 | if (h3270.ea_buf[baddr].cc) { |
737 | - insert_sa(baddr, | |
738 | - ¤t_fg, | |
739 | - ¤t_bg, | |
740 | - ¤t_gr, | |
741 | - ¤t_cs, | |
742 | - &any); | |
734 | + insert_sa(&h3270,baddr,¤t_fg,¤t_bg,¤t_gr,¤t_cs,&any); | |
743 | 735 | if (h3270.ea_buf[baddr].cs & CS_GE) { |
744 | 736 | space3270out(1); |
745 | 737 | *h3270.obptr++ = ORDER_GE; |
... | ... | @@ -797,82 +789,84 @@ void ctlr_read_buffer(H3270 *hSession, unsigned char aid_byte) |
797 | 789 | #endif /*]*/ |
798 | 790 | |
799 | 791 | trace_ds("> "); |
800 | - h3270.obptr = h3270.obuf; | |
792 | + hSession->obptr = hSession->obuf; | |
801 | 793 | |
802 | 794 | space3270out(3); |
803 | - *h3270.obptr++ = aid_byte; | |
804 | - ENCODE_BADDR(h3270.obptr, hSession->cursor_addr); | |
795 | + *hSession->obptr++ = aid_byte; | |
796 | + ENCODE_BADDR(hSession->obptr, hSession->cursor_addr); | |
805 | 797 | trace_ds("%s%s", see_aid(aid_byte), rcba(hSession,hSession->cursor_addr)); |
806 | 798 | |
807 | 799 | baddr = 0; |
808 | 800 | do { |
809 | - if (hSession->ea_buf[baddr].fa) { | |
810 | - if (hSession->reply_mode == SF_SRM_FIELD) { | |
801 | + if (hSession->ea_buf[baddr].fa) | |
802 | + { | |
803 | + if (hSession->reply_mode == SF_SRM_FIELD) | |
804 | + { | |
811 | 805 | space3270out(2); |
812 | - *h3270.obptr++ = ORDER_SF; | |
813 | - } else { | |
806 | + *hSession->obptr++ = ORDER_SF; | |
807 | + } | |
808 | + else | |
809 | + { | |
814 | 810 | space3270out(4); |
815 | - *h3270.obptr++ = ORDER_SFE; | |
816 | - attr_count = h3270.obptr - h3270.obuf; | |
817 | - *h3270.obptr++ = 1; /* for now */ | |
818 | - *h3270.obptr++ = XA_3270; | |
811 | + *hSession->obptr++ = ORDER_SFE; | |
812 | + attr_count = hSession->obptr - hSession->obuf; | |
813 | + *hSession->obptr++ = 1; /* for now */ | |
814 | + *hSession->obptr++ = XA_3270; | |
819 | 815 | } |
820 | 816 | fa = hSession->ea_buf[baddr].fa & ~FA_PRINTABLE; |
821 | - *h3270.obptr++ = code_table[fa]; | |
817 | + *hSession->obptr++ = code_table[fa]; | |
818 | + | |
822 | 819 | if (any) |
823 | 820 | trace_ds("'"); |
824 | 821 | trace_ds(" StartField%s%s%s", |
825 | 822 | (hSession->reply_mode == SF_SRM_FIELD) ? "" : "Extended", |
826 | 823 | rcba(hSession,baddr), see_attr(fa)); |
827 | - if (hSession->reply_mode != SF_SRM_FIELD) { | |
824 | + | |
825 | + if (hSession->reply_mode != SF_SRM_FIELD) | |
826 | + { | |
828 | 827 | if (hSession->ea_buf[baddr].fg) { |
829 | 828 | space3270out(2); |
830 | - *h3270.obptr++ = XA_FOREGROUND; | |
831 | - *h3270.obptr++ = hSession->ea_buf[baddr].fg; | |
829 | + *hSession->obptr++ = XA_FOREGROUND; | |
830 | + *hSession->obptr++ = hSession->ea_buf[baddr].fg; | |
832 | 831 | trace_ds("%s", see_efa(XA_FOREGROUND, hSession->ea_buf[baddr].fg)); |
833 | - (*(h3270.obuf + attr_count))++; | |
832 | + (*(hSession->obuf + attr_count))++; | |
834 | 833 | } |
835 | 834 | if (hSession->ea_buf[baddr].bg) { |
836 | 835 | space3270out(2); |
837 | - *h3270.obptr++ = XA_BACKGROUND; | |
838 | - *h3270.obptr++ = hSession->ea_buf[baddr].bg; | |
836 | + *hSession->obptr++ = XA_BACKGROUND; | |
837 | + *hSession->obptr++ = hSession->ea_buf[baddr].bg; | |
839 | 838 | trace_ds("%s", see_efa(XA_BACKGROUND, hSession->ea_buf[baddr].bg)); |
840 | - (*(h3270.obuf + attr_count))++; | |
839 | + (*(hSession->obuf + attr_count))++; | |
841 | 840 | } |
842 | 841 | if (hSession->ea_buf[baddr].gr) { |
843 | 842 | space3270out(2); |
844 | - *h3270.obptr++ = XA_HIGHLIGHTING; | |
845 | - *h3270.obptr++ = hSession->ea_buf[baddr].gr | 0xf0; | |
843 | + *hSession->obptr++ = XA_HIGHLIGHTING; | |
844 | + *hSession->obptr++ = hSession->ea_buf[baddr].gr | 0xf0; | |
846 | 845 | trace_ds("%s", see_efa(XA_HIGHLIGHTING, |
847 | 846 | hSession->ea_buf[baddr].gr | 0xf0)); |
848 | - (*(h3270.obuf + attr_count))++; | |
847 | + (*(hSession->obuf + attr_count))++; | |
849 | 848 | } |
850 | 849 | if (hSession->ea_buf[baddr].cs & CS_MASK) { |
851 | 850 | space3270out(2); |
852 | - *h3270.obptr++ = XA_CHARSET; | |
853 | - *h3270.obptr++ = host_cs(hSession->ea_buf[baddr].cs); | |
851 | + *hSession->obptr++ = XA_CHARSET; | |
852 | + *hSession->obptr++ = host_cs(hSession->ea_buf[baddr].cs); | |
854 | 853 | trace_ds("%s", see_efa(XA_CHARSET,host_cs(hSession->ea_buf[baddr].cs))); |
855 | - (*(h3270.obuf + attr_count))++; | |
854 | + (*(hSession->obuf + attr_count))++; | |
856 | 855 | } |
857 | 856 | } |
858 | 857 | any = False; |
859 | 858 | } else { |
860 | - insert_sa(baddr, | |
861 | - ¤t_fg, | |
862 | - ¤t_bg, | |
863 | - ¤t_gr, | |
864 | - ¤t_cs, | |
865 | - &any); | |
859 | + insert_sa(hSession,baddr,¤t_fg,¤t_bg,¤t_gr,¤t_cs,&any); | |
866 | 860 | if (hSession->ea_buf[baddr].cs & CS_GE) { |
867 | 861 | space3270out(1); |
868 | - *h3270.obptr++ = ORDER_GE; | |
862 | + *hSession->obptr++ = ORDER_GE; | |
869 | 863 | if (any) |
870 | 864 | trace_ds("'"); |
871 | 865 | trace_ds(" GraphicEscape"); |
872 | 866 | any = False; |
873 | 867 | } |
874 | 868 | space3270out(1); |
875 | - *h3270.obptr++ = hSession->ea_buf[baddr].cc; | |
869 | + *hSession->obptr++ = hSession->ea_buf[baddr].cc; | |
876 | 870 | if (hSession->ea_buf[baddr].cc <= 0x3f || |
877 | 871 | hSession->ea_buf[baddr].cc == 0xff) { |
878 | 872 | if (any) | ... | ... |