[devel] [JT] GroupUserFolder-3.2-alt1.1 lazarus-0.9.22-alt1

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Сен 12 01:39:30 MSD 2007


On Wed, Sep 12, 2007 at 12:08:48AM +0400, Alexey I. Froloff wrote:
> * Alexey Tourbin <at@> [070911 23:46]:
> > #!/bin/sh
> > exec perl -w -x $0 ${1+"$@"} # -*- mode: perl; perl-indent-level: 2; -*-
> > #!perl -w
> Я где-то видел офигенно портабельный перловый шебанг, который
> работает на всех-всех-всех платформах с любым sh и perl.
> Занимает он 12 строк.

Этот вроде сделал.
Всякую фигню maintainer'ы пакуют а мне страдай!


commit 05cd09ba0f8559f835ac770946d673fb4ad887c0
Author: Alexey Tourbin <at на altlinux>
Date:   Wed Sep 12 01:32:35 2007 +0400

    perl.req: implemented support for "perl -x" re-exec hack (fixes cvs2cl.pl)
    
    $ head -3 cvs2cl.pl
    #!/bin/sh
    exec perl -w -x $0 ${1+"$@"} # -*- mode: perl; perl-indent-level: 2; -*-
    #!perl -wT
    $ ./perl.req cvs2cl.pl
    /home/at/git.alt/rpm-build-perl/cvs2cl.pl syntax OK
    perl(File/Basename.pm)
    perl(Text/Wrap.pm)
    perl(Time/Local.pm)
    $

diff --git a/perl.req b/perl.req
index 1285d2a..485e9c9 100755
--- a/perl.req
+++ b/perl.req
@@ -117,17 +117,35 @@ bad:
 sub shebang_options {
 	my $fname = shift;
 	open my $fh, $fname or die "$0: $fname: $!\n";
-	my $shebang = <$fh>;
-	chomp $shebang;
+	local $_ = <$fh>;
 	my @argv;
-	if ($shebang =~ s/^#!\s*\S*perl\S*\s*// && $shebang) {
-		local $_ = $shebang;
+	if (s/^#!\s*\S*perl\S*//) {
 		foreach my $arg (split) {
 			last if $arg =~ /^#/;
 			next if $arg eq "--";
 			push @argv, $arg;
 		}
 	}
+	elsif (m[^#!\s*/bin/sh(\s|$)]) {
+		# check for "perl -x" re-exec hack
+		my $maybe_x;
+		while (<$fh>) {
+			# this is just a standard way to re-exec perl:
+			last if /^eval\s+'exec\s/;
+			if (/\bexec\s.*\bperl.*\s-x/) {
+				$maybe_x = 1;
+			}
+			elsif ($maybe_x and s/^#!\s*\S*perl\S*//) {
+				push @argv, "-x";
+				foreach my $arg (split) {
+					last if $arg =~ /^#/;
+					next if $arg eq "--";
+					push @argv, $arg;
+				}
+				last;
+			}
+		}
+	}
 	return @argv;
 }
 
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20070912/48ff0fb3/attachment-0002.bin>


Подробная информация о списке рассылки Devel