lineedit: do not hang on error, but return error indicator.
[oweals/busybox.git] / libbb / verror_msg.c
index 70f792f39413a91fc85fb1521f4e0c722f4fb0d8..ee95be3e3aa574db7d72af2838b92c3c0d6ba971 100644 (file)
@@ -4,11 +4,12 @@
  *
  * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
  *
- * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
-
 #include "libbb.h"
-#include <syslog.h>
+#if ENABLE_FEATURE_SYSLOG
+# include <syslog.h>
+#endif
 
 smallint logmode = LOGMODE_STDIO;
 const char *msg_eol = "\n";
@@ -67,18 +68,17 @@ void FAST_FUNC bb_verror_msg(const char *s, va_list p, const char* strerr)
                fflush_all();
                full_write(STDERR_FILENO, msg, used);
        }
+#if ENABLE_FEATURE_SYSLOG
        if (logmode & LOGMODE_SYSLOG) {
                syslog(LOG_ERR, "%s", msg + applet_len);
        }
+#endif
        free(msg);
 }
 
-
 #ifdef VERSION_WITH_WRITEV
-
 /* Code size is approximately the same, but currently it's the only user
  * of writev in entire bbox. __libc_writev in uclibc is ~50 bytes. */
-
 void FAST_FUNC bb_verror_msg(const char *s, va_list p, const char* strerr)
 {
        int strerr_len, msgeol_len;
@@ -128,9 +128,31 @@ void FAST_FUNC bb_verror_msg(const char *s, va_list p, const char* strerr)
                fflush_all();
                writev(STDERR_FILENO, iov, 3);
        }
+# if ENABLE_FEATURE_SYSLOG
        if (logmode & LOGMODE_SYSLOG) {
                syslog(LOG_ERR, "%s", msgc);
        }
+# endif
        free(msgc);
 }
 #endif
+
+
+void FAST_FUNC bb_error_msg_and_die(const char *s, ...)
+{
+       va_list p;
+
+       va_start(p, s);
+       bb_verror_msg(s, p, NULL);
+       va_end(p);
+       xfunc_die();
+}
+
+void FAST_FUNC bb_error_msg(const char *s, ...)
+{
+       va_list p;
+
+       va_start(p, s);
+       bb_verror_msg(s, p, NULL);
+       va_end(p);
+}