From 639a8de3070827c28de8eade2f9da246dabe6622 Mon Sep 17 00:00:00 2001 From: mar Date: Wed, 14 Jul 1993 12:07:19 +0000 Subject: [PATCH] handle signature as binary field --- backup/db2bkup.awk | 6 +++++- backup/dump_db.dc | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/backup/db2bkup.awk b/backup/db2bkup.awk index abd951ed..3a8e3999 100644 --- a/backup/db2bkup.awk +++ b/backup/db2bkup.awk @@ -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" diff --git a/backup/dump_db.dc b/backup/dump_db.dc index 1d4f15de..f915e8a0 100644 --- a/backup/dump_db.dc +++ b/backup/dump_db.dc @@ -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; { -- 2.45.2