1  /*
2    Linux error(3) function go around for systems that has err(3) and
3    warn(3), but no error(3).  MacOS is good example of such.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation version 2.
8 
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13 
14    You should have received a copy of the GNU Lesser General Public
15    License along with this library; if not, write to the Free Software
16    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17    02110-1301 USA.
18 */
19 
20 #include <stdarg.h>
21 #include <err.h>
22 
error(int status,int errnum,const char * format,...)23 void error(int status, int errnum, const char *format, ...) {
24   va_list arg;
25 
26   va_start(arg, format);
27   if (errnum == 0) {
28     if (status == 0)
29       vwarnx(format, arg);
30     else
31       verrx(status, format, arg);
32   } else {
33     if (status == 0)
34       vwarn(format, arg);
35     else
36       verr(status, format, arg);
37   }
38   va_end(arg);
39 }
40