From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: [PATCH 2/5] service: Improve style of 'for-each-service'. Date: Sun, 24 Jan 2016 18:33:08 +0300 Message-ID: <1453649591-3478-3-git-send-email-alezost@gmail.com> References: <1453649591-3478-1-git-send-email-alezost@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:56028) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aNMfW-0001Ax-No for guix-devel@gnu.org; Sun, 24 Jan 2016 10:33:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aNMfV-00050d-6u for guix-devel@gnu.org; Sun, 24 Jan 2016 10:33:34 -0500 Received: from mail-lf0-x242.google.com ([2a00:1450:4010:c07::242]:33241) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aNMfU-00050Y-VF for guix-devel@gnu.org; Sun, 24 Jan 2016 10:33:33 -0500 Received: by mail-lf0-x242.google.com with SMTP id z62so6584928lfd.0 for ; Sun, 24 Jan 2016 07:33:32 -0800 (PST) Received: from localhost.localdomain ([217.107.192.146]) by smtp.gmail.com with ESMTPSA id e130sm2135200lfe.9.2016.01.24.07.33.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 24 Jan 2016 07:33:31 -0800 (PST) In-Reply-To: <1453649591-3478-1-git-send-email-alezost@gmail.com> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org * modules/shepherd/service.scm (lookup-canonical-service): New procedure. (for-each-service): Use it. Use 'hash-for-each' instead of 'hash-fold'. --- modules/shepherd/service.scm | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/shepherd/service.scm b/modules/shepherd/service.scm index 808372c..7cf557f 100644 --- a/modules/shepherd/service.scm +++ b/modules/shepherd/service.scm @@ -2,6 +2,7 @@ ;; Copyright (C) 2013, 2014, 2015, 2016 Ludovic Courtès ;; Copyright (C) 2002, 2003 Wolfgang Järling ;; Copyright (C) 2014 Alex Sassmannshausen +;; Copyright (C) 2016 Alex Kost ;; ;; This file is part of the GNU Shepherd. ;; @@ -810,13 +811,19 @@ given USER and/or GROUP to run COMMAND." ;;; Perform actions with services: -;; Call PROC once for each registered service. +(define (lookup-canonical-service name services) + "Return service with canonical NAME from SERVICES list. +Return #f if service is not found." + (find (lambda (service) + (eq? name (canonical-name service))) + services)) + (define (for-each-service proc) - (hash-fold (lambda (key value unused) - (and (eq? key (canonical-name (car value))) - (proc (car value)))) - #f ;; Unused - %services)) + "Call PROC for each registered service." + (hash-for-each (lambda (name services) + (and=> (lookup-canonical-service name services) + proc)) + %services)) (define (service-list) "Return the list of services currently defined." -- 2.6.3