Adding side stream changes to Maemian. Working to integrate full upstream libraries...
[maemian] / nokia-lintian / debian / patches / 800-correct-perm2oct.dpatch
diff --git a/nokia-lintian/debian/patches/800-correct-perm2oct.dpatch b/nokia-lintian/debian/patches/800-correct-perm2oct.dpatch
new file mode 100755 (executable)
index 0000000..5473dd7
--- /dev/null
@@ -0,0 +1,231 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 800-correct-perm2oct.dpatch by Eero Häkkinen <eero.hakkinen@nokia.com>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fix perm2oct to correctly detect set-{user,group}-ID and sticky bits.
+
+@DPATCH@
+diff -urNad lintian-1.23.8~/checks/control-files lintian-1.23.8/checks/control-files
+--- lintian-1.23.8~/checks/control-files       2006-07-18 12:12:55.000000000 +0000
++++ lintian-1.23.8/checks/control-files        2006-07-18 12:15:10.000000000 +0000
+@@ -20,6 +20,7 @@
+ package Lintian::control_files;
+ use strict;
++use PermModes;
+ use Tags;
+ sub run {
+@@ -104,30 +105,6 @@
+ } # </run>
+-# translate permission strings like `-rwxrwxrwx' into an octal number
+-sub perm2oct {
+-    my ($t) = @_;
+-
+-    my $o = 0;
+-
+-    $t =~ m/^.(.)(.)(.)(.)(.)(.)(.)(.)(.)/o;
+-
+-    $o += 04000 if $3 eq 's'; # set-uid
+-    $o += 02000 if $6 eq 's'; # set-gid
+-    $o += 01000 if $9 eq 't'; # sticky bit
+-    $o += 00400 if $1 ne '-'; # owner read
+-    $o += 00200 if $2 ne '-'; # owner write
+-    $o += 00100 if $3 ne '-'; # owner execute
+-    $o += 00040 if $4 ne '-'; # owner read
+-    $o += 00020 if $5 ne '-'; # owner write
+-    $o += 00010 if $6 ne '-'; # owner execute
+-    $o += 00004 if $7 ne '-'; # owner read
+-    $o += 00002 if $8 ne '-'; # owner write
+-    $o += 00001 if $9 ne '-'; # owner execute
+-
+-    return $o;
+-}
+-
+ 1;
+ # vim: syntax=perl sw=4 ts=8
+diff -urNad lintian-1.23.8~/checks/files lintian-1.23.8/checks/files
+--- lintian-1.23.8~/checks/files       2006-07-18 12:14:48.000000000 +0000
++++ lintian-1.23.8/checks/files        2006-07-18 12:15:10.000000000 +0000
+@@ -21,6 +21,7 @@
+ package Lintian::files;
+ use strict;
+ use Dep;
++use PermModes;
+ use Tags;
+ use Util;
+@@ -763,30 +764,6 @@
+ }
+-# translate permission strings like `-rwxrwxrwx' into an octal number
+-sub perm2oct {
+-    my ($t) = @_;
+-
+-    my $o = 0;
+-
+-    $t =~ m/^.(.)(.)(.)(.)(.)(.)(.)(.)(.)/;
+-
+-    $o += 04000 if $3 eq 's'; # set-uid
+-    $o += 02000 if $6 eq 's'; # set-gid
+-    $o += 01000 if $9 eq 't'; # sticky bit
+-    $o += 00400 if $1 ne '-'; # owner read
+-    $o += 00200 if $2 ne '-'; # owner write
+-    $o += 00100 if $3 ne '-'; # owner execute
+-    $o += 00040 if $4 ne '-'; # owner read
+-    $o += 00020 if $5 ne '-'; # owner write
+-    $o += 00010 if $6 ne '-'; # owner execute
+-    $o += 00004 if $7 ne '-'; # owner read
+-    $o += 00002 if $8 ne '-'; # owner write
+-    $o += 00001 if $9 ne '-'; # owner execute
+-
+-    return $o;
+-}
+-
+ 1;
+ # vim: syntax=perl ts=8 sw=4
+diff -urNad lintian-1.23.8~/checks/menus lintian-1.23.8/checks/menus
+--- lintian-1.23.8~/checks/menus       2006-07-18 12:12:55.000000000 +0000
++++ lintian-1.23.8/checks/menus        2006-07-18 12:16:29.000000000 +0000
+@@ -22,6 +22,7 @@
+ package Lintian::menus;
+ use strict;
++use PermModes;
+ use Tags;
+ use Util;
+@@ -207,30 +208,6 @@
+ # -----------------------------------
+-# translate permission strings like `-rwxrwxrwx' into an octal number
+-sub perm2oct {
+-    my ($t) = @_;
+-
+-    my $o = 0;
+-
+-    $t =~ /^.(.)(.)(.)(.)(.)(.)(.)(.)(.)/o;
+-
+-    $o += 04000 if $3 eq 's'; # set-uid
+-    $o += 02000 if $6 eq 's'; # set-gid
+-    $o += 01000 if $9 eq 't'; # sticky bit
+-    $o += 00400 if $1 ne '-'; # owner read
+-    $o += 00200 if $2 ne '-'; # owner write
+-    $o += 00100 if $3 ne '-'; # owner execute
+-    $o += 00040 if $4 ne '-'; # owner read
+-    $o += 00020 if $5 ne '-'; # owner write
+-    $o += 00010 if $6 ne '-'; # owner execute
+-    $o += 00004 if $7 ne '-'; # owner read
+-    $o += 00002 if $8 ne '-'; # owner write
+-    $o += 00001 if $9 ne '-'; # owner execute
+-
+-    return $o;
+-}
+-
+ sub check_script {
+     my ($script,$pres) = @_;
+     my ($no_check_menu,$no_check_installdocs,$no_check_wmmenu,$calls_wmmenu);
+diff -urNad lintian-1.23.8~/checks/shared-libs lintian-1.23.8/checks/shared-libs
+--- lintian-1.23.8~/checks/shared-libs 2006-07-18 12:14:48.000000000 +0000
++++ lintian-1.23.8/checks/shared-libs  2006-07-18 12:15:10.000000000 +0000
+@@ -20,6 +20,7 @@
+ package Lintian::shared_libs;
+ use strict;
++use PermModes;
+ use Tags;
+ use File::Basename;
+ use Util;
+@@ -395,30 +396,6 @@
+ }
+-# translate permission strings like `-rwxrwxrwx' into an octal number
+-sub perm2oct {
+-    my ($t) = @_;
+-
+-    my $o = 0;
+-
+-    $t =~ m/^.(.)(.)(.)(.)(.)(.)(.)(.)(.)/o;
+-
+-    $o += 04000 if $3 eq 's'; # set-uid
+-    $o += 02000 if $6 eq 's'; # set-gid
+-    $o += 01000 if $9 eq 't'; # sticky bit
+-    $o += 00400 if $1 ne '-'; # owner read
+-    $o += 00200 if $2 ne '-'; # owner write
+-    $o += 00100 if $3 ne '-'; # owner execute
+-    $o += 00040 if $4 ne '-'; # owner read
+-    $o += 00020 if $5 ne '-'; # owner write
+-    $o += 00010 if $6 ne '-'; # owner execute
+-    $o += 00004 if $7 ne '-'; # owner read
+-    $o += 00002 if $8 ne '-'; # owner write
+-    $o += 00001 if $9 ne '-'; # owner execute
+-
+-    return $o;
+-}
+-
+ # make /tmp/baz/baz.txt from /tmp/foo/../bar/../baz/baz.txt
+ sub abs_path {
+     my $path = shift;
+diff -urNad lintian-1.23.8~/lib/PermModes.pm lintian-1.23.8/lib/PermModes.pm
+--- lintian-1.23.8~/lib/PermModes.pm   1970-01-01 00:00:00.000000000 +0000
++++ lintian-1.23.8/lib/PermModes.pm    2006-07-18 12:15:10.000000000 +0000
+@@ -0,0 +1,52 @@
++# Hey emacs! This is a -*- Perl -*- script!
++# PermModes -- Perl file permission mode functions for lintian
++
++# Copyright (C) 2006 Nokia Corporation.
++#
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 2 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with this program.  If not, you can find it on the World Wide
++# Web at http://www.gnu.org/copyleft/gpl.html, or write to the Free
++# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
++# MA 02110-1301, USA.
++
++package PermModes;
++use strict;
++use warnings;
++
++use Exporter;
++our @ISA    = qw( Exporter );
++our @EXPORT = qw(
++      perm2oct
++      );
++
++# translate permission strings like `-rwxrwxrwx' into an octal number
++sub perm2oct($)
++{
++      my @c = split "", shift, 11;
++      my $oct = 0;
++      $oct |= 04000 if $c[3] =~ /s/i;          # set-user-ID
++      $oct |= 02000 if $c[6] =~ /s/i;          # set-group-ID
++      $oct |= 01000 if $c[9] =~ /t/i;          # sticky
++      $oct |= 00400 if $c[1] eq 'r';           # user readable
++      $oct |= 00200 if $c[2] eq 'w';           # user writable
++      $oct |= 00100 if $c[3] =~ /[[:lower:]]/; # user executable
++      $oct |= 00040 if $c[4] eq 'r';           # group readable
++      $oct |= 00020 if $c[5] eq 'w';           # group writable
++      $oct |= 00010 if $c[6] =~ /[[:lower:]]/; # group executable
++      $oct |= 00004 if $c[7] eq 'r';           # world readable
++      $oct |= 00002 if $c[8] eq 'w';           # world writable
++      $oct |= 00001 if $c[9] =~ /[[:lower:]]/; # world executable
++      return $oct;
++}
++
++1;