summary refs log tree commit diff
path: root/Src/jobs.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@users.sourceforge.net>2006-03-27 11:41:17 +0000
committerWayne Davison <wayned@users.sourceforge.net>2006-03-27 11:41:17 +0000
commit41fb468fca88b04ddc360b31db08ca4a412e3ee4 (patch)
treea4ec10c6e2014a5bb48ecf57cd93873618e8df9c /Src/jobs.c
parent8569055841dfe84d1fa0f8e070e917309560caa4 (diff)
downloadzsh-41fb468fca88b04ddc360b31db08ca4a412e3ee4.tar.gz
zsh-41fb468fca88b04ddc360b31db08ca4a412e3ee4.tar.xz
zsh-41fb468fca88b04ddc360b31db08ca4a412e3ee4.zip
Fixed a compilation problem when HAVE_GETRUSAGE is defined
but HAVE_WAIT3.  See the sourceforge bug report:
https://sourceforge.net/tracker/?func=detail&atid=104068&aid=1262954&group_id=4068
Diffstat (limited to 'Src/jobs.c')
-rw-r--r--Src/jobs.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/Src/jobs.c b/Src/jobs.c
index 4f89d0f53..f388da7fd 100644
--- a/Src/jobs.c
+++ b/Src/jobs.c
@@ -271,7 +271,7 @@ get_usage(void)
 }
 
 
-#ifndef HAVE_GETRUSAGE
+#if !defined HAVE_WAIT3 || !defined HAVE_GETRUSAGE
 /* Update status of process that we have just WAIT'ed for */
 
 /**/
@@ -279,17 +279,26 @@ void
 update_process(Process pn, int status)
 {
     struct timezone dummy_tz;
-    long childs, childu;
+#ifdef HAVE_GETRUSAGE
+    struct timeval childs = child_usage.ru_stime;
+    struct timeval childu = child_usage.ru_utime;
+#else
+    long childs = shtms.tms_cstime;
+    long childu = shtms.tms_cutime;
+#endif
 
-    childs = shtms.tms_cstime;
-    childu = shtms.tms_cutime;
     /* get time-accounting info          */
     get_usage();
     gettimeofday(&pn->endtime, &dummy_tz);  /* record time process exited        */
 
     pn->status = status;                    /* save the status returned by WAIT  */
+#ifdef HAVE_GETRUSAGE
+    dtime(&pn->ti.ru_stime, &childs, &child_usage.ru_stime);
+    dtime(&pn->ti.ru_utime, &childu, &child_usage.ru_utime);
+#else
     pn->ti.st  = shtms.tms_cstime - childs; /* compute process system space time */
     pn->ti.ut  = shtms.tms_cutime - childu; /* compute process user space time   */
+#endif
 }
 #endif