On Mon, Aug 21, 2006 at 03:12:56PM -0400, Jamin W. Collins wrote:
>
> I also appear to be bitten by this one. My user accounts are also stored
> in LDAP.
Does anybody know why we use LOGNAME (in /usr/lib/dpkg/controllib.pl)?
I could find this in the ChangeLog:
dpkg (1.4.0.9) unstable; urgency=low
[...]
* Changed controllib.pl to use $ENV{LOGNAME}, getlogin(), and $<
(in that order) to determine the intended ownership of
debian/{files,substvars}, (fixes #7324, #6823, #5659, #5965, #5929,
#9239, #5366).
[...]
-- Klee Dienes <[EMAIL PROTECTED]> Mon, 17 Mar 1997 16:11:24 -0500
(And I can't find these bug reports; BTW does anybody have an archive of them)
If we could remove the usage of LOGNAME (and getlogin), and only keep $< and
$(, I think it would be fine (in that case, there is no need to call getpwnam).
A patch is attached, but it assumes these bugs do not apply anymore ;(
Kind Regards,
--
Nekral
Index: scripts/controllib.pl
===================================================================
--- scripts/controllib.pl (révision 510)
+++ scripts/controllib.pl (copie de travail)
@@ -35,43 +35,8 @@
$progname= $0; $progname= $& if $progname =~ m,[^/]+$,;
-$getlogin = getlogin();
-if(!defined($getlogin)) {
- open(SAVEIN, "<&STDIN");
- close(STDIN);
- open(STDIN, "<&STDERR");
[EMAIL PROTECTED] = ( $<, $( );
- $getlogin = getlogin();
-
- close(STDIN);
- open(STDIN, "<&SAVEIN");
- close(SAVEIN);
-}
-if(!defined($getlogin)) {
- open(SAVEIN, "<&STDIN");
- close(STDIN);
- open(STDIN, "<&STDOUT");
-
- $getlogin = getlogin();
-
- close(STDIN);
- open(STDIN, "<&SAVEIN");
- close(SAVEIN);
-}
-
-if (defined ($ENV{'LOGNAME'})) {
- @fowner = getpwnam ($ENV{'LOGNAME'});
- if (! @fowner) { die (sprintf (_g('unable to get login information for
username "%s"'), $ENV{'LOGNAME'})); }
-} elsif (defined ($getlogin)) {
- @fowner = getpwnam ($getlogin);
- if (! @fowner) { die (sprintf (_g('unable to get login information for
username "%s"'), $getlogin)); }
-} else {
- &warn (sprintf (_g('no utmp entry available and LOGNAME not defined; using
uid of process (%d)'), $<));
- @fowner = getpwuid ($<);
- if (! @fowner) { die (sprintf (_g('unable to get login information for uid
%d'), $<)); }
-}
[EMAIL PROTECTED] = @fowner[2,3];
-
sub capit {
my @pieces = map { ucfirst(lc) } split /-/, $_[0];
return join '-', @pieces;