From patchwork Sat Jun 25 04:30:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Pfaff X-Patchwork-Id: 640533 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id 3rc2Lx67mxz9sBl for ; Sat, 25 Jun 2016 14:30:49 +1000 (AEST) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id CBD7810E3C; Fri, 24 Jun 2016 21:30:48 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx1e3.cudamail.com (mx1.cudamail.com [69.90.118.67]) by archives.nicira.com (Postfix) with ESMTPS id C0DF010E3B for ; Fri, 24 Jun 2016 21:30:47 -0700 (PDT) Received: from bar5.cudamail.com (localhost [127.0.0.1]) by mx1e3.cudamail.com (Postfix) with ESMTPS id 4B06D42012E for ; Fri, 24 Jun 2016 22:30:47 -0600 (MDT) X-ASG-Debug-ID: 1466829046-09eadd24ba29eb90001-byXFYA Received: from mx3-pf3.cudamail.com ([192.168.14.3]) by bar5.cudamail.com with ESMTP id 9k4Iqlf4FOgAsrDb (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 24 Jun 2016 22:30:46 -0600 (MDT) X-Barracuda-Envelope-From: blp@ovn.org X-Barracuda-RBL-Trusted-Forwarder: 192.168.14.3 Received: from unknown (HELO relay2-d.mail.gandi.net) (217.70.183.194) by mx3-pf3.cudamail.com with ESMTPS (DHE-RSA-AES256-SHA encrypted); 25 Jun 2016 04:30:46 -0000 Received-SPF: pass (mx3-pf3.cudamail.com: SPF record at ovn.org designates 217.70.183.194 as permitted sender) X-Barracuda-Apparent-Source-IP: 217.70.183.194 X-Barracuda-RBL-IP: 217.70.183.194 Received: from mfilter33-d.gandi.net (mfilter33-d.gandi.net [217.70.178.164]) by relay2-d.mail.gandi.net (Postfix) with ESMTP id E8CDBC5A61; Sat, 25 Jun 2016 06:30:44 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter33-d.gandi.net Received: from relay2-d.mail.gandi.net ([IPv6:::ffff:217.70.183.194]) by mfilter33-d.gandi.net (mfilter33-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id 3s1TkSQDX5gp; Sat, 25 Jun 2016 06:30:43 +0200 (CEST) X-Originating-IP: 173.228.112.241 Received: from sigabrt.benpfaff.org (173-228-112-241.dsl.dynamic.fusionbroadband.com [173.228.112.241]) (Authenticated sender: blp@ovn.org) by relay2-d.mail.gandi.net (Postfix) with ESMTPSA id 965E5C5A53; Sat, 25 Jun 2016 06:30:42 +0200 (CEST) X-CudaMail-Envelope-Sender: blp@ovn.org From: Ben Pfaff To: dev@openvswitch.org X-CudaMail-Whitelist-To: dev@openvswitch.org X-CudaMail-MID: CM-V3-623054168 X-CudaMail-DTE: 062416 X-CudaMail-Originating-IP: 217.70.183.194 Date: Fri, 24 Jun 2016 21:30:39 -0700 X-ASG-Orig-Subj: [##CM-V3-623054168##][PATCH v2] sset: New function sset_from_delimited_string(). Message-Id: <1466829039-20877-1-git-send-email-blp@ovn.org> X-Mailer: git-send-email 2.1.3 X-Barracuda-Connect: UNKNOWN[192.168.14.3] X-Barracuda-Start-Time: 1466829046 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-ASG-Whitelist: Header =?UTF-8?B?eFwtY3VkYW1haWxcLXdoaXRlbGlzdFwtdG8=?= X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 Cc: Ben Pfaff Subject: [ovs-dev] [PATCH v2] sset: New function sset_from_delimited_string(). X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" This simplifies code in a couple of places. Signed-off-by: Ben Pfaff Acked-By: Ryan Moats --- v1->v2: Fix compile errors. lib/sset.c | 21 ++++++++++++++++++++- lib/sset.h | 3 +++ ovn/utilities/ovn-sbctl.c | 10 ++-------- ovsdb/replication.c | 12 +----------- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/lib/sset.c b/lib/sset.c index 4fd3fae..be29cc7 100644 --- a/lib/sset.c +++ b/lib/sset.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, 2013, 2015 Nicira, Inc. + * Copyright (c) 2011, 2012, 2013, 2015, 2016 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -99,6 +99,25 @@ sset_moved(struct sset *set) hmap_moved(&set->map); } +/* Initializes 'set' with substrings of 's' that are delimited by any of the + * characters in 'delimiters'. For example, + * sset_from_delimited_string(&set, "a b,c", " ,"); + * initializes 'set' with three strings "a", "b", and "c". */ +void +sset_from_delimited_string(struct sset *set, const char *s_, + const char *delimiters) +{ + sset_init(set); + + char *s = xstrdup(s_); + char *token, *save_ptr = NULL; + for (token = strtok_r(s, delimiters, &save_ptr); token != NULL; + token = strtok_r(NULL, delimiters, &save_ptr)) { + sset_add(set, token); + } + free(s); +} + /* Returns true if 'set' contains no strings, false if it contains at least one * string. */ bool diff --git a/lib/sset.h b/lib/sset.h index 9c2f703..c3b5e97 100644 --- a/lib/sset.h +++ b/lib/sset.h @@ -43,6 +43,9 @@ void sset_clone(struct sset *, const struct sset *); void sset_swap(struct sset *, struct sset *); void sset_moved(struct sset *); +void sset_from_delimited_string(struct sset *, const char *s, + const char *delimiters); + /* Count. */ bool sset_is_empty(const struct sset *); size_t sset_count(const struct sset *); diff --git a/ovn/utilities/ovn-sbctl.c b/ovn/utilities/ovn-sbctl.c index c0ee518..40e1797 100644 --- a/ovn/utilities/ovn-sbctl.c +++ b/ovn/utilities/ovn-sbctl.c @@ -548,14 +548,8 @@ cmd_chassis_add(struct ctl_context *ctx) check_conflicts(sbctl_ctx, ch_name, xasprintf("cannot create a chassis named %s", ch_name)); - char *tokstr = xstrdup(encap_types); - char *token, *save_ptr = NULL; - struct sset encap_set = SSET_INITIALIZER(&encap_set); - for (token = strtok_r(tokstr, ",", &save_ptr); token != NULL; - token = strtok_r(NULL, ",", &save_ptr)) { - sset_add(&encap_set, token); - } - free(tokstr); + struct sset encap_set; + sset_from_delimited_string(&encap_set, encap_types, ","); size_t n_encaps = sset_count(&encap_set); struct sbrec_encap **encaps = xmalloc(n_encaps * sizeof *encaps); diff --git a/ovsdb/replication.c b/ovsdb/replication.c index 1fa0f25..aa6b9e2 100644 --- a/ovsdb/replication.c +++ b/ovsdb/replication.c @@ -121,19 +121,9 @@ set_remote_ovsdb_server(const char *remote_server) void set_tables_blacklist(const char *blacklist) { - char *save_ptr = NULL; - char *blacklist_item; - replication_init(); - if (blacklist) { - char *t_blacklist = xstrdup(blacklist); - for (blacklist_item = strtok_r(t_blacklist, ",", &save_ptr); - blacklist_item != NULL; - blacklist_item = strtok_r(NULL, ",", &save_ptr)) { - sset_add(&tables_blacklist, blacklist_item); - } - free(t_blacklist); + sset_from_delimited_string(&tables_blacklist, blacklist, ","); } }