#include <errno.h>
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "extern.h"
extern int verbose;
void
rsync_log(int level, const char *fmt, ...)
{
char *buf = NULL;
va_list ap;
if (verbose < level + 1)
return;
if (fmt != NULL) {
va_start(ap, fmt);
if (vasprintf(&buf, fmt, ap) == -1) {
va_end(ap);
return;
}
va_end(ap);
}
if (level <= 0 && buf != NULL)
fprintf(stderr, "%s\n", buf);
else if (level > 0)
fprintf(stderr, "%s: %s%s\n", getprogname(),
(buf != NULL) ? ": " : "",
(buf != NULL) ? buf : "");
free(buf);
}
void
rsync_errx(const char *fmt, ...)
{
char *buf = NULL;
va_list ap;
if (fmt != NULL) {
va_start(ap, fmt);
if (vasprintf(&buf, fmt, ap) == -1) {
va_end(ap);
return;
}
va_end(ap);
}
fprintf(stderr, "%s: error%s%s\n", getprogname(),
(buf != NULL) ? ": " : "",
(buf != NULL) ? buf : "");
free(buf);
}
void
rsync_err(const char *fmt, ...)
{
char *buf = NULL;
va_list ap;
int er = errno;
if (fmt != NULL) {
va_start(ap, fmt);
if (vasprintf(&buf, fmt, ap) == -1) {
va_end(ap);
return;
}
va_end(ap);
}
fprintf(stderr, "%s: error%s%s: %s\n", getprogname(),
(buf != NULL) ? ": " : "",
(buf != NULL) ? buf : "", strerror(er));
free(buf);
}
void
rsync_errx1(const char *fmt, ...)
{
char *buf = NULL;
va_list ap;
if (verbose < 1)
return;
if (fmt != NULL) {
va_start(ap, fmt);
if (vasprintf(&buf, fmt, ap) == -1) {
va_end(ap);
return;
}
va_end(ap);
}
fprintf(stderr, "%s: error%s%s\n", getprogname(),
(buf != NULL) ? ": " : "",
(buf != NULL) ? buf : "");
free(buf);
}
void
rsync_warnx(const char *fmt, ...)
{
char *buf = NULL;
va_list ap;
if (fmt != NULL) {
va_start(ap, fmt);
if (vasprintf(&buf, fmt, ap) == -1) {
va_end(ap);
return;
}
va_end(ap);
}
fprintf(stderr, "%s: warning%s%s\n", getprogname(),
(buf != NULL) ? ": " : "",
(buf != NULL) ? buf : "");
free(buf);
}
void
rsync_warn(int level, const char *fmt, ...)
{
char *buf = NULL;
va_list ap;
int er = errno;
if (verbose < level)
return;
if (fmt != NULL) {
va_start(ap, fmt);
if (vasprintf(&buf, fmt, ap) == -1) {
va_end(ap);
return;
}
va_end(ap);
}
fprintf(stderr, "%s: warning%s%s: %s\n", getprogname(),
(buf != NULL) ? ": " : "",
(buf != NULL) ? buf : "", strerror(er));
free(buf);
}