1*fa713987Sderaadt /* $OpenBSD: ypexclude.c,v 1.2 2015/08/20 21:49:29 deraadt Exp $ */
27584db8dSschwarze /*
37584db8dSschwarze * Copyright (c) 2008 Theo de Raadt
47584db8dSschwarze * Copyright (c) 1995, 1996, Jason Downs. All rights reserved.
57584db8dSschwarze *
67584db8dSschwarze * Redistribution and use in source and binary forms, with or without
77584db8dSschwarze * modification, are permitted provided that the following conditions
87584db8dSschwarze * are met:
97584db8dSschwarze * 1. Redistributions of source code must retain the above copyright
107584db8dSschwarze * notice, this list of conditions and the following disclaimer.
117584db8dSschwarze * 2. Redistributions in binary form must reproduce the above copyright
127584db8dSschwarze * notice, this list of conditions and the following disclaimer in the
137584db8dSschwarze * documentation and/or other materials provided with the distribution.
147584db8dSschwarze * 3. Neither the name of the University of California nor the names of its
157584db8dSschwarze * contributors may be used to endorse or promote products derived from
167584db8dSschwarze * this software without specific prior written permission.
177584db8dSschwarze *
187584db8dSschwarze * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
197584db8dSschwarze * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
207584db8dSschwarze * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
217584db8dSschwarze * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
227584db8dSschwarze * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
237584db8dSschwarze * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
247584db8dSschwarze * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
257584db8dSschwarze * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
267584db8dSschwarze * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
277584db8dSschwarze * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
287584db8dSschwarze * SUCH DAMAGE.
297584db8dSschwarze */
307584db8dSschwarze
317584db8dSschwarze #include <stdlib.h>
327584db8dSschwarze #include <string.h>
337584db8dSschwarze #include "ypexclude.h"
347584db8dSschwarze
357584db8dSschwarze int
__ypexclude_add(struct _ypexclude ** headp,const char * name)367584db8dSschwarze __ypexclude_add(struct _ypexclude **headp, const char *name)
377584db8dSschwarze {
387584db8dSschwarze struct _ypexclude *new;
397584db8dSschwarze
407584db8dSschwarze if (name[0] == '\0') /* skip */
417584db8dSschwarze return (0);
427584db8dSschwarze
43*fa713987Sderaadt new = malloc(sizeof(struct _ypexclude));
447584db8dSschwarze if (new == NULL)
457584db8dSschwarze return (1);
467584db8dSschwarze new->name = strdup(name);
477584db8dSschwarze if (new->name == NULL) {
487584db8dSschwarze free(new);
497584db8dSschwarze return (1);
507584db8dSschwarze }
517584db8dSschwarze
527584db8dSschwarze new->next = *headp;
537584db8dSschwarze *headp = new;
547584db8dSschwarze return (0);
557584db8dSschwarze }
567584db8dSschwarze
577584db8dSschwarze int
__ypexclude_is(struct _ypexclude ** headp,const char * name)587584db8dSschwarze __ypexclude_is(struct _ypexclude **headp, const char *name)
597584db8dSschwarze {
607584db8dSschwarze struct _ypexclude *curr;
617584db8dSschwarze
627584db8dSschwarze for (curr = *headp; curr; curr = curr->next) {
637584db8dSschwarze if (strcmp(curr->name, name) == 0)
647584db8dSschwarze return (1); /* excluded */
657584db8dSschwarze }
667584db8dSschwarze return (0);
677584db8dSschwarze }
687584db8dSschwarze
697584db8dSschwarze void
__ypexclude_free(struct _ypexclude ** headp)707584db8dSschwarze __ypexclude_free(struct _ypexclude **headp)
717584db8dSschwarze {
727584db8dSschwarze struct _ypexclude *curr, *next;
737584db8dSschwarze
747584db8dSschwarze for (curr = *headp; curr; curr = next) {
757584db8dSschwarze next = curr->next;
767584db8dSschwarze free((void *)curr->name);
777584db8dSschwarze free(curr);
787584db8dSschwarze }
797584db8dSschwarze *headp = NULL;
807584db8dSschwarze }
81