blob: 2ef2dfa3e6224ddd39d31015eb2b5062774edfb4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#!/usr/bin/perl
my $quote_open = 0;
my $quote_char = '';
my $accum = "";
my $once = 1;
my $c;
# This program generates a partial Haskell list of Strings from
# words passed via stdin suitable for use in package.conf, e.g.:
#
# foo bar --> "foo", "bar"
# "foo bar" --> "foo bar"
# foo\"bar --> "foo\"bar"
#
# Invoking genargs.pl with -comma will print an initial comma if
# there's anything to print at all.
#
# Sample application in a Makefile:
# HSIFIED_EXTRA_LD_OPTS= `echo "$(EXTRA_LD_OPTS)" | $(PERL) genargs.pl`
# PACKAGE_CPP_OPTS += -DHSIFIED_EXTRA_LD_OPTS="$(HSIFIED_EXTRA_LD_OPTS)"
sub printaccum {
if ($once) {
if ($ARGV[0] eq "-comma") {
print ", ";
}
} else {
print ", ";
}
$once=0;
print '"';
print $accum;
print '"';
}
while ($c = getc) {
if ($quote_open) {
if ($c eq $quote_char) {
$quote_open = 0;
} elsif ($c eq '"') {
$accum .= '\"';
} else {
$accum .= $c;
}
} else {
if (($c eq ' ') || ($c eq "\n")) {
if (!($accum eq "")) {
printaccum;
$accum = "";
}
} elsif ($c eq "\\") {
$accum .= $c;
$c = getc;
$accum .= $c;
} elsif (($c eq '"') || ($c eq "\'")) {
$quote_open = 1;
$quote_char = $c;
} else {
$accum .= $c
}
}
}
|