Lines Matching refs:is
4 Permission is hereby granted, free of charge, to any person obtaining a copy
8 copies of the Software, and to permit persons to whom the Software is
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
44 #define OUTBUF_FREE(is, count) ((is)->outbuf_count + (count) <= BUFFER_SIZE)
45 #define OUTBUF_MAKE_FREE(is, fd, count) \
46 if(!OUTBUF_FREE((is), (count))) outbuf_flush((is), (fd))
49 outbuf_flush(Iso2022Ptr is, int fd)
55 IGNORE_RC(write(olog, is->outbuf, is->outbuf_count));
57 while (i < is->outbuf_count) {
58 rc = (int) write(fd, is->outbuf + i, is->outbuf_count - i);
71 is->outbuf_count = 0;
75 outbufOne(Iso2022Ptr is, int fd, unsigned c)
77 OUTBUF_MAKE_FREE(is, fd, 1);
78 is->outbuf[is->outbuf_count++] = UChar(c);
83 outbufUTF8(Iso2022Ptr is, int fd, unsigned c)
89 OUTBUF_MAKE_FREE(is, fd, 1);
90 is->outbuf[is->outbuf_count++] = UChar(c);
92 OUTBUF_MAKE_FREE(is, fd, 2);
93 is->outbuf[is->outbuf_count++] = UChar(0xC0 | ((c >> 6) & 0x1F));
94 is->outbuf[is->outbuf_count++] = UChar(0x80 | (c & 0x3F));
96 OUTBUF_MAKE_FREE(is, fd, 3);
97 is->outbuf[is->outbuf_count++] = UChar(0xE0 | ((c >> 12) & 0x0F));
98 is->outbuf[is->outbuf_count++] = UChar(0x80 | ((c >> 6) & 0x3F));
99 is->outbuf[is->outbuf_count++] = UChar(0x80 | (c & 0x3F));
104 buffer(Iso2022Ptr is, unsigned c)
106 if (is->buffered == NULL) {
107 is->buffered_len = 10;
108 is->buffered = malloc(is->buffered_len);
109 if (is->buffered == NULL)
113 if (is->buffered_count >= is->buffered_len) {
114 is->buffered = realloc(is->buffered, 2 * is->buffered_len + 1);
115 if (is->buffered == NULL) {
118 is->buffered_len = 2 * is->buffered_len + 1;
121 is->buffered[is->buffered_count++] = UChar(c);
125 outbuf_buffered_carefully(Iso2022Ptr is, int fd)
130 while (i < is->buffered_count) {
131 OUTBUF_MAKE_FREE(is, fd, 1);
132 is->outbuf[is->outbuf_count++] = is->buffered[i++];
134 is->buffered_count = 0;
138 outbuf_buffered(Iso2022Ptr is, int fd)
140 if (is->buffered_count > BUFFER_SIZE)
141 outbuf_buffered_carefully(is, fd);
143 OUTBUF_MAKE_FREE(is, fd, is->buffered_count);
144 memcpy(is->outbuf + is->outbuf_count, is->buffered, is->buffered_count);
145 is->outbuf_count += is->buffered_count;
146 is->buffered_count = 0;
150 discard_buffered(Iso2022Ptr is)
152 is->buffered_count = 0;
158 Iso2022Ptr is;
159 is = malloc(sizeof(Iso2022Rec));
160 if (!is)
162 is->glp = is->grp = NULL;
163 G0(is) = G1(is) = G2(is) = G3(is) = OTHER(is) = NULL;
165 is->parserState = P_NORMAL;
166 is->shiftState = S_NORMAL;
168 is->inputFlags = IF_EIGHTBIT | IF_SS | IF_SSGR;
169 is->outputFlags = OF_SS | OF_LS | OF_SELECT;
171 is->buffered = NULL;
172 is->buffered_len = 0;
173 is->buffered_count = 0;
175 is->buffered_ku = -1;
177 is->outbuf = malloc((size_t) BUFFER_SIZE);
178 if (!is->outbuf) {
179 free(is);
182 is->outbuf_count = 0;
184 return is;
188 destroyIso2022(Iso2022Ptr is)
190 if (is->buffered)
191 free(is->buffered);
192 if (is->outbuf)
193 free(is->outbuf);
194 free(is);
221 fprintf(stderr, "G0 is %s, ", G0(i)->name);
222 fprintf(stderr, "G1 is %s, ", G1(i)->name);
223 fprintf(stderr, "G2 is %s, ", G2(i)->name);
224 fprintf(stderr, "G3 is %s.\n", G3(i)->name);
225 fprintf(stderr, "GL is G%d, ", identifyCharset(i, i->glp));
226 fprintf(stderr, "GR is G%d.\n", identifyCharset(i, i->grp));
341 copyIn(Iso2022Ptr is, int fd, unsigned char *buf, int count)
353 if (is->parserState == P_ESC) {
358 is->parserState = P_CSI;
360 is->parserState = P_NORMAL;
361 } else if (is->parserState == P_CSI) {
366 is->parserState = P_NORMAL;
375 is->parserState = P_ESC;
399 is->parserState = P_CSI;
449 if(is->inputFlags & IF_EIGHTBIT) \
470 if(is->inputFlags & IF_EIGHTBIT) \
492 (OTHER(is) == NULL && CHARSET_REGULAR(GR(is)) &&
497 if (OTHER(is) != NULL) {
499 c2 = OTHER(is)->other_reverse(ucode, OTHER(is)->other_aux);
510 i = (GL(is)->reverse) (ucode, GL(is));
512 switch (GL(is)->type) {
531 if (is->inputFlags & IF_EIGHTBIT) {
532 i = GR(is)->reverse(ucode, GR(is));
534 switch (GR(is)->type) {
555 if (is->inputFlags & IF_SS) {
556 i = G2(is)->reverse(ucode, G2(is));
558 switch (GR(is)->type) {
563 if ((is->inputFlags & IF_EIGHTBIT) &&
564 (is->inputFlags & IF_SSGR))
572 if ((is->inputFlags & IF_EIGHTBIT) &&
573 (is->inputFlags & IF_SSGR))
580 if ((is->inputFlags & IF_EIGHTBIT) &&
581 (is->inputFlags & IF_SSGR))
593 if (is->inputFlags & IF_SS) {
594 i = G3(is)->reverse(ucode, G3(is));
595 switch (GR(is)->type) {
600 if ((is->inputFlags & IF_EIGHTBIT) &&
601 (is->inputFlags & IF_SSGR))
609 if ((is->inputFlags & IF_EIGHTBIT) &&
610 (is->inputFlags & IF_SSGR))
617 if ((is->inputFlags & IF_EIGHTBIT) &&
618 (is->inputFlags & IF_SSGR))
629 if (is->inputFlags & IF_LS) {
630 i = GR(is)->reverse(ucode, GR(is));
632 switch (GR(is)->type) {
667 copyOut(Iso2022Ptr is, int fd, unsigned char *buf, unsigned count)
675 switch (is->parserState) {
678 if (is->buffered_ku < 0) {
680 buffer(is, *s++);
681 is->parserState = P_ESC;
682 } else if (OTHER(is) != NULL) {
683 int c = OTHER(is)->other_stack(*s, OTHER(is)->other_aux);
686 outbufUTF8(is, fd,
687 OTHER(is)->other_recode(ucode, OTHER(is)->other_aux));
688 is->shiftState = S_NORMAL;
691 } else if (*s == CSI && CHARSET_REGULAR(GR(is))) {
692 buffer(is, *s++);
693 is->parserState = P_CSI;
698 CHARSET_REGULAR(GR(is))) {
699 buffer(is, *s++);
700 terminate(is, fd);
701 is->parserState = P_NORMAL;
702 } else if (*s <= 0x20 && is->shiftState == S_NORMAL) {
703 /* Pass through C0 when GL is not regular */
704 outbufOne(is, fd, *s);
710 switch (is->shiftState) {
712 charset = GL(is);
715 charset = G2(is);
718 charset = G3(is);
726 switch (is->shiftState) {
728 charset = GR(is);
731 charset = G2(is);
734 charset = G3(is);
746 outbufUTF8(is, fd, charset->recode(code, charset));
748 outbufUTF8(is, fd, *s);
750 is->shiftState = S_NORMAL;
754 outbufUTF8(is, fd, charset->recode(code, charset));
756 outbufUTF8(is, fd, *s);
757 is->shiftState = S_NORMAL;
761 outbufUTF8(is, fd, charset->recode(code, charset));
762 is->shiftState = S_NORMAL;
767 is->buffered_ku = *s;
775 if (is->buffered_ku <= 0x7F) {
776 switch (is->shiftState) {
778 charset = GL(is);
781 charset = G2(is);
784 charset = G3(is);
790 ku_code = UChar(is->buffered_ku);
794 switch (is->shiftState) {
796 charset = GR(is);
799 charset = G2(is);
802 charset = G3(is);
808 ku_code = UChar(is->buffered_ku - 0x80);
821 outbufUTF8(is, fd,
823 is->buffered_ku = -1;
824 is->shiftState = S_NORMAL;
826 is->buffered_ku = -1;
827 is->shiftState = S_NORMAL;
834 outbufUTF8(is, fd,
836 is->buffered_ku = -1;
837 is->shiftState = S_NORMAL;
839 is->buffered_ku = -1;
840 is->shiftState = S_NORMAL;
850 outbufUTF8(is, fd,
852 is->buffered_ku = -1;
853 is->shiftState = S_NORMAL;
855 is->buffered_ku = -1;
856 is->shiftState = S_NORMAL;
868 assert(is->buffered_ku == -1);
870 buffer(is, *s++);
871 is->parserState = P_CSI;
873 buffer(is, *s++);
874 terminate(is, fd);
875 is->parserState = P_NORMAL;
877 buffer(is, *s++);
882 buffer(is, *s++);
883 terminate(is, fd);
884 is->parserState = P_NORMAL;
886 buffer(is, *s++);
894 outbuf_flush(is, fd);
898 terminate(Iso2022Ptr is, int fd)
900 if (is->outputFlags & OF_PASSTHRU) {
901 outbuf_buffered(is, fd);
905 switch (is->buffered[0]) {
907 if (is->outputFlags & OF_SS)
908 is->shiftState = S_SS2;
909 discard_buffered(is);
912 if (is->outputFlags & OF_SS)
913 is->shiftState = S_SS3;
914 discard_buffered(is);
917 if (is->outputFlags & OF_LS)
918 is->glp = &G0(is);
919 discard_buffered(is);
922 if (is->outputFlags & OF_LS)
923 is->glp = &G1(is);
924 discard_buffered(is);
927 assert(is->buffered_count >= 2);
928 switch (is->buffered[1]) {
930 if (is->outputFlags & OF_SS)
931 is->shiftState = S_SS2;
932 discard_buffered(is);
935 if (is->outputFlags & OF_SS)
936 is->shiftState = S_SS3;
937 discard_buffered(is);
940 if (is->outputFlags & OF_SS)
941 is->glp = &G2(is);
942 discard_buffered(is);
945 if (is->outputFlags & OF_LS)
946 is->glp = &G3(is);
947 discard_buffered(is);
950 if (is->outputFlags & OF_LS)
951 is->grp = &G1(is);
952 discard_buffered(is);
955 if (is->outputFlags & OF_LS)
956 is->grp = &G2(is);
957 discard_buffered(is);
960 if (is->outputFlags & OF_LS)
961 is->grp = &G3(is);
962 discard_buffered(is);
965 terminateEsc(is, fd,
966 is->buffered + 1,
967 (unsigned) (is->buffered_count - 1));
972 outbuf_buffered(is, fd);
977 terminateEsc(Iso2022Ptr is, int fd, unsigned char *s_start, unsigned count)
989 if (is->outputFlags & OF_SELECT) {
997 G0(is) = charset;
1001 G1(is) = charset;
1005 G2(is) = charset;
1009 G3(is) = charset;
1013 discard_buffered(is);
1015 if (is->outputFlags & OF_SELECT) {
1017 G0(is) = charset;
1019 discard_buffered(is);
1026 if (is->outputFlags & OF_SELECT) {
1033 G0(is) = charset;
1037 G1(is) = charset;
1041 G2(is) = charset;
1045 G3(is) = charset;
1049 discard_buffered(is);
1051 outbuf_buffered(is, fd);