Bastian Blank <[EMAIL PROTECTED]> writes:

> Package: aegis
> Version: 4.24-1
> Severity: serious

The attacched patch should fix the problem.

HTH
-- 
Walter Franzini
http://aegis.stepbuild.org/

PGP Public key ID: 1024D/CB3FEB43
Key fingerprint  : FA26 C33B CAFF 7848 EFEB  7327 96AA 2D57 CB3F EB43
Key server       : http://www.keyserver.net
MIME-Version: 1.0
Content-Type: application/aegis-patch
Subject: aegis.4.25 - aefinish vs. non-existent directory
Content-Name: aegis.4.25.C510.patch
Content-Disposition: attachment; filename=aegis.4.25.C510.patch
X-Aegis-Project-Name: aegis.4.25
X-Aegis-Change-Number: 510

#	
#	The aefinish command is now able to ipass a change even if the home
#	directory of the user does not exists.
#	My thanks to Ralph Smith for diagnosing the problem.
#	
#	Signed-off-by: Walter Franzini <[EMAIL PROTECTED]>
#	
# Aegis-Change-Set-Begin
# QlpoMzFBWSZTWXvbKakAALJfgAAQUAf//0ECHI6/79/6QAH9tZiNYaJDRo0mm0m0BpRp6NNG
# oAYnqYagEbQiaPUZNAAABoADDQ0AAAGgAAAABKaQoeJqEeUZTPKYp6R6IMmmTT0juOoUjAb4
# ZMxugnaTB9vpyOR5DumderO5+/Ty3evux/JiJVEhCEgKSROXS4fJFBHWw61gqjWZ9rYhkMko
# N+JXDkGplz5QzvtTrKqjI+093a8TPo59FVBHSB7SA9NGWG1IdBVJ6qnEq/eVmPMJ9T05VTuh
# B56BaOxb5w2sQobMCeSJUlopppGS3ajD2c6Ej5yeBJSUODDGbB/wkpJzg2x0ieXZOkRGfRLq
# NcJiqby2/609KtD2XxJs3E7y/HnhgzfRxdwwwPu9op6tO3FcvFElmMm/yjYWAnCxMVqBkuld
# Aj3GTdbyRsxDn0IDjxXMLoiVYxQpUYS+y6lpJzh84+ZIloOAw3MKeBIqrKhA2Q7baWJK6LKK
# 8QjccLl1OYisH+wPRcevrQYvzTWp0rbbSylDnbaZWr/iIRgEdEyY9Q7jKsL3v5QE+xRAXHPB
# uzZe92dnBL3Zat5jPTch0MpwRMjEvNFunPt7+2YYLZtyuJHyWbNfXVpaRrkjndTGaQRi2etg
# dfWCS39pa8LB7Zm0JlEThzrlqQjGQwNNGWszFRQXUHkZcC12KtAFYvICOila4WbXUlOUGmOc
# PpTbqpIJ3+clqwsF4F3JFOFCQe9spqQ=
# Aegis-Change-Set-End
#
Index: aefinish/finish.cc
--- aefinish/finish.cc
+++ aefinish/finish.cc
@@ -1,7 +1,7 @@
 //
 //	aegis - project change supervisor
 //	Copyright (C) 2006-2008 Peter Miller
-//	Copyright (C) 2006 Walter Franzini
+//	Copyright (C) 2006, 2008 Walter Franzini
 //
 //	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
@@ -665,8 +665,12 @@
 home()
 {
     const char *cp = getenv("HOME");
-    if (!cp)
+
+    os_become_orig();
+    if (!cp || !os_isa_directory(nstring(cp).get_ref()))
 	cp = "/";
+    os_become_undo();
+
     return cp;
 }
 
Index: test/02/t0269a-walt.sh
--- test/02/t0269a-walt.sh
+++ test/02/t0269a-walt.sh
@@ -0,0 +1,149 @@
+#!/bin/sh
+#
+# aegis - The "aegis" program.
+# Copyright (C) 2008 Walter Franzini
+#
+# 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+
+TEST_SUBJECT="aefinish vs. non-existent home"
+
+# load up standard prelude and test functions
+. test_funcs
+
+HOME=/path/not/existing
+export HOME
+
+#
+# test the aeipass functionality
+#
+workproj=$work/proj
+workchan=$work/chan
+
+AEGIS_PROJECT=example ; export AEGIS_PROJECT
+
+#
+# make a new project
+#
+activity="new project 39"
+aegis -npr $AEGIS_PROJECT -vers "" -dir $workproj > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+
+#
+# change project attributes
+#
+activity="project attributes 46"
+cat > tmp << 'end'
+description = "A bogus project created to test the aefinish functionality.";
+developer_may_review = true;
+developer_may_integrate = true;
+reviewer_may_integrate = true;
+default_test_exemption = true;
+develop_end_action = goto_awaiting_integration;
+end
+if test $? -ne 0 ; then no_result; fi
+aegis -pa -f tmp > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+
+#
+# add the staff
+#
+activity="staff 62"
+aegis -nd $USER > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+aegis -nrv $USER > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+aegis -ni $USER > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+
+#
+# create a new change
+#
+activity="new change 73"
+cat > tmp << 'end'
+brief_description = "The first change";
+cause = internal_bug;
+end
+if test $? -ne 0 ; then no_result; fi
+aegis -nc 1 -f tmp -p $AEGIS_PROJECT > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+
+#
+# begin development of a change
+#
+aegis -db 1 -dir $workchan > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+
+#
+# add a new files to the change
+#
+activity="new files 91"
+aegis -nf  $workchan/bogus1 -nl > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+aegis -nf  $workchan/aegis.conf -nl > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+
+cat > $workchan/bogus1 << 'end'
+OLD CONTENT
+bogus1, line 1
+bogus1, line 2
+end
+if test $? -ne 0 ; then no_result; fi
+
+cat > $workchan/aegis.conf << 'end'
+build_command = "exit 0";
+link_integration_directory = true;
+
+history_get_command = "aesvt -check-out -edit ${quote $edit} "
+    "-history ${quote $history} -f ${quote $output}";
+history_put_command = "aesvt -check-in -history ${quote $history} "
+    "-f ${quote $input}";
+history_query_command = "aesvt -query -history ${quote $history}";
+history_content_limitation = binary_capable;
+
+diff_command = "set +e; $diff $orig $i > $out; test $$? -le 1";
+merge_command = "(diff3 -e $i $orig $mr | sed -e '/^w$$/d' -e '/^q$$/d'; \
+	echo '1,$$p' ) | ed - $i > $out";
+patch_diff_command = "set +e; $diff -C0 -L $index -L $index $orig $i > $out; \
+test $$? -le 1";
+end
+if test $? -ne 0 ; then no_result; fi
+
+#
+# build the change
+#
+activity="finish the change 126"
+aefinish -v > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+
+#
+# start integrating
+#
+activity="integrate begin 133"
+aegis -ib 1 > log 2>&1
+if test $? -ne 0 ; then cat log; no_result; fi
+
+#
+# finish integration
+#
+activity="integrate the change 140"
+aefinish -c 1 > log 2>&1
+if test $? -ne 0 ; then cat log; fail; fi
+
+#
+# Only definite negatives are possible.
+# The functionality exercised by this test appears to work,
+# no other guarantees are made.
+#
+pass

Attachment: pgpRBee2Y9M8e.pgp
Description: PGP signature

Reply via email to