aboutsummaryrefslogtreecommitdiffstats
path: root/src/mpd_error.h
diff options
context:
space:
mode:
authorThomas Jansen <mithi@mithi.net>2010-09-25 15:00:43 +0200
committerThomas Jansen <mithi@mithi.net>2010-09-25 15:00:43 +0200
commit28bcb8bdf568875eeea1349e39b7958d77c8fcc1 (patch)
tree17397be16e8067a48fd532a581081f68a1b17700 /src/mpd_error.h
parent9af9fd140032138894e4781caabee8a5a96edab8 (diff)
downloadmpd-28bcb8bdf568875eeea1349e39b7958d77c8fcc1.tar.gz
mpd-28bcb8bdf568875eeea1349e39b7958d77c8fcc1.tar.xz
mpd-28bcb8bdf568875eeea1349e39b7958d77c8fcc1.zip
eliminate g_error() usage
Replaced all occurrences of g_error() with MPD_ERROR() located in a new header file 'mpd_error.h'. This macro uses g_critical() to print the error message and then exits gracefully in contrast to g_error() which would internally call abort() to produce a core dump. The macro name is distinctive and allows to find all places with dubious error handling. The long-term goal is to get rid of MPD_ERROR() altogether. To facilitate the eventual removal of this macro it was added in a new header file rather than to an existing header file. This fixes #2995 and #3007.
Diffstat (limited to 'src/mpd_error.h')
-rw-r--r--src/mpd_error.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/mpd_error.h b/src/mpd_error.h
new file mode 100644
index 000000000..95e120572
--- /dev/null
+++ b/src/mpd_error.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2003-2010 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef MPD_ERROR_H
+#define MPD_ERROR_H
+
+#include <stdlib.h>
+
+/* This macro is used as an intermediate step to a proper error handling
+ * using GError in mpd. It is used for unrecoverable error conditions
+ * and exits immediately. The long-term goal is to replace this macro by
+ * proper error handling. */
+
+#define MPD_ERROR(...) \
+ { \
+ g_critical(__VA_ARGS__); \
+ exit(EXIT_FAILURE); \
+ }
+
+#endif