source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: No point in trying to go on when elementary database operations
@ 2015-11-26  7:42 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2015-11-26  7:42 UTC (permalink / raw)
  To: source

Log Message:
-----------
No point in trying to go on when elementary database operations
like preparing queries or binding variables fail; that won't yield
useful results anyway but may generate huge pointless error messages.
Issue reported by deraadt@.

Modified Files:
--------------
    mdocml:
        compat_err.c
        configure
        mansearch.c

Revision Data
-------------
Index: compat_err.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/compat_err.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -Lcompat_err.c -Lcompat_err.c -u -p -r1.3 -r1.4
--- compat_err.c
+++ compat_err.c
@@ -77,6 +77,18 @@ err(int eval, const char *fmt, ...)
 }
 
 void
+errx(int eval, const char *fmt, ...)
+{
+	va_list ap;
+
+	va_start(ap, fmt);
+	vwarnxi(fmt, ap);
+	va_end(ap);
+	fputc('\n', stderr);
+	exit(eval);
+}
+
+void
 warn(const char *fmt, ...)
 {
 	va_list ap;
Index: configure
===================================================================
RCS file: /home/cvs/mdocml/mdocml/configure,v
retrieving revision 1.36
retrieving revision 1.37
diff -Lconfigure -Lconfigure -u -p -r1.36 -r1.37
--- configure
+++ configure
@@ -339,6 +339,7 @@ __HEREDOC__
 
 if [ ${HAVE_ERR} -eq 0 ]; then
 	echo "extern	void	  err(int, const char *, ...);"
+	echo "extern	void	  errx(int, const char *, ...);"
 	echo "extern	void	  warn(const char *, ...);"
 	echo "extern	void	  warnx(const char *, ...);"
 fi
Index: mansearch.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mansearch.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -Lmansearch.c -Lmansearch.c -u -p -r1.62 -r1.63
--- mansearch.c
+++ mansearch.c
@@ -54,17 +54,17 @@ extern const char *const mansearch_keyna
 #define	SQL_BIND_TEXT(_db, _s, _i, _v) \
 	do { if (SQLITE_OK != sqlite3_bind_text \
 		((_s), (_i)++, (_v), -1, SQLITE_STATIC)) \
-		warnx("%s", sqlite3_errmsg((_db))); \
+		errx((int)MANDOCLEVEL_SYSERR, "%s", sqlite3_errmsg((_db))); \
 	} while (0)
 #define	SQL_BIND_INT64(_db, _s, _i, _v) \
 	do { if (SQLITE_OK != sqlite3_bind_int64 \
 		((_s), (_i)++, (_v))) \
-		warnx("%s", sqlite3_errmsg((_db))); \
+		errx((int)MANDOCLEVEL_SYSERR, "%s", sqlite3_errmsg((_db))); \
 	} while (0)
 #define	SQL_BIND_BLOB(_db, _s, _i, _v) \
 	do { if (SQLITE_OK != sqlite3_bind_blob \
 		((_s), (_i)++, (&_v), sizeof(_v), SQLITE_STATIC)) \
-		warnx("%s", sqlite3_errmsg((_db))); \
+		errx((int)MANDOCLEVEL_SYSERR, "%s", sqlite3_errmsg((_db))); \
 	} while (0)
 
 struct	expr {
@@ -262,7 +262,8 @@ mansearch(const struct mansearch *search
 		j = 1;
 		c = sqlite3_prepare_v2(db, sql, -1, &s, NULL);
 		if (SQLITE_OK != c)
-			warnx("%s", sqlite3_errmsg(db));
+			errx((int)MANDOCLEVEL_SYSERR,
+			    "%s", sqlite3_errmsg(db));
 
 		for (ep = e; NULL != ep; ep = ep->next) {
 			if (NULL == ep->substr) {
@@ -312,14 +313,16 @@ mansearch(const struct mansearch *search
 		    "WHERE pageid=? ORDER BY sec, arch, name",
 		    -1, &s, NULL);
 		if (SQLITE_OK != c)
-			warnx("%s", sqlite3_errmsg(db));
+			errx((int)MANDOCLEVEL_SYSERR,
+			    "%s", sqlite3_errmsg(db));
 
 		c = sqlite3_prepare_v2(db,
 		    "SELECT bits, key, pageid FROM keys "
 		    "WHERE pageid=? AND bits & ?",
 		    -1, &s2, NULL);
 		if (SQLITE_OK != c)
-			warnx("%s", sqlite3_errmsg(db));
+			errx((int)MANDOCLEVEL_SYSERR,
+			    "%s", sqlite3_errmsg(db));
 
 		for (mp = ohash_first(&htab, &idx);
 				NULL != mp;
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-11-26  7:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-26  7:42 mdocml: No point in trying to go on when elementary database operations schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).