xref: /openbsd-src/gnu/usr.bin/perl/utils/encguess.PL (revision eac174f2741a08d8deb8aae59a7f778ef9b5d770)
1b8851fccSafresh1#!/usr/local/bin/perl
2b8851fccSafresh1
3b8851fccSafresh1use Config;
4b8851fccSafresh1use File::Basename qw(&basename &dirname);
5b8851fccSafresh1use Cwd;
6b8851fccSafresh1
7b8851fccSafresh1# List explicitly here the variables you want Configure to
8b8851fccSafresh1# generate.  Metaconfig only looks for shell variables, so you
9b8851fccSafresh1# have to mention them as if they were shell variables, not
10b8851fccSafresh1# %Config entries.  Thus you write
11b8851fccSafresh1#  $startperl
12b8851fccSafresh1# to ensure Configure will look for $Config{startperl}.
13b8851fccSafresh1
14b8851fccSafresh1# This forces PL files to create target in same directory as PL file.
15b8851fccSafresh1# This is so that make depend always knows where to find PL derivatives.
16b8851fccSafresh1my $origdir = cwd;
17b8851fccSafresh1chdir dirname($0);
18b8851fccSafresh1my $file = basename($0, '.PL');
19b8851fccSafresh1$file .= '.com' if $^O eq 'VMS';
20b8851fccSafresh1
215759b3d2Safresh1open OUT, '>', $file or die "Can't create $file: $!";
22b8851fccSafresh1
23b8851fccSafresh1print "Extracting $file (with variable substitutions)\n";
24b8851fccSafresh1
25b8851fccSafresh1# In this section, perl variables will be expanded during extraction.
26b8851fccSafresh1# You can use $Config{...} to use Configure variables.
27b8851fccSafresh1
28b8851fccSafresh1print OUT <<"!GROK!THIS!";
29b8851fccSafresh1$Config{startperl}
30b8851fccSafresh1    eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}'
31*eac174f2Safresh1	if 0; # ^ Run only under a shell
32b8851fccSafresh1!GROK!THIS!
33b8851fccSafresh1
34b8851fccSafresh1use File::Spec;
35b8851fccSafresh1
36b8851fccSafresh1my $enc2xs = File::Spec->catfile(File::Spec->catdir(File::Spec->updir, "cpan", "Encode", "bin"), "encguess");
37b8851fccSafresh1
385759b3d2Safresh1if (open(ENC2XS, '<', $enc2xs)) {
39b8851fccSafresh1    print OUT <ENC2XS>;
40b8851fccSafresh1    close ENC2XS;
41b8851fccSafresh1} else {
42b8851fccSafresh1    die "$0: cannot find '$enc2xs'\n";
43b8851fccSafresh1}
44b8851fccSafresh1
45b8851fccSafresh1close OUT or die "Can't close $file: $!";
46b8851fccSafresh1chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
47b8851fccSafresh1exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
48b8851fccSafresh1chdir $origdir;
49