Our use of `git rev-parse --git-dir' depends on our (v)fork+exec
wrapper doing chdir, so the error message is required to avoid
user confusion.  I'm still avoiding `git -C $DIR' for now since
ancient versions of git did not support it.
---
 lib/PublicInbox/Spawn.pm   | 6 ++++--
 lib/PublicInbox/SpawnPP.pm | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/PublicInbox/Spawn.pm b/lib/PublicInbox/Spawn.pm
index dc11543a..878843a6 100644
--- a/lib/PublicInbox/Spawn.pm
+++ b/lib/PublicInbox/Spawn.pm
@@ -122,8 +122,10 @@ int pi_fork_exec(SV *redirref, SV *file, SV *cmdref, SV 
*envref, SV *rlimref,
                        exit_err("setpgid", &cerrnum);
                for (sig = 1; sig < NSIG; sig++)
                        signal(sig, SIG_DFL); /* ignore errors on signals */
-               if (*cd && chdir(cd) < 0)
-                       exit_err("chdir", &cerrnum);
+               if (*cd && chdir(cd) < 0) {
+                       write(2, "cd ", 3);
+                       exit_err(cd, &cerrnum);
+               }
 
                max_rlim = av_len(rlim);
                for (i = 0; i < max_rlim; i += 3) {
diff --git a/lib/PublicInbox/SpawnPP.pm b/lib/PublicInbox/SpawnPP.pm
index 5609f74a..d6c863f8 100644
--- a/lib/PublicInbox/SpawnPP.pm
+++ b/lib/PublicInbox/SpawnPP.pm
@@ -37,7 +37,7 @@ sub pi_fork_exec ($$$$$$$) {
                }
                $SIG{$_} = 'DEFAULT' for grep(!/\A__/, keys %SIG);
                if ($cd ne '') {
-                       chdir $cd or die "chdir $cd: $!";
+                       chdir $cd or die "cd $cd: $!";
                }
                while (@$rlim) {
                        my ($r, $soft, $hard) = splice(@$rlim, 0, 3);

Reply via email to