- unsigned int new, bits=0, cnt=0, i, part=0;
- unsigned char ch;
- unsigned char* outp=bufp;
- unsigned char* inp=bufp;
- while((ch=*(inp++)) != 0)
- {
- if ((ch != '=') && (ch != ' ') && (ch != '\n') && (ch != '\r'))
- {
- if ((ch>='A') && (ch <= 'Z')) new = ch - 'A';
- else if ((ch>='a') && (ch <= 'z')) new = ch - 'a' + 26;
- else if ((ch>='0') && (ch <= '9')) new = ch - '0' + 52;
- else if ( ch=='+' ) new = 62;
- else if ( ch=='/' ) new = 63;
- else {
- error(0, 0, "dec64 error at char %d: %x\n", inp - bufp, ch);
- return(0);
- }
- part=((part & 0x3F)*64) + new;
- bits += 6;
- if (bits >= 8)
- {
- bits -= 8;
- *outp = (part >> bits);
- cnt++; outp++;
- }
- }
- }
- if (outlevel == O_VERBOSE)
- {
- error(0, 0, "Inbound binary data:\n");
- for (i=0; i<cnt; i++)
- {
- error_build("%02X ",bufp[i]);
- if (((i % 16)==15) || (i==(cnt-1)))
- error_complete(0, 0, "");
- }
- }
- return(cnt);
+ unsigned int newx, bits=0, cnt=0, i, part=0;
+ unsigned char ch;
+ char* outp=bufp;
+ char* inp=bufp;
+ while((ch=(unsigned char)*(inp++)) != 0)
+ {
+ if ((ch != '=') && (ch != ' ') && (ch != '\n') && (ch != '\r'))
+ {
+ if ((ch>='A') && (ch <= 'Z')) newx = ch - 'A';
+ else if ((ch>='a') && (ch <= 'z')) newx = ch - 'a' + 26;
+ else if ((ch>='0') && (ch <= '9')) newx = ch - '0' + 52;
+ else if ( ch=='+' ) newx = 62;
+ else if ( ch=='/' ) newx = 63;
+ else {
+ report(stderr, GT_("dec64 error at char %d: %x\n"), (int)(inp - bufp), ch);
+ return(0);
+ }
+ part=((part & 0x3F)*64) + newx;
+ bits += 6;
+ if (bits >= 8)
+ {
+ bits -= 8;
+ *outp = (part >> bits);
+ cnt++; outp++;
+ }
+ }
+ }
+ if (outlevel >= O_MONITOR)
+ {
+ report(stdout, GT_("Inbound binary data:\n"));
+ for (i=0; i<cnt; i++)
+ {
+ report_build(stdout, "%02X ",(unsigned char)bufp[i]);
+ if (((i % 16)==15) || (i==(cnt-1)))
+ report_complete(stdout, "\n");
+ }
+ }
+ return(cnt);