aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2008-01-03 07:29:49 +0000
committerEric Wong <normalperson@yhbt.net>2008-01-03 07:29:49 +0000
commitcb8f1af3bd5056109bfbe75faf568430a5121bda (patch)
tree86d812b051bca48fd6b4f32706d506a3d77a3989 /src
parent790e70cf25ade17e7412b153c440ef4999fe72fd (diff)
downloadmpd-cb8f1af3bd5056109bfbe75faf568430a5121bda.tar.gz
mpd-cb8f1af3bd5056109bfbe75faf568430a5121bda.tar.xz
mpd-cb8f1af3bd5056109bfbe75faf568430a5121bda.zip
Cleanup #includes of standard system headers and put them in one place
This will make refactoring features easier, especially now that pthreads support and larger refactorings are on the horizon. Hopefully, this will make porting to other platforms (even non-UNIX-like ones for masochists) easier, too. os_compat.h will house all the #includes for system headers considered to be the "core" of MPD. Headers for optional features will be left to individual source files. git-svn-id: https://svn.musicpd.org/mpd/trunk@7130 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r--src/audio.c10
-rw-r--r--src/audio.h3
-rw-r--r--src/audioOutput.c3
-rw-r--r--src/audioOutput.h1
-rw-r--r--src/audioOutputs/audioOutput_alsa.c5
-rw-r--r--src/audioOutputs/audioOutput_ao.c5
-rw-r--r--src/audioOutputs/audioOutput_fifo.c10
-rw-r--r--src/audioOutputs/audioOutput_jack.c13
-rw-r--r--src/audioOutputs/audioOutput_mvp.c12
-rw-r--r--src/audioOutputs/audioOutput_oss.c12
-rw-r--r--src/audioOutputs/audioOutput_osx.c4
-rw-r--r--src/audioOutputs/audioOutput_pulse.c6
-rw-r--r--src/audioOutputs/audioOutput_shout.c5
-rw-r--r--src/buffer2array.c7
-rw-r--r--src/charConv.c5
-rw-r--r--src/command.c7
-rw-r--r--src/command.h4
-rw-r--r--src/compress.c6
-rw-r--r--src/conf.c10
-rw-r--r--src/dbUtils.h2
-rw-r--r--src/decode.c9
-rw-r--r--src/decode.h4
-rw-r--r--src/directory.c5
-rw-r--r--src/inputPlugin.c4
-rw-r--r--src/inputPlugins/_flac_common.c4
-rw-r--r--src/inputPlugins/_ogg_common.c3
-rw-r--r--src/inputPlugins/aac_plugin.c5
-rw-r--r--src/inputPlugins/audiofile_plugin.c8
-rw-r--r--src/inputPlugins/flac_plugin.c6
-rw-r--r--src/inputPlugins/mod_plugin.c8
-rw-r--r--src/inputPlugins/mp3_plugin.c8
-rw-r--r--src/inputPlugins/mp4_plugin.c6
-rw-r--r--src/inputPlugins/mpc_plugin.c7
-rw-r--r--src/inputPlugins/oggflac_plugin.c5
-rw-r--r--src/inputPlugins/oggvorbis_plugin.c8
-rw-r--r--src/inputPlugins/wavpack_plugin.c8
-rw-r--r--src/inputStream.c4
-rw-r--r--src/inputStream.h2
-rw-r--r--src/inputStream_file.c9
-rw-r--r--src/inputStream_http.c15
-rw-r--r--src/interface.c16
-rw-r--r--src/interface.h6
-rw-r--r--src/ioops.h2
-rw-r--r--src/list.c7
-rw-r--r--src/list.h3
-rw-r--r--src/listen.c13
-rw-r--r--src/listen.h6
-rw-r--r--src/log.c7
-rw-r--r--src/log.h3
-rw-r--r--src/ls.c5
-rw-r--r--src/ls.h7
-rw-r--r--src/main.c15
-rw-r--r--src/metadataChunk.c3
-rw-r--r--src/mpd_types.h11
-rw-r--r--src/myfprintf.c9
-rw-r--r--src/myfprintf.h4
-rw-r--r--src/normalize.c3
-rw-r--r--src/os_compat.h77
-rw-r--r--src/outputBuffer.c4
-rw-r--r--src/path.c9
-rw-r--r--src/path.h4
-rw-r--r--src/pcm_utils.c5
-rw-r--r--src/pcm_utils.h3
-rw-r--r--src/permission.c3
-rw-r--r--src/player.c13
-rw-r--r--src/player.h4
-rw-r--r--src/playerData.c9
-rw-r--r--src/playlist.c9
-rw-r--r--src/playlist.h5
-rw-r--r--src/replayGain.c5
-rw-r--r--src/sig_handlers.c9
-rw-r--r--src/signal_check.c4
-rw-r--r--src/signal_check.h2
-rw-r--r--src/sllist.c2
-rw-r--r--src/sllist.h2
-rw-r--r--src/song.c4
-rw-r--r--src/song.h5
-rw-r--r--src/state_file.c7
-rw-r--r--src/state_file.h2
-rw-r--r--src/stats.c3
-rw-r--r--src/stats.h2
-rw-r--r--src/storedPlaylist.c4
-rw-r--r--src/tag.c8
-rw-r--r--src/tag.h3
-rw-r--r--src/tagTracker.c4
-rw-r--r--src/timer.c5
-rw-r--r--src/tree.c5
-rw-r--r--src/utf8.c5
-rw-r--r--src/utils.c14
-rw-r--r--src/utils.h9
-rw-r--r--src/volume.c8
-rw-r--r--src/volume.h3
-rw-r--r--src/zeroconf.c6
93 files changed, 167 insertions, 477 deletions
diff --git a/src/audio.c b/src/audio.c
index 16367efa0..07183d1ea 100644
--- a/src/audio.c
+++ b/src/audio.c
@@ -25,15 +25,7 @@
#include "playerData.h"
#include "utils.h"
#include "state_file.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <signal.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include <errno.h>
-#include <unistd.h>
+#include "os_compat.h"
#define AUDIO_DEVICE_STATE "audio_device_state:"
#define AUDIO_DEVICE_STATE_LEN 19 /* strlen(AUDIO_DEVICE_STATE) */
diff --git a/src/audio.h b/src/audio.h
index 3663d289d..857b4aaf6 100644
--- a/src/audio.h
+++ b/src/audio.h
@@ -23,8 +23,7 @@
#include "mpd_types.h"
#include "tag.h"
-
-#include <stdio.h>
+#include "os_compat.h"
#define AUDIO_AO_DRIVER_DEFAULT "default"
diff --git a/src/audioOutput.c b/src/audioOutput.c
index 03a5ed782..43d073b48 100644
--- a/src/audioOutput.c
+++ b/src/audioOutput.c
@@ -21,8 +21,7 @@
#include "list.h"
#include "log.h"
#include "pcm_utils.h"
-
-#include <string.h>
+#include "os_compat.h"
#define AUDIO_OUTPUT_TYPE "type"
#define AUDIO_OUTPUT_NAME "name"
diff --git a/src/audioOutput.h b/src/audioOutput.h
index 1591c814a..6bde49b39 100644
--- a/src/audioOutput.h
+++ b/src/audioOutput.h
@@ -27,6 +27,7 @@
#include "tag.h"
#include "conf.h"
#include "utils.h"
+#include "os_compat.h"
#define DISABLED_AUDIO_OUTPUT_PLUGIN(plugin) AudioOutputPlugin plugin;
diff --git a/src/audioOutputs/audioOutput_alsa.c b/src/audioOutputs/audioOutput_alsa.c
index 1122eb5bf..1f90c6ee0 100644
--- a/src/audioOutputs/audioOutput_alsa.c
+++ b/src/audioOutputs/audioOutput_alsa.c
@@ -18,8 +18,6 @@
#include "../audioOutput.h"
-#include <stdlib.h>
-
#ifdef HAVE_ALSA
#define ALSA_PCM_NEW_HW_PARAMS_API
@@ -34,8 +32,7 @@
#include "../conf.h"
#include "../log.h"
-
-#include <string.h>
+#include "../os_compat.h"
#include <alsa/asoundlib.h>
diff --git a/src/audioOutputs/audioOutput_ao.c b/src/audioOutputs/audioOutput_ao.c
index a7f437ef4..e7f3dcd6b 100644
--- a/src/audioOutputs/audioOutput_ao.c
+++ b/src/audioOutputs/audioOutput_ao.c
@@ -22,8 +22,7 @@
#include "../conf.h"
#include "../log.h"
-
-#include <string.h>
+#include "../os_compat.h"
#include <ao/ao.h>
@@ -240,7 +239,5 @@ AudioOutputPlugin aoPlugin = {
#else
-#include <stdio.h>
-
DISABLED_AUDIO_OUTPUT_PLUGIN(aoPlugin)
#endif
diff --git a/src/audioOutputs/audioOutput_fifo.c b/src/audioOutputs/audioOutput_fifo.c
index 66c54dd7f..b01f37f67 100644
--- a/src/audioOutputs/audioOutput_fifo.c
+++ b/src/audioOutputs/audioOutput_fifo.c
@@ -17,8 +17,7 @@
*/
#include "../audioOutput.h"
-
-#include <stdlib.h>
+#include "../os_compat.h"
#ifdef HAVE_FIFO
@@ -27,13 +26,6 @@
#include "../utils.h"
#include "../timer.h"
-#include <errno.h>
-#include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-
#define FIFO_BUFFER_SIZE 65536 /* pipe capacity on Linux >= 2.6.11 */
typedef struct _FifoData {
diff --git a/src/audioOutputs/audioOutput_jack.c b/src/audioOutputs/audioOutput_jack.c
index d38f00bad..253da2159 100644
--- a/src/audioOutputs/audioOutput_jack.c
+++ b/src/audioOutputs/audioOutput_jack.c
@@ -19,15 +19,10 @@
#ifdef HAVE_JACK
-#include <stdlib.h>
-#include <errno.h>
-
+#include "../os_compat.h"
#include "../conf.h"
#include "../log.h"
-#include <string.h>
-#include <pthread.h>
-
#include <jack/jack.h>
#include <jack/types.h>
#include <jack/ringbuffer.h>
@@ -37,7 +32,11 @@ pthread_cond_t play_audio = PTHREAD_COND_INITIALIZER;
/*#include "dmalloc.h"*/
-#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#ifdef MIN
+# undef MIN
+# define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
+
/*#define SAMPLE_SIZE sizeof(jack_default_audio_sample_t);*/
diff --git a/src/audioOutputs/audioOutput_mvp.c b/src/audioOutputs/audioOutput_mvp.c
index ea365c657..c633bb96b 100644
--- a/src/audioOutputs/audioOutput_mvp.c
+++ b/src/audioOutputs/audioOutput_mvp.c
@@ -20,23 +20,13 @@
*/
#include "../audioOutput.h"
-
-#include <stdlib.h>
+#include "../os_compat.h"
#ifdef HAVE_MVP
#include "../conf.h"
#include "../log.h"
-#include <string.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-
typedef struct {
unsigned long dsp_status;
unsigned long stream_decode_type;
diff --git a/src/audioOutputs/audioOutput_oss.c b/src/audioOutputs/audioOutput_oss.c
index 74c62ce96..68c82bf30 100644
--- a/src/audioOutputs/audioOutput_oss.c
+++ b/src/audioOutputs/audioOutput_oss.c
@@ -20,23 +20,13 @@
*/
#include "../audioOutput.h"
-
-#include <stdlib.h>
+#include "../os_compat.h"
#ifdef HAVE_OSS
#include "../conf.h"
#include "../log.h"
-#include <string.h>
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-
#if defined(__OpenBSD__) || defined(__NetBSD__)
# include <soundcard.h>
#else /* !(defined(__OpenBSD__) || defined(__NetBSD__) */
diff --git a/src/audioOutputs/audioOutput_osx.c b/src/audioOutputs/audioOutput_osx.c
index 1caebade5..4a6e8ccf1 100644
--- a/src/audioOutputs/audioOutput_osx.c
+++ b/src/audioOutputs/audioOutput_osx.c
@@ -21,8 +21,6 @@
#ifdef HAVE_OSX
#include <AudioUnit/AudioUnit.h>
-#include <stdlib.h>
-#include <pthread.h>
#include "../log.h"
@@ -368,7 +366,5 @@ AudioOutputPlugin osxPlugin = {
#else
-#include <stdio.h>
-
DISABLED_AUDIO_OUTPUT_PLUGIN(osxPlugin)
#endif
diff --git a/src/audioOutputs/audioOutput_pulse.c b/src/audioOutputs/audioOutput_pulse.c
index 8948e0263..69566444b 100644
--- a/src/audioOutputs/audioOutput_pulse.c
+++ b/src/audioOutputs/audioOutput_pulse.c
@@ -18,15 +18,11 @@
#include "../audioOutput.h"
-#include <stdlib.h>
-
#ifdef HAVE_PULSE
#include "../conf.h"
#include "../log.h"
-
-#include <string.h>
-#include <time.h>
+#include "../os_compat.h"
#include <pulse/simple.h>
#include <pulse/error.h>
diff --git a/src/audioOutputs/audioOutput_shout.c b/src/audioOutputs/audioOutput_shout.c
index 455a635f6..e4ee4916d 100644
--- a/src/audioOutputs/audioOutput_shout.c
+++ b/src/audioOutputs/audioOutput_shout.c
@@ -18,8 +18,6 @@
#include "../audioOutput.h"
-#include <stdlib.h>
-
#ifdef HAVE_SHOUT
#include "../conf.h"
@@ -27,9 +25,6 @@
#include "../pcm_utils.h"
#include "../timer.h"
-#include <string.h>
-#include <time.h>
-
#include <shout/shout.h>
#include <vorbis/vorbisenc.h>
diff --git a/src/buffer2array.c b/src/buffer2array.c
index 1684bad94..0479de51b 100644
--- a/src/buffer2array.c
+++ b/src/buffer2array.c
@@ -17,12 +17,7 @@
*/
#include "buffer2array.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
+#include "os_compat.h"
static inline
int
diff --git a/src/charConv.c b/src/charConv.c
index a4b596efe..c2ef722a8 100644
--- a/src/charConv.c
+++ b/src/charConv.c
@@ -21,10 +21,7 @@
#include "utf8.h"
#include "utils.h"
#include "path.h"
-
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
+#include "os_compat.h"
#ifdef HAVE_ICONV
#include <iconv.h>
diff --git a/src/command.c b/src/command.c
index 83a8d3a2d..c6d751258 100644
--- a/src/command.c
+++ b/src/command.c
@@ -31,12 +31,7 @@
#include "tag.h"
#include "utils.h"
#include "storedPlaylist.h"
-
-#include <assert.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
+#include "os_compat.h"
#define COMMAND_PLAY "play"
#define COMMAND_PLAYID "playid"
diff --git a/src/command.h b/src/command.h
index a560b9484..71516b122 100644
--- a/src/command.h
+++ b/src/command.h
@@ -26,9 +26,7 @@
#include "log.h"
#include "ack.h"
#include "sllist.h"
-
-#include <unistd.h>
-#include <stdio.h>
+#include "os_compat.h"
#define COMMAND_RETURN_KILL 10
#define COMMAND_RETURN_CLOSE 20
diff --git a/src/compress.c b/src/compress.c
index d8db7ab64..7e526dc7a 100644
--- a/src/compress.c
+++ b/src/compress.c
@@ -20,11 +20,7 @@
*
*/
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-
+#include "os_compat.h"
#include "compress.h"
#include "utils.h"
diff --git a/src/conf.c b/src/conf.c
index 291ae30d2..6b3973a1d 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -23,16 +23,8 @@
#include "utils.h"
#include "buffer2array.h"
#include "list.h"
-
-#include <sys/param.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <pwd.h>
-#include <errno.h>
#include "path.h"
+#include "os_compat.h"
#define MAX_STRING_SIZE MPD_PATH_MAX+80
diff --git a/src/dbUtils.h b/src/dbUtils.h
index 0607bc3b5..e6a71485c 100644
--- a/src/dbUtils.h
+++ b/src/dbUtils.h
@@ -19,7 +19,7 @@
#ifndef DB_UTILS_H
#define DB_UTILS_H
-#include <stdio.h>
+#include "os_compat.h"
#include "locate.h"
diff --git a/src/decode.c b/src/decode.c
index 47bff4504..0ebdb9282 100644
--- a/src/decode.c
+++ b/src/decode.c
@@ -28,14 +28,7 @@
#include "sig_handlers.h"
#include "ls.h"
#include "utf8.h"
-
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/wait.h>
-#include <unistd.h>
-#include <string.h>
+#include "os_compat.h"
static int decode_pid;
diff --git a/src/decode.h b/src/decode.h
index 1c93d3843..14dc0e8ee 100644
--- a/src/decode.h
+++ b/src/decode.h
@@ -26,9 +26,7 @@
#include "mpd_types.h"
#include "audio.h"
-#include <stdio.h>
-#include <sys/param.h>
-#include <signal.h>
+#include "os_compat.h"
#define DECODE_TYPE_FILE 0
#define DECODE_TYPE_URL 1
diff --git a/src/directory.c b/src/directory.c
index 45e583d2d..6a203b9c1 100644
--- a/src/directory.c
+++ b/src/directory.c
@@ -37,11 +37,6 @@
#include "volume.h"
#include "ls.h"
-#include <sys/wait.h>
-#include <dirent.h>
-#include <errno.h>
-#include <assert.h>
-
#define DIRECTORY_DIR "directory: "
#define DIRECTORY_MTIME "mtime: "
#define DIRECTORY_BEGIN "begin: "
diff --git a/src/inputPlugin.c b/src/inputPlugin.c
index ec5624bf2..e9c6d4a70 100644
--- a/src/inputPlugin.c
+++ b/src/inputPlugin.c
@@ -20,9 +20,7 @@
#include "list.h"
#include "myfprintf.h"
-
-#include <stdlib.h>
-#include <string.h>
+#include "os_compat.h"
static List *inputPlugin_list;
diff --git a/src/inputPlugins/_flac_common.c b/src/inputPlugins/_flac_common.c
index 11126cd1b..9a415f4b6 100644
--- a/src/inputPlugins/_flac_common.c
+++ b/src/inputPlugins/_flac_common.c
@@ -31,10 +31,8 @@
#include "../outputBuffer.h"
#include "../decode.h"
#include "../replayGain.h"
+#include "../os_compat.h"
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
#include <FLAC/format.h>
#include <FLAC/metadata.h>
diff --git a/src/inputPlugins/_ogg_common.c b/src/inputPlugins/_ogg_common.c
index ca68ae4f1..3ec227a66 100644
--- a/src/inputPlugins/_ogg_common.c
+++ b/src/inputPlugins/_ogg_common.c
@@ -28,8 +28,7 @@
(defined(FLAC_API_VERSION_CURRENT) && FLAC_API_VERSION_CURRENT > 7)
#include "../utils.h"
-
-#include <string.h>
+#include "../os_compat.h"
ogg_stream_type ogg_stream_type_detect(InputStream * inStream)
{
diff --git a/src/inputPlugins/aac_plugin.c b/src/inputPlugins/aac_plugin.c
index 0cbb4c97a..0091b396e 100644
--- a/src/inputPlugins/aac_plugin.c
+++ b/src/inputPlugins/aac_plugin.c
@@ -27,11 +27,8 @@
#include "../log.h"
#include "../inputStream.h"
#include "../outputBuffer.h"
+#include "../os_compat.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
#include <faad.h>
/* all code here is either based on or copied from FAAD2's frontend code */
diff --git a/src/inputPlugins/audiofile_plugin.c b/src/inputPlugins/audiofile_plugin.c
index 68a87022a..8527a47a9 100644
--- a/src/inputPlugins/audiofile_plugin.c
+++ b/src/inputPlugins/audiofile_plugin.c
@@ -27,14 +27,8 @@
#include "../log.h"
#include "../pcm_utils.h"
#include "../playerData.h"
+#include "../os_compat.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
#include <audiofile.h>
static int getAudiofileTotalTime(char *file)
diff --git a/src/inputPlugins/flac_plugin.c b/src/inputPlugins/flac_plugin.c
index 920e71947..c906314f3 100644
--- a/src/inputPlugins/flac_plugin.c
+++ b/src/inputPlugins/flac_plugin.c
@@ -27,11 +27,7 @@
#include "../outputBuffer.h"
#include "../replayGain.h"
#include "../audio.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <assert.h>
+#include "../os_compat.h"
/* this code was based on flac123, from flac-tools */
diff --git a/src/inputPlugins/mod_plugin.c b/src/inputPlugins/mod_plugin.c
index 0b20690e4..0c01caadb 100644
--- a/src/inputPlugins/mod_plugin.c
+++ b/src/inputPlugins/mod_plugin.c
@@ -25,14 +25,8 @@
#include "../log.h"
#include "../pcm_utils.h"
#include "../playerData.h"
+#include "../os_compat.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
#include <mikmod.h>
/* this is largely copied from alsaplayer */
diff --git a/src/inputPlugins/mp3_plugin.c b/src/inputPlugins/mp3_plugin.c
index 8a9dfad5c..9bb3f2f4b 100644
--- a/src/inputPlugins/mp3_plugin.c
+++ b/src/inputPlugins/mp3_plugin.c
@@ -33,13 +33,7 @@
#include "../tag.h"
#include "../conf.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
+#include "../os_compat.h"
#define FRAMES_CUSHION 2000
diff --git a/src/inputPlugins/mp4_plugin.c b/src/inputPlugins/mp4_plugin.c
index 5261580fc..2e3dd18ae 100644
--- a/src/inputPlugins/mp4_plugin.c
+++ b/src/inputPlugins/mp4_plugin.c
@@ -27,15 +27,11 @@
#include "../inputStream.h"
#include "../outputBuffer.h"
#include "../decode.h"
+#include "../os_compat.h"
#include "../mp4ff/mp4ff.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
#include <faad.h>
-
/* all code here is either based on or copied from FAAD2's frontend code */
static int mp4_getAACTrack(mp4ff_t * infile)
diff --git a/src/inputPlugins/mpc_plugin.c b/src/inputPlugins/mpc_plugin.c
index 60fd6fde6..0d18c113a 100644
--- a/src/inputPlugins/mpc_plugin.c
+++ b/src/inputPlugins/mpc_plugin.c
@@ -27,14 +27,9 @@
#include "../inputStream.h"
#include "../outputBuffer.h"
#include "../replayGain.h"
+#include "../os_compat.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
#include <mpcdec/mpcdec.h>
-#include <errno.h>
-#include <math.h>
typedef struct _MpcCallbackData {
InputStream *inStream;
diff --git a/src/inputPlugins/oggflac_plugin.c b/src/inputPlugins/oggflac_plugin.c
index 50636274a..e980a04b2 100644
--- a/src/inputPlugins/oggflac_plugin.c
+++ b/src/inputPlugins/oggflac_plugin.c
@@ -32,10 +32,7 @@
#include "../outputBuffer.h"
#include "../replayGain.h"
#include "../audio.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
+#include "../os_compat.h"
static void oggflac_cleanup(FlacData * data,
OggFLAC__SeekableStreamDecoder * decoder)
diff --git a/src/inputPlugins/oggvorbis_plugin.c b/src/inputPlugins/oggvorbis_plugin.c
index 05c665386..2e9342526 100644
--- a/src/inputPlugins/oggvorbis_plugin.c
+++ b/src/inputPlugins/oggvorbis_plugin.c
@@ -31,11 +31,7 @@
#include "../inputStream.h"
#include "../outputBuffer.h"
#include "../replayGain.h"
-
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
+#include "../os_compat.h"
#ifndef HAVE_TREMOR
#include <vorbis/vorbisfile.h>
@@ -52,8 +48,6 @@
#define ov_time_seek_page(VF, S) (ov_time_seek_page(VF, (S)*1000))
#endif /* HAVE_TREMOR */
-#include <errno.h>
-
#ifdef WORDS_BIGENDIAN
#define OGG_DECODE_USE_BIGENDIAN 1
#else
diff --git a/src/inputPlugins/wavpack_plugin.c b/src/inputPlugins/wavpack_plugin.c
index 97fbc37f9..b6a3ee6ed 100644
--- a/src/inputPlugins/wavpack_plugin.c
+++ b/src/inputPlugins/wavpack_plugin.c
@@ -28,15 +28,9 @@
#include "../pcm_utils.h"
#include "../playerData.h"
#include "../outputBuffer.h"
+#include "../os_compat.h"
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include <wavpack/wavpack.h>
-#include <math.h>
#define ERRORLEN 80
diff --git a/src/inputStream.c b/src/inputStream.c
index 013d75f17..9495beb8a 100644
--- a/src/inputStream.c
+++ b/src/inputStream.c
@@ -21,9 +21,7 @@
#include "inputStream_file.h"
#include "inputStream_http.h"
-#include <stdio.h>
-#include <sys/types.h>
-#include <unistd.h>
+#include "os_compat.h"
void initInputStream(void)
{
diff --git a/src/inputStream.h b/src/inputStream.h
index 74397f07f..c1e2e4f83 100644
--- a/src/inputStream.h
+++ b/src/inputStream.h
@@ -19,7 +19,7 @@
#ifndef INPUT_STREAM_H
#define INPUT_STREAM_H
-#include <stdlib.h>
+#include "os_compat.h"
typedef struct _InputStream InputStream;
diff --git a/src/inputStream_file.c b/src/inputStream_file.c
index 389aaad01..fb433d380 100644
--- a/src/inputStream_file.c
+++ b/src/inputStream_file.c
@@ -19,14 +19,7 @@
#include "inputStream_file.h"
#include "log.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <errno.h>
-#define _XOPEN_SOURCE 600
-#include <fcntl.h>
+#include "os_compat.h"
void inputStream_initFile(void)
{
diff --git a/src/inputStream_http.c b/src/inputStream_http.c
index 80b908a2e..db8b3062a 100644
--- a/src/inputStream_http.c
+++ b/src/inputStream_http.c
@@ -21,20 +21,7 @@
#include "utils.h"
#include "log.h"
#include "conf.h"
-
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <sys/param.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <fcntl.h>
+#include "os_compat.h"
#define HTTP_CONN_STATE_CLOSED 0
#define HTTP_CONN_STATE_INIT 1
diff --git a/src/interface.c b/src/interface.c
index e11266741..5b754b504 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -27,21 +27,7 @@
#include "sllist.h"
#include "utils.h"
#include "ioops.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <sys/select.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/param.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <signal.h>
+#include "os_compat.h"
#define GREETING "OK MPD " PROTOCOL_VERSION "\n"
diff --git a/src/interface.h b/src/interface.h
index 6f3c2c070..70ba424dc 100644
--- a/src/interface.h
+++ b/src/interface.h
@@ -20,11 +20,7 @@
#define INTERFACE_H
#include "../config.h"
-
-#include <stdio.h>
-#include <time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+#include "os_compat.h"
void initInterfaces(void);
void openAInterface(int fd, struct sockaddr *addr);
diff --git a/src/ioops.h b/src/ioops.h
index e797a7153..7da440290 100644
--- a/src/ioops.h
+++ b/src/ioops.h
@@ -19,7 +19,7 @@
#ifndef IOOPS_H
#define IOOPS_H
-#include <sys/select.h>
+#include "os_compat.h"
struct ioOps {
struct ioOps *prev, *next;
diff --git a/src/list.c b/src/list.c
index 14832adb7..b360fe65a 100644
--- a/src/list.c
+++ b/src/list.c
@@ -18,12 +18,7 @@
#include "list.h"
#include "utils.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <time.h>
-#include <stdio.h>
+#include "os_compat.h"
static void makeListNodesArray(List * list)
{
diff --git a/src/list.h b/src/list.h
index 35451ec24..2c4d423ee 100644
--- a/src/list.h
+++ b/src/list.h
@@ -20,8 +20,7 @@
#define LIST_H
#include "../config.h"
-
-#include <stdlib.h>
+#include "os_compat.h"
/* used to make a list where free() will be used to free data in list */
#define DEFAULT_FREE_DATA_FUNC free
diff --git a/src/listen.c b/src/listen.c
index 521834a63..91813b4b8 100644
--- a/src/listen.c
+++ b/src/listen.c
@@ -21,18 +21,7 @@
#include "conf.h"
#include "log.h"
#include "utils.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <string.h>
-#include <errno.h>
-#include <resolv.h>
-#include <fcntl.h>
+#include "os_compat.h"
#define MAXHOSTNAME 1024
diff --git a/src/listen.h b/src/listen.h
index d7c2d3639..04c6d8286 100644
--- a/src/listen.h
+++ b/src/listen.h
@@ -20,11 +20,7 @@
#define LISTEN_H
#include "../config.h"
-
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/select.h>
+#include "os_compat.h"
extern int boundPort;
diff --git a/src/log.c b/src/log.c
index 56e63ed25..0d2d0b0b2 100644
--- a/src/log.c
+++ b/src/log.c
@@ -21,12 +21,7 @@
#include "conf.h"
#include "myfprintf.h"
#include "utils.h"
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <time.h>
+#include "os_compat.h"
#define LOG_DATE_BUF_SIZE 16
#define LOG_DATE_LEN (LOG_DATE_BUF_SIZE - 1)
diff --git a/src/log.h b/src/log.h
index 3ba7afe86..4026df282 100644
--- a/src/log.h
+++ b/src/log.h
@@ -21,8 +21,7 @@
#include "../config.h"
#include "gcc.h"
-
-#include <unistd.h>
+#include "os_compat.h"
#define LOG_LEVEL_LOW 0
#define LOG_LEVEL_SECURE 1
diff --git a/src/ls.c b/src/ls.c
index 7d0421537..7a10448d9 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -23,10 +23,7 @@
#include "log.h"
#include "utf8.h"
#include "utils.h"
-
-#include <dirent.h>
-#include <stdio.h>
-#include <errno.h>
+#include "os_compat.h"
static char *remoteUrlPrefixes[] = {
"http://",
diff --git a/src/ls.h b/src/ls.h
index aa34187c2..e14966ca7 100644
--- a/src/ls.h
+++ b/src/ls.h
@@ -22,12 +22,7 @@
#include "../config.h"
#include "inputPlugin.h"
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <time.h>
+#include "os_compat.h"
int lsPlaylists(int fd, char *utf8path);
diff --git a/src/main.c b/src/main.c
index 72359820a..b92ef6abd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -43,20 +43,7 @@
#include "utils.h"
#include "normalize.h"
#include "zeroconf.h"
-
-#include <stdio.h>
-#include <sys/select.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <pwd.h>
-#include <grp.h>
-#include <time.h>
-#include <unistd.h>
+#include "os_compat.h"
#define SYSTEM_CONFIG_FILE_LOCATION "/etc/mpd.conf"
#define USER_CONFIG_FILE_LOCATION "/.mpdconf"
diff --git a/src/metadataChunk.c b/src/metadataChunk.c
index bc5118fd0..4adfa29c0 100644
--- a/src/metadataChunk.c
+++ b/src/metadataChunk.c
@@ -18,8 +18,7 @@
#include "metadataChunk.h"
#include "gcc.h"
-
-#include <string.h>
+#include "os_compat.h"
static void initMetadataChunk(MetadataChunk * chunk)
{
diff --git a/src/mpd_types.h b/src/mpd_types.h
index 1b5e40b69..765d0d001 100644
--- a/src/mpd_types.h
+++ b/src/mpd_types.h
@@ -20,16 +20,7 @@
#define MPD_TYPES_H
#include "../config.h"
-
-#if defined(HAVE_STDINT_H)
-#include <stdint.h>
-#elif defined(HAVE_INTTYPES_H)
-#include <inttypes.h>
-#elif defined(HAVE_SYS_INTTYPES_H)
-#include <sys/inttypes.h>
-#elif defined(HAVE_SYS_TYPES_H)
-#include <sys/types.h>
-#endif
+#include "os_compat.h"
typedef unsigned char mpd_uint8;
typedef signed char mpd_sint8;
diff --git a/src/myfprintf.c b/src/myfprintf.c
index 930078398..fdea2b78f 100644
--- a/src/myfprintf.c
+++ b/src/myfprintf.c
@@ -22,14 +22,7 @@
#include "log.h"
#include "conf.h"
#include "utils.h"
-
-#include <stdarg.h>
-#include <sys/param.h>
-#include <unistd.h>
-#include <sys/select.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
+#include "os_compat.h"
#define BUFFER_LENGTH MPD_PATH_MAX+1024
diff --git a/src/myfprintf.h b/src/myfprintf.h
index 287902f9b..c857b3e50 100644
--- a/src/myfprintf.h
+++ b/src/myfprintf.h
@@ -21,9 +21,7 @@
#include "../config.h"
#include "gcc.h"
-
-#include <stdarg.h>
-#include <stdio.h>
+#include "os_compat.h"
mpd_fprintf void fdprintf(const int fd, const char *fmt, ...);
void vfdprintf(const int fd, const char *fmt, va_list arglist);
diff --git a/src/normalize.c b/src/normalize.c
index ee21fc919..0bdee3eb5 100644
--- a/src/normalize.c
+++ b/src/normalize.c
@@ -19,8 +19,7 @@
#include "compress.h"
#include "conf.h"
#include "normalize.h"
-
-#include <stdlib.h>
+#include "os_compat.h"
#define DEFAULT_VOLUME_NORMALIZATION 0
diff --git a/src/os_compat.h b/src/os_compat.h
new file mode 100644
index 000000000..c6268d0d8
--- /dev/null
+++ b/src/os_compat.h
@@ -0,0 +1,77 @@
+/* the Music Player Daemon (MPD)
+ * Copyright (C) 2003-2007 by Warren Dukes (warren.dukes@gmail.com)
+ * This project's homepage is: 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef OS_COMPAT_H
+#define OS_COMPAT_H
+
+/*
+ * This includes OS-wide headers that can be expected to be available
+ * on any machine that mpd can be compiled on for any UNIX-like OS.
+ *
+ * This does not include headers for optional dependencies such as
+ * those for:
+ * 1) input/output plugins
+ * 2) optional features in core (libsamplerate, avahi, ...)
+ */
+
+#if defined(HAVE_STDINT_H)
+#include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+#include <inttypes.h>
+#elif defined(HAVE_SYS_INTTYPES_H)
+#include <sys/inttypes.h>
+#endif
+#include <sys/types.h>
+
+#define _XOPEN_SOURCE 600 /* for posix_fadvise, won't hurt if not available */
+#include <fcntl.h>
+
+#include <stdio.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/wait.h>
+#include <sys/socket.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+#include <sys/param.h>
+#include <pthread.h>
+#include <sys/ioctl.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <dirent.h>
+#include <math.h>
+#include <sys/select.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <pwd.h>
+#include <grp.h>
+#include <limits.h>
+#include <stddef.h> /* needed? this defines NULL + offsetof() */
+#include <resolv.h>
+
+/* remove when we switch to pthreads: */
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#endif /* OS_COMPAT_H */
diff --git a/src/outputBuffer.c b/src/outputBuffer.c
index c7ff8b479..7570be5d8 100644
--- a/src/outputBuffer.c
+++ b/src/outputBuffer.c
@@ -24,11 +24,9 @@
#include "log.h"
#include "normalize.h"
#include "conf.h"
-
-#include <string.h>
+#include "os_compat.h"
static mpd_sint16 currentChunk = -1;
-
static mpd_sint8 currentMetaChunk = -1;
static mpd_sint8 sendMetaChunk;
diff --git a/src/path.c b/src/path.c
index a99f8bd2c..258363036 100644
--- a/src/path.c
+++ b/src/path.c
@@ -23,14 +23,7 @@
#include "utf8.h"
#include "utils.h"
#include "playlist.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <errno.h>
-#include <dirent.h>
+#include "os_compat.h"
#ifdef HAVE_LOCALE
#ifdef HAVE_LANGINFO_CODESET
diff --git a/src/path.h b/src/path.h
index fef935400..560cf6073 100644
--- a/src/path.h
+++ b/src/path.h
@@ -20,9 +20,7 @@
#define PATH_H
#include "../config.h"
-
-#include <sys/param.h>
-#include <limits.h>
+#include "os_compat.h"
#if !defined(MPD_PATH_MAX)
# if defined(MAXPATHLEN)
diff --git a/src/pcm_utils.c b/src/pcm_utils.c
index 807c04c78..d11d4d42f 100644
--- a/src/pcm_utils.c
+++ b/src/pcm_utils.c
@@ -22,10 +22,7 @@
#include "log.h"
#include "utils.h"
#include "conf.h"
-
-#include <string.h>
-#include <math.h>
-#include <assert.h>
+#include "os_compat.h"
void pcm_volumeChange(char *buffer, int bufferSize, AudioFormat * format,
int volume)
diff --git a/src/pcm_utils.h b/src/pcm_utils.h
index 1b7757be0..7362cb7b8 100644
--- a/src/pcm_utils.h
+++ b/src/pcm_utils.h
@@ -22,8 +22,7 @@
#include "../config.h"
#include "audio.h"
-
-#include <stdlib.h>
+#include "os_compat.h"
#ifdef HAVE_LIBSAMPLERATE
#include <samplerate.h>
diff --git a/src/permission.c b/src/permission.c
index 3d597052c..4d53fa0cf 100644
--- a/src/permission.c
+++ b/src/permission.c
@@ -22,8 +22,7 @@
#include "list.h"
#include "log.h"
#include "utils.h"
-
-#include <string.h>
+#include "os_compat.h"
#define PERMISSION_PASSWORD_CHAR "@"
#define PERMISSION_SEPERATOR ","
diff --git a/src/player.c b/src/player.c
index f41a35cc9..45e3f5ca9 100644
--- a/src/player.c
+++ b/src/player.c
@@ -31,18 +31,7 @@
#include "playerData.h"
#include "permission.h"
#include "sig_handlers.h"
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <sys/wait.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
+#include "os_compat.h"
static void playerCloseAudio(void);
diff --git a/src/player.h b/src/player.h
index 03e16b72f..48a87227f 100644
--- a/src/player.h
+++ b/src/player.h
@@ -25,9 +25,7 @@
#include "mpd_types.h"
#include "song.h"
#include "metadataChunk.h"
-
-#include <stdio.h>
-#include <sys/param.h>
+#include "os_compat.h"
#define PLAYER_STATE_STOP 0
#define PLAYER_STATE_PAUSE 1
diff --git a/src/playerData.c b/src/playerData.c
index 69ef56bae..a84601bb0 100644
--- a/src/playerData.c
+++ b/src/playerData.c
@@ -19,14 +19,7 @@
#include "playerData.h"
#include "conf.h"
#include "log.h"
-
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include "os_compat.h"
int buffered_before_play;
int buffered_chunks;
diff --git a/src/playlist.c b/src/playlist.c
index 4689cc2de..5806273c3 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -29,14 +29,7 @@
#include "sig_handlers.h"
#include "state_file.h"
#include "storedPlaylist.h"
-
-#include <string.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include <errno.h>
-#include <unistd.h>
-#include <time.h>
+#include "os_compat.h"
#define PLAYLIST_STATE_STOP 0
#define PLAYLIST_STATE_PLAY 1
diff --git a/src/playlist.h b/src/playlist.h
index c725e8612..a26b7f45f 100644
--- a/src/playlist.h
+++ b/src/playlist.h
@@ -22,10 +22,7 @@
#include "../config.h"
#include "dbUtils.h"
-
-#include <stdio.h>
-#include <sys/param.h>
-#include <time.h>
+#include "os_compat.h"
#define PLAYLIST_FILE_SUFFIX "m3u"
#define PLAYLIST_COMMENT '#'
diff --git a/src/replayGain.c b/src/replayGain.c
index ce9d48085..49b98dc40 100644
--- a/src/replayGain.c
+++ b/src/replayGain.c
@@ -22,10 +22,7 @@
#include "log.h"
#include "conf.h"
-
-#include <string.h>
-#include <math.h>
-#include <stdlib.h>
+#include "os_compat.h"
/* Added 4/14/2004 by AliasMrJones */
int replayGainState = REPLAYGAIN_OFF;
diff --git a/src/sig_handlers.c b/src/sig_handlers.c
index e092f51e7..fbd9e0573 100644
--- a/src/sig_handlers.c
+++ b/src/sig_handlers.c
@@ -27,14 +27,7 @@
#include "log.h"
#include "player.h"
#include "decode.h"
-
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/wait.h>
-#include <errno.h>
-#include <unistd.h>
+#include "os_compat.h"
int handlePendingSignals(void)
{
diff --git a/src/signal_check.c b/src/signal_check.c
index 77a2b1251..3751232d4 100644
--- a/src/signal_check.c
+++ b/src/signal_check.c
@@ -18,9 +18,7 @@
*/
#include "signal_check.h"
-
-#include <errno.h>
-#include <stddef.h>
+#include "os_compat.h"
static volatile sig_atomic_t __caught_signals[NSIG];
diff --git a/src/signal_check.h b/src/signal_check.h
index 58c9f3c3e..931b5333c 100644
--- a/src/signal_check.h
+++ b/src/signal_check.h
@@ -20,7 +20,7 @@
#ifndef SIGNAL_CHECK_H
#define SIGNAL_CHECK_H
-#include <signal.h>
+#include "os_compat.h"
void signal_handle(int sig);
void signal_unhandle(int sig);
diff --git a/src/sllist.c b/src/sllist.c
index 00408a3cd..7df4aedab 100644
--- a/src/sllist.c
+++ b/src/sllist.c
@@ -18,7 +18,7 @@
/* a very simple singly-linked-list structure for queues/buffers */
-#include <string.h>
+#include "os_compat.h"
#include "sllist.h"
#include "utils.h"
diff --git a/src/sllist.h b/src/sllist.h
index 1e81abef3..39860a59f 100644
--- a/src/sllist.h
+++ b/src/sllist.h
@@ -21,8 +21,6 @@
#ifndef SLLIST_H
#define SLLIST_H
-#include <stddef.h>
-
/* just free the entire structure if it's free-able, the 'data' member
* should _NEVER_ be explicitly freed
*
diff --git a/src/song.c b/src/song.c
index 4dee27c9c..d8d4251dd 100644
--- a/src/song.c
+++ b/src/song.c
@@ -30,9 +30,7 @@
#define SONG_KEY "key: "
#define SONG_MTIME "mtime: "
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
+#include "os_compat.h"
Song *newNullSong(void)
{
diff --git a/src/song.h b/src/song.h
index 46435efb8..ccf87e348 100644
--- a/src/song.h
+++ b/src/song.h
@@ -20,10 +20,7 @@
#define SONG_H
#include "../config.h"
-
-#include <sys/param.h>
-#include <time.h>
-
+#include "os_compat.h"
#include "tag.h"
#include "list.h"
diff --git a/src/state_file.c b/src/state_file.c
index 1b0b41f1a..a4b2c108f 100644
--- a/src/state_file.c
+++ b/src/state_file.c
@@ -25,12 +25,7 @@
#include "playlist.h"
#include "utils.h"
#include "volume.h"
-
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+#include "os_compat.h"
static struct _sf_cb {
void (*reader)(FILE *);
diff --git a/src/state_file.h b/src/state_file.h
index 4a7d012ec..29f071a97 100644
--- a/src/state_file.h
+++ b/src/state_file.h
@@ -21,8 +21,6 @@
#include "gcc.h"
-#include <stdio.h>
-
void write_state_file(void);
void read_state_file(void);
void mpd_noreturn state_file_fatal(void);
diff --git a/src/stats.c b/src/stats.c
index 5045077c0..505324032 100644
--- a/src/stats.c
+++ b/src/stats.c
@@ -23,8 +23,7 @@
#include "player.h"
#include "tag.h"
#include "tagTracker.h"
-
-#include <time.h>
+#include "os_compat.h"
Stats stats;
diff --git a/src/stats.h b/src/stats.h
index cd7d0122c..5365bff69 100644
--- a/src/stats.h
+++ b/src/stats.h
@@ -21,8 +21,6 @@
#include "../config.h"
-#include <stdio.h>
-
typedef struct _Stats {
unsigned long daemonStart;
int numberOfSongs;
diff --git a/src/storedPlaylist.c b/src/storedPlaylist.c
index 153a0fcdb..c456b543f 100644
--- a/src/storedPlaylist.c
+++ b/src/storedPlaylist.c
@@ -25,9 +25,7 @@
#include "command.h"
#include "ls.h"
#include "directory.h"
-
-#include <string.h>
-#include <errno.h>
+#include "os_compat.h"
static ListNode *nodeOfStoredPlaylist(List *list, int index)
{
diff --git a/src/tag.c b/src/tag.c
index 3761e2079..b92ce2cea 100644
--- a/src/tag.c
+++ b/src/tag.c
@@ -29,13 +29,7 @@
#include "mpd_types.h"
#include "gcc.h"
#include "song.h"
-
-#include <sys/stat.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-#include <errno.h>
+#include "os_compat.h"
#ifdef HAVE_ID3TAG
# define isId3v1(tag) (id3_tag_options(tag, 0, 0) & ID3_TAG_OPTION_ID3V1)
diff --git a/src/tag.h b/src/tag.h
index 9723facdd..a554ee1cc 100644
--- a/src/tag.h
+++ b/src/tag.h
@@ -23,9 +23,6 @@
#include "mpd_types.h"
-#include <string.h>
-
-#include <stdio.h>
#ifdef HAVE_ID3TAG
#include <id3tag.h>
#endif
diff --git a/src/tagTracker.c b/src/tagTracker.c
index ab356e500..9fc7fa840 100644
--- a/src/tagTracker.c
+++ b/src/tagTracker.c
@@ -22,9 +22,7 @@
#include "log.h"
#include "utils.h"
#include "myfprintf.h"
-
-#include <assert.h>
-#include <stdlib.h>
+#include "os_compat.h"
static Tree *tagTrees[TAG_NUM_OF_ITEM_TYPES];
diff --git a/src/timer.c b/src/timer.c
index 0406a945e..04a6f23c4 100644
--- a/src/timer.c
+++ b/src/timer.c
@@ -18,10 +18,7 @@
#include "timer.h"
#include "utils.h"
-
-#include <assert.h>
-#include <limits.h>
-#include <sys/time.h>
+#include "os_compat.h"
static uint64_t now(void)
{
diff --git a/src/tree.c b/src/tree.c
index 87028d744..26b58845c 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -18,10 +18,7 @@
#include "tree.h"
#include "utils.h"
-
-#include <assert.h>
-#include <stdlib.h>
-#include <string.h>
+#include "os_compat.h"
#ifndef CHILDREN_PER_NODE
#define CHILDREN_PER_NODE 25
diff --git a/src/utf8.c b/src/utf8.c
index bb62a34f7..d7b1503c3 100644
--- a/src/utf8.c
+++ b/src/utf8.c
@@ -18,10 +18,7 @@
#include "utf8.h"
#include "utils.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
+#include "os_compat.h"
char *latin1_to_utf8(char *dest, char *in_latin1)
{
diff --git a/src/utils.c b/src/utils.c
index e9865aa24..2a0fcf89d 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -19,19 +19,7 @@
#include "utils.h"
#include "log.h"
#include "conf.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/select.h>
-#include <sys/time.h>
-#include <unistd.h>
-#include <assert.h>
-#include <pwd.h>
-#include <signal.h>
-#include <sys/param.h>
+#include "os_compat.h"
char *myFgets(char *buffer, int bufferSize, FILE * fp)
{
diff --git a/src/utils.h b/src/utils.h
index 258b725f3..564db0fe7 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -21,14 +21,7 @@
#include "../config.h"
#include "gcc.h"
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
+#include "os_compat.h"
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
diff --git a/src/volume.c b/src/volume.c
index 59e8b550c..6f11377e5 100644
--- a/src/volume.c
+++ b/src/volume.c
@@ -24,14 +24,8 @@
#include "state_file.h"
#include "gcc.h"
#include "utils.h"
+#include "os_compat.h"
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <errno.h>
#ifdef HAVE_OSS
#include <sys/soundcard.h>
#endif
diff --git a/src/volume.h b/src/volume.h
index fcaefc64d..48627dafe 100644
--- a/src/volume.h
+++ b/src/volume.h
@@ -20,8 +20,7 @@
#define VOLUME_H
#include "../config.h"
-
-#include <stdio.h>
+#include "os_compat.h"
#define VOLUME_MIXER_OSS "oss"
#define VOLUME_MIXER_ALSA "alsa"
diff --git a/src/zeroconf.c b/src/zeroconf.c
index aab09143a..27e921604 100644
--- a/src/zeroconf.c
+++ b/src/zeroconf.c
@@ -16,11 +16,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include <stdlib.h>
-#include <assert.h>
-#include <string.h>
-#include <arpa/inet.h>
-
+#include "os_compat.h"
#include "zeroconf.h"
#include "conf.h"
#include "log.h"