aboutsummaryrefslogtreecommitdiff
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)
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 'src')
-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 16367efa..07183d1e 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 3663d289..857b4aaf 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 03a5ed78..43d073b4 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 1591c814..6bde49b3 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 1122eb5b..1f90c6ee 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 a7f437ef..e7f3dcd6 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 66c54dd7..b01f37f6 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 d38f00ba..253da215 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 ea365c65..c633bb96 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 74c62ce9..68c82bf3 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 1caebade..4a6e8ccf 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 8948e026..69566444 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 455a635f..e4ee4916 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 1684bad9..0479de51 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 a4b596ef..c2ef722a 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 83a8d3a2..c6d75125 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 a560b948..71516b12 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 d8db7ab6..7e526dc7 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 291ae30d..6b3973a1 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 0607bc3b..e6a71485 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 47bff450..0ebdb928 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 1c93d384..14dc0e8e 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 45e583d2..6a203b9c 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 ec5624bf..e9c6d4a7 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 11126cd1..9a415f4b 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 ca68ae4f..3ec227a6 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 0cbb4c97..0091b396 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 68a87022..8527a47a 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 920e7194..c906314f 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 0b20690e..0c01caad 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 8a9dfad5..9bb3f2f4 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 5261580f..2e3dd18a 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 60fd6fde..0d18c113 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 50636274..e980a04b 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 05c66538..2e934252 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 97fbc37f..b6a3ee6e 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 013d75f1..9495beb8 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 74397f07..c1e2e4f8 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 389aaad0..fb433d38 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 80b908a2..db8b3062 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 e1126674..5b754b50 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 6f3c2c07..70ba424d 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 e797a715..7da44029 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 14832adb..b360fe65 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 35451ec2..2c4d423e 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 521834a6..91813b4b 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 d7c2d363..04c6d828 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 56e63ed2..0d2d0b0b 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 3ba7afe8..4026df28 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 7d042153..7a10448d 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 aa34187c..e14966ca 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 72359820..b92ef6ab 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 bc5118fd..4adfa29c 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 1b5e40b6..765d0d00 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 93007839..fdea2b78 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 287902f9..c857b3e5 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 ee21fc91..0bdee3eb 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 00000000..c6268d0d
--- /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 c7ff8b47..7570be5d 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 a99f8bd2..25836303 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 fef93540..560cf607 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 807c04c7..d11d4d42 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 1b7757be..7362cb7b 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 3d597052..4d53fa0c 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 f41a35cc..45e3f5ca 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 03e16b72..48a87227 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 69ef56ba..a84601bb 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 4689cc2d..5806273c 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 c725e861..a26b7f45 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 ce9d4808..49b98dc4 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 e092f51e..fbd9e057 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 77a2b125..3751232d 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 58c9f3c3..931b5333 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 00408a3c..7df4aeda 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 1e81abef..39860a59 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 4dee27c9..d8d4251d 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 46435efb..ccf87e34 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 1b0b41f1..a4b2c108 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 4a7d012e..29f071a9 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 5045077c..50532403 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 cd7d0122..5365bff6 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 153a0fcd..c456b543 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 3761e207..b92ce2ce 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 9723facd..a554ee1c 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 ab356e50..9fc7fa84 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 0406a945..04a6f23c 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 87028d74..26b58845 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 bb62a34f..d7b1503c 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 e9865aa2..2a0fcf89 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 258b725f..564db0fe 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 59e8b550..6f11377e 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 fcaefc64..48627daf 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 aab09143..27e92160 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"