sreplace.c
changeset 7 fcde17ef6af6
parent 5 18c4f565e6d8
child 8 4ecd557ebebf
child 11 0ef0d9c52f82
--- a/sreplace.c	Tue May 29 18:52:18 2007 +0200
+++ b/sreplace.c	Thu May 31 00:17:52 2007 +0200
@@ -8,18 +8,14 @@
 #include <assert.h>
 #include <string.h>
 
+#include "sreplace.h"
+
 enum {
   BUFFER_SIZE = 2048
 };
 
 static FILE * input, * output;
 
-struct String
-{
-  char *ptr;
-  int length;
-};
-
 struct CmpState
 {
   struct String *str;
@@ -241,45 +237,6 @@
   printf("usage: %s OLD_STR NEW_STR\n", pname);
 }
 
-static void parse_backslashes(char *str)
-{
-  int was_backslash = 0;
-  char *write_str = str;
-
-  while (*str != 0)
-  {
-    if (*str == '\\')
-      was_backslash = 1;
-    else
-    {
-      if (was_backslash)
-      {
-        switch(*str)
-        {
-          case '\\':
-            *(write_str++) = '\\';
-            break;
-          case 'n':
-            *(write_str++) = '\n';
-            break;
-          case 't':
-            *(write_str++) = '\t';
-            break;
-          default:
-            *(write_str++) = *str;
-        }
-      }
-      else
-      {
-        *(write_str++) = *str;
-      }
-      was_backslash = 0;
-    }
-    ++str;
-  }
-  *(write_str++) = '\0';
-}
-
 static void process_parameters(int argc, char **argv)
 {
   if (argc != 3)
@@ -291,11 +248,15 @@
   old_str.ptr = argv[1];
   new_str.ptr = argv[2];
 
-  parse_backslashes(old_str.ptr);
-  parse_backslashes(new_str.ptr);
+  old_str.length = parse_backslashes(old_str.ptr);
+  fprintf(stderr, "OLD: ");
+  print_hex(stderr, &old_str);
+  fprintf(stderr, "\n");
 
-  old_str.length = strlen(old_str.ptr);
-  new_str.length = strlen(new_str.ptr);
+  new_str.length = parse_backslashes(new_str.ptr);
+  fprintf(stderr, "NEW: ");
+  print_hex(stderr, &new_str);
+  fprintf(stderr, "\n");
 }
 
 int main(int argc, char ** argv)