Skip to content

Commit dc8e98d

Browse files
committed
Do not use shell when output is not null delimited
1 parent 175bf1f commit dc8e98d

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/exporter.awk

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
function prinit(str) {
22
PRCHECK="(PATH=/dev/null; print \" -n\" 2>/dev/null) || printf -- f"
3-
SH = "sh"; NUL = "\\0"; CR = "\\r"; LF = "\\n"
43
(SH " -c \047" PRCHECK "\047") | getline CMD
54
CMD = "print" (CMD == "--" ? "f " : CMD " -- ")
65
}
@@ -13,7 +12,8 @@ function pr(str, eol) {
1312
}
1413

1514
BEGIN {
16-
prinit(); newline = LF
15+
SH = "sh"; NUL = "\\0"; CR = "\\r"; LF = "\\n"
16+
newline = LF
1717
ex = envkeys_length = 0
1818
prefix = mode = silent = ""
1919

@@ -45,6 +45,7 @@ BEGIN {
4545
} else if (ARGV[i] == "-v") {
4646
mode = "value"
4747
} else if (ARGV[i] == "-0") {
48+
prinit()
4849
newline = NUL
4950
} else if (ARGV[i] == "-s") {
5051
silent = 1
@@ -95,11 +96,17 @@ BEGIN {
9596
key = envkeys[i]
9697
value = environ[key]
9798
if (mode == "name") {
98-
pr(prefix key, newline)
99+
line = prefix key
99100
} else if (mode == "value") {
100-
pr(prefix value, newline)
101+
line = value
102+
} else {
103+
line = prefix key "=" quotes(value)
104+
}
105+
106+
if (newline == NUL) {
107+
pr(line, newline)
101108
} else {
102-
pr(prefix key "=" quotes(value), newline)
109+
print line
103110
}
104111
}
105112

0 commit comments

Comments
 (0)