raster pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=15e3c8739090aa04fe5d1cc6c71668ec819c53f3

commit 15e3c8739090aa04fe5d1cc6c71668ec819c53f3
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Mon Dec 18 00:51:52 2017 +0900

    tysend - i was only testing ascii files. binary doesnt trasnfer well...
    
    so move to 4 bit nibbles encoded as ascii. inefficient but works
    reliably.
---
 README           | 10 ++++++----
 src/bin/termio.c | 18 ++++++------------
 src/bin/tysend.c | 18 +++---------------
 3 files changed, 15 insertions(+), 31 deletions(-)

diff --git a/README b/README
index 5e53487..f6bb079 100644
--- a/README
+++ b/README
@@ -310,10 +310,12 @@ fd[CHECKSUM DATA]
   = block of data for the current file transfer with checksum as a
     string decimal which is the sum of every byte when taken as an
     unsigned char per byte. the checksum is a signed 32bit integer.
-    the checksum is the sum of the data after escaping. data will be
-    escaped using a 0xff byte as the escape header. the escape sequence
-    of 0xff 0x01 represents a 0x00 (nul) bytes, and 0xff 0x02 represents
-    a 0xff byte. all other bytes are transitted as-is.
+    the checksum is the sum of the data after escaping. 4 bits at a
+    time per data byte, encoded with high bits in one byte then low
+    bits, with the bits ecnoded as 4 bit value being 0x40 + 4 bit value
+    per byte. (@ == 0x0, A == 0x1, B == 0x2, ... N == 0xe, O == 0xf).
+    so to rebuild a byte will be (((bytes[0] - 0x40) & 0xf) << 4) |
+    ((bytes[1] - 0x40) & 0xf) per byte pair in the data block.
 
 fx
   = exit file send mode (normally at the end of the file or when it's
diff --git a/src/bin/termio.c b/src/bin/termio.c
index b5f60a8..50d986b 100644
--- a/src/bin/termio.c
+++ b/src/bin/termio.c
@@ -6037,7 +6037,6 @@ _smart_pty_command(void *data)
                {
                   Eina_Binbuf *bb = eina_binbuf_new();
                   unsigned char v;
-                  int inp = 0;
 
                   if (bb)
                     {
@@ -6047,17 +6046,12 @@ _smart_pty_command(void *data)
                          {
                             v = (unsigned char)(*p);
                             sum += v;
-                            inp++;
-                            if ((v == 0x1b) || (v == 0x07))
-                              {
-                                 p++;
-                                 v = *p;
-                                 inp++;
-                                 sum += (unsigned char)(*p);
-                                 if      (*p == 0x01) v = 0x00;
-                                 else if (*p == 0x02) v = 0xff;
-                                 else valid = EINA_FALSE;
-                              }
+
+                            v = ((v - '@') & 0xf) << 4;
+                            p++;
+                            sum += *p;
+                            v |= ((*p - '@') & 0xf);
+                            if (!*p) valid = EINA_FALSE;
                             eina_binbuf_append_char(bb, v);
                          }
                        if ((valid) && (sum == pksum) && (sd->sendfile.active))
diff --git a/src/bin/tysend.c b/src/bin/tysend.c
index 1bb2d78..b4ad458 100644
--- a/src/bin/tysend.c
+++ b/src/bin/tysend.c
@@ -87,27 +87,15 @@ main(int argc, char **argv)
                     {
                        if (buf[0] == 'k')
                          {
-                            pksize = read(file_fd, rawbuf, 8192);
+                            pksize = read(file_fd, rawbuf, 4096);
 
                             if (pksize > 0)
                               {
                                  bout = 0;
                                  for (bin = 0; bin < pksize; bin++)
                                    {
-                                      if (rawbuf[bin] == 0x00)
-                                        {
-                                           rawbuf2[bout++] = 0xff;
-                                           rawbuf2[bout++] = 0x01;
-                                        }
-                                      else if (rawbuf[bin] == 0xff)
-                                        {
-                                           rawbuf2[bout++] = 0xff;
-                                           rawbuf2[bout++] = 0x02;
-                                        }
-                                      else
-                                        {
-                                           rawbuf2[bout++] = rawbuf[bin];
-                                        }
+                                      rawbuf2[bout++] = (rawbuf[bin] >> 4 ) + 
'@';
+                                      rawbuf2[bout++] = (rawbuf[bin] & 0xf) + 
'@';
                                    }
                                  rawbuf2[bout] = 0;
                                  pksum = 0;

-- 


Reply via email to