libarchive: open_zipped() does not need to check extensions for e.g. gzip
[oweals/busybox.git] / libbb / printable.c
index ae9335932afe2d70d6e5a106f1661acd94b4998d..9a423431e64a9d71ace87ccd1fb2c2df454131d9 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Copyright (C) 2007 Denys Vlasenko
  *
- * Licensed under GPL version 2, see file LICENSE in this tarball for details.
+ * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
 #include "libbb.h"
@@ -32,3 +32,27 @@ void FAST_FUNC fputc_printable(int ch, FILE *file)
        }
        fputc(ch, file);
 }
+
+void FAST_FUNC visible(unsigned ch, char *buf, int flags)
+{
+       if (ch == '\t' && !(flags & VISIBLE_SHOW_TABS)) {
+               goto raw;
+       }
+       if (ch == '\n') {
+               if (flags & VISIBLE_ENDLINE)
+                       *buf++ = '$';
+       } else {
+               if (ch >= 128) {
+                       ch -= 128;
+                       *buf++ = 'M';
+                       *buf++ = '-';
+               }
+               if (ch < 32 || ch == 127) {
+                       *buf++ = '^';
+                       ch ^= 0x40;
+               }
+       }
+ raw:
+       *buf++ = ch;
+       *buf = '\0';
+}