From 23a01347f1fddf2697ef39f8c37a34208936484c Mon Sep 17 00:00:00 2001 From: munja Date: Mon, 28 Mar 2022 15:54:28 +0100 Subject: [PATCH] fix: support SOH, STX and DC1 control characters in mp_jsonout --- all.sas | 15 ++++++++++++--- base/mp_jsonout.sas | 5 ++++- meta/mm_createwebservice.sas | 5 ++++- sasjs/sasjsconfig.json | 4 ++++ viya/mv_createwebservice.sas | 5 ++++- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/all.sas b/all.sas index 371a2d2..aca7519 100644 --- a/all.sas +++ b/all.sas @@ -8417,8 +8417,11 @@ options prxchange('s/'!!'0A'x!!'/\n/',-1, prxchange('s/'!!'0D'x!!'/\r/',-1, prxchange('s/'!!'09'x!!'/\t/',-1, + prxchange('s/'!!'01'x!!'/\\u0001/',-1, /* SOH */ + prxchange('s/'!!'02'x!!'/\\u0002/',-1, /* STX */ + prxchange('s/'!!'11'x!!'/\\u0011/',-1, /* DC1 */ prxchange('s/\\/\\\\/',-1,&&name&i) - )))))!!'"'; + ))))))))!!'"'; %end; %end; run; @@ -14927,8 +14930,11 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' )))))!!''"''; '; + put ' ))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; @@ -20388,8 +20394,11 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' )))))!!''"''; '; + put ' ))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; diff --git a/base/mp_jsonout.sas b/base/mp_jsonout.sas index dc750fc..27af000 100644 --- a/base/mp_jsonout.sas +++ b/base/mp_jsonout.sas @@ -203,8 +203,11 @@ prxchange('s/'!!'0A'x!!'/\n/',-1, prxchange('s/'!!'0D'x!!'/\r/',-1, prxchange('s/'!!'09'x!!'/\t/',-1, + prxchange('s/'!!'01'x!!'/\\u0001/',-1, /* SOH */ + prxchange('s/'!!'02'x!!'/\\u0002/',-1, /* STX */ + prxchange('s/'!!'11'x!!'/\\u0011/',-1, /* DC1 */ prxchange('s/\\/\\\\/',-1,&&name&i) - )))))!!'"'; + ))))))))!!'"'; %end; %end; run; diff --git a/meta/mm_createwebservice.sas b/meta/mm_createwebservice.sas index 7e54e4b..4e118d9 100644 --- a/meta/mm_createwebservice.sas +++ b/meta/mm_createwebservice.sas @@ -236,8 +236,11 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' )))))!!''"''; '; + put ' ))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; '; diff --git a/sasjs/sasjsconfig.json b/sasjs/sasjsconfig.json index a02229f..a88f06c 100644 --- a/sasjs/sasjsconfig.json +++ b/sasjs/sasjsconfig.json @@ -93,6 +93,10 @@ "serverType": "SAS9", "appLoc": "dummy", "macroFolders": [ + "meta", + "metax", + "server", + "viya", "tests/sas9only", "tests/viyaonly" ] diff --git a/viya/mv_createwebservice.sas b/viya/mv_createwebservice.sas index 6b73e1d..ebe088c 100644 --- a/viya/mv_createwebservice.sas +++ b/viya/mv_createwebservice.sas @@ -380,8 +380,11 @@ data _null_; put ' prxchange(''s/''!!''0A''x!!''/\n/'',-1, '; put ' prxchange(''s/''!!''0D''x!!''/\r/'',-1, '; put ' prxchange(''s/''!!''09''x!!''/\t/'',-1, '; + put ' prxchange(''s/''!!''01''x!!''/\\u0001/'',-1, /* SOH */ '; + put ' prxchange(''s/''!!''02''x!!''/\\u0002/'',-1, /* STX */ '; + put ' prxchange(''s/''!!''11''x!!''/\\u0011/'',-1, /* DC1 */ '; put ' prxchange(''s/\\/\\\\/'',-1,&&name&i) '; - put ' )))))!!''"''; '; + put ' ))))))))!!''"''; '; put ' %end; '; put ' %end; '; put ' run; ';