- Start rosapps rearrange and cleanup process.
[reactos.git] / rosapps / applications / sysutils / utils / sdkparse / binary2cstr.cpp
diff --git a/rosapps/applications/sysutils/utils/sdkparse/binary2cstr.cpp b/rosapps/applications/sysutils/utils/sdkparse/binary2cstr.cpp
new file mode 100644 (file)
index 0000000..83c0aeb
--- /dev/null
@@ -0,0 +1,49 @@
+// binary2cstr.cpp
+
+#ifdef _MSC_VER
+#pragma warning ( disable : 4786 )
+#endif//_MSC_VER
+
+#include "binary2cstr.h"
+
+using std::string;
+
+string binary2cstr ( const string& src )
+{
+       string dst;
+       for ( int i = 0; i < src.size(); i++ )
+       {
+               char c = src[i];
+               switch ( c )
+               {
+               case '\n':
+                       dst += "\\n";
+                       break;
+               case '\r':
+                       dst += "\\r";
+                       break;
+               case '\t':
+                       dst += "\\t";
+                       break;
+               case '\v':
+                       dst += "\\v";
+                       break;
+               case '\"':
+                       dst += "\x22";
+                       break;
+               default:
+                       if ( isprint ( c ) )
+                               dst += c;
+                       else
+                       {
+                               dst += "\\x";
+                               char tmp[16];
+                               _snprintf ( tmp, sizeof(tmp)-1, "%02X", (unsigned)(unsigned char)c );
+                               tmp[sizeof(tmp)-1] = '\0';
+                               dst += tmp;
+                       }
+                       break;
+               }
+       }
+       return dst;
+}
\ No newline at end of file