]> andersk Git - moira.git/commitdiff
in ASCII backups, write `|'s within fields as \174 instead of \| so
authordanw <danw>
Tue, 4 Feb 1997 22:53:41 +0000 (22:53 +0000)
committerdanw <danw>
Tue, 4 Feb 1997 22:53:41 +0000 (22:53 +0000)
that `awk -F\|' will always break up the fields correctly. (mrrestore
already deals with \xxx, so no changes were needed there.)

backup/db2bkup.awk
backup/dump_db.pc

index 514bf083a935b0370117498df665edc65dd68faf..7a19fab1d97ed650bb632e7dfd9b7a7e92f3b6ee 100644 (file)
@@ -12,7 +12,7 @@ BEGIN {
        print "#include <stdio.h>";
        print "EXEC SQL INCLUDE sqlca;";
        print "#include \"dump_db.h\"";
-       print "#define dump_date dump_str\n";
+       print "#define dump_bin dump_str\n";
 
        print "/* This file automatically generated */" > "bkup1.pc";
        print "/* Do not edit */\n" >> "bkup1.pc";
@@ -82,7 +82,7 @@ NF>=2 {
        printf "\t\tif(sqlca.sqlcode != 0) break;\n";
        for (i = 0; i < count; i++) {
                if (i != 0) print "\t\tdump_sep(f);";
-               if (vtype[i] ~ /str/) {
+               if (vtype[i] ~ /str/ || vtype[i] ~ /date/) {
                        printf "\t\tdump_str(f, strtrim(t_%s));\n", vname[i];
                } else {
                        printf "\t\tdump_%s(f, t_%s);\n", vtype[i], vname[i];
index b0dcecbcc24498c77f1de4ac358e2bb96beb8376..4148e9266a1c13d16aac4c9e2fb41415680c2d94 100644 (file)
@@ -32,7 +32,6 @@ EXEC SQL INCLUDE sqlca;
 
 FILE *open_file();
 
-char act[257];
 EXEC SQL BEGIN DECLARE SECTION;
 char *db="moira";
 EXEC SQL END DECLARE SECTION;
@@ -50,14 +49,6 @@ main(argc, argv)
     }
     prefix = argv[1];
 
-    memset(act, 0, 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;
-    
     EXEC SQL CONNECT :db IDENTIFIED BY :db;
 
     do_backups(prefix);
@@ -89,15 +80,7 @@ dump_str(f, str)
     register int t;
 
     for (ibp = str; c = (unsigned char) *ibp; ibp++) {
-       switch(act[c]) {
-       case 1:
-           if (putc1('\\', f) < 0) wpunt();
-           /* fall thru.. */
-       case 0:
-           if (putc1(c, f) < 0) wpunt();
-           
-           break;
-       case 2:
+       if(c<32 || c>126 || c==SEP_CHAR || c=='\\') {
            if (putc1('\\', f) < 0) wpunt();        
            t = ((c>>6)&7) + '0';
            if (putc1(t,f) < 0) wpunt();
@@ -105,43 +88,8 @@ dump_str(f, str)
            if (putc1(t,f) < 0) wpunt();
            t = (c&7) + '0';
            if (putc1(t,f) < 0) wpunt();
-           break;
-           
-       default:
-           punt("Can't get here");
-       }
-    }
-}
-
-dump_bin(f, str)
-    register FILE *f;
-    register char *str;
-{
-    register char *ibp = str;
-    register int c;            /* PCC doesn't put chars in registers.. */
-    register int t;
-
-    for (; c = (unsigned char) *ibp; ibp++) {
-       switch(act[c]) {
-       case 1:
-           if (putc1('\\', f) < 0) wpunt();
-           /* fall thru.. */
-       case 0:
+       } else {
            if (putc1(c, f) < 0) wpunt();
-           
-           break;
-       case 2:
-           if (putc1('\\', f) < 0) wpunt();        
-           t = ((c>>6)&7) + '0';
-           if (putc1(t,f) < 0) wpunt();
-           t = ((c>>3)&7) + '0';
-           if (putc1(t,f) < 0) wpunt();
-           t = (c&7) + '0';
-           if (putc1(t,f) < 0) wpunt();
-           break;
-           
-       default:
-           punt("Can't get here");
        }
     }
 }
This page took 0.053902 seconds and 5 git commands to generate.