services: anonip: Bail out when the input is not a FIFO.

* gnu/services/web.scm (anonip-shepherd-service)[start]: Accept zero
arguments.  Define 'spawn'.  Print a message and return #f when #$INPUT
does not denote a FIFO.
This commit is contained in:
Ludovic Courtès 2022-10-04 09:44:18 +02:00
parent 5bc4b8e8e3
commit f83622f17d
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -1438,10 +1438,8 @@ (define (anonip-shepherd-service config)
(documentation
"Anonimyze the given log file location with anonip.")
(start
#~(lambda _
(unless (file-exists? #$input)
(mknod #$input 'fifo #o600 0))
(let ((pid
#~(lambda ()
(define (spawn)
(fork+exec-command
(append
(list #$(file-append (anonip-configuration-anonip config)
@ -1462,8 +1460,18 @@ (define (anonip-shepherd-service config)
#:environment-variables
(list (string-append "GUIX_LOCPATH=" #$glibc-utf8-locales
"/lib/locale")
"LC_ALL=en_US.utf8"))))
pid)))
"LC_ALL=en_US.utf8")))
(let ((stat (stat #$input #f)))
(cond ((not stat)
(mknod #$input 'fifo #o600 0)
(spawn))
((eq? 'fifo (stat:type stat))
(spawn))
(else
(format #t "'~a' is not a FIFO; bailing out~%"
#$input)
#f)))))
(stop #~(make-kill-destructor))))))
(define anonip-service-type