/*
* Licensed to the Apache Software Foundation ( ASF ) under one
* or more contributor license agreements . See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership . The ASF licenses this file
* to you under the Apache License , Version 2 . 0 ( the
* " License " ) ; you may not use this file except in compliance
* with the License . You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing ,
* software distributed under the License is distributed on an
* " AS IS " BASIS , WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND , either express or implied . See the License for the
* specific language governing permissions and limitations
* under the License .
*/
#include "error.h"
extern const char * progname;
/*
* Print a message and return to caller .
* Caller specifies " errnoflag " .
*/
static void err_doit(int errnoflag, int error, const char *fmt, va_list ap) {
char buf[MAXLINE];
//snprintf(buf, MAXLINE, "%s: ", progname);
//vsnprintf(buf + strlen(buf), MAXLINE, fmt, ap);
vsnprintf(buf, MAXLINE, fmt, ap);
if (errnoflag) {
snprintf(buf + strlen(buf), MAXLINE - strlen(buf), ": %s" , strerror(error));
}
strcat(buf, "\n" );
fflush(stdout); /* in case stdout and stderr are the same */
fputs(buf, stderr);
fflush(NULL); /* flushes all stdio output streams */
}
/*
* Fatal error related to a system call .
* Print a message and terminate .
*/
void err_sys(const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
err_doit(1 , errno, fmt, ap);
va_end(ap);
exit (1 );
}
void err_sys2(int rc, const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
err_doit(1 , errno, fmt, ap);
va_end(ap);
exit (rc);
}
void warn_sys(const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
err_doit(1 , errno, fmt, ap);
va_end(ap);
}
/*
* Fatal error unrelated to a system call .
* Print a message and terminate .
*/
void err_quit(const char *fmt, ...) {
va_list ap;
va_start(ap, fmt);
err_doit(0 , 0 , fmt, ap);
va_end(ap);
exit (1 );
}
Messung V0.5 in Prozent C=89 H=83 G=85
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-27)
¤
*© Formatika GbR, Deutschland