From 652a0ab876d5f15778be00f6af0f39e93662fd27 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Sat, 5 Mar 2005 07:38:55 +0000 Subject: [PATCH] Add ebcdic translation code git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1863 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/stored/ebcdic.c | 163 ++++++++++++++++++++++++++++++++++ bacula/src/stored/match_bsr.c | 2 +- bacula/src/stored/parse_bsr.c | 2 +- 3 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 bacula/src/stored/ebcdic.c diff --git a/bacula/src/stored/ebcdic.c b/bacula/src/stored/ebcdic.c new file mode 100644 index 0000000000..faa8c8ba48 --- /dev/null +++ b/bacula/src/stored/ebcdic.c @@ -0,0 +1,163 @@ +/* + * Taken from the public domain ansitape program for + * integration into Bacula. KES - Mar 2005 + */ + +/* Mapping of EBCDIC codes to ASCII equivalents. */ +static char to_ascii_table[256] = { + '\000', '\001', '\002', '\003', + '\234', '\011', '\206', '\177', + '\227', '\215', '\216', '\013', + '\014', '\015', '\016', '\017', + '\020', '\021', '\022', '\023', + '\235', '\205', '\010', '\207', + '\030', '\031', '\222', '\217', + '\034', '\035', '\036', '\037', + '\200', '\201', '\202', '\203', + '\204', '\012', '\027', '\033', + '\210', '\211', '\212', '\213', + '\214', '\005', '\006', '\007', + '\220', '\221', '\026', '\223', + '\224', '\225', '\226', '\004', + '\230', '\231', '\232', '\233', + '\024', '\025', '\236', '\032', + '\040', '\240', '\241', '\242', + '\243', '\244', '\245', '\246', + '\247', '\250', '\133', '\056', + '\074', '\050', '\053', '\041', + '\046', '\251', '\252', '\253', + '\254', '\255', '\256', '\257', + '\260', '\261', '\135', '\044', + '\052', '\051', '\073', '\136', + '\055', '\057', '\262', '\263', + '\264', '\265', '\266', '\267', + '\270', '\271', '\174', '\054', + '\045', '\137', '\076', '\077', + '\272', '\273', '\274', '\275', + '\276', '\277', '\300', '\301', + '\302', '\140', '\072', '\043', + '\100', '\047', '\075', '\042', + '\303', '\141', '\142', '\143', + '\144', '\145', '\146', '\147', + '\150', '\151', '\304', '\305', + '\306', '\307', '\310', '\311', + '\312', '\152', '\153', '\154', + '\155', '\156', '\157', '\160', + '\161', '\162', '\313', '\314', + '\315', '\316', '\317', '\320', + '\321', '\176', '\163', '\164', + '\165', '\166', '\167', '\170', + '\171', '\172', '\322', '\323', + '\324', '\325', '\326', '\327', + '\330', '\331', '\332', '\333', + '\334', '\335', '\336', '\337', + '\340', '\341', '\342', '\343', + '\344', '\345', '\346', '\347', + '\173', '\101', '\102', '\103', + '\104', '\105', '\106', '\107', + '\110', '\111', '\350', '\351', + '\352', '\353', '\354', '\355', + '\175', '\112', '\113', '\114', + '\115', '\116', '\117', '\120', + '\121', '\122', '\356', '\357', + '\360', '\361', '\362', '\363', + '\134', '\237', '\123', '\124', + '\125', '\126', '\127', '\130', + '\131', '\132', '\364', '\365', + '\366', '\367', '\370', '\371', + '\060', '\061', '\062', '\063', + '\064', '\065', '\066', '\067', + '\070', '\071', '\372', '\373', + '\374', '\375', '\376', '\377' +}; + + +/* Mapping of ASCII codes to EBCDIC equivalents. */ +static char to_ebcdic_table[256] = { + '\000', '\001', '\002', '\003', + '\067', '\055', '\056', '\057', + '\026', '\005', '\045', '\013', + '\014', '\015', '\016', '\017', + '\020', '\021', '\022', '\023', + '\074', '\075', '\062', '\046', + '\030', '\031', '\077', '\047', + '\034', '\035', '\036', '\037', + '\100', '\117', '\177', '\173', + '\133', '\154', '\120', '\175', + '\115', '\135', '\134', '\116', + '\153', '\140', '\113', '\141', + '\360', '\361', '\362', '\363', + '\364', '\365', '\366', '\367', + '\370', '\371', '\172', '\136', + '\114', '\176', '\156', '\157', + '\174', '\301', '\302', '\303', + '\304', '\305', '\306', '\307', + '\310', '\311', '\321', '\322', + '\323', '\324', '\325', '\326', + '\327', '\330', '\331', '\342', + '\343', '\344', '\345', '\346', + '\347', '\350', '\351', '\112', + '\340', '\132', '\137', '\155', + '\171', '\201', '\202', '\203', + '\204', '\205', '\206', '\207', + '\210', '\211', '\221', '\222', + '\223', '\224', '\225', '\226', + '\227', '\230', '\231', '\242', + '\243', '\244', '\245', '\246', + '\247', '\250', '\251', '\300', + '\152', '\320', '\241', '\007', + '\040', '\041', '\042', '\043', + '\044', '\025', '\006', '\027', + '\050', '\051', '\052', '\053', + '\054', '\011', '\012', '\033', + '\060', '\061', '\032', '\063', + '\064', '\065', '\066', '\010', + '\070', '\071', '\072', '\073', + '\004', '\024', '\076', '\341', + '\101', '\102', '\103', '\104', + '\105', '\106', '\107', '\110', + '\111', '\121', '\122', '\123', + '\124', '\125', '\126', '\127', + '\130', '\131', '\142', '\143', + '\144', '\145', '\146', '\147', + '\150', '\151', '\160', '\161', + '\162', '\163', '\164', '\165', + '\166', '\167', '\170', '\200', + '\212', '\213', '\214', '\215', + '\216', '\217', '\220', '\232', + '\233', '\234', '\235', '\236', + '\237', '\240', '\252', '\253', + '\254', '\255', '\256', '\257', + '\260', '\261', '\262', '\263', + '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', + '\274', '\275', '\276', '\277', + '\312', '\313', '\314', '\315', + '\316', '\317', '\332', '\333', + '\334', '\335', '\336', '\337', + '\352', '\353', '\354', '\355', + '\356', '\357', '\372', '\373', + '\374', '\375', '\376', '\377' +}; + + +/* + * Convert from ASCII to EBCDIC + */ +asci_to_ebcdic(char *dst, char *src, int count) +{ + while (count--) { + *dst++ = to_ebcdic_table[0377 & *src++]; + } +} + + +/* + * Convert from EBCDIC to ASCII + */ +ebcdic_to_ascii(char *dst, char *src, int count) +{ + while (count--) { + *dst++ = to_asci_table[0377 & *src++]; + } +} diff --git a/bacula/src/stored/match_bsr.c b/bacula/src/stored/match_bsr.c index d25dc016b8..df6087601f 100755 --- a/bacula/src/stored/match_bsr.c +++ b/bacula/src/stored/match_bsr.c @@ -8,7 +8,7 @@ */ /* - Copyright (C) 2000-2004 Kern Sibbald and John Walker + Copyright (C) 2000-2005 Kern Sibbald This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as diff --git a/bacula/src/stored/parse_bsr.c b/bacula/src/stored/parse_bsr.c index a1fbc6ba07..654232632c 100755 --- a/bacula/src/stored/parse_bsr.c +++ b/bacula/src/stored/parse_bsr.c @@ -21,7 +21,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free - MA 02111-1307, USA. + MA 02111-1307, USA. */ -- 2.39.5