xref: /freebsd/lib/libnetbsd/util.c (revision a2f733abcff64628b7771a47089628b7327a88bd)
16bea8766SBrooks Davis /*-
2*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
35e53a4f9SPedro 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 
336bea8766SBrooks Davis #include <sys/types.h>
346bea8766SBrooks Davis 
356bea8766SBrooks Davis #include <stdlib.h>
366bea8766SBrooks Davis #include <string.h>
376bea8766SBrooks Davis #include <unistd.h>
38871afaefSMarcel Moolenaar 
39871afaefSMarcel Moolenaar #include "util.h"
406bea8766SBrooks Davis 
416bea8766SBrooks Davis char *
flags_to_string(u_long flags,const char * def)426bea8766SBrooks Davis flags_to_string(u_long flags, const char *def)
436bea8766SBrooks Davis {
446bea8766SBrooks Davis 	char *str;
456bea8766SBrooks Davis 
466bea8766SBrooks Davis 	str = fflagstostr(flags);
476bea8766SBrooks Davis 	if (*str == '\0') {
486bea8766SBrooks Davis 		free(str);
496bea8766SBrooks Davis 		str = strdup(def);
506bea8766SBrooks Davis 	}
516bea8766SBrooks Davis 	return (str);
526bea8766SBrooks Davis }
536bea8766SBrooks Davis 
546bea8766SBrooks Davis int
string_to_flags(char ** stringp,u_long * setp,u_long * clrp)556bea8766SBrooks Davis string_to_flags(char **stringp, u_long *setp, u_long *clrp)
566bea8766SBrooks Davis {
576bea8766SBrooks Davis 
586bea8766SBrooks Davis 	return strtofflags(stringp, setp, clrp);
596bea8766SBrooks Davis }
60