Print the exit status of jobs correctly

This commit is contained in:
eknauel 2005-08-11 14:50:36 +00:00
parent e83f3e7d81
commit f26e89b895
1 changed files with 51 additions and 10 deletions

View File

@ -106,6 +106,51 @@
(register-plugin!
(make-view-plugin make-joblist-viewer list-of-jobs?))
(define format-signal-no
(let ((signal/name-alist
`((,signal/alrm . signal/alrm)
(,signal/int . signal/int)
(,signal/chld . signal/chld)
(,signal/cont . signal/cont)
(,signal/hup . signal/hup)
(,signal/quit . signal/quit)
(,signal/term . signal/term)
(,signal/tstp . signal/tstp)
(,signal/usr1 . signal/usr1)
(,signal/usr2 . signal/usr2)
(,signal/stop . signal/stop)
(,signal/kill . signal/kill)
(,signal/abrt . signal/abrt)
(,signal/fpe . signal/fpe)
(,signal/ill . signal/ill)
(,signal/pipe . signal/pipe)
(,signal/segv . signal/segv)
(,signal/ttin . signal/ttin)
(,signal/ttou . signal/ttou))))
(lambda (no)
(cond
((assoc no signal/name-alist)
=> (lambda (p)
(symbol->string (cdr p))))
(else "some non-POSIX signal")))))
(define (format-job-status job)
(let ((status (job-status job)))
(debug-message "format-job-status " status)
(cond
((status:exit-val status)
=> (lambda (code)
(string-append "exited normally with code "
(number->string code))))
((status:stop-sig status)
=> (lambda (signal-no)
(string-append "suspended by signal "
(format-signal-no signal-no))))
((status:term-sig status)
=> (lambda (signal-no)
(string-append "terminated by signal "
(format-signal-no signal-no)))))))
;;; viewer for a single job viewer
(define (make-job-viewer job buffer)
@ -131,12 +176,11 @@
(cddr args))))))
`((,(job-name->string (job-name job))
"name:" ,(job-name->string (job-name job)))
(,(if (job-end-time job)
(number->string (job-status job)) #f)
"status:"
,(if (job-end-time job)
(number->string (job-status job))
"-"))
(,(if (job-end-time job) (job-status job) #f)
"status:"
,(format-job-status job))
(,(job-start-time job)
"start:"
,(short-date (job-start-time job)))
@ -175,10 +219,7 @@
((paint)
(lambda (self win buffer have-focus?)
(mvwaddstr
win 0 0
(cut-to-size
num-cols (string-append "Viewing job: "
(job-name->string (job-name job)))))
win 0 0 (cut-to-size num-cols "Viewing job"))
(paint-selection-list-at
select-list 0 1 win buffer have-focus?)))