Support iTerm2 graphics protocol, replace encodeB with base64_encode

This commit is contained in:
bptato
2021-02-02 22:14:46 +01:00
parent f88e49826d
commit e4570e8b6e
8 changed files with 113 additions and 71 deletions

View File

@@ -350,51 +350,3 @@ decodeMIME0(Str orgstr)
return cnv;
}
/* encoding */
static char Base64Table[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
Str
encodeB(char *a)
{
unsigned char d[3];
unsigned char c1, c2, c3, c4;
int i, n_pad;
Str w = Strnew();
while (1) {
if (*a == '\0')
break;
n_pad = 0;
d[1] = d[2] = 0;
for (i = 0; i < 3; i++) {
d[i] = a[i];
if (a[i] == '\0') {
n_pad = 3 - i;
break;
}
}
c1 = d[0] >> 2;
c2 = (((d[0] << 4) | (d[1] >> 4)) & 0x3f);
if (n_pad == 2) {
c3 = c4 = 64;
}
else if (n_pad == 1) {
c3 = ((d[1] << 2) & 0x3f);
c4 = 64;
}
else {
c3 = (((d[1] << 2) | (d[2] >> 6)) & 0x3f);
c4 = (d[2] & 0x3f);
}
Strcat_char(w, Base64Table[c1]);
Strcat_char(w, Base64Table[c2]);
Strcat_char(w, Base64Table[c3]);
Strcat_char(w, Base64Table[c4]);
if (n_pad)
break;
a += 3;
}
return w;
}