]> Cypherpunks repositories - keks.git/commitdiff
Strip long strings
authorSergey Matveev <stargrave@stargrave.org>
Wed, 9 Oct 2024 18:02:18 +0000 (21:02 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 9 Oct 2024 18:03:16 +0000 (21:03 +0300)
cyac/cmd/print.c

index 7248dd7cd3fe911c5f3429e4c02c60c2a1f221bc9e0d7025b07304d47a144e6b..1a8b607d0964f79a13e7124dc022d61a7aeb771ab594b0efcd13647fadfa13e2 100644 (file)
@@ -29,6 +29,8 @@
 #include <yac/dectai.h>
 #include <yac/iter.h>
 
+static const size_t maxStrLen = 40;
+
 static const char hexdigits[] = "0123456789ABCDEF";
 
 static char *
@@ -193,16 +195,21 @@ myCb(
         }
         fputs(")\n", stdout);
         break;
-    case YACItemBin:
-        hex = HexEnc(atom->val.buf, atom->len);
-        fprintf(stdout, "%zu:%s\n", atom->len, hex);
+    case YACItemBin: {
+        const size_t l = (atom->len > maxStrLen) ? maxStrLen : atom->len;
+        hex = HexEnc(atom->val.buf, l);
+        fprintf(
+            stdout, "%zu:%s%s\n", atom->len, hex, (atom->len > maxStrLen) ? "..." : "");
         free(hex);
         break;
-    case YACItemStr:
-        hex = strndup((const char *)atom->val.buf, atom->len);
-        fprintf(stdout, "\"%s\"\n", hex);
+    }
+    case YACItemStr: {
+        const size_t l = (atom->len > maxStrLen) ? maxStrLen : atom->len;
+        hex = strndup((const char *)atom->val.buf, l);
+        fprintf(stdout, "\"%s%s\"\n", hex, (atom->len > maxStrLen) ? "..." : "");
         free(hex);
         break;
+    }
     case YACItemRaw:
         hex = HexEnc(atom->val.buf, atom->len);
         fprintf(stdout, "(t=0x%X l=%zu v=%s)\n", atom->tag, atom->len, hex);