chiark / gitweb /
Dgit: break must_getcwd out into Dgit.pm
[dgit.git] / Debian / Dgit.pm
index e25a3af8339b4a659eff47fa4de9e42f871cd26f..1d713b920d92aefa195f768df07374b65e64c483 100644 (file)
@@ -44,7 +44,7 @@ BEGIN {
                      server_branch server_ref
                       stat_exists link_ltarget
                      hashfile
-                      fail ensuredir executable_on_path
+                      fail ensuredir must_getcwd executable_on_path
                       waitstatusmsg failedcmd_waitstatus
                      failedcmd_report_cmd failedcmd
                       runcmd cmdoutput cmdoutput_errok
@@ -224,6 +224,12 @@ sub ensuredir ($) {
     die "mkdir $dir: $!";
 }
 
+sub must_getcwd () {
+    my $d = getcwd();
+    defined $d or fail "getcwd failed: $!";
+    return $d;
+}
+
 sub executable_on_path ($) {
     my ($program) = @_;
     return 1 if $program =~ m{/};
@@ -481,9 +487,9 @@ sub in_workarea ($;$) {
     # $twa should be relative paths of the form .git/FOO/BAR
     my ($twa) = @_;
     $twa //= $wa;
-    chdir $twa or die "$twa $!";
+    changedir $twa or die "$twa $!";
     my $r = eval { $sub->($twa); };
-    chdir '../../..' or die "$@; $!";
+    changedir '../../..' or die "$@; $!";
     die $@ if length $@;
     return $r;
 }