]> andersk Git - moira.git/commitdiff
handle signature as binary field
authormar <mar>
Wed, 14 Jul 1993 12:07:19 +0000 (12:07 +0000)
committermar <mar>
Wed, 14 Jul 1993 12:07:19 +0000 (12:07 +0000)
backup/db2bkup.awk
backup/dump_db.dc

index abd951edaa5e9dc0ca09c3844ffde85e4a9024eb..3a8e3999d5e6d77c27a973eab1bdb457ce19213e 100644 (file)
@@ -40,7 +40,11 @@ NF>=2 {
                t = split(temp[2], temp2, ")")
                if (t != 2) printf "Can't parse %s\n", temp[2];
                printf "\tchar\tt_%s[%d];\n", vname[count], temp2[1]+1;
-               vtype[count]="str"
+               if ($1 == "signature") {
+                       vtype[count]="bin"
+               } else {
+                       vtype[count]="str"
+               }
        } else if ($2 ~ /DATE/) {
                printf "\tchar\tt_%s[26];\n", vname[count]
                vtype[count]="str"
index 1d4f15de7c5ec63972769be2f5cb8cf398974394..f915e8a0b2ebdb6d76cf5e30acead1493ff7ea5f 100644 (file)
@@ -111,6 +111,39 @@ dump_str(f, str)
     }
 }
 
+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:
+           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");
+       }
+    }
+}
+
 safe_close(stream)
        FILE *stream;
 {
This page took 0.675114 seconds and 5 git commands to generate.