Skip to content

Commit 1f334d1

Browse files
committed
perflib: add vwarn/err/warn
Signed-off-by: Eugene Syromiatnikov <[email protected]>
1 parent 6cb21b8 commit 1f334d1

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

source/perflib/err.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* https://www.openssl.org/source/license.html
88
*/
99

10+
#include <errno.h>
1011
#include <stdarg.h>
1112
#include <stdio.h>
1213
#include <stdlib.h>
@@ -36,6 +37,20 @@ vwarnx(const char *fmt, va_list ap)
3637
putc('\n', stderr);
3738
}
3839

40+
void
41+
vwarn(const char *fmt, va_list ap)
42+
{
43+
int saved_errno = errno;
44+
45+
if (get_progname() != NULL)
46+
fprintf(stderr, "%s: ", get_progname());
47+
vfprintf(stderr, fmt, ap);
48+
fprintf(stderr, ": ");
49+
50+
errno = saved_errno;
51+
perror(NULL);
52+
}
53+
3954
void
4055
errx(int status, const char *fmt, ...)
4156
{
@@ -47,6 +62,17 @@ errx(int status, const char *fmt, ...)
4762
exit(status);
4863
}
4964

65+
void
66+
err(int status, const char *fmt, ...)
67+
{
68+
va_list ap;
69+
70+
va_start(ap, fmt);
71+
vwarn(fmt, ap);
72+
va_end(ap);
73+
exit(status);
74+
}
75+
5076
void
5177
warnx(const char *fmt, ...)
5278
{
@@ -56,3 +82,13 @@ warnx(const char *fmt, ...)
5682
vwarnx(fmt, ap);
5783
va_end(ap);
5884
}
85+
86+
void
87+
warn(const char *fmt, ...)
88+
{
89+
va_list ap;
90+
91+
va_start(ap, fmt);
92+
vwarn(fmt, ap);
93+
va_end(ap);
94+
}

source/perflib/err.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,13 @@
2222
extern const char *progname;
2323

2424
extern void vwarnx(const char *, va_list);
25+
extern void vwarn(const char *, va_list);
26+
2527
extern void errx(int, const char *, ...);
28+
extern void err(int, const char *, ...);
29+
2630
extern void warnx(const char *, ...);
31+
extern void warn(const char *, ...);
2732

2833
# endif /* !_WIN32 */
2934

0 commit comments

Comments
 (0)