Lines Matching +full:- +full:c
2 zm.c - zmodem protocol handling lowlevelstuff
3 Copyright (C) until 1998 Chuck Forsberg (OMEN Technology Inc)
4 Copyright (C) 1996, 1997 Uwe Ohse
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA.
23 /* historical comment: -- uwe
24 * Z M . C
26 * 05-09-88 Chuck Forsberg Omen Technology Inc
31 * zgethdr(hdr, eflag) receive header - binary or hex
62 "Carrier Lost", /* -3 */
63 "TIMEOUT", /* -2 */
64 "ERROR", /* -1 */
97 static void zputhex __P ((int c, char *pos));
107 extern void xsendline(int c);
118 register int c; in noxrd7() local
121 if ((c = READLINE_PF(Rxtimeout)) < 0) in noxrd7()
122 return c; in noxrd7()
123 switch (c &= 0177) { in noxrd7()
128 if (Zctlesc && !(c & 0140)) in noxrd7()
133 return c; in noxrd7()
141 register int c, n; in zgeth1() local
143 if ((c = noxrd7()) < 0) in zgeth1()
144 return c; in zgeth1()
145 n = c - '0'; in zgeth1()
147 n -= ('a' - ':'); in zgeth1()
150 if ((c = noxrd7()) < 0) in zgeth1()
151 return c; in zgeth1()
152 c -= '0'; in zgeth1()
153 if (c > 9) in zgeth1()
154 c -= ('a' - ':'); in zgeth1()
155 if (c & ~0xF) in zgeth1()
157 c += (n<<4); in zgeth1()
158 return c; in zgeth1()
165 register int c; in zgethex() local
167 c = zgeth1(); in zgethex()
168 VPRINTF(9,("zgethex: %02X", c)); in zgethex()
169 return c; in zgethex()
179 int c; in zdlread() local
181 if ((c = READLINE_PF(Rxtimeout)) & 0140) in zdlread()
182 return c; in zdlread()
183 return zdlread2(c); in zdlread()
185 /* no, i don't like gotos. -- uwe */
187 zdlread2(int c) in zdlread2() argument
193 if ((c = READLINE_PF(Rxtimeout)) & 0140) in zdlread2()
194 return c; in zdlread2()
196 switch (c) { in zdlread2()
205 if (Zctlesc && !(c & 0140)) { in zdlread2()
208 return c; in zdlread2()
211 if ((c = READLINE_PF(Rxtimeout)) < 0) in zdlread2()
212 return c; in zdlread2()
213 if (c == CAN && (c = READLINE_PF(Rxtimeout)) < 0) in zdlread2()
214 return c; in zdlread2()
215 if (c == CAN && (c = READLINE_PF(Rxtimeout)) < 0) in zdlread2()
216 return c; in zdlread2()
217 if (c == CAN && (c = READLINE_PF(Rxtimeout)) < 0) in zdlread2()
218 return c; in zdlread2()
219 switch (c) { in zdlread2()
226 return (c | GOTOR); in zdlread2()
237 if (Zctlesc && ! (c & 0140)) { in zdlread2()
240 if ((c & 0140) == 0100) in zdlread2()
241 return (c ^ 0100); in zdlread2()
244 VPRINTF(2,(_("Bad escape sequence %x"), c)); in zdlread2()
251 * Send character c with ZMODEM escape sequence encoding.
255 zsendline(int c) in zsendline() argument
258 switch(zsendline_tab[(unsigned) (c&=0377)]) in zsendline()
261 xsendline(lastsent = c); in zsendline()
265 c ^= 0100; in zsendline()
266 xsendline(lastsent = c); in zsendline()
270 xsendline(lastsent = c); in zsendline()
273 c ^= 0100; in zsendline()
274 xsendline(lastsent = c); in zsendline()
294 //fwrite(s,(size_t)(t-s),1,stdout); in zsendline_s()
295 send_data(1, (char *)s, t-s); in zsendline_s()
296 lastsent=t[-1]; in zsendline_s()
300 int c=*s; in zsendline_s() local
303 xsendline(lastsent = c); in zsendline_s()
307 c ^= 0100; in zsendline_s()
308 xsendline(lastsent = c); in zsendline_s()
312 xsendline(lastsent = c); in zsendline_s()
315 c ^= 0100; in zsendline_s()
316 xsendline(lastsent = c); in zsendline_s()
335 for (n = Znulls; --n >=0; ) in zsbhdr()
346 for (n=4; --n >= 0; ++hdr) { in zsbhdr()
369 for (n=4; --n >= 0; ++hdr) { in zsbh32()
374 for (n=4; --n >= 0;) { in zsbh32()
399 for (n=4; --n >= 0; ++hdr) { in zshhdr()
433 Zendnames[(frameend-ZCRCE)&3])); in zsdata()
438 } while (--length>0); in zsdata()
452 int c; in zsda32() local
455 VPRINTF(3,("zsdat32: %d %s", (u32)length, Zendnames[(frameend-ZCRCE)&3])); in zsda32()
459 for (; length; length--) { in zsda32()
460 c = *buf & 0377; in zsda32()
461 crc = UPDC32(c, crc); in zsda32()
468 for (i=4; --i >= 0;) { in zsda32()
469 c=(int) crc; in zsda32()
470 if (c & 0140) in zsda32()
471 xsendline(lastsent = c); in zsda32()
473 zsendline(c); in zsda32()
544 register int c; in zrdata() local
555 if ((c = zdlread()) & ~0377) { in zrdata()
557 switch (c) { in zrdata()
563 d = c; in zrdata()
564 c &= 0377; in zrdata()
565 crc = updcrc(c, crc); in zrdata()
566 if ((c = zdlread()) & ~0377) in zrdata()
568 crc = updcrc(c, crc); in zrdata()
569 if ((c = zdlread()) & ~0377) in zrdata()
571 crc = updcrc(c, crc); in zrdata()
576 *bytes_received = length - (end - buf); in zrdata()
579 Zendnames[(d-GOTCRCE)&3])); in zrdata()
587 return c; in zrdata()
590 return c; in zrdata()
593 *buf++ = c; in zrdata()
594 crc = updcrc(c, crc); in zrdata()
603 register int c; in zrdat32() local
610 if ((c = zdlread()) & ~0377) { in zrdat32()
612 switch (c) { in zrdat32()
617 d = c; in zrdat32()
618 c &= 0377; in zrdat32()
619 crc = UPDC32(c, crc); in zrdat32()
620 if ((c = zdlread()) & ~0377) in zrdat32()
622 crc = UPDC32(c, crc); in zrdat32()
623 if ((c = zdlread()) & ~0377) in zrdat32()
625 crc = UPDC32(c, crc); in zrdat32()
626 if ((c = zdlread()) & ~0377) in zrdat32()
628 crc = UPDC32(c, crc); in zrdat32()
629 if ((c = zdlread()) & ~0377) in zrdat32()
631 crc = UPDC32(c, crc); in zrdat32()
636 *bytes_received = length - (end - buf); in zrdat32()
639 Zendnames[(d-GOTCRCE)&3])); in zrdat32()
646 return c; in zrdat32()
649 return c; in zrdat32()
652 *buf++ = c; in zrdat32()
653 crc = UPDC32(c, crc); in zrdat32()
672 register int c, cancount; in zgethdr() local
683 switch (c = READLINE_PF(Rxtimeout)) { in zgethdr()
689 if (--cancount <= 0) { in zgethdr()
690 c = ZCAN; goto fifi; in zgethdr()
692 switch (c = READLINE_PF(1)) { in zgethdr()
696 c = ERROR; in zgethdr()
703 if (--cancount <= 0) { in zgethdr()
704 c = ZCAN; goto fifi; in zgethdr()
711 if ( --max_garbage == 0) { in zgethdr()
715 //if (eflag && ((c &= 0177) & 0140) && Verbose) in zgethdr()
716 // vchar(c); in zgethdr()
718 // vchar(c); in zgethdr()
726 switch (c = noxrd7()) { in zgethdr()
738 switch (c = noxrd7()) { in zgethdr()
744 c = zrbhdr(hdr); in zgethdr()
748 c = zrbhdr32(hdr); in zgethdr()
752 c = zrhhdr(hdr); in zgethdr()
764 switch (c) { in zgethdr()
766 c = ZCAN; in zgethdr()
773 zperr(_("Got %s"), frametypes[c+FTOFFSET]); in zgethdr()
776 if (c >= -3 && c <= FRTYPES) in zgethdr()
777 VPRINTF(3,("zgethdr: %s %lx", frametypes[c+FTOFFSET], (unsigned long) rxpos)); in zgethdr()
779 VPRINTF(3,("zgethdr: %d %lx", c, (unsigned long) rxpos)); in zgethdr()
783 return c; in zgethdr()
790 register int c, n; in zrbhdr() local
793 if ((c = zdlread()) & ~0377) in zrbhdr()
794 return c; in zrbhdr()
795 Rxtype = c; in zrbhdr()
796 crc = updcrc(c, 0); in zrbhdr()
798 for (n=4; --n >= 0; ++hdr) { in zrbhdr()
799 if ((c = zdlread()) & ~0377) in zrbhdr()
800 return c; in zrbhdr()
801 crc = updcrc(c, crc); in zrbhdr()
802 *hdr = c; in zrbhdr()
804 if ((c = zdlread()) & ~0377) in zrbhdr()
805 return c; in zrbhdr()
806 crc = updcrc(c, crc); in zrbhdr()
807 if ((c = zdlread()) & ~0377) in zrbhdr()
808 return c; in zrbhdr()
809 crc = updcrc(c, crc); in zrbhdr()
823 register int c, n; in zrbhdr32() local
826 if ((c = zdlread()) & ~0377) in zrbhdr32()
827 return c; in zrbhdr32()
828 Rxtype = c; in zrbhdr32()
829 crc = 0xFFFFFFFFL; crc = UPDC32(c, crc); in zrbhdr32()
831 VPRINTF(3,("zrbhdr32 c=%X crc=%lX", c, crc)i); in zrbhdr32()
834 for (n=4; --n >= 0; ++hdr) { in zrbhdr32()
835 if ((c = zdlread()) & ~0377) in zrbhdr32()
836 return c; in zrbhdr32()
837 crc = UPDC32(c, crc); in zrbhdr32()
838 *hdr = c; in zrbhdr32()
840 VPRINTF(3,("zrbhdr32 c=%X crc=%lX", c, crc)); in zrbhdr32()
843 for (n=4; --n >= 0;) { in zrbhdr32()
844 if ((c = zdlread()) & ~0377) in zrbhdr32()
845 return c; in zrbhdr32()
846 crc = UPDC32(c, crc); in zrbhdr32()
848 VPRINTF(3,("zrbhdr32 c=%X crc=%lX", c, crc)); in zrbhdr32()
865 register int c; in zrhhdr() local
869 if ((c = zgethex()) < 0) in zrhhdr()
870 return c; in zrhhdr()
871 Rxtype = c; in zrhhdr()
872 crc = updcrc(c, 0); in zrhhdr()
874 for (n=4; --n >= 0; ++hdr) { in zrhhdr()
875 if ((c = zgethex()) < 0) in zrhhdr()
876 return c; in zrhhdr()
877 crc = updcrc(c, crc); in zrhhdr()
878 *hdr = c; in zrhhdr()
880 if ((c = zgethex()) < 0) in zrhhdr()
881 return c; in zrhhdr()
882 crc = updcrc(c, crc); in zrhhdr()
883 if ((c = zgethex()) < 0) in zrhhdr()
884 return c; in zrhhdr()
885 crc = updcrc(c, crc); in zrhhdr()
889 switch ( c = READLINE_PF(1)) { in zrhhdr()
904 zputhex(int c, char *pos) in zputhex() argument
908 VPRINTF(9,("zputhex: %02X", c)); in zputhex()
909 pos[0]=digits[(c&0xF0)>>4]; in zputhex()
910 pos[1]=digits[c&0x0F]; in zputhex()
982 /* End of zm.c */