]> andersk Git - moira.git/commitdiff
handle binary fields correctly
authormar <mar>
Tue, 11 Aug 1992 11:33:22 +0000 (11:33 +0000)
committermar <mar>
Tue, 11 Aug 1992 11:33:22 +0000 (11:33 +0000)
backup/dump_db.dc

index d6969a147a10976bfc7028f11a1a2dd5f9fc0283..1d4f15de7c5ec63972769be2f5cb8cf398974394 100644 (file)
@@ -31,7 +31,7 @@ EXEC SQL INCLUDE sqlca;
 
 FILE *open_file();
 
-char act[128];
+char act[257];
 
 main(argc, argv)
     int argc;
@@ -41,17 +41,18 @@ main(argc, argv)
     register int i;
     
     if (argc != 2) {
-       fprintf(stderr, "Usage: smsbackup prefix\n");
+       fprintf(stderr, "Usage: %s prefix\n", argv[0]);
        exit(1);
     }
     prefix = argv[1];
 
-    bzero(act, 128);
+    bzero(act, 256);
 
+    for (i=0; i<' '; i++) act[i]=2;
+    for (i=128; i<256; i++) act[i]=2;
     act[SEP_CHAR]=1;
     act['\\']=1;
     act[127]=2;
-    for (i=0; i<' '; i++) act[i]=2;
     
     EXEC SQL CONNECT moira;
     EXEC SQL set lockmode session where level = table;
@@ -83,10 +84,10 @@ dump_str(f, str)
     char  *strtrim();
     register char *ibp = strtrim(str);
     register int c;            /* PCC doesn't put chars in registers.. */
-    for (; c = *ibp; ibp++) {
-       c = toascii(c);         /* punt 8th bit */
+    register int t;
+
+    for (; c = (unsigned char) *ibp; ibp++) {
        switch(act[c]) {
-           register int t;
        case 1:
            if (putc1('\\', f) < 0) wpunt();
            /* fall thru.. */
@@ -102,7 +103,6 @@ dump_str(f, str)
            if (putc1(t,f) < 0) wpunt();
            t = (c&7) + '0';
            if (putc1(t,f) < 0) wpunt();
-           fprintf(stderr, "control character \\%03o\n", c);
            break;
            
        default:
This page took 0.134235 seconds and 5 git commands to generate.