xref: /freebsd/lib/libnetbsd/util.c (revision 5e53a4f90f82c4345f277dd87cc9292f26e04a29)
16bea8766SBrooks Davis /*-
2*5e53a4f9SPedro F. Giffuni  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3*5e53a4f9SPedro F. Giffuni  *
46bea8766SBrooks Davis  * Copyright (c) 2012 SRI International
56bea8766SBrooks Davis  * All rights reserved.
66bea8766SBrooks Davis  *
76bea8766SBrooks Davis  * This software was developed by SRI International and the University of
86bea8766SBrooks Davis  * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
96bea8766SBrooks Davis  * ("CTSRD"), as part of the DARPA CRASH research programme.
106bea8766SBrooks Davis  *
116bea8766SBrooks Davis  * Redistribution and use in source and binary forms, with or without
126bea8766SBrooks Davis  * modification, are permitted provided that the following conditions
136bea8766SBrooks Davis  * are met:
146bea8766SBrooks Davis  * 1. Redistributions of source code must retain the above copyright
156bea8766SBrooks Davis  *    notice, this list of conditions and the following disclaimer.
166bea8766SBrooks Davis  * 2. Redistributions in binary form must reproduce the above copyright
176bea8766SBrooks Davis  *    notice, this list of conditions and the following disclaimer in the
186bea8766SBrooks Davis  *    documentation and/or other materials provided with the distribution.
196bea8766SBrooks Davis  *
206bea8766SBrooks Davis  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
216bea8766SBrooks Davis  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
226bea8766SBrooks Davis  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
236bea8766SBrooks Davis  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
246bea8766SBrooks Davis  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
256bea8766SBrooks Davis  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
266bea8766SBrooks Davis  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
276bea8766SBrooks Davis  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
286bea8766SBrooks Davis  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
296bea8766SBrooks Davis  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
306bea8766SBrooks Davis  * SUCH DAMAGE.
316bea8766SBrooks Davis  *
326bea8766SBrooks Davis  * $FreeBSD$
336bea8766SBrooks Davis  */
346bea8766SBrooks Davis 
356bea8766SBrooks Davis #include <sys/cdefs.h>
366bea8766SBrooks Davis #include <sys/types.h>
376bea8766SBrooks Davis 
386bea8766SBrooks Davis #include <stdlib.h>
396bea8766SBrooks Davis #include <string.h>
406bea8766SBrooks Davis #include <unistd.h>
41871afaefSMarcel Moolenaar 
42871afaefSMarcel Moolenaar #include "util.h"
436bea8766SBrooks Davis 
446bea8766SBrooks Davis char *
456bea8766SBrooks Davis flags_to_string(u_long flags, const char *def)
466bea8766SBrooks Davis {
476bea8766SBrooks Davis 	char *str;
486bea8766SBrooks Davis 
496bea8766SBrooks Davis 	str = fflagstostr(flags);
506bea8766SBrooks Davis 	if (*str == '\0') {
516bea8766SBrooks Davis 		free(str);
526bea8766SBrooks Davis 		str = strdup(def);
536bea8766SBrooks Davis 	}
546bea8766SBrooks Davis 	return (str);
556bea8766SBrooks Davis }
566bea8766SBrooks Davis 
576bea8766SBrooks Davis int
586bea8766SBrooks Davis string_to_flags(char **stringp, u_long *setp, u_long *clrp)
596bea8766SBrooks Davis {
606bea8766SBrooks Davis 
616bea8766SBrooks Davis 	return strtofflags(stringp, setp, clrp);
626bea8766SBrooks Davis }
63