@@ -1896,7 +1896,10 @@ function r_escaped_sed_pattern()
1896
1896
s=" ${s// \* / \\ * } "
1897
1897
s=" ${s// \. / \\ .} "
1898
1898
s=" ${s// \^ / \\ ^} "
1899
- s=" ${s// $' \n ' / \\ $' \n ' } " # assume
1899
+ s=" ${s// $' \n ' / \\ $' \n ' } "
1900
+ s=" ${s// $' \t ' / \\ $' \t ' } "
1901
+ s=" ${s// $' \r ' / \\ $' \r ' } "
1902
+ s=" ${s// $' \f ' / \\ $' \f ' } "
1900
1903
1901
1904
RVAL=" $s "
1902
1905
}
@@ -1906,10 +1909,14 @@ function r_escaped_sed_replacement()
1906
1909
{
1907
1910
local s=" $1 "
1908
1911
1909
- s=" ${s// \\ / \\\\ } "
1910
- s=" ${s// \/ / \\ / } "
1911
- s=" ${s// &/ \\ &} "
1912
- s=" ${s// $' \n ' / \\ $' \n ' } "
1912
+ s=" ${s// \\ / \\\\ } " # escape backslashes first
1913
+ s=" ${s// \/ / \\ / } " # escape forward slashes
1914
+ s=" ${s// \' / \'\\\'\' } " # escape single quotes by closing and reopening the quote
1915
+ s=" ${s// &/ \\ &} " # escape ampersands
1916
+ s=" ${s// $' \t ' / \\ t} " # escape tabs returns
1917
+ s=" ${s// $' \r ' / \\ r} " # escape crlf returns
1918
+ s=" ${s// $' \n ' / \\ n} " # escape newlines returns
1919
+ s=" ${s// $' \f ' / \\ f} " # escape form feeds returns
1913
1920
1914
1921
RVAL=" $s "
1915
1922
}
@@ -1957,49 +1964,49 @@ function r_escaped_shell_string()
1957
1964
1958
1965
function r_escaped_json()
1959
1966
{
1960
- RVAL=" ${*// \\ / \\\\ } "
1961
-
1962
- RVAL=" ${RVAL// \" / \\\" } "
1963
-
1964
- RVAL=" ${RVAL// $' \n ' / \\ n} "
1965
-
1966
- RVAL=" ${RVAL// $' \r ' / \\ r} "
1967
-
1968
- RVAL=" ${RVAL// $' \t ' / \\ t} "
1969
-
1970
- RVAL=" ${RVAL// $' \b ' / \\ b} "
1971
-
1972
- RVAL=" ${RVAL// $' \f ' / \\ f} "
1973
-
1974
- RVAL=" ${RVAL// \/ / \\ / } "
1975
-
1976
- RVAL=" ${RVAL// $' \x1' / \\ u0001} "
1977
- RVAL=" ${RVAL// $' \x2' / \\ u0002} "
1978
- RVAL=" ${RVAL// $' \x3' / \\ u0003} "
1979
- RVAL=" ${RVAL// $' \x4' / \\ u0004} "
1980
- RVAL=" ${RVAL// $' \x5' / \\ u0005} "
1981
- RVAL=" ${RVAL// $' \x6' / \\ u0006} "
1982
- RVAL=" ${RVAL// $' \x7' / \\ u0007} "
1983
- RVAL=" ${RVAL// $' \xB' / \\ u000B} "
1984
- RVAL=" ${RVAL// $' \xE' / \\ u000E} "
1985
- RVAL=" ${RVAL// $' \xF' / \\ u000F} "
1986
- RVAL=" ${RVAL// $' \x10 ' / \\ u0010} "
1987
- RVAL=" ${RVAL// $' \x11 ' / \\ u0011} "
1988
- RVAL=" ${RVAL// $' \x12 ' / \\ u0012} "
1989
- RVAL=" ${RVAL// $' \x13 ' / \\ u0013} "
1990
- RVAL=" ${RVAL// $' \x14 ' / \\ u0014} "
1991
- RVAL=" ${RVAL// $' \x15 ' / \\ u0015} "
1992
- RVAL=" ${RVAL// $' \x16 ' / \\ u0016} "
1993
- RVAL=" ${RVAL// $' \x17 ' / \\ u0017} "
1994
- RVAL=" ${RVAL// $' \x18 ' / \\ u0018} "
1995
- RVAL=" ${RVAL// $' \x19 ' / \\ u0019} "
1996
- RVAL=" ${RVAL// $' \x1A ' / \\ u001A} "
1997
- RVAL=" ${RVAL// $' \x1B ' / \\ u001B} "
1998
- RVAL=" ${RVAL// $' \x1C ' / \\ u001C} "
1999
- RVAL=" ${RVAL// $' \x1D ' / \\ u001D} "
2000
- RVAL=" ${RVAL// $' \x1E ' / \\ u001E} "
2001
- RVAL=" ${RVAL// $' \x1F ' / \\ u001F} "
2002
- }
1967
+ RVAL=" ${*// \\ / \\\\ } "
1968
+
1969
+ RVAL=" ${RVAL// \" / \\\" } "
1970
+
1971
+ RVAL=" ${RVAL// $' \n ' / \\ n} "
1972
+
1973
+ RVAL=" ${RVAL// $' \r ' / \\ r} "
1974
+
1975
+ RVAL=" ${RVAL// $' \t ' / \\ t} "
1976
+
1977
+ RVAL=" ${RVAL// $' \b ' / \\ b} "
1978
+
1979
+ RVAL=" ${RVAL// $' \f ' / \\ f} "
1980
+
1981
+ RVAL=" ${RVAL// \/ / \\ / } "
1982
+
1983
+ RVAL=" ${RVAL// $' \x1' / \\ u0001} "
1984
+ RVAL=" ${RVAL// $' \x2' / \\ u0002} "
1985
+ RVAL=" ${RVAL// $' \x3' / \\ u0003} "
1986
+ RVAL=" ${RVAL// $' \x4' / \\ u0004} "
1987
+ RVAL=" ${RVAL// $' \x5' / \\ u0005} "
1988
+ RVAL=" ${RVAL// $' \x6' / \\ u0006} "
1989
+ RVAL=" ${RVAL// $' \x7' / \\ u0007} "
1990
+ RVAL=" ${RVAL// $' \xB' / \\ u000B} "
1991
+ RVAL=" ${RVAL// $' \xE' / \\ u000E} "
1992
+ RVAL=" ${RVAL// $' \xF' / \\ u000F} "
1993
+ RVAL=" ${RVAL// $' \x10 ' / \\ u0010} "
1994
+ RVAL=" ${RVAL// $' \x11 ' / \\ u0011} "
1995
+ RVAL=" ${RVAL// $' \x12 ' / \\ u0012} "
1996
+ RVAL=" ${RVAL// $' \x13 ' / \\ u0013} "
1997
+ RVAL=" ${RVAL// $' \x14 ' / \\ u0014} "
1998
+ RVAL=" ${RVAL// $' \x15 ' / \\ u0015} "
1999
+ RVAL=" ${RVAL// $' \x16 ' / \\ u0016} "
2000
+ RVAL=" ${RVAL// $' \x17 ' / \\ u0017} "
2001
+ RVAL=" ${RVAL// $' \x18 ' / \\ u0018} "
2002
+ RVAL=" ${RVAL// $' \x19 ' / \\ u0019} "
2003
+ RVAL=" ${RVAL// $' \x1A ' / \\ u001A} "
2004
+ RVAL=" ${RVAL// $' \x1B ' / \\ u001B} "
2005
+ RVAL=" ${RVAL// $' \x1C ' / \\ u001C} "
2006
+ RVAL=" ${RVAL// $' \x1D ' / \\ u001D} "
2007
+ RVAL=" ${RVAL// $' \x1E ' / \\ u001E} "
2008
+ RVAL=" ${RVAL// $' \x1F ' / \\ u001F} "
2009
+ }
2003
2010
2004
2011
2005
2012
0 commit comments