changeset 2509:1223e8510d8a

Change tabs to 4 spaces, everywhere.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 03 Apr 2008 00:52:14 +0300
parents 58889ccbe807
children 78b8e3614df7
files src/sid/xmms-sid.c src/sid/xmms-sid.h src/sid/xs_about.c src/sid/xs_config.c src/sid/xs_config.h src/sid/xs_curve.c src/sid/xs_curve.h src/sid/xs_fileinfo.c src/sid/xs_fileinfo.h src/sid/xs_filter.c src/sid/xs_filter.h src/sid/xs_init.c src/sid/xs_length.c src/sid/xs_length.h src/sid/xs_md5.c src/sid/xs_md5.h src/sid/xs_player.h src/sid/xs_sidplay.h src/sid/xs_sidplay1.cc src/sid/xs_sidplay1.h src/sid/xs_sidplay2.cc src/sid/xs_sidplay2.h src/sid/xs_slsup.c src/sid/xs_slsup.h src/sid/xs_stil.c src/sid/xs_stil.h src/sid/xs_support.c src/sid/xs_support.h
diffstat 28 files changed, 4228 insertions(+), 4228 deletions(-) [+]
line wrap: on
line diff
--- a/src/sid/xmms-sid.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xmms-sid.c	Thu Apr 03 00:52:14 2008 +0300
@@ -54,24 +54,24 @@
  */
 static const xs_player_t xs_playerlist[] = {
 #ifdef HAVE_SIDPLAY1
-	{XS_ENG_SIDPLAY1,
-	 xs_sidplay1_probe,
-	 xs_sidplay1_init, xs_sidplay1_close,
-	 xs_sidplay1_initsong, xs_sidplay1_fillbuffer,
-	 xs_sidplay1_load, xs_sidplay1_delete,
-	 xs_sidplay1_getinfo, xs_sidplay1_updateinfo,
-	 NULL
-	},
+    {XS_ENG_SIDPLAY1,
+     xs_sidplay1_probe,
+     xs_sidplay1_init, xs_sidplay1_close,
+     xs_sidplay1_initsong, xs_sidplay1_fillbuffer,
+     xs_sidplay1_load, xs_sidplay1_delete,
+     xs_sidplay1_getinfo, xs_sidplay1_updateinfo,
+     NULL
+    },
 #endif
 #ifdef HAVE_SIDPLAY2
-	{XS_ENG_SIDPLAY2,
-	 xs_sidplay2_probe,
-	 xs_sidplay2_init, xs_sidplay2_close,
-	 xs_sidplay2_initsong, xs_sidplay2_fillbuffer,
-	 xs_sidplay2_load, xs_sidplay2_delete,
-	 xs_sidplay2_getinfo, xs_sidplay2_updateinfo,
-	 xs_sidplay2_flush
-	},
+    {XS_ENG_SIDPLAY2,
+     xs_sidplay2_probe,
+     xs_sidplay2_init, xs_sidplay2_close,
+     xs_sidplay2_initsong, xs_sidplay2_fillbuffer,
+     xs_sidplay2_load, xs_sidplay2_delete,
+     xs_sidplay2_getinfo, xs_sidplay2_updateinfo,
+     xs_sidplay2_flush
+    },
 #endif
 };
 
@@ -92,22 +92,22 @@
  */
 void xs_error(const char *fmt, ...)
 {
-	va_list ap;
-	fprintf(stderr, "AUD-SID: ");
-	va_start(ap, fmt);
-	vfprintf(stderr, fmt, ap);
-	va_end(ap);
+    va_list ap;
+    fprintf(stderr, "AUD-SID: ");
+    va_start(ap, fmt);
+    vfprintf(stderr, fmt, ap);
+    va_end(ap);
 }
 
 #ifndef DEBUG_NP
 void XSDEBUG(const char *fmt, ...)
 {
 #ifdef DEBUG
-	va_list ap;
-	fprintf(stderr, "XSDEBUG: ");
-	va_start(ap, fmt);
-	vfprintf(stderr, fmt, ap);
-	va_end(ap);
+    va_list ap;
+    fprintf(stderr, "XSDEBUG: ");
+    va_start(ap, fmt);
+    vfprintf(stderr, fmt, ap);
+    va_end(ap);
 #endif
 }
 #endif
@@ -118,94 +118,94 @@
  */
 void xs_reinit(void)
 {
-	gint player;
-	gboolean isInitialized;
+    gint player;
+    gboolean isInitialized;
 
-	XSDEBUG("xs_reinit() thread = %p\n", g_thread_self());
+    XSDEBUG("xs_reinit() thread = %p\n", g_thread_self());
 
-	/* Stop playing, if we are */
-	XS_MUTEX_LOCK(xs_status);
-	if (xs_status.isPlaying) {
-		XS_MUTEX_UNLOCK(xs_status);
-		xs_stop(NULL);
-	} else {
-		XS_MUTEX_UNLOCK(xs_status);
-	}
+    /* Stop playing, if we are */
+    XS_MUTEX_LOCK(xs_status);
+    if (xs_status.isPlaying) {
+        XS_MUTEX_UNLOCK(xs_status);
+        xs_stop(NULL);
+    } else {
+        XS_MUTEX_UNLOCK(xs_status);
+    }
 
-	XS_MUTEX_LOCK(xs_status);
-	XS_MUTEX_LOCK(xs_cfg);
+    XS_MUTEX_LOCK(xs_status);
+    XS_MUTEX_LOCK(xs_cfg);
 
-	/* Initialize status and sanitize configuration */
-	memset(&xs_status, 0, sizeof(xs_status));
+    /* Initialize status and sanitize configuration */
+    memset(&xs_status, 0, sizeof(xs_status));
 
-	if (xs_cfg.audioFrequency < 8000)
-		xs_cfg.audioFrequency = 8000;
+    if (xs_cfg.audioFrequency < 8000)
+        xs_cfg.audioFrequency = 8000;
 
-	if (xs_cfg.oversampleFactor < XS_MIN_OVERSAMPLE)
-		xs_cfg.oversampleFactor = XS_MIN_OVERSAMPLE;
-	else if (xs_cfg.oversampleFactor > XS_MAX_OVERSAMPLE)
-		xs_cfg.oversampleFactor = XS_MAX_OVERSAMPLE;
+    if (xs_cfg.oversampleFactor < XS_MIN_OVERSAMPLE)
+        xs_cfg.oversampleFactor = XS_MIN_OVERSAMPLE;
+    else if (xs_cfg.oversampleFactor > XS_MAX_OVERSAMPLE)
+        xs_cfg.oversampleFactor = XS_MAX_OVERSAMPLE;
 
-	if (xs_cfg.audioChannels != XS_CHN_MONO)
-		xs_cfg.oversampleEnable = FALSE;
+    if (xs_cfg.audioChannels != XS_CHN_MONO)
+        xs_cfg.oversampleEnable = FALSE;
 
-	xs_status.audioFrequency = xs_cfg.audioFrequency;
-	xs_status.audioBitsPerSample = xs_cfg.audioBitsPerSample;
-	xs_status.audioChannels = xs_cfg.audioChannels;
-	xs_status.audioFormat = -1;
-	xs_status.oversampleEnable = xs_cfg.oversampleEnable;
-	xs_status.oversampleFactor = xs_cfg.oversampleFactor;
+    xs_status.audioFrequency = xs_cfg.audioFrequency;
+    xs_status.audioBitsPerSample = xs_cfg.audioBitsPerSample;
+    xs_status.audioChannels = xs_cfg.audioChannels;
+    xs_status.audioFormat = -1;
+    xs_status.oversampleEnable = xs_cfg.oversampleEnable;
+    xs_status.oversampleFactor = xs_cfg.oversampleFactor;
 
-	/* Try to initialize emulator engine */
-	XSDEBUG("initializing emulator engine #%i...\n", xs_cfg.playerEngine);
+    /* Try to initialize emulator engine */
+    XSDEBUG("initializing emulator engine #%i...\n", xs_cfg.playerEngine);
 
-	player = 0;
-	isInitialized = FALSE;
-	while ((player < xs_nplayerlist) && !isInitialized) {
-		if (xs_playerlist[player].plrIdent == xs_cfg.playerEngine) {
-			if (xs_playerlist[player].plrInit(&xs_status)) {
-				isInitialized = TRUE;
-				xs_status.sidPlayer = (xs_player_t *) & xs_playerlist[player];
-			}
-		}
-		player++;
-	}
+    player = 0;
+    isInitialized = FALSE;
+    while ((player < xs_nplayerlist) && !isInitialized) {
+        if (xs_playerlist[player].plrIdent == xs_cfg.playerEngine) {
+            if (xs_playerlist[player].plrInit(&xs_status)) {
+                isInitialized = TRUE;
+                xs_status.sidPlayer = (xs_player_t *) & xs_playerlist[player];
+            }
+        }
+        player++;
+    }
 
-	XSDEBUG("init#1: %s, %i\n", (isInitialized) ? "OK" : "FAILED", player);
+    XSDEBUG("init#1: %s, %i\n", (isInitialized) ? "OK" : "FAILED", player);
 
-	player = 0;
-	while ((player < xs_nplayerlist) && !isInitialized) {
-		if (xs_playerlist[player].plrInit(&xs_status)) {
-			isInitialized = TRUE;
-			xs_status.sidPlayer = (xs_player_t *) & xs_playerlist[player];
-			xs_cfg.playerEngine = xs_playerlist[player].plrIdent;
-		} else
-			player++;
-	}
+    player = 0;
+    while ((player < xs_nplayerlist) && !isInitialized) {
+        if (xs_playerlist[player].plrInit(&xs_status)) {
+            isInitialized = TRUE;
+            xs_status.sidPlayer = (xs_player_t *) & xs_playerlist[player];
+            xs_cfg.playerEngine = xs_playerlist[player].plrIdent;
+        } else
+            player++;
+    }
 
-	XSDEBUG("init#2: %s, %i\n", (isInitialized) ? "OK" : "FAILED", player);
+    XSDEBUG("init#2: %s, %i\n", (isInitialized) ? "OK" : "FAILED", player);
 
 
-	/* Get settings back, in case the chosen emulator backend changed them */
-	xs_cfg.audioFrequency = xs_status.audioFrequency;
-	xs_cfg.audioBitsPerSample = xs_status.audioBitsPerSample;
-	xs_cfg.audioChannels = xs_status.audioChannels;
-	xs_cfg.oversampleEnable = xs_status.oversampleEnable;
+    /* Get settings back, in case the chosen emulator backend changed them */
+    xs_cfg.audioFrequency = xs_status.audioFrequency;
+    xs_cfg.audioBitsPerSample = xs_status.audioBitsPerSample;
+    xs_cfg.audioChannels = xs_status.audioChannels;
+    xs_cfg.oversampleEnable = xs_status.oversampleEnable;
 
-	XS_MUTEX_UNLOCK(xs_status);
-	XS_MUTEX_UNLOCK(xs_cfg);
+    XS_MUTEX_UNLOCK(xs_status);
+    XS_MUTEX_UNLOCK(xs_cfg);
 
-	/* Initialize song-length database */
-	xs_songlen_close();
-	if (xs_cfg.songlenDBEnable && (xs_songlen_init() != 0)) {
-		xs_error("Error initializing song-length database!\n");
-	}
+    /* Initialize song-length database */
+    xs_songlen_close();
+    if (xs_cfg.songlenDBEnable && (xs_songlen_init() != 0)) {
+        xs_error("Error initializing song-length database!\n");
+    }
 
-	/* Initialize STIL database */
-	xs_stil_close();
-	if (xs_cfg.stilDBEnable && (xs_stil_init() != 0)) {
-		xs_error("Error initializing STIL database!\n");
-	}
+    /* Initialize STIL database */
+    xs_stil_close();
+    if (xs_cfg.stilDBEnable && (xs_stil_init() != 0)) {
+        xs_error("Error initializing STIL database!\n");
+    }
 
 }
 
@@ -215,16 +215,16 @@
  */
 void xs_init(void)
 {
-	XSDEBUG("xs_init()\n");
+    XSDEBUG("xs_init()\n");
 
-	/* Initialize and get configuration */
-	xs_init_configuration();
-	xs_read_configuration();
+    /* Initialize and get configuration */
+    xs_init_configuration();
+    xs_read_configuration();
 
-	/* Initialize subsystems */
-	xs_reinit();
+    /* Initialize subsystems */
+    xs_reinit();
 
-	XSDEBUG("OK\n");
+    XSDEBUG("OK\n");
 }
 
 
@@ -233,20 +233,20 @@
  */
 void xs_close(void)
 {
-	XSDEBUG("xs_close(): shutting down...\n");
+    XSDEBUG("xs_close(): shutting down...\n");
 
-	/* Stop playing, free structures */
-	xs_stop(NULL);
+    /* Stop playing, free structures */
+    xs_stop(NULL);
 
-	xs_tuneinfo_free(xs_status.tuneInfo);
-	xs_status.tuneInfo = NULL;
-	xs_status.sidPlayer->plrDeleteSID(&xs_status);
-	xs_status.sidPlayer->plrClose(&xs_status);
+    xs_tuneinfo_free(xs_status.tuneInfo);
+    xs_status.tuneInfo = NULL;
+    xs_status.sidPlayer->plrDeleteSID(&xs_status);
+    xs_status.sidPlayer->plrClose(&xs_status);
 
-	xs_songlen_close();
-	xs_stil_close();
+    xs_songlen_close();
+    xs_stil_close();
 
-	XSDEBUG("shutdown finished.\n");
+    XSDEBUG("shutdown finished.\n");
 }
 
 
@@ -255,28 +255,28 @@
  */
 static gchar * xs_has_tracknumber(gchar *filename)
 {
-	gchar *sep = xs_strrchr(filename, '?');
-	if (sep && g_ascii_isdigit(*(sep + 1)))
-		return sep;
-	else
-		return NULL;
+    gchar *sep = xs_strrchr(filename, '?');
+    if (sep && g_ascii_isdigit(*(sep + 1)))
+        return sep;
+    else
+        return NULL;
 }
 
 gboolean xs_get_trackinfo(const gchar *filename, gchar **result, gint *track)
 {
-	gchar *sep;
+    gchar *sep;
 
-	*result = g_strdup(filename);
-	sep = xs_has_tracknumber(*result);
+    *result = g_strdup(filename);
+    sep = xs_has_tracknumber(*result);
 
-	if (sep) {
-		*sep = '\0';
-		*track = atoi(sep + 1);
-		return TRUE;
-	} else {
-		*track = -1;
-		return FALSE;
-	}
+    if (sep) {
+        *sep = '\0';
+        *track = atoi(sep + 1);
+        return TRUE;
+    } else {
+        *track = -1;
+        return FALSE;
+    }
 }
 
 
@@ -285,212 +285,212 @@
  */
 void xs_play_file(InputPlayback *pb)
 {
-	xs_tuneinfo_t *tmpTune;
-	gboolean audioOpen = FALSE;
-	gint audioGot, tmpLength, subTune;
-	gchar *tmpFilename, *audioBuffer = NULL, *oversampleBuffer = NULL, *tmpTitle;
-	Tuple *tmpTuple;
+    xs_tuneinfo_t *tmpTune;
+    gboolean audioOpen = FALSE;
+    gint audioGot, tmpLength, subTune;
+    gchar *tmpFilename, *audioBuffer = NULL, *oversampleBuffer = NULL, *tmpTitle;
+    Tuple *tmpTuple;
 
-	assert(pb);
-	assert(xs_status.sidPlayer);
-	
-	XSDEBUG("play '%s'\n", pb->filename);
+    assert(pb);
+    assert(xs_status.sidPlayer);
+    
+    XSDEBUG("play '%s'\n", pb->filename);
 
-	XS_MUTEX_LOCK(xs_status);
+    XS_MUTEX_LOCK(xs_status);
 
-	/* Get tune information */
-	xs_get_trackinfo(pb->filename, &tmpFilename, &subTune);
-	if ((xs_status.tuneInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename)) == NULL) {
-		XS_MUTEX_UNLOCK(xs_status);
-		g_free(tmpFilename);
-		return;
-	}
+    /* Get tune information */
+    xs_get_trackinfo(pb->filename, &tmpFilename, &subTune);
+    if ((xs_status.tuneInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename)) == NULL) {
+        XS_MUTEX_UNLOCK(xs_status);
+        g_free(tmpFilename);
+        return;
+    }
 
-	/* Initialize the tune */
-	if (!xs_status.sidPlayer->plrLoadSID(&xs_status, tmpFilename)) {
-		XS_MUTEX_UNLOCK(xs_status);
-		g_free(tmpFilename);
-		xs_tuneinfo_free(xs_status.tuneInfo);
-		xs_status.tuneInfo = NULL;
-		return;
-	}
-	
-	g_free(tmpFilename);
-	tmpFilename = NULL;
+    /* Initialize the tune */
+    if (!xs_status.sidPlayer->plrLoadSID(&xs_status, tmpFilename)) {
+        XS_MUTEX_UNLOCK(xs_status);
+        g_free(tmpFilename);
+        xs_tuneinfo_free(xs_status.tuneInfo);
+        xs_status.tuneInfo = NULL;
+        return;
+    }
+    
+    g_free(tmpFilename);
+    tmpFilename = NULL;
 
-	XSDEBUG("load ok\n");
+    XSDEBUG("load ok\n");
 
-	/* Set general status information */
-	xs_status.isPlaying = TRUE;
-	xs_status.isError = FALSE;
-	tmpTune = xs_status.tuneInfo;
+    /* Set general status information */
+    xs_status.isPlaying = TRUE;
+    xs_status.isError = FALSE;
+    tmpTune = xs_status.tuneInfo;
 
-	if (subTune < 1 || subTune > xs_status.tuneInfo->nsubTunes)
-		xs_status.currSong = xs_status.tuneInfo->startTune;
-	else
-		xs_status.currSong = subTune;
+    if (subTune < 1 || subTune > xs_status.tuneInfo->nsubTunes)
+        xs_status.currSong = xs_status.tuneInfo->startTune;
+    else
+        xs_status.currSong = subTune;
 
-	XSDEBUG("subtune #%i selected (#%d wanted), initializing...\n", xs_status.currSong, subTune);
+    XSDEBUG("subtune #%i selected (#%d wanted), initializing...\n", xs_status.currSong, subTune);
 
 
-	/* We are ready */
-	xs_decode_thread = g_thread_self();
-	XSDEBUG("playing thread = %p\n", xs_decode_thread);
-	pb->set_pb_ready(pb);
+    /* We are ready */
+    xs_decode_thread = g_thread_self();
+    XSDEBUG("playing thread = %p\n", xs_decode_thread);
+    pb->set_pb_ready(pb);
 
 
-	/* Allocate audio buffer */
-	audioBuffer = (gchar *) g_malloc(XS_AUDIOBUF_SIZE);
-	if (audioBuffer == NULL) {
-		xs_error("Couldn't allocate memory for audio data buffer!\n");
-		XS_MUTEX_UNLOCK(xs_status);
-		goto xs_err_exit;
-	}
-	
-	if (xs_status.oversampleEnable) {
-		oversampleBuffer = (gchar *) g_malloc(XS_AUDIOBUF_SIZE * xs_status.oversampleFactor);
-		if (oversampleBuffer == NULL) {
-			xs_error("Couldn't allocate memory for audio oversampling buffer!\n");
-			XS_MUTEX_UNLOCK(xs_status);
-			goto xs_err_exit;
-		}
-	}
+    /* Allocate audio buffer */
+    audioBuffer = (gchar *) g_malloc(XS_AUDIOBUF_SIZE);
+    if (audioBuffer == NULL) {
+        xs_error("Couldn't allocate memory for audio data buffer!\n");
+        XS_MUTEX_UNLOCK(xs_status);
+        goto xs_err_exit;
+    }
+    
+    if (xs_status.oversampleEnable) {
+        oversampleBuffer = (gchar *) g_malloc(XS_AUDIOBUF_SIZE * xs_status.oversampleFactor);
+        if (oversampleBuffer == NULL) {
+            xs_error("Couldn't allocate memory for audio oversampling buffer!\n");
+            XS_MUTEX_UNLOCK(xs_status);
+            goto xs_err_exit;
+        }
+    }
 
 
-	/* Check minimum playtime */
-	tmpLength = tmpTune->subTunes[xs_status.currSong - 1].tuneLength;
-	if (xs_cfg.playMinTimeEnable && (tmpLength >= 0)) {
-		if (tmpLength < xs_cfg.playMinTime)
-			tmpLength = xs_cfg.playMinTime;
-	}
+    /* Check minimum playtime */
+    tmpLength = tmpTune->subTunes[xs_status.currSong - 1].tuneLength;
+    if (xs_cfg.playMinTimeEnable && (tmpLength >= 0)) {
+        if (tmpLength < xs_cfg.playMinTime)
+            tmpLength = xs_cfg.playMinTime;
+    }
 
-	/* Initialize song */
-	if (!xs_status.sidPlayer->plrInitSong(&xs_status)) {
-		xs_error("Couldn't initialize SID-tune '%s' (sub-tune #%i)!\n",
-			tmpTune->sidFilename, xs_status.currSong);
-		XS_MUTEX_UNLOCK(xs_status);
-		goto xs_err_exit;
-	}
-		
-	/* Open the audio output */
-	XSDEBUG("open audio output (%d, %d, %d)\n",
-		xs_status.audioFormat, xs_status.audioFrequency, xs_status.audioChannels);
-		
-	if (!pb->output->open_audio(xs_status.audioFormat, xs_status.audioFrequency, xs_status.audioChannels)) {
-		xs_error("Couldn't open audio output (fmt=%x, freq=%i, nchan=%i)!\n",
-			xs_status.audioFormat,
-			xs_status.audioFrequency,
-			xs_status.audioChannels);
+    /* Initialize song */
+    if (!xs_status.sidPlayer->plrInitSong(&xs_status)) {
+        xs_error("Couldn't initialize SID-tune '%s' (sub-tune #%i)!\n",
+            tmpTune->sidFilename, xs_status.currSong);
+        XS_MUTEX_UNLOCK(xs_status);
+        goto xs_err_exit;
+    }
+        
+    /* Open the audio output */
+    XSDEBUG("open audio output (%d, %d, %d)\n",
+        xs_status.audioFormat, xs_status.audioFrequency, xs_status.audioChannels);
+        
+    if (!pb->output->open_audio(xs_status.audioFormat, xs_status.audioFrequency, xs_status.audioChannels)) {
+        xs_error("Couldn't open audio output (fmt=%x, freq=%i, nchan=%i)!\n",
+            xs_status.audioFormat,
+            xs_status.audioFrequency,
+            xs_status.audioChannels);
 
-		xs_status.isError = TRUE;
-		XS_MUTEX_UNLOCK(xs_status);
-		goto xs_err_exit;
-	}
+        xs_status.isError = TRUE;
+        XS_MUTEX_UNLOCK(xs_status);
+        goto xs_err_exit;
+    }
 
-	audioOpen = TRUE;
+    audioOpen = TRUE;
 
-	/* Set song information for current subtune */
-	XSDEBUG("foobar #1\n");
-	xs_status.sidPlayer->plrUpdateSIDInfo(&xs_status);
-	XS_MUTEX_UNLOCK(xs_status);
-	tmpTuple = aud_tuple_new_from_filename(tmpTune->sidFilename);
-	xs_get_song_tuple_info(tmpTuple, tmpTune, xs_status.currSong);
+    /* Set song information for current subtune */
+    XSDEBUG("foobar #1\n");
+    xs_status.sidPlayer->plrUpdateSIDInfo(&xs_status);
+    XS_MUTEX_UNLOCK(xs_status);
+    tmpTuple = aud_tuple_new_from_filename(tmpTune->sidFilename);
+    xs_get_song_tuple_info(tmpTuple, tmpTune, xs_status.currSong);
 
-	tmpTitle = aud_tuple_formatter_process_string(tmpTuple,
-		xs_cfg.titleOverride ? xs_cfg.titleFormat : aud_get_gentitle_format());
-	
-	XSDEBUG("foobar #4\n");
-	XS_MUTEX_LOCK(xs_status);
-	pb->set_params(pb,
-		tmpTitle,
-		(tmpLength > 0) ? (tmpLength * 1000) : 0,
-		-1,
-		xs_status.audioFrequency,
-		xs_status.audioChannels);
-		
-	g_free(tmpTitle);
-	
-	XS_MUTEX_UNLOCK(xs_status);
-	XSDEBUG("playing\n");
-	while (xs_status.isPlaying) {
-		/* Render audio data */
-		XS_MUTEX_LOCK(xs_status);
-		if (xs_status.oversampleEnable) {
-			/* Perform oversampled rendering */
-			audioGot = xs_status.sidPlayer->plrFillBuffer(
-				&xs_status,
-				oversampleBuffer,
-				(XS_AUDIOBUF_SIZE * xs_status.oversampleFactor));
+    tmpTitle = aud_tuple_formatter_process_string(tmpTuple,
+        xs_cfg.titleOverride ? xs_cfg.titleFormat : aud_get_gentitle_format());
+    
+    XSDEBUG("foobar #4\n");
+    XS_MUTEX_LOCK(xs_status);
+    pb->set_params(pb,
+        tmpTitle,
+        (tmpLength > 0) ? (tmpLength * 1000) : 0,
+        -1,
+        xs_status.audioFrequency,
+        xs_status.audioChannels);
+        
+    g_free(tmpTitle);
+    
+    XS_MUTEX_UNLOCK(xs_status);
+    XSDEBUG("playing\n");
+    while (xs_status.isPlaying) {
+        /* Render audio data */
+        XS_MUTEX_LOCK(xs_status);
+        if (xs_status.oversampleEnable) {
+            /* Perform oversampled rendering */
+            audioGot = xs_status.sidPlayer->plrFillBuffer(
+                &xs_status,
+                oversampleBuffer,
+                (XS_AUDIOBUF_SIZE * xs_status.oversampleFactor));
 
-			audioGot /= xs_status.oversampleFactor;
+            audioGot /= xs_status.oversampleFactor;
 
-			/* Execute rate-conversion with filtering */
-			if (xs_filter_rateconv(audioBuffer, oversampleBuffer,
-				xs_status.audioFormat, xs_status.oversampleFactor, audioGot) < 0) {
-				xs_error("Oversampling rate-conversion pass failed.\n");
-				xs_status.isError = TRUE;
-				XS_MUTEX_UNLOCK(xs_status);
-				goto xs_err_exit;
-			}
-		} else {
-			audioGot = xs_status.sidPlayer->plrFillBuffer(
-				&xs_status, audioBuffer, XS_AUDIOBUF_SIZE);
-		}
+            /* Execute rate-conversion with filtering */
+            if (xs_filter_rateconv(audioBuffer, oversampleBuffer,
+                xs_status.audioFormat, xs_status.oversampleFactor, audioGot) < 0) {
+                xs_error("Oversampling rate-conversion pass failed.\n");
+                xs_status.isError = TRUE;
+                XS_MUTEX_UNLOCK(xs_status);
+                goto xs_err_exit;
+            }
+        } else {
+            audioGot = xs_status.sidPlayer->plrFillBuffer(
+                &xs_status, audioBuffer, XS_AUDIOBUF_SIZE);
+        }
 
-		/* I <3 visualice/haujobb */
-		pb->pass_audio(pb, xs_status.audioFormat, xs_status.audioChannels,
-			audioGot, audioBuffer, NULL);
-		
-		XS_MUTEX_UNLOCK(xs_status);
+        /* I <3 visualice/haujobb */
+        pb->pass_audio(pb, xs_status.audioFormat, xs_status.audioChannels,
+            audioGot, audioBuffer, NULL);
+        
+        XS_MUTEX_UNLOCK(xs_status);
 
-		/* Wait a little */
-		while (xs_status.isPlaying && (pb->output->buffer_free() < audioGot))
-			g_usleep(500);
+        /* Wait a little */
+        while (xs_status.isPlaying && (pb->output->buffer_free() < audioGot))
+            g_usleep(500);
 
-		/* Check if we have played enough */
-		XS_MUTEX_LOCK(xs_status);
-		if (xs_cfg.playMaxTimeEnable) {
-			if (xs_cfg.playMaxTimeUnknown) {
-				if ((tmpLength < 0) &&
-					(pb->output->output_time() >= (xs_cfg.playMaxTime * 1000)))
-					xs_status.isPlaying = FALSE;
-			} else {
-				if (pb->output->output_time() >= (xs_cfg.playMaxTime * 1000))
-					xs_status.isPlaying = FALSE;
-			}
-		}
+        /* Check if we have played enough */
+        XS_MUTEX_LOCK(xs_status);
+        if (xs_cfg.playMaxTimeEnable) {
+            if (xs_cfg.playMaxTimeUnknown) {
+                if ((tmpLength < 0) &&
+                    (pb->output->output_time() >= (xs_cfg.playMaxTime * 1000)))
+                    xs_status.isPlaying = FALSE;
+            } else {
+                if (pb->output->output_time() >= (xs_cfg.playMaxTime * 1000))
+                    xs_status.isPlaying = FALSE;
+            }
+        }
 
-		if (tmpLength >= 0) {
-			if (pb->output->output_time() >= (tmpLength * 1000))
-				xs_status.isPlaying = FALSE;
-		}
-		XS_MUTEX_UNLOCK(xs_status);
-	}
+        if (tmpLength >= 0) {
+            if (pb->output->output_time() >= (tmpLength * 1000))
+                xs_status.isPlaying = FALSE;
+        }
+        XS_MUTEX_UNLOCK(xs_status);
+    }
 
 xs_err_exit:
-	XSDEBUG("out of playing loop\n");
-	
-	/* Close audio output plugin */
-	if (audioOpen) {
-		XSDEBUG("close audio #2\n");
-		pb->output->close_audio();
-		XSDEBUG("closed\n");
-	}
+    XSDEBUG("out of playing loop\n");
+    
+    /* Close audio output plugin */
+    if (audioOpen) {
+        XSDEBUG("close audio #2\n");
+        pb->output->close_audio();
+        XSDEBUG("closed\n");
+    }
 
-	g_free(audioBuffer);
-	g_free(oversampleBuffer);
+    g_free(audioBuffer);
+    g_free(oversampleBuffer);
 
-	/* Set playing status to false (stopped), thus when
-	 * XMMS next calls xs_get_time(), it can return appropriate
-	 * value "not playing" status and XMMS knows to move to
-	 * next entry in the playlist .. or whatever it wishes.
-	 */
-	XS_MUTEX_LOCK(xs_status);
-	xs_status.isPlaying = FALSE;
-	XS_MUTEX_UNLOCK(xs_status);
+    /* Set playing status to false (stopped), thus when
+     * XMMS next calls xs_get_time(), it can return appropriate
+     * value "not playing" status and XMMS knows to move to
+     * next entry in the playlist .. or whatever it wishes.
+     */
+    XS_MUTEX_LOCK(xs_status);
+    xs_status.isPlaying = FALSE;
+    XS_MUTEX_UNLOCK(xs_status);
 
-	/* Exit the playing thread */
-	XSDEBUG("exiting thread, bye.\n");
+    /* Exit the playing thread */
+    XSDEBUG("exiting thread, bye.\n");
 }
 
 
@@ -506,30 +506,30 @@
  */
 void xs_stop(InputPlayback *pb)
 {
-	(void) pb;
-	
-	XSDEBUG("stop requested\n");
+    (void) pb;
+    
+    XSDEBUG("stop requested\n");
 
-	/* Lock xs_status and stop playing thread */
-	XS_MUTEX_LOCK(xs_status);
-	if (xs_status.isPlaying) {
-		XSDEBUG("stopping...\n");
-		xs_status.isPlaying = FALSE;
-		XS_MUTEX_UNLOCK(xs_status);
-		XS_THREAD_JOIN(xs_decode_thread);
-	} else {
-		XS_MUTEX_UNLOCK(xs_status);
-	}
+    /* Lock xs_status and stop playing thread */
+    XS_MUTEX_LOCK(xs_status);
+    if (xs_status.isPlaying) {
+        XSDEBUG("stopping...\n");
+        xs_status.isPlaying = FALSE;
+        XS_MUTEX_UNLOCK(xs_status);
+        XS_THREAD_JOIN(xs_decode_thread);
+    } else {
+        XS_MUTEX_UNLOCK(xs_status);
+    }
 
-	XSDEBUG("done, updating status\n");
-	
-	/* Free tune information */
-	XS_MUTEX_LOCK(xs_status);
-	xs_status.sidPlayer->plrDeleteSID(&xs_status);
-	xs_tuneinfo_free(xs_status.tuneInfo);
-	xs_status.tuneInfo = NULL;
-	XS_MUTEX_UNLOCK(xs_status);
-	XSDEBUG("ok\n");
+    XSDEBUG("done, updating status\n");
+    
+    /* Free tune information */
+    XS_MUTEX_LOCK(xs_status);
+    xs_status.sidPlayer->plrDeleteSID(&xs_status);
+    xs_tuneinfo_free(xs_status.tuneInfo);
+    xs_status.tuneInfo = NULL;
+    XS_MUTEX_UNLOCK(xs_status);
+    XSDEBUG("ok\n");
 }
 
 
@@ -538,7 +538,7 @@
  */
 void xs_pause(InputPlayback *pb, short pauseState)
 {
-	pb->output->pause(pauseState);
+    pb->output->pause(pauseState);
 }
 
 
@@ -547,7 +547,7 @@
  */
 void xs_seek(InputPlayback *pb, gint time)
 {
-	(void) pb; (void) time;
+    (void) pb; (void) time;
 }
 
 
@@ -560,29 +560,29 @@
  */
 gint xs_get_time(InputPlayback *pb)
 {
-	/* If errorflag is set, return -2 to signal it to XMMS's idle callback */
-	XS_MUTEX_LOCK(xs_status);
-	if (xs_status.isError) {
-		XS_MUTEX_UNLOCK(xs_status);
-		return -2;
-	}
+    /* If errorflag is set, return -2 to signal it to XMMS's idle callback */
+    XS_MUTEX_LOCK(xs_status);
+    if (xs_status.isError) {
+        XS_MUTEX_UNLOCK(xs_status);
+        return -2;
+    }
 
-	/* If there is no tune, return -1 */
-	if (!xs_status.tuneInfo) {
-		XS_MUTEX_UNLOCK(xs_status);
-		return -1;
-	}
+    /* If there is no tune, return -1 */
+    if (!xs_status.tuneInfo) {
+        XS_MUTEX_UNLOCK(xs_status);
+        return -1;
+    }
 
-	/* If tune has ended, return -1 */
-	if (!xs_status.isPlaying) {
-		XS_MUTEX_UNLOCK(xs_status);
-		return -1;
-	}
+    /* If tune has ended, return -1 */
+    if (!xs_status.isPlaying) {
+        XS_MUTEX_UNLOCK(xs_status);
+        return -1;
+    }
 
-	XS_MUTEX_UNLOCK(xs_status);
+    XS_MUTEX_UNLOCK(xs_status);
 
-	/* Return output time reported by audio output plugin */
-	return pb->output->output_time();
+    /* Return output time reported by audio output plugin */
+    return pb->output->output_time();
 }
 
 
@@ -591,151 +591,151 @@
  */
 static void xs_get_song_tuple_info(Tuple *pResult, xs_tuneinfo_t *pInfo, gint subTune)
 {
-	gchar *tmpStr, tmpStr2[64];
+    gchar *tmpStr, tmpStr2[64];
 
-	aud_tuple_associate_string(pResult, FIELD_TITLE, NULL, pInfo->sidName);
-	aud_tuple_associate_string(pResult, FIELD_ARTIST, NULL, pInfo->sidComposer);
-	aud_tuple_associate_string(pResult, FIELD_GENRE, NULL, "SID-tune");
-	aud_tuple_associate_string(pResult, FIELD_COPYRIGHT, NULL, pInfo->sidCopyright);
-	aud_tuple_associate_string(pResult, -1, "sid-format", pInfo->sidFormat);
+    aud_tuple_associate_string(pResult, FIELD_TITLE, NULL, pInfo->sidName);
+    aud_tuple_associate_string(pResult, FIELD_ARTIST, NULL, pInfo->sidComposer);
+    aud_tuple_associate_string(pResult, FIELD_GENRE, NULL, "SID-tune");
+    aud_tuple_associate_string(pResult, FIELD_COPYRIGHT, NULL, pInfo->sidCopyright);
+    aud_tuple_associate_string(pResult, -1, "sid-format", pInfo->sidFormat);
 
-	switch (pInfo->sidModel) {
-		case XS_SIDMODEL_6581: tmpStr = "6581"; break;
-		case XS_SIDMODEL_8580: tmpStr = "8580"; break;
-		case XS_SIDMODEL_ANY: tmpStr = "ANY"; break;
-		default: tmpStr = "?"; break;
-	}
-	aud_tuple_associate_string(pResult, -1, "sid-model", tmpStr);
-	
-	/* Get sub-tune information, if available */
-	if (subTune < 0 || pInfo->startTune > pInfo->nsubTunes)
-		subTune = pInfo->startTune;
-	
-	if ((subTune > 0) && (subTune <= pInfo->nsubTunes)) {
-		gint tmpInt = pInfo->subTunes[subTune - 1].tuneLength;
-		aud_tuple_associate_int(pResult, FIELD_LENGTH, NULL, (tmpInt < 0) ? -1 : tmpInt * 1000);
-		
-		tmpInt = pInfo->subTunes[subTune - 1].tuneSpeed;
-		if (tmpInt > 0) {
-			switch (tmpInt) {
-			case XS_CLOCK_PAL: tmpStr = "PAL"; break;
-			case XS_CLOCK_NTSC: tmpStr = "NTSC"; break;
-			case XS_CLOCK_ANY: tmpStr = "ANY"; break;
-			case XS_CLOCK_VBI: tmpStr = "VBI"; break;
-			case XS_CLOCK_CIA: tmpStr = "CIA"; break;
-			default:
-				g_snprintf(tmpStr2, sizeof(tmpStr2), "%dHz", tmpInt);
-				tmpStr = tmpStr2;
-				break;
-			}
-		} else
-			tmpStr = "?";
+    switch (pInfo->sidModel) {
+        case XS_SIDMODEL_6581: tmpStr = "6581"; break;
+        case XS_SIDMODEL_8580: tmpStr = "8580"; break;
+        case XS_SIDMODEL_ANY: tmpStr = "ANY"; break;
+        default: tmpStr = "?"; break;
+    }
+    aud_tuple_associate_string(pResult, -1, "sid-model", tmpStr);
+    
+    /* Get sub-tune information, if available */
+    if (subTune < 0 || pInfo->startTune > pInfo->nsubTunes)
+        subTune = pInfo->startTune;
+    
+    if ((subTune > 0) && (subTune <= pInfo->nsubTunes)) {
+        gint tmpInt = pInfo->subTunes[subTune - 1].tuneLength;
+        aud_tuple_associate_int(pResult, FIELD_LENGTH, NULL, (tmpInt < 0) ? -1 : tmpInt * 1000);
+        
+        tmpInt = pInfo->subTunes[subTune - 1].tuneSpeed;
+        if (tmpInt > 0) {
+            switch (tmpInt) {
+            case XS_CLOCK_PAL: tmpStr = "PAL"; break;
+            case XS_CLOCK_NTSC: tmpStr = "NTSC"; break;
+            case XS_CLOCK_ANY: tmpStr = "ANY"; break;
+            case XS_CLOCK_VBI: tmpStr = "VBI"; break;
+            case XS_CLOCK_CIA: tmpStr = "CIA"; break;
+            default:
+                g_snprintf(tmpStr2, sizeof(tmpStr2), "%dHz", tmpInt);
+                tmpStr = tmpStr2;
+                break;
+            }
+        } else
+            tmpStr = "?";
 
-		aud_tuple_associate_string(pResult, -1, "sid-speed", tmpStr);
-	} else
-		subTune = 1;
-	
-	aud_tuple_associate_int(pResult, FIELD_SUBSONG_NUM, NULL, pInfo->nsubTunes);
-	aud_tuple_associate_int(pResult, FIELD_SUBSONG_ID, NULL, subTune);
-	aud_tuple_associate_int(pResult, FIELD_TRACK_NUMBER, NULL, subTune);
+        aud_tuple_associate_string(pResult, -1, "sid-speed", tmpStr);
+    } else
+        subTune = 1;
+    
+    aud_tuple_associate_int(pResult, FIELD_SUBSONG_NUM, NULL, pInfo->nsubTunes);
+    aud_tuple_associate_int(pResult, FIELD_SUBSONG_ID, NULL, subTune);
+    aud_tuple_associate_int(pResult, FIELD_TRACK_NUMBER, NULL, subTune);
 
-	if (xs_cfg.titleOverride)
-		aud_tuple_associate_string(pResult, FIELD_FORMATTER, NULL, xs_cfg.titleFormat);
+    if (xs_cfg.titleOverride)
+        aud_tuple_associate_string(pResult, FIELD_FORMATTER, NULL, xs_cfg.titleFormat);
 }
 
 
 Tuple * xs_get_song_tuple(gchar *filename)
 {
-	Tuple *result;
-	gchar *tmpFilename;
-	xs_tuneinfo_t *tmpInfo;
-	gint tmpTune;
+    Tuple *result;
+    gchar *tmpFilename;
+    xs_tuneinfo_t *tmpInfo;
+    gint tmpTune;
 
-	/* Get information from URL */
-	xs_get_trackinfo(filename, &tmpFilename, &tmpTune);
+    /* Get information from URL */
+    xs_get_trackinfo(filename, &tmpFilename, &tmpTune);
 
-	result = aud_tuple_new_from_filename(tmpFilename);
-	if (!result) {
-		g_free(tmpFilename);
-		return NULL;
-	}
+    result = aud_tuple_new_from_filename(tmpFilename);
+    if (!result) {
+        g_free(tmpFilename);
+        return NULL;
+    }
 
-	/* Get tune information from emulation engine */
-	XS_MUTEX_LOCK(xs_status);
-	tmpInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename);
-	XS_MUTEX_UNLOCK(xs_status);
-	g_free(tmpFilename);
+    /* Get tune information from emulation engine */
+    XS_MUTEX_LOCK(xs_status);
+    tmpInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename);
+    XS_MUTEX_UNLOCK(xs_status);
+    g_free(tmpFilename);
 
-	if (!tmpInfo)
-		return result;
-	
-	xs_get_song_tuple_info(result, tmpInfo, tmpTune);
-	xs_tuneinfo_free(tmpInfo);
+    if (!tmpInfo)
+        return result;
+    
+    xs_get_song_tuple_info(result, tmpInfo, tmpTune);
+    xs_tuneinfo_free(tmpInfo);
 
-	return result;
+    return result;
 }
 
 
 Tuple *xs_probe_for_tuple(gchar *filename, xs_file_t *fd)
 {
-	Tuple *result;
-	gchar *tmpFilename;
-	xs_tuneinfo_t *tmpInfo;
-	gint tmpTune;
+    Tuple *result;
+    gchar *tmpFilename;
+    xs_tuneinfo_t *tmpInfo;
+    gint tmpTune;
 
-	assert(xs_status.sidPlayer);
+    assert(xs_status.sidPlayer);
 
-	if (filename == NULL)
-		return NULL;
+    if (filename == NULL)
+        return NULL;
 
-	XS_MUTEX_LOCK(xs_status);
-	if (!xs_status.sidPlayer->plrProbe(fd)) {
-		XS_MUTEX_UNLOCK(xs_status);
-		return NULL;
-	}
-	XS_MUTEX_UNLOCK(xs_status);
+    XS_MUTEX_LOCK(xs_status);
+    if (!xs_status.sidPlayer->plrProbe(fd)) {
+        XS_MUTEX_UNLOCK(xs_status);
+        return NULL;
+    }
+    XS_MUTEX_UNLOCK(xs_status);
 
 
-	/* Get information from URL */
-	xs_get_trackinfo(filename, &tmpFilename, &tmpTune);
-	result = aud_tuple_new_from_filename(tmpFilename);
-	if (!result) {
-		g_free(tmpFilename);
-		return NULL;
-	}
+    /* Get information from URL */
+    xs_get_trackinfo(filename, &tmpFilename, &tmpTune);
+    result = aud_tuple_new_from_filename(tmpFilename);
+    if (!result) {
+        g_free(tmpFilename);
+        return NULL;
+    }
 
-	/* Get tune information from emulation engine */
-	XS_MUTEX_LOCK(xs_status);
-	tmpInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename);
-	XS_MUTEX_UNLOCK(xs_status);
-	g_free(tmpFilename);
+    /* Get tune information from emulation engine */
+    XS_MUTEX_LOCK(xs_status);
+    tmpInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename);
+    XS_MUTEX_UNLOCK(xs_status);
+    g_free(tmpFilename);
 
-	if (!tmpInfo)
-		return result;
-	
-	xs_get_song_tuple_info(result, tmpInfo, tmpTune);
+    if (!tmpInfo)
+        return result;
+    
+    xs_get_song_tuple_info(result, tmpInfo, tmpTune);
 
-	/* Set subtunes */
-	if (xs_cfg.subAutoEnable && tmpInfo->nsubTunes > 1 && tmpTune < 0) {
-		gint i, n;
-		result->subtunes = g_new(gint, tmpInfo->nsubTunes);
-		for (n = 0, i = 1; i <= tmpInfo->nsubTunes; i++) {
-			gboolean doAdd = FALSE;
-					
-			if (xs_cfg.subAutoMinOnly) {
-				if (i == tmpInfo->startTune ||
-					tmpInfo->subTunes[i - 1].tuneLength >= xs_cfg.subAutoMinTime)
-					doAdd = TRUE;
-			} else
-				doAdd = TRUE;
-					
-			if (doAdd) result->subtunes[n++] = i;
-		}
-		result->nsubtunes = n;
-	} else
-		result->nsubtunes = 0;
-	
-	xs_tuneinfo_free(tmpInfo);
+    /* Set subtunes */
+    if (xs_cfg.subAutoEnable && tmpInfo->nsubTunes > 1 && tmpTune < 0) {
+        gint i, n;
+        result->subtunes = g_new(gint, tmpInfo->nsubTunes);
+        for (n = 0, i = 1; i <= tmpInfo->nsubTunes; i++) {
+            gboolean doAdd = FALSE;
+                    
+            if (xs_cfg.subAutoMinOnly) {
+                if (i == tmpInfo->startTune ||
+                    tmpInfo->subTunes[i - 1].tuneLength >= xs_cfg.subAutoMinTime)
+                    doAdd = TRUE;
+            } else
+                doAdd = TRUE;
+                    
+            if (doAdd) result->subtunes[n++] = i;
+        }
+        result->nsubtunes = n;
+    } else
+        result->nsubtunes = 0;
+    
+    xs_tuneinfo_free(tmpInfo);
 
-	return result;
+    return result;
 }
--- a/src/sid/xmms-sid.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xmms-sid.h	Thu Apr 03 00:52:14 2008 +0300
@@ -55,7 +55,7 @@
 #undef HAVE_HARDSID_BUILDER
 
 /* Size for some small buffers (always static variables) */
-#define XS_BUF_SIZE		(1024)
+#define XS_BUF_SIZE        (1024)
 
 /* If defined, some dynamically allocated temp. buffers are used.
  * Static (#undef) might give slight performance gain,
@@ -64,130 +64,130 @@
 
 /* Configuration section identifier
  */
-#define XS_PACKAGE_STRING	"Audacious-SID"
-#define XS_CONFIG_IDENT		"sid"
+#define XS_PACKAGE_STRING    "Audacious-SID"
+#define XS_CONFIG_IDENT        "sid"
 
 /* Default audio rendering frequency in Hz
  */
-#define XS_AUDIO_FREQ		(44100)
+#define XS_AUDIO_FREQ        (44100)
 
 /* Size of audio buffer. If you are experiencing lots of audio
  * "underruns" or clicks/gaps in output, try increasing this value.
  * Do notice, however, that it also affects the update frequency of
  * XMMS's visualization plugins... 
  */
-#define XS_AUDIOBUF_SIZE	(2*1024)
+#define XS_AUDIOBUF_SIZE    (2*1024)
 
 /* Size of data buffer used for SID-tune MD5 hash calculation.
  * If this is too small, the computed hash will be incorrect.
  * Largest SID files I've seen are ~70kB. */
-#define XS_SIDBUF_SIZE		(80*1024)
+#define XS_SIDBUF_SIZE        (80*1024)
 
 /* libSIDPlay1/2 constants (copied from internal headers/source)
  * For some stupid reason these are not available in public
  * headers, so we have to duplicate them here...
  */
-#define XS_SIDPLAY1_FS		(400.0f)
-#define XS_SIDPLAY1_FM		(60.0f)
-#define XS_SIDPLAY1_FT		(0.05f)
+#define XS_SIDPLAY1_FS        (400.0f)
+#define XS_SIDPLAY1_FM        (60.0f)
+#define XS_SIDPLAY1_FT        (0.05f)
 
-#define XS_SIDPLAY2_NFPOINTS	(0x800)
-#define XS_SIDPLAY2_FMAX	(24000)
+#define XS_SIDPLAY2_NFPOINTS    (0x800)
+#define XS_SIDPLAY2_FMAX    (24000)
 
 /* Limits for oversampling
  */
-#define XS_MIN_OVERSAMPLE	(2)
-#define XS_MAX_OVERSAMPLE	(8)
+#define XS_MIN_OVERSAMPLE    (2)
+#define XS_MAX_OVERSAMPLE    (8)
 
 
 /* Macros for mutexes and threads. These exist to be able to
  * easily change from pthreads to glib threads, etc, if necessary.
  */
-#define XS_THREAD_T		GThread *
-#define XS_THREAD_EXIT(M)	g_thread_exit(M)
-#define XS_THREAD_JOIN(M)	g_thread_join(M)
-#define XS_MPP(M)		M ## _mutex
-#define XS_MUTEX(M)		GStaticMutex XS_MPP(M) = G_STATIC_MUTEX_INIT
-#define XS_MUTEX_H(M)		extern GStaticMutex XS_MPP(M)
+#define XS_THREAD_T        GThread *
+#define XS_THREAD_EXIT(M)    g_thread_exit(M)
+#define XS_THREAD_JOIN(M)    g_thread_join(M)
+#define XS_MPP(M)        M ## _mutex
+#define XS_MUTEX(M)        GStaticMutex XS_MPP(M) = G_STATIC_MUTEX_INIT
+#define XS_MUTEX_H(M)        extern GStaticMutex XS_MPP(M)
 #ifdef XS_MUTEX_DEBUG
-#  define XS_MUTEX_LOCK(M)	{			\
-	gboolean tmpRes;				\
-	XSDEBUG("XS_MUTEX_TRYLOCK(" #M ")\n");	\
-	tmpRes = g_static_mutex_trylock(&XS_MPP(M));	\
-	XSDEBUG("[" #M "] = %s\n", tmpRes ? "TRUE" : "FALSE");	\
-	}
-#  define XS_MUTEX_UNLOCK(M)	{ XSDEBUG("XS_MUTEX_UNLOCK(" #M ")\n"); g_static_mutex_unlock(&XS_MPP(M)); }
+#  define XS_MUTEX_LOCK(M)    {            \
+    gboolean tmpRes;                \
+    XSDEBUG("XS_MUTEX_TRYLOCK(" #M ")\n");    \
+    tmpRes = g_static_mutex_trylock(&XS_MPP(M));    \
+    XSDEBUG("[" #M "] = %s\n", tmpRes ? "TRUE" : "FALSE");    \
+    }
+#  define XS_MUTEX_UNLOCK(M)    { XSDEBUG("XS_MUTEX_UNLOCK(" #M ")\n"); g_static_mutex_unlock(&XS_MPP(M)); }
 #else
-#  define XS_MUTEX_LOCK(M)	g_static_mutex_lock(&XS_MPP(M))
-#  define XS_MUTEX_UNLOCK(M)	g_static_mutex_unlock(&XS_MPP(M))
+#  define XS_MUTEX_LOCK(M)    g_static_mutex_lock(&XS_MPP(M))
+#  define XS_MUTEX_UNLOCK(M)    g_static_mutex_unlock(&XS_MPP(M))
 #endif
 
 /* Character set conversion helper macros
  */
-#define XS_CS_FILENAME(M)	g_filename_to_utf8(M, -1, NULL, NULL, NULL)
-#define XS_CS_SID(M)		g_convert(M, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL)
-#define XS_CS_STIL(M)		g_convert(M, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL)
-#define XS_CS_FREE(M)		g_free(M)
+#define XS_CS_FILENAME(M)    g_filename_to_utf8(M, -1, NULL, NULL, NULL)
+#define XS_CS_SID(M)        g_convert(M, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL)
+#define XS_CS_STIL(M)        g_convert(M, -1, "UTF-8", "ISO-8859-1", NULL, NULL, NULL)
+#define XS_CS_FREE(M)        g_free(M)
 
 /* Shorthands for linked lists
  */
-#define LPREV	(node->prev)
-#define LTHIS	(node)
-#define LNEXT	(node->next)
+#define LPREV    (node->prev)
+#define LTHIS    (node)
+#define LNEXT    (node->next)
 
 
 /* Plugin-wide typedefs
  */
 typedef struct {
-	gint		tuneSpeed,
-			tuneLength;
-	gboolean	tunePlayed;
+    gint        tuneSpeed,
+            tuneLength;
+    gboolean    tunePlayed;
 } xs_subtuneinfo_t;
 
 
 typedef struct {
-	gchar		*sidFilename,
-			*sidName,
-			*sidComposer,
-			*sidCopyright,
-			*sidFormat;
-	gint		loadAddr,
-			initAddr,
-			playAddr,
-			dataFileLen,
-			sidModel;
-	gint		nsubTunes, startTune;
-	xs_subtuneinfo_t	*subTunes;
+    gchar        *sidFilename,
+            *sidName,
+            *sidComposer,
+            *sidCopyright,
+            *sidFormat;
+    gint        loadAddr,
+            initAddr,
+            playAddr,
+            dataFileLen,
+            sidModel;
+    gint        nsubTunes, startTune;
+    xs_subtuneinfo_t    *subTunes;
 } xs_tuneinfo_t;
 
 
 /* Global variables
  */
-extern InputPlugin	xs_plugin_ip;
+extern InputPlugin    xs_plugin_ip;
 
 
 /* Plugin function prototypes
  */
-void	xs_init(void);
-void	xs_reinit(void);
-void	xs_close(void);
-void	xs_play_file(InputPlayback *);
-void	xs_stop(InputPlayback *);
-void	xs_pause(InputPlayback *, short);
-void	xs_seek(InputPlayback *, gint);
-gint	xs_get_time(InputPlayback *);
-Tuple *	xs_get_song_tuple(gchar *);
-Tuple *	xs_probe_for_tuple(gchar *, xs_file_t *);
-void	xs_about(void);
+void    xs_init(void);
+void    xs_reinit(void);
+void    xs_close(void);
+void    xs_play_file(InputPlayback *);
+void    xs_stop(InputPlayback *);
+void    xs_pause(InputPlayback *, short);
+void    xs_seek(InputPlayback *, gint);
+gint    xs_get_time(InputPlayback *);
+Tuple *    xs_get_song_tuple(gchar *);
+Tuple *    xs_probe_for_tuple(gchar *, xs_file_t *);
+void    xs_about(void);
 
-void	xs_error(const char *, ...);
+void    xs_error(const char *, ...);
 gboolean xs_get_trackinfo(const gchar *, gchar **, gint *);
 
 
 /* Debugging
  */
 #ifndef DEBUG_NP
-void	XSDEBUG(const char *, ...);
+void    XSDEBUG(const char *, ...);
 #else
 #  ifdef DEBUG
 #    define XSDEBUG(...) { fprintf(stderr, "XS[%s:%s:%d]: ", __FILE__, __FUNCTION__, (int) __LINE__); fprintf(stderr, __VA_ARGS__); }
@@ -199,25 +199,25 @@
 
 /* And even some Gtk+ macro crap here, yay.
  */
-#define XS_DEF_WINDOW_DELETE(ME, MV)					\
-gboolean xs_ ## ME ## _delete(GtkWidget *w, GdkEvent *e, gpointer d) {	\
-	(void) w; (void) e; (void) d;					\
-	if (xs_ ## MV ) {						\
-		gtk_widget_destroy(xs_ ## MV );				\
-		xs_ ## MV = NULL;					\
-	}								\
-	return FALSE;							\
+#define XS_DEF_WINDOW_DELETE(ME, MV)                    \
+gboolean xs_ ## ME ## _delete(GtkWidget *w, GdkEvent *e, gpointer d) {    \
+    (void) w; (void) e; (void) d;                    \
+    if (xs_ ## MV ) {                        \
+        gtk_widget_destroy(xs_ ## MV );                \
+        xs_ ## MV = NULL;                    \
+    }                                \
+    return FALSE;                            \
 }
 
-#define XS_DEF_WINDOW_CLOSE(ME, MV)			\
-void xs_ ## ME (GtkButton *b, gpointer d) {		\
-	(void) b; (void) d;				\
-	gtk_widget_destroy(xs_ ## MV );			\
-	xs_ ## MV = NULL;				\
+#define XS_DEF_WINDOW_CLOSE(ME, MV)            \
+void xs_ ## ME (GtkButton *b, gpointer d) {        \
+    (void) b; (void) d;                \
+    gtk_widget_destroy(xs_ ## MV );            \
+    xs_ ## MV = NULL;                \
 }
 
-#define XS_SIGNAL_CONNECT(SOBJ, SNAME, SFUNC, SDATA)		\
-	g_signal_connect(G_OBJECT(SOBJ), SNAME, G_CALLBACK(SFUNC), SDATA)
+#define XS_SIGNAL_CONNECT(SOBJ, SNAME, SFUNC, SDATA)        \
+    g_signal_connect(G_OBJECT(SOBJ), SNAME, G_CALLBACK(SFUNC), SDATA)
 
 #ifdef __cplusplus
 }
--- a/src/sid/xs_about.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_about.c	Thu Apr 03 00:52:14 2008 +0300
@@ -37,16 +37,16 @@
  */
 gint xs_about_theme(void)
 {
-	const gint iSession = 0;	/* Assume session 0 */
-	gint iPos;
+    const gint iSession = 0;    /* Assume session 0 */
+    gint iPos;
 
-	/* Stop current song, add theme to playlist, play. */
-	xmms_remote_stop(iSession);
-	iPos = xmms_remote_get_playlist_length(iSession);
-	xmms_remote_playlist_add_url_string(iSession, THEMETUNE_FILE);
-	xmms_remote_set_playlist_pos(iSession, iPos);
-	xmms_remote_play(iSession);
-	return 0;
+    /* Stop current song, add theme to playlist, play. */
+    xmms_remote_stop(iSession);
+    iPos = xmms_remote_get_playlist_length(iSession);
+    xmms_remote_playlist_add_url_string(iSession, THEMETUNE_FILE);
+    xmms_remote_set_playlist_pos(iSession, iPos);
+    xmms_remote_play(iSession);
+    return 0;
 }
 #endif
 
@@ -60,167 +60,167 @@
  */
 void xs_about(void)
 {
-	GtkWidget *about_vbox1;
-	GtkWidget *about_frame;
-	GtkWidget *about_logo;
-	GdkPixmap *about_logo_pixmap = NULL, *about_logo_mask = NULL;
-	GtkWidget *about_scrwin;
-	GtkWidget *about_text;
-	GtkWidget *alignment6;
-	GtkWidget *about_close;
-	gchar tmpStr[64];
+    GtkWidget *about_vbox1;
+    GtkWidget *about_frame;
+    GtkWidget *about_logo;
+    GdkPixmap *about_logo_pixmap = NULL, *about_logo_mask = NULL;
+    GtkWidget *about_scrwin;
+    GtkWidget *about_text;
+    GtkWidget *alignment6;
+    GtkWidget *about_close;
+    gchar tmpStr[64];
 
-	/* Check if there already is an open about window */
-	if (xs_aboutwin != NULL) {
+    /* Check if there already is an open about window */
+    if (xs_aboutwin != NULL) {
                 gtk_window_present(GTK_WINDOW(xs_aboutwin));
-		return;
-	}
+        return;
+    }
 
-	/* No, create one ... */
-	xs_aboutwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-	gtk_window_set_type_hint(GTK_WINDOW(xs_aboutwin), GDK_WINDOW_TYPE_HINT_DIALOG);
-	gtk_widget_set_name(xs_aboutwin, "xs_aboutwin");
-	gtk_object_set_data(GTK_OBJECT(xs_aboutwin), "xs_aboutwin", xs_aboutwin);
-	g_snprintf(tmpStr, sizeof(tmpStr), _("About %s"), XS_PACKAGE_STRING);
-	gtk_window_set_title(GTK_WINDOW(xs_aboutwin), tmpStr);
-	gtk_window_set_default_size(GTK_WINDOW(xs_aboutwin), 350, -1);
+    /* No, create one ... */
+    xs_aboutwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+    gtk_window_set_type_hint(GTK_WINDOW(xs_aboutwin), GDK_WINDOW_TYPE_HINT_DIALOG);
+    gtk_widget_set_name(xs_aboutwin, "xs_aboutwin");
+    gtk_object_set_data(GTK_OBJECT(xs_aboutwin), "xs_aboutwin", xs_aboutwin);
+    g_snprintf(tmpStr, sizeof(tmpStr), _("About %s"), XS_PACKAGE_STRING);
+    gtk_window_set_title(GTK_WINDOW(xs_aboutwin), tmpStr);
+    gtk_window_set_default_size(GTK_WINDOW(xs_aboutwin), 350, -1);
 
-	XS_SIGNAL_CONNECT(xs_aboutwin, "delete_event", xs_about_delete, NULL);
+    XS_SIGNAL_CONNECT(xs_aboutwin, "delete_event", xs_about_delete, NULL);
 
-	about_vbox1 = gtk_vbox_new(FALSE, 0);
-	gtk_widget_set_name(about_vbox1, "about_vbox1");
-	gtk_widget_ref(about_vbox1);
-	gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_vbox1", about_vbox1,
-				 (GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(about_vbox1);
-	gtk_container_add(GTK_CONTAINER(xs_aboutwin), about_vbox1);
+    about_vbox1 = gtk_vbox_new(FALSE, 0);
+    gtk_widget_set_name(about_vbox1, "about_vbox1");
+    gtk_widget_ref(about_vbox1);
+    gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_vbox1", about_vbox1,
+                 (GtkDestroyNotify) gtk_widget_unref);
+    gtk_widget_show(about_vbox1);
+    gtk_container_add(GTK_CONTAINER(xs_aboutwin), about_vbox1);
 
 #ifdef HAVE_THEMETUNE
-	about_frame = gtk_button_new();
+    about_frame = gtk_button_new();
 #else
-	about_frame = gtk_frame_new(NULL);
+    about_frame = gtk_frame_new(NULL);
 #endif
-	gtk_widget_set_name(about_frame, "about_frame");
-	gtk_widget_ref(about_frame);
-	gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_frame", about_frame,
-				 (GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(about_frame);
-	gtk_box_pack_start(GTK_BOX(about_vbox1), about_frame, FALSE, FALSE, 0);
-	gtk_container_set_border_width(GTK_CONTAINER(about_frame), 4);
+    gtk_widget_set_name(about_frame, "about_frame");
+    gtk_widget_ref(about_frame);
+    gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_frame", about_frame,
+                 (GtkDestroyNotify) gtk_widget_unref);
+    gtk_widget_show(about_frame);
+    gtk_box_pack_start(GTK_BOX(about_vbox1), about_frame, FALSE, FALSE, 0);
+    gtk_container_set_border_width(GTK_CONTAINER(about_frame), 4);
 
 #ifdef HAVE_THEMETUNE
-	gtk_signal_connect(GTK_OBJECT(about_frame), "clicked", GTK_SIGNAL_FUNC(xs_about_theme), NULL);
+    gtk_signal_connect(GTK_OBJECT(about_frame), "clicked", GTK_SIGNAL_FUNC(xs_about_theme), NULL);
 #else
-	gtk_frame_set_shadow_type(GTK_FRAME(about_frame), GTK_SHADOW_OUT);
+    gtk_frame_set_shadow_type(GTK_FRAME(about_frame), GTK_SHADOW_OUT);
 #endif
 
-	/* Create the Gdk data for logo pixmap */
-	gtk_widget_realize(xs_aboutwin);
-	about_logo_pixmap = gdk_pixmap_create_from_xpm_d(
-		xs_aboutwin->window, &about_logo_mask,
-		NULL, (gchar **) xmms_sid_logo_xpm);
+    /* Create the Gdk data for logo pixmap */
+    gtk_widget_realize(xs_aboutwin);
+    about_logo_pixmap = gdk_pixmap_create_from_xpm_d(
+        xs_aboutwin->window, &about_logo_mask,
+        NULL, (gchar **) xmms_sid_logo_xpm);
 
-	about_logo = gtk_pixmap_new(about_logo_pixmap, about_logo_mask);
+    about_logo = gtk_pixmap_new(about_logo_pixmap, about_logo_mask);
 
-	/* Create logo widget */
-	gtk_widget_set_name(about_logo, "about_logo");
-	gtk_widget_ref(about_logo);
-	gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_logo", about_logo,
-		(GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(about_logo);
-	gtk_container_add(GTK_CONTAINER(about_frame), about_logo);
-	gtk_misc_set_padding(GTK_MISC(about_logo), 0, 6);
+    /* Create logo widget */
+    gtk_widget_set_name(about_logo, "about_logo");
+    gtk_widget_ref(about_logo);
+    gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_logo", about_logo,
+        (GtkDestroyNotify) gtk_widget_unref);
+    gtk_widget_show(about_logo);
+    gtk_container_add(GTK_CONTAINER(about_frame), about_logo);
+    gtk_misc_set_padding(GTK_MISC(about_logo), 0, 6);
 
-	about_scrwin = gtk_scrolled_window_new(NULL, NULL);
-	gtk_widget_set_name(about_scrwin, "about_scrwin");
-	gtk_widget_ref(about_scrwin);
-	gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_scrwin", about_scrwin,
-		(GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(about_scrwin);
-	gtk_box_pack_start(GTK_BOX(about_vbox1), about_scrwin, TRUE, TRUE, 0);
-	gtk_container_set_border_width(GTK_CONTAINER(about_scrwin), 8);
-	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(about_scrwin),
-		GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
+    about_scrwin = gtk_scrolled_window_new(NULL, NULL);
+    gtk_widget_set_name(about_scrwin, "about_scrwin");
+    gtk_widget_ref(about_scrwin);
+    gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_scrwin", about_scrwin,
+        (GtkDestroyNotify) gtk_widget_unref);
+    gtk_widget_show(about_scrwin);
+    gtk_box_pack_start(GTK_BOX(about_vbox1), about_scrwin, TRUE, TRUE, 0);
+    gtk_container_set_border_width(GTK_CONTAINER(about_scrwin), 8);
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(about_scrwin),
+        GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
 
-	about_text = gtk_text_view_new();
-	gtk_widget_set_name(about_text, "about_text");
-	gtk_widget_ref(about_text);
-	gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_text", about_text,
-		(GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(about_text);
-	gtk_container_add(GTK_CONTAINER(about_scrwin), about_text);
-	gtk_widget_set_usize(about_text, -2, 100);
-	gtk_text_buffer_set_text(
-	GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(about_text))),
-			"\n"
-			"This release of XMMS-SID is dedicated to\n"
-			"            Richard Joseph\n"
-			"                  and\n"
-			"      Lauri Sipilä (aka Xaztur/PWP)\n"
-			" - Now gone, but forever in our hearts -\n"
-			"\n"
-			"\n"
-			"(C) Copyright 1999-2007\n"
-			"\tTecnic Software productions (TNSP)\n"
-			"\tLicensed under GNU GPL v2\n"
-			"\n"
-			"Programming and design\n"
-			"\tMatti 'ccr' Hämäläinen\n"
-			"\n"
+    about_text = gtk_text_view_new();
+    gtk_widget_set_name(about_text, "about_text");
+    gtk_widget_ref(about_text);
+    gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_text", about_text,
+        (GtkDestroyNotify) gtk_widget_unref);
+    gtk_widget_show(about_text);
+    gtk_container_add(GTK_CONTAINER(about_scrwin), about_text);
+    gtk_widget_set_usize(about_text, -2, 100);
+    gtk_text_buffer_set_text(
+    GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(about_text))),
+            "\n"
+            "This release of XMMS-SID is dedicated to\n"
+            "            Richard Joseph\n"
+            "                  and\n"
+            "      Lauri Sipilä (aka Xaztur/PWP)\n"
+            " - Now gone, but forever in our hearts -\n"
+            "\n"
+            "\n"
+            "(C) Copyright 1999-2007\n"
+            "\tTecnic Software productions (TNSP)\n"
+            "\tLicensed under GNU GPL v2\n"
+            "\n"
+            "Programming and design\n"
+            "\tMatti 'ccr' Hämäläinen\n"
+            "\n"
 #ifdef HAVE_SIDPLAY1
-			"libSIDPlay1 created by\n"
-			"\tMichael Schwendt\n" "\n"
+            "libSIDPlay1 created by\n"
+            "\tMichael Schwendt\n" "\n"
 #endif
 #ifdef HAVE_SIDPLAY2
-			"libSIDPlay2 and reSID created by\n"
-			"\tSimon White, Dag Lem,\n"
-			"\tMichael Schwendt and rest.\n"
-			"\n"
+            "libSIDPlay2 and reSID created by\n"
+            "\tSimon White, Dag Lem,\n"
+            "\tMichael Schwendt and rest.\n"
+            "\n"
 #endif
 #ifdef HAVE_THEMETUNE
-			"\"Kummatti City\", theme of XMMS-SID 0.8\n"
-			"\tby Ari 'Agemixer' Yliaho\n"
-			"\t(C) Copyright 1998 Scallop\n"
-			"\t(Refer to README for license)\n" "\n"
+            "\"Kummatti City\", theme of XMMS-SID 0.8\n"
+            "\tby Ari 'Agemixer' Yliaho\n"
+            "\t(C) Copyright 1998 Scallop\n"
+            "\t(Refer to README for license)\n" "\n"
 #endif
-			"Original XMMS-SID (v0.4) by\n" "\tWillem Monsuwe\n" "\n"
+            "Original XMMS-SID (v0.4) by\n" "\tWillem Monsuwe\n" "\n"
 
-			"Greetings fly out to ...\n"
-			"\tEveryone at #Linux.Fi, #Fireball,\n"
-			"\t#TNSP and #c-64 of IRCNet, #xmms\n"
-			"\tof Freenode.net.\n"
-			"\n"
-			"\tDekadence, PWP, Byterapers,\n"
-			"\tmfx, Unique, Fairlight, iSO,\n"
-			"\tWrath Designs, Padua, Extend,\n"
-			"\tPHn, Creators, Cosine, tAAt,\n"
-			"\tViruz, Crest and Skalaria.\n" "\n"
+            "Greetings fly out to ...\n"
+            "\tEveryone at #Linux.Fi, #Fireball,\n"
+            "\t#TNSP and #c-64 of IRCNet, #xmms\n"
+            "\tof Freenode.net.\n"
+            "\n"
+            "\tDekadence, PWP, Byterapers,\n"
+            "\tmfx, Unique, Fairlight, iSO,\n"
+            "\tWrath Designs, Padua, Extend,\n"
+            "\tPHn, Creators, Cosine, tAAt,\n"
+            "\tViruz, Crest and Skalaria.\n" "\n"
 
-			"Special thanks\n"
-			"\tGerfried 'Alfie' Fuchs\n"
-			"\tAndreas 'mrsid' Varga\n"
-			"\tAll the betatesters.\n"
-			"\tAll the users!\n", -1);
+            "Special thanks\n"
+            "\tGerfried 'Alfie' Fuchs\n"
+            "\tAndreas 'mrsid' Varga\n"
+            "\tAll the betatesters.\n"
+            "\tAll the users!\n", -1);
 
-	alignment6 = gtk_alignment_new(0.5, 0.5, 0.18, 1);
-	gtk_widget_set_name(alignment6, "alignment6");
-	gtk_widget_ref(alignment6);
-	gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "alignment6", alignment6,
-		 (GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(alignment6);
-	gtk_box_pack_start(GTK_BOX(about_vbox1), alignment6, FALSE, TRUE, 0);
-	gtk_container_set_border_width(GTK_CONTAINER(alignment6), 8);
+    alignment6 = gtk_alignment_new(0.5, 0.5, 0.18, 1);
+    gtk_widget_set_name(alignment6, "alignment6");
+    gtk_widget_ref(alignment6);
+    gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "alignment6", alignment6,
+         (GtkDestroyNotify) gtk_widget_unref);
+    gtk_widget_show(alignment6);
+    gtk_box_pack_start(GTK_BOX(about_vbox1), alignment6, FALSE, TRUE, 0);
+    gtk_container_set_border_width(GTK_CONTAINER(alignment6), 8);
 
-	about_close = gtk_button_new_with_label(_("Close"));
-	gtk_widget_set_name(about_close, "about_close");
-	gtk_widget_ref(about_close);
-	gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_close", about_close,
-		 (GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(about_close);
-	gtk_container_add(GTK_CONTAINER(alignment6), about_close);
-	GTK_WIDGET_SET_FLAGS(about_close, GTK_CAN_DEFAULT);
+    about_close = gtk_button_new_with_label(_("Close"));
+    gtk_widget_set_name(about_close, "about_close");
+    gtk_widget_ref(about_close);
+    gtk_object_set_data_full(GTK_OBJECT(xs_aboutwin), "about_close", about_close,
+         (GtkDestroyNotify) gtk_widget_unref);
+    gtk_widget_show(about_close);
+    gtk_container_add(GTK_CONTAINER(alignment6), about_close);
+    GTK_WIDGET_SET_FLAGS(about_close, GTK_CAN_DEFAULT);
 
-	XS_SIGNAL_CONNECT(about_close, "clicked", xs_about_ok, NULL);
+    XS_SIGNAL_CONNECT(about_close, "clicked", xs_about_ok, NULL);
 
-	gtk_widget_show(xs_aboutwin);
+    gtk_widget_show(xs_aboutwin);
 }
--- a/src/sid/xs_config.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_config.c	Thu Apr 03 00:52:14 2008 +0300
@@ -24,32 +24,32 @@
 
 #ifdef AUDACIOUS_PLUGIN
 #include <audacious/plugin.h>
-#define XS_CONFIG_FILE		ConfigDb
-#define XS_CONFIG_OPEN		aud_cfg_db_open
-#define XS_CONFIG_FREE		aud_cfg_db_close
+#define XS_CONFIG_FILE        ConfigDb
+#define XS_CONFIG_OPEN        aud_cfg_db_open
+#define XS_CONFIG_FREE        aud_cfg_db_close
 
-#define XS_CFG_SET_STRING	aud_cfg_db_set_string
-#define XS_CFG_SET_FLOAT	aud_cfg_db_set_float
-#define XS_CFG_SET_INT		aud_cfg_db_set_int
-#define XS_CFG_SET_BOOL		aud_cfg_db_set_bool
-#define XS_CFG_GET_STRING	aud_cfg_db_get_string
-#define XS_CFG_GET_FLOAT	aud_cfg_db_get_float
-#define XS_CFG_GET_INT		aud_cfg_db_get_int
-#define XS_CFG_GET_BOOL		aud_cfg_db_get_bool
+#define XS_CFG_SET_STRING    aud_cfg_db_set_string
+#define XS_CFG_SET_FLOAT    aud_cfg_db_set_float
+#define XS_CFG_SET_INT        aud_cfg_db_set_int
+#define XS_CFG_SET_BOOL        aud_cfg_db_set_bool
+#define XS_CFG_GET_STRING    aud_cfg_db_get_string
+#define XS_CFG_GET_FLOAT    aud_cfg_db_get_float
+#define XS_CFG_GET_INT        aud_cfg_db_get_int
+#define XS_CFG_GET_BOOL        aud_cfg_db_get_bool
 #else
 #include <xmms/configfile.h>
-#define XS_CONFIG_FILE		ConfigFile
-#define XS_CONFIG_OPEN		xmms_cfg_open_default_file
-#define XS_CONFIG_FREE		xmms_cfg_free
+#define XS_CONFIG_FILE        ConfigFile
+#define XS_CONFIG_OPEN        xmms_cfg_open_default_file
+#define XS_CONFIG_FREE        xmms_cfg_free
 
-#define XS_CFG_SET_STRING	xmms_cfg_write_string
-#define XS_CFG_SET_FLOAT	xmms_cfg_write_float
-#define XS_CFG_SET_INT		xmms_cfg_write_int
-#define XS_CFG_SET_BOOL		xmms_cfg_write_boolean
-#define XS_CFG_GET_STRING	xmms_cfg_read_string
-#define XS_CFG_GET_FLOAT	xmms_cfg_read_float
-#define XS_CFG_GET_INT		xmms_cfg_read_int
-#define XS_CFG_GET_BOOL		xmms_cfg_read_boolean
+#define XS_CFG_SET_STRING    xmms_cfg_write_string
+#define XS_CFG_SET_FLOAT    xmms_cfg_write_float
+#define XS_CFG_SET_INT        xmms_cfg_write_int
+#define XS_CFG_SET_BOOL        xmms_cfg_write_boolean
+#define XS_CFG_GET_STRING    xmms_cfg_read_string
+#define XS_CFG_GET_FLOAT    xmms_cfg_read_float
+#define XS_CFG_GET_INT        xmms_cfg_read_int
+#define XS_CFG_GET_BOOL        xmms_cfg_read_boolean
 #endif
 #include <stdio.h>
 #include <ctype.h>
@@ -62,20 +62,20 @@
  * Global widgets
  */
 static GtkWidget *xs_configwin = NULL,
-	*xs_sldb_fileselector = NULL,
-	*xs_stil_fileselector = NULL,
-	*xs_hvsc_selector = NULL,
-	*xs_filt_importselector = NULL,
-	*xs_filt_exportselector = NULL;
+    *xs_sldb_fileselector = NULL,
+    *xs_stil_fileselector = NULL,
+    *xs_hvsc_selector = NULL,
+    *xs_filt_importselector = NULL,
+    *xs_filt_exportselector = NULL;
 
-#define LUW(x)	lookup_widget(xs_configwin, x)
+#define LUW(x)    lookup_widget(xs_configwin, x)
 
 /* Samplerates
  */
 static const gchar *xs_samplerates_table[] = {
-	"8000", "11025", "22050", 
-	"44100", "48000", "64000",
-	"96000"
+    "8000", "11025", "22050", 
+    "44100", "48000", "64000",
+    "96000"
 };
 
 static const gint xs_nsamplerates_table = (sizeof(xs_samplerates_table) / sizeof(xs_samplerates_table[0]));
@@ -87,116 +87,116 @@
 struct t_xs_cfg xs_cfg;
 
 static t_xs_cfg_item xs_cfgtable[] = {
-{ CTYPE_INT,	&xs_cfg.audioBitsPerSample,	"audioBitsPerSample" },
-{ CTYPE_INT,	&xs_cfg.audioChannels,		"audioChannels" },
-{ CTYPE_INT,	&xs_cfg.audioFrequency,		"audioFrequency" },
+{ CTYPE_INT,    &xs_cfg.audioBitsPerSample,    "audioBitsPerSample" },
+{ CTYPE_INT,    &xs_cfg.audioChannels,        "audioChannels" },
+{ CTYPE_INT,    &xs_cfg.audioFrequency,        "audioFrequency" },
 
-{ CTYPE_BOOL,	&xs_cfg.mos8580,		"mos8580" },
-{ CTYPE_BOOL,	&xs_cfg.forceModel,		"forceModel" },
-{ CTYPE_BOOL,	&xs_cfg.emulateFilters,		"emulateFilters" },
-{ CTYPE_FLOAT,	&xs_cfg.sid1FilterFs,		"filterFs" },
-{ CTYPE_FLOAT,	&xs_cfg.sid1FilterFm,		"filterFm" },
-{ CTYPE_FLOAT,	&xs_cfg.sid1FilterFt,		"filterFt" },
-{ CTYPE_INT,	&xs_cfg.memoryMode,		"memoryMode" },
-{ CTYPE_INT,	&xs_cfg.clockSpeed,		"clockSpeed" },
-{ CTYPE_BOOL,	&xs_cfg.forceSpeed,		"forceSpeed" },
+{ CTYPE_BOOL,    &xs_cfg.mos8580,        "mos8580" },
+{ CTYPE_BOOL,    &xs_cfg.forceModel,        "forceModel" },
+{ CTYPE_BOOL,    &xs_cfg.emulateFilters,        "emulateFilters" },
+{ CTYPE_FLOAT,    &xs_cfg.sid1FilterFs,        "filterFs" },
+{ CTYPE_FLOAT,    &xs_cfg.sid1FilterFm,        "filterFm" },
+{ CTYPE_FLOAT,    &xs_cfg.sid1FilterFt,        "filterFt" },
+{ CTYPE_INT,    &xs_cfg.memoryMode,        "memoryMode" },
+{ CTYPE_INT,    &xs_cfg.clockSpeed,        "clockSpeed" },
+{ CTYPE_BOOL,    &xs_cfg.forceSpeed,        "forceSpeed" },
 
-{ CTYPE_INT,	&xs_cfg.playerEngine,		"playerEngine" },
+{ CTYPE_INT,    &xs_cfg.playerEngine,        "playerEngine" },
 
-{ CTYPE_INT,	&xs_cfg.sid2Builder,		"sid2Builder" },
-{ CTYPE_INT,	&xs_cfg.sid2OptLevel,		"sid2OptLevel" },
-{ CTYPE_INT,	&xs_cfg.sid2NFilterPresets,	"sid2NFilterPresets" },
+{ CTYPE_INT,    &xs_cfg.sid2Builder,        "sid2Builder" },
+{ CTYPE_INT,    &xs_cfg.sid2OptLevel,        "sid2OptLevel" },
+{ CTYPE_INT,    &xs_cfg.sid2NFilterPresets,    "sid2NFilterPresets" },
 
-{ CTYPE_BOOL,	&xs_cfg.oversampleEnable,	"oversampleEnable" },
-{ CTYPE_INT,	&xs_cfg.oversampleFactor,	"oversampleFactor" },
+{ CTYPE_BOOL,    &xs_cfg.oversampleEnable,    "oversampleEnable" },
+{ CTYPE_INT,    &xs_cfg.oversampleFactor,    "oversampleFactor" },
 
-{ CTYPE_BOOL,	&xs_cfg.playMaxTimeEnable,	"playMaxTimeEnable" },
-{ CTYPE_BOOL,	&xs_cfg.playMaxTimeUnknown,	"playMaxTimeUnknown" },
-{ CTYPE_INT,	&xs_cfg.playMaxTime,		"playMaxTime" },
-{ CTYPE_BOOL,	&xs_cfg.playMinTimeEnable,	"playMinTimeEnable" },
-{ CTYPE_INT,	&xs_cfg.playMinTime,		"playMinTime" },
-{ CTYPE_BOOL,	&xs_cfg.songlenDBEnable,	"songlenDBEnable" },
-{ CTYPE_STR,	&xs_cfg.songlenDBPath,		"songlenDBPath" },
+{ CTYPE_BOOL,    &xs_cfg.playMaxTimeEnable,    "playMaxTimeEnable" },
+{ CTYPE_BOOL,    &xs_cfg.playMaxTimeUnknown,    "playMaxTimeUnknown" },
+{ CTYPE_INT,    &xs_cfg.playMaxTime,        "playMaxTime" },
+{ CTYPE_BOOL,    &xs_cfg.playMinTimeEnable,    "playMinTimeEnable" },
+{ CTYPE_INT,    &xs_cfg.playMinTime,        "playMinTime" },
+{ CTYPE_BOOL,    &xs_cfg.songlenDBEnable,    "songlenDBEnable" },
+{ CTYPE_STR,    &xs_cfg.songlenDBPath,        "songlenDBPath" },
 
-{ CTYPE_BOOL,	&xs_cfg.stilDBEnable,		"stilDBEnable" },
-{ CTYPE_STR,	&xs_cfg.stilDBPath,		"stilDBPath" },
-{ CTYPE_STR,	&xs_cfg.hvscPath,		"hvscPath" },
+{ CTYPE_BOOL,    &xs_cfg.stilDBEnable,        "stilDBEnable" },
+{ CTYPE_STR,    &xs_cfg.stilDBPath,        "stilDBPath" },
+{ CTYPE_STR,    &xs_cfg.hvscPath,        "hvscPath" },
 
 #ifndef AUDACIOUS_PLUGIN
-{ CTYPE_INT,	&xs_cfg.subsongControl,		"subsongControl" },
-{ CTYPE_BOOL,	&xs_cfg.detectMagic,		"detectMagic" },
+{ CTYPE_INT,    &xs_cfg.subsongControl,        "subsongControl" },
+{ CTYPE_BOOL,    &xs_cfg.detectMagic,        "detectMagic" },
 #endif
 
-{ CTYPE_BOOL,	&xs_cfg.titleOverride,		"titleOverride" },
-{ CTYPE_STR,	&xs_cfg.titleFormat,		"titleFormat" },
+{ CTYPE_BOOL,    &xs_cfg.titleOverride,        "titleOverride" },
+{ CTYPE_STR,    &xs_cfg.titleFormat,        "titleFormat" },
 
-{ CTYPE_BOOL,	&xs_cfg.subAutoEnable,		"subAutoEnable" },
-{ CTYPE_BOOL,	&xs_cfg.subAutoMinOnly,		"subAutoMinOnly" },
-{ CTYPE_INT,	&xs_cfg.subAutoMinTime,		"subAutoMinTime" },
+{ CTYPE_BOOL,    &xs_cfg.subAutoEnable,        "subAutoEnable" },
+{ CTYPE_BOOL,    &xs_cfg.subAutoMinOnly,        "subAutoMinOnly" },
+{ CTYPE_INT,    &xs_cfg.subAutoMinTime,        "subAutoMinTime" },
 };
 
 static const gint xs_cfgtable_max = (sizeof(xs_cfgtable) / sizeof(t_xs_cfg_item));
 
 
 static t_xs_wid_item xs_widtable[] = {
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_res_16bit",	&xs_cfg.audioBitsPerSample,	XS_RES_16BIT },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_res_8bit",		&xs_cfg.audioBitsPerSample,	XS_RES_8BIT },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_chn_mono",		&xs_cfg.audioChannels,		XS_CHN_MONO },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_chn_stereo",	&xs_cfg.audioChannels,		XS_CHN_STEREO },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_chn_autopan",	&xs_cfg.audioChannels,		XS_CHN_AUTOPAN },
-{ WTYPE_COMBO,	CTYPE_INT,	"cfg_samplerate",	&xs_cfg.audioFrequency,		XS_AUDIO_FREQ },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_oversample",	&xs_cfg.oversampleEnable,	0 },
-{ WTYPE_SPIN,	CTYPE_INT,	"cfg_oversample_factor",&xs_cfg.oversampleFactor,	0 },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_res_16bit",    &xs_cfg.audioBitsPerSample,    XS_RES_16BIT },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_res_8bit",        &xs_cfg.audioBitsPerSample,    XS_RES_8BIT },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_chn_mono",        &xs_cfg.audioChannels,        XS_CHN_MONO },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_chn_stereo",    &xs_cfg.audioChannels,        XS_CHN_STEREO },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_chn_autopan",    &xs_cfg.audioChannels,        XS_CHN_AUTOPAN },
+{ WTYPE_COMBO,    CTYPE_INT,    "cfg_samplerate",    &xs_cfg.audioFrequency,        XS_AUDIO_FREQ },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_oversample",    &xs_cfg.oversampleEnable,    0 },
+{ WTYPE_SPIN,    CTYPE_INT,    "cfg_oversample_factor",&xs_cfg.oversampleFactor,    0 },
 
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_sidplay1",	&xs_cfg.playerEngine,		XS_ENG_SIDPLAY1 },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_sidplay2",	&xs_cfg.playerEngine,		XS_ENG_SIDPLAY2 },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_mem_real",	&xs_cfg.memoryMode,		XS_MPU_REAL },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_mem_banksw",	&xs_cfg.memoryMode,		XS_MPU_BANK_SWITCHING },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_mem_transrom",	&xs_cfg.memoryMode,		XS_MPU_TRANSPARENT_ROM },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_mem_playsid",	&xs_cfg.memoryMode,		XS_MPU_PLAYSID_ENVIRONMENT },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_sidplay1",    &xs_cfg.playerEngine,        XS_ENG_SIDPLAY1 },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_sidplay2",    &xs_cfg.playerEngine,        XS_ENG_SIDPLAY2 },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_mem_real",    &xs_cfg.memoryMode,        XS_MPU_REAL },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_mem_banksw",    &xs_cfg.memoryMode,        XS_MPU_BANK_SWITCHING },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_mem_transrom",    &xs_cfg.memoryMode,        XS_MPU_TRANSPARENT_ROM },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_mem_playsid",    &xs_cfg.memoryMode,        XS_MPU_PLAYSID_ENVIRONMENT },
 
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_mos8580",	&xs_cfg.mos8580,		0 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_sid_force",	&xs_cfg.forceModel,		0 },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_clock_ntsc",	&xs_cfg.clockSpeed,		XS_CLOCK_NTSC },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_clock_pal",	&xs_cfg.clockSpeed,		XS_CLOCK_PAL },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_clock_force",	&xs_cfg.forceSpeed,		0 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_sp2_opt",	&xs_cfg.sid2OptLevel,		0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_emu_mos8580",    &xs_cfg.mos8580,        0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_emu_sid_force",    &xs_cfg.forceModel,        0 },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_clock_ntsc",    &xs_cfg.clockSpeed,        XS_CLOCK_NTSC },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_clock_pal",    &xs_cfg.clockSpeed,        XS_CLOCK_PAL },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_emu_clock_force",    &xs_cfg.forceSpeed,        0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_emu_sp2_opt",    &xs_cfg.sid2OptLevel,        0 },
 
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_sp2_resid",	&xs_cfg.sid2Builder,		XS_BLD_RESID },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_emu_sp2_hardsid",	&xs_cfg.sid2Builder,		XS_BLD_HARDSID },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_sp2_resid",    &xs_cfg.sid2Builder,        XS_BLD_RESID },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_emu_sp2_hardsid",    &xs_cfg.sid2Builder,        XS_BLD_HARDSID },
 
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_emu_filters",	&xs_cfg.emulateFilters,		0 },
-{ WTYPE_SCALE,	CTYPE_FLOAT,	"cfg_sp1_filter_fs",	&xs_cfg.sid1FilterFs,		0 },
-{ WTYPE_SCALE,	CTYPE_FLOAT,	"cfg_sp1_filter_fm",	&xs_cfg.sid1FilterFm,		0 },
-{ WTYPE_SCALE,	CTYPE_FLOAT,	"cfg_sp1_filter_ft",	&xs_cfg.sid1FilterFt,		0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_emu_filters",    &xs_cfg.emulateFilters,        0 },
+{ WTYPE_SCALE,    CTYPE_FLOAT,    "cfg_sp1_filter_fs",    &xs_cfg.sid1FilterFs,        0 },
+{ WTYPE_SCALE,    CTYPE_FLOAT,    "cfg_sp1_filter_fm",    &xs_cfg.sid1FilterFm,        0 },
+{ WTYPE_SCALE,    CTYPE_FLOAT,    "cfg_sp1_filter_ft",    &xs_cfg.sid1FilterFt,        0 },
 
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_maxtime_enable",	&xs_cfg.playMaxTimeEnable,	0 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_maxtime_unknown",	&xs_cfg.playMaxTimeUnknown,	0 },
-{ WTYPE_SPIN,	CTYPE_INT,	"cfg_maxtime",		&xs_cfg.playMaxTime,		0 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_mintime_enable",	&xs_cfg.playMinTimeEnable,	0 },
-{ WTYPE_SPIN,	CTYPE_INT,	"cfg_mintime",		&xs_cfg.playMinTime,		0 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_sld_enable",	&xs_cfg.songlenDBEnable,	0 },
-{ WTYPE_TEXT,	CTYPE_STR,	"cfg_sld_dbpath",	&xs_cfg.songlenDBPath,		0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_maxtime_enable",    &xs_cfg.playMaxTimeEnable,    0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_maxtime_unknown",    &xs_cfg.playMaxTimeUnknown,    0 },
+{ WTYPE_SPIN,    CTYPE_INT,    "cfg_maxtime",        &xs_cfg.playMaxTime,        0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_mintime_enable",    &xs_cfg.playMinTimeEnable,    0 },
+{ WTYPE_SPIN,    CTYPE_INT,    "cfg_mintime",        &xs_cfg.playMinTime,        0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_sld_enable",    &xs_cfg.songlenDBEnable,    0 },
+{ WTYPE_TEXT,    CTYPE_STR,    "cfg_sld_dbpath",    &xs_cfg.songlenDBPath,        0 },
 
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_stil_enable",	&xs_cfg.stilDBEnable,		0 },
-{ WTYPE_TEXT,	CTYPE_STR,	"cfg_stil_dbpath",	&xs_cfg.stilDBPath,		0 },
-{ WTYPE_TEXT,	CTYPE_STR,	"cfg_hvsc_path",	&xs_cfg.hvscPath,		0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_stil_enable",    &xs_cfg.stilDBEnable,        0 },
+{ WTYPE_TEXT,    CTYPE_STR,    "cfg_stil_dbpath",    &xs_cfg.stilDBPath,        0 },
+{ WTYPE_TEXT,    CTYPE_STR,    "cfg_hvsc_path",    &xs_cfg.hvscPath,        0 },
 
 #ifndef AUDACIOUS_PLUGIN
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_subctrl_none",	&xs_cfg.subsongControl,		XS_SSC_NONE },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_subctrl_seek",	&xs_cfg.subsongControl,		XS_SSC_SEEK },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_subctrl_popup",	&xs_cfg.subsongControl,		XS_SSC_POPUP },
-{ WTYPE_BGROUP,	CTYPE_INT,	"cfg_subctrl_patch",	&xs_cfg.subsongControl,		XS_SSC_PATCH },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_subctrl_none",    &xs_cfg.subsongControl,        XS_SSC_NONE },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_subctrl_seek",    &xs_cfg.subsongControl,        XS_SSC_SEEK },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_subctrl_popup",    &xs_cfg.subsongControl,        XS_SSC_POPUP },
+{ WTYPE_BGROUP,    CTYPE_INT,    "cfg_subctrl_patch",    &xs_cfg.subsongControl,        XS_SSC_PATCH },
 
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_detectmagic",	&xs_cfg.detectMagic,		0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_detectmagic",    &xs_cfg.detectMagic,        0 },
 #endif
 
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_ftitle_override",	&xs_cfg.titleOverride,		0 },
-{ WTYPE_TEXT,	CTYPE_STR,	"cfg_ftitle_format",	&xs_cfg.titleFormat,		0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_ftitle_override",    &xs_cfg.titleOverride,        0 },
+{ WTYPE_TEXT,    CTYPE_STR,    "cfg_ftitle_format",    &xs_cfg.titleFormat,        0 },
 
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_subauto_enable",	&xs_cfg.subAutoEnable,		0 },
-{ WTYPE_BUTTON,	CTYPE_BOOL,	"cfg_subauto_min_only",	&xs_cfg.subAutoMinOnly,		0 },
-{ WTYPE_SPIN,	CTYPE_INT,	"cfg_subauto_mintime",	&xs_cfg.subAutoMinTime,		0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_subauto_enable",    &xs_cfg.subAutoEnable,        0 },
+{ WTYPE_BUTTON,    CTYPE_BOOL,    "cfg_subauto_min_only",    &xs_cfg.subAutoMinOnly,        0 },
+{ WTYPE_SPIN,    CTYPE_INT,    "cfg_subauto_mintime",    &xs_cfg.subAutoMinTime,        0 },
 };
 
 static const gint xs_widtable_max = (sizeof(xs_widtable) / sizeof(t_xs_wid_item));
@@ -206,49 +206,49 @@
  */
 void xs_init_configuration(void)
 {
-	/* Lock configuration mutex */
-	XSDEBUG("initializing configuration ...\n");
-	XS_MUTEX_LOCK(xs_cfg);
+    /* Lock configuration mutex */
+    XSDEBUG("initializing configuration ...\n");
+    XS_MUTEX_LOCK(xs_cfg);
 
-	memset(&xs_cfg, 0, sizeof(xs_cfg));
-	
-	/* Initialize values with sensible defaults */
-	xs_cfg.audioBitsPerSample = XS_RES_16BIT;
-	xs_cfg.audioChannels = XS_CHN_MONO;
-	xs_cfg.audioFrequency = XS_AUDIO_FREQ;
+    memset(&xs_cfg, 0, sizeof(xs_cfg));
+    
+    /* Initialize values with sensible defaults */
+    xs_cfg.audioBitsPerSample = XS_RES_16BIT;
+    xs_cfg.audioChannels = XS_CHN_MONO;
+    xs_cfg.audioFrequency = XS_AUDIO_FREQ;
 
-	xs_cfg.mos8580 = FALSE;
-	xs_cfg.forceModel = FALSE;
+    xs_cfg.mos8580 = FALSE;
+    xs_cfg.forceModel = FALSE;
 
-	/* Filter values */
-	xs_cfg.emulateFilters = TRUE;
-	xs_cfg.sid1FilterFs = XS_SIDPLAY1_FS;
-	xs_cfg.sid1FilterFm = XS_SIDPLAY1_FM;
-	xs_cfg.sid1FilterFt = XS_SIDPLAY1_FT;
+    /* Filter values */
+    xs_cfg.emulateFilters = TRUE;
+    xs_cfg.sid1FilterFs = XS_SIDPLAY1_FS;
+    xs_cfg.sid1FilterFm = XS_SIDPLAY1_FM;
+    xs_cfg.sid1FilterFt = XS_SIDPLAY1_FT;
 
 #ifdef HAVE_SIDPLAY2
-	xs_cfg.playerEngine = XS_ENG_SIDPLAY2;
-	xs_cfg.memoryMode = XS_MPU_REAL;
+    xs_cfg.playerEngine = XS_ENG_SIDPLAY2;
+    xs_cfg.memoryMode = XS_MPU_REAL;
 #else
 #ifdef HAVE_SIDPLAY1
-	xs_cfg.playerEngine = XS_ENG_SIDPLAY1;
-	xs_cfg.memoryMode = XS_MPU_BANK_SWITCHING;
+    xs_cfg.playerEngine = XS_ENG_SIDPLAY1;
+    xs_cfg.memoryMode = XS_MPU_BANK_SWITCHING;
 #else
 #error This should not happen! No emulator engines configured in!
 #endif
 #endif
 
-	xs_cfg.clockSpeed = XS_CLOCK_PAL;
-	xs_cfg.forceSpeed = FALSE;
+    xs_cfg.clockSpeed = XS_CLOCK_PAL;
+    xs_cfg.forceSpeed = FALSE;
 
-	xs_cfg.sid2OptLevel = 0;
-	xs_cfg.sid2NFilterPresets = 0;
+    xs_cfg.sid2OptLevel = 0;
+    xs_cfg.sid2NFilterPresets = 0;
 
 #ifdef HAVE_RESID_BUILDER
-	xs_cfg.sid2Builder = XS_BLD_RESID;
+    xs_cfg.sid2Builder = XS_BLD_RESID;
 #else
 #ifdef HAVE_HARDSID_BUILDER
-	xs_cfg.sid2Builder = XS_BLD_HARDSID;
+    xs_cfg.sid2Builder = XS_BLD_HARDSID;
 #else
 #ifdef HAVE_SIDPLAY2
 #error This should not happen! No supported SIDPlay2 builders configured in!
@@ -256,47 +256,47 @@
 #endif
 #endif
 
-	xs_cfg.oversampleEnable = FALSE;
-	xs_cfg.oversampleFactor = XS_MIN_OVERSAMPLE;
+    xs_cfg.oversampleEnable = FALSE;
+    xs_cfg.oversampleFactor = XS_MIN_OVERSAMPLE;
 
-	xs_cfg.playMaxTimeEnable = FALSE;
-	xs_cfg.playMaxTimeUnknown = FALSE;
-	xs_cfg.playMaxTime = 150;
+    xs_cfg.playMaxTimeEnable = FALSE;
+    xs_cfg.playMaxTimeUnknown = FALSE;
+    xs_cfg.playMaxTime = 150;
 
-	xs_cfg.playMinTimeEnable = FALSE;
-	xs_cfg.playMinTime = 15;
+    xs_cfg.playMinTimeEnable = FALSE;
+    xs_cfg.playMinTime = 15;
 
-	xs_cfg.songlenDBEnable = FALSE;
-	xs_pstrcpy(&xs_cfg.songlenDBPath, "~/C64Music/Songlengths.txt");
+    xs_cfg.songlenDBEnable = FALSE;
+    xs_pstrcpy(&xs_cfg.songlenDBPath, "~/C64Music/Songlengths.txt");
 
-	xs_cfg.stilDBEnable = FALSE;
-	xs_pstrcpy(&xs_cfg.stilDBPath, "~/C64Music/DOCUMENTS/STIL.txt");
-	xs_pstrcpy(&xs_cfg.hvscPath, "~/C64Music");
+    xs_cfg.stilDBEnable = FALSE;
+    xs_pstrcpy(&xs_cfg.stilDBPath, "~/C64Music/DOCUMENTS/STIL.txt");
+    xs_pstrcpy(&xs_cfg.hvscPath, "~/C64Music");
 
 #if defined(HAVE_SONG_POSITION) && !defined(AUDACIOUS_PLUGIN)
-	xs_cfg.subsongControl = XS_SSC_PATCH;
+    xs_cfg.subsongControl = XS_SSC_PATCH;
 #else
-	xs_cfg.subsongControl = XS_SSC_POPUP;
+    xs_cfg.subsongControl = XS_SSC_POPUP;
 #endif
-	xs_cfg.detectMagic = FALSE;
+    xs_cfg.detectMagic = FALSE;
 
 #ifndef HAVE_XMMSEXTRA
-	xs_cfg.titleOverride = TRUE;
+    xs_cfg.titleOverride = TRUE;
 #endif
 
 #ifdef AUDACIOUS_PLUGIN
-	xs_pstrcpy(&xs_cfg.titleFormat, "${artist} - ${title} (${copyright}) <${subsong-id}/${subsong-num}> [${sid-model}/${sid-speed}]");
+    xs_pstrcpy(&xs_cfg.titleFormat, "${artist} - ${title} (${copyright}) <${subsong-id}/${subsong-num}> [${sid-model}/${sid-speed}]");
 #else
-	xs_pstrcpy(&xs_cfg.titleFormat, "%p - %t (%c) <%n/%N> [%m/%C]");
+    xs_pstrcpy(&xs_cfg.titleFormat, "%p - %t (%c) <%n/%N> [%m/%C]");
 #endif
 
-	xs_cfg.subAutoEnable = FALSE;
-	xs_cfg.subAutoMinOnly = TRUE;
-	xs_cfg.subAutoMinTime = 15;
+    xs_cfg.subAutoEnable = FALSE;
+    xs_cfg.subAutoMinOnly = TRUE;
+    xs_cfg.subAutoMinTime = 15;
 
 
-	/* Unlock the configuration */
-	XS_MUTEX_UNLOCK(xs_cfg);
+    /* Unlock the configuration */
+    XS_MUTEX_UNLOCK(xs_cfg);
 }
 
 
@@ -306,84 +306,84 @@
 
 static gboolean xs_filter_load_into(XS_CONFIG_FILE *cfg, gint nFilter, t_xs_sid2_filter *pResult)
 {
-	gchar tmpKey[64], *tmpStr;
-	gint i, j;
+    gchar tmpKey[64], *tmpStr;
+    gint i, j;
 
-	/* Get fields from config */
-	g_snprintf(tmpKey, sizeof(tmpKey), "filter%dNPoints", nFilter);
-	if (!XS_CFG_GET_INT(cfg, XS_CONFIG_IDENT, tmpKey, &(pResult->npoints)))
-		return FALSE;
-	
-	g_snprintf(tmpKey, sizeof(tmpKey), "filter%dName", nFilter);
-	if (!XS_CFG_GET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, &tmpStr))
-		return FALSE;
-	
-	pResult->name = g_strdup(tmpStr);
-	if (pResult->name == NULL) {
-		g_free(pResult);
-		return FALSE;
-	}
-	
-	g_snprintf(tmpKey, sizeof(tmpKey), "filter%dPoints", nFilter);
-	if (!XS_CFG_GET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, &tmpStr))
-		return FALSE;
-	
-	for (i = 0, j = 0; i < pResult->npoints; i++, j += XS_FITEM) {
-		if (sscanf(&tmpStr[j], "%4x%4x",
-			&(pResult->points[i].x),
-			&(pResult->points[i].y)) != 2)
-			return FALSE;
-	}
-	
-	return TRUE;
+    /* Get fields from config */
+    g_snprintf(tmpKey, sizeof(tmpKey), "filter%dNPoints", nFilter);
+    if (!XS_CFG_GET_INT(cfg, XS_CONFIG_IDENT, tmpKey, &(pResult->npoints)))
+        return FALSE;
+    
+    g_snprintf(tmpKey, sizeof(tmpKey), "filter%dName", nFilter);
+    if (!XS_CFG_GET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, &tmpStr))
+        return FALSE;
+    
+    pResult->name = g_strdup(tmpStr);
+    if (pResult->name == NULL) {
+        g_free(pResult);
+        return FALSE;
+    }
+    
+    g_snprintf(tmpKey, sizeof(tmpKey), "filter%dPoints", nFilter);
+    if (!XS_CFG_GET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, &tmpStr))
+        return FALSE;
+    
+    for (i = 0, j = 0; i < pResult->npoints; i++, j += XS_FITEM) {
+        if (sscanf(&tmpStr[j], "%4x%4x",
+            &(pResult->points[i].x),
+            &(pResult->points[i].y)) != 2)
+            return FALSE;
+    }
+    
+    return TRUE;
 }
 
 
 static t_xs_sid2_filter * xs_filter_load(XS_CONFIG_FILE *cfg, gint nFilter)
 {
-	t_xs_sid2_filter *pResult;
-	
-	/* Allocate filter struct */
-	if ((pResult = g_malloc0(sizeof(t_xs_sid2_filter))) == NULL)
-		return NULL;
-	
-	if (!xs_filter_load_into(cfg, nFilter, pResult)) {
-		g_free(pResult);
-		return NULL;
-	} else
-		return pResult;
+    t_xs_sid2_filter *pResult;
+    
+    /* Allocate filter struct */
+    if ((pResult = g_malloc0(sizeof(t_xs_sid2_filter))) == NULL)
+        return NULL;
+    
+    if (!xs_filter_load_into(cfg, nFilter, pResult)) {
+        g_free(pResult);
+        return NULL;
+    } else
+        return pResult;
 }
 
 #if 0
 static gboolean xs_filter_save(XS_CONFIG_FILE *cfg, t_xs_sid2_filter *pFilter, gint nFilter)
 {
-	gchar *tmpValue, tmpKey[64];
-	gint i, j;
-	
-	/* Allocate memory for value string */
-	tmpValue = g_malloc(sizeof(gchar) * XS_FITEM * (pFilter->npoints + 1));
-	if (tmpValue == NULL)
-		return FALSE;
-	
-	/* Make value string */
-	for (i = 0, j = 0; i < pFilter->npoints; i++, j += XS_FITEM) {
-		g_snprintf(&tmpValue[j], XS_FITEM+1, "%04x%04x",
-			pFilter->points[i].x,
-			pFilter->points[i].y);
-	}
-	
-	/* Write into the configuration */
-	g_snprintf(tmpKey, sizeof(tmpKey), "filter%dName", nFilter);
-	XS_CFG_SET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, pFilter->name);
-	
-	g_snprintf(tmpKey, sizeof(tmpKey), "filter%dNPoints", nFilter);
-	XS_CFG_SET_INT(cfg, XS_CONFIG_IDENT, tmpKey, pFilter->npoints);
+    gchar *tmpValue, tmpKey[64];
+    gint i, j;
+    
+    /* Allocate memory for value string */
+    tmpValue = g_malloc(sizeof(gchar) * XS_FITEM * (pFilter->npoints + 1));
+    if (tmpValue == NULL)
+        return FALSE;
+    
+    /* Make value string */
+    for (i = 0, j = 0; i < pFilter->npoints; i++, j += XS_FITEM) {
+        g_snprintf(&tmpValue[j], XS_FITEM+1, "%04x%04x",
+            pFilter->points[i].x,
+            pFilter->points[i].y);
+    }
+    
+    /* Write into the configuration */
+    g_snprintf(tmpKey, sizeof(tmpKey), "filter%dName", nFilter);
+    XS_CFG_SET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, pFilter->name);
+    
+    g_snprintf(tmpKey, sizeof(tmpKey), "filter%dNPoints", nFilter);
+    XS_CFG_SET_INT(cfg, XS_CONFIG_IDENT, tmpKey, pFilter->npoints);
 
-	g_snprintf(tmpKey, sizeof(tmpKey), "filter%dPoints", nFilter);
-	XS_CFG_SET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, tmpValue);
-	
-	g_free(tmpValue);
-	return TRUE;
+    g_snprintf(tmpKey, sizeof(tmpKey), "filter%dPoints", nFilter);
+    XS_CFG_SET_STRING(cfg, XS_CONFIG_IDENT, tmpKey, tmpValue);
+    
+    g_free(tmpValue);
+    return TRUE;
 }
 #endif
 
@@ -392,203 +392,203 @@
  */
 static gboolean xs_fgetitem(gchar *inLine, size_t *linePos, gchar sep, gchar *tmpStr, size_t tmpMax)
 {
-	size_t i;
-	for (i = 0; i < tmpMax && inLine[*linePos] &&
-		!isspace(inLine[*linePos]) &&
-		inLine[*linePos] != sep; i++, (*linePos)++)
-		tmpStr[i] = inLine[*linePos];
-	tmpStr[i] = 0;
-	xs_findnext(inLine, linePos);
-	return (inLine[*linePos] == sep);
+    size_t i;
+    for (i = 0; i < tmpMax && inLine[*linePos] &&
+        !isspace(inLine[*linePos]) &&
+        inLine[*linePos] != sep; i++, (*linePos)++)
+        tmpStr[i] = inLine[*linePos];
+    tmpStr[i] = 0;
+    xs_findnext(inLine, linePos);
+    return (inLine[*linePos] == sep);
 }
 
 static gboolean xs_filters_import(const gchar *pcFilename, t_xs_sid2_filter **pFilters, gint *nFilters)
 {
-	FILE *inFile;
-	gchar inLine[XS_BUF_SIZE], tmpStr[XS_BUF_SIZE];
-	gchar *sectName = NULL;
-	gboolean sectBegin;
-	size_t lineNum, i;
-	t_xs_sid2_filter *tmpFilter;
+    FILE *inFile;
+    gchar inLine[XS_BUF_SIZE], tmpStr[XS_BUF_SIZE];
+    gchar *sectName = NULL;
+    gboolean sectBegin;
+    size_t lineNum, i;
+    t_xs_sid2_filter *tmpFilter;
 
 fprintf(stderr, "xs_filters_import(%s)\n", pcFilename);
 
-	if ((inFile = fopen(pcFilename, "ra")) == NULL)
-		return FALSE;
+    if ((inFile = fopen(pcFilename, "ra")) == NULL)
+        return FALSE;
 
 fprintf(stderr, "importing...\n");
-	
-	sectBegin = FALSE;
-	lineNum = 0;
-	while (fgets(inLine, XS_BUF_SIZE, inFile) != NULL) {
-		size_t linePos = 0;
-		lineNum++;
-		
-		xs_findnext(inLine, &linePos);
-		if (isalpha(inLine[linePos]) && sectBegin) {
-			/* A new key/value pair */
-			if (!xs_fgetitem(inLine, &linePos, '=', tmpStr, XS_BUF_SIZE)) {
-				fprintf(stderr, "invalid line: %s [expect =']'", inLine);
-			} else {
-				linePos++;
-				xs_findnext(inLine, &linePos);
-				if (!strncmp(tmpStr, "points", 6)) {
-					fprintf(stderr, "points=%s\n", &inLine[linePos]);
-				} else if (!strncmp(tmpStr, "point", 5)) {
-				} else if (!strncmp(tmpStr, "type", 4)) {
-				} else {
-					fprintf(stderr, "warning: ukn def: %s @ %s\n",
-						tmpStr, sectName);
-				}
-			}
-		} else if (inLine[linePos] == '[') {
-			/* Check for existing section */
-			if (sectBegin) {
-				/* Submit definition */
-				fprintf(stderr, "filter ends: %s\n", sectName);
-				if ((tmpFilter = g_malloc0(sizeof(t_xs_sid2_filter))) == NULL) {
-					fprintf(stderr, "could not allocate ..\n");
-				} else {
-					
-				}
-				g_free(sectName);
-			}
-			
-			/* New filter(?) section starts */
-			linePos++;
-			for (i = 0; i < XS_BUF_SIZE && inLine[linePos] && inLine[linePos] != ']'; i++, linePos++)
-				tmpStr[i] = inLine[linePos];
-			tmpStr[i] = 0;
-			
-			if (inLine[linePos] != ']') {
-				fprintf(stderr, "invalid! expected ']': %s\n", inLine);
-			} else {
-				sectName = strdup(tmpStr);
-				fprintf(stderr, "filter: %s\n", sectName);
-				sectBegin = TRUE;
-			}
-		} else if ((inLine[linePos] != ';') && (inLine[linePos] != 0)) {
-			/* Syntax error */
-			fprintf(stderr, "syntax error: %s\n", inLine);
-		}
-	}
-	
-	fclose(inFile);
-	return TRUE;
+    
+    sectBegin = FALSE;
+    lineNum = 0;
+    while (fgets(inLine, XS_BUF_SIZE, inFile) != NULL) {
+        size_t linePos = 0;
+        lineNum++;
+        
+        xs_findnext(inLine, &linePos);
+        if (isalpha(inLine[linePos]) && sectBegin) {
+            /* A new key/value pair */
+            if (!xs_fgetitem(inLine, &linePos, '=', tmpStr, XS_BUF_SIZE)) {
+                fprintf(stderr, "invalid line: %s [expect =']'", inLine);
+            } else {
+                linePos++;
+                xs_findnext(inLine, &linePos);
+                if (!strncmp(tmpStr, "points", 6)) {
+                    fprintf(stderr, "points=%s\n", &inLine[linePos]);
+                } else if (!strncmp(tmpStr, "point", 5)) {
+                } else if (!strncmp(tmpStr, "type", 4)) {
+                } else {
+                    fprintf(stderr, "warning: ukn def: %s @ %s\n",
+                        tmpStr, sectName);
+                }
+            }
+        } else if (inLine[linePos] == '[') {
+            /* Check for existing section */
+            if (sectBegin) {
+                /* Submit definition */
+                fprintf(stderr, "filter ends: %s\n", sectName);
+                if ((tmpFilter = g_malloc0(sizeof(t_xs_sid2_filter))) == NULL) {
+                    fprintf(stderr, "could not allocate ..\n");
+                } else {
+                    
+                }
+                g_free(sectName);
+            }
+            
+            /* New filter(?) section starts */
+            linePos++;
+            for (i = 0; i < XS_BUF_SIZE && inLine[linePos] && inLine[linePos] != ']'; i++, linePos++)
+                tmpStr[i] = inLine[linePos];
+            tmpStr[i] = 0;
+            
+            if (inLine[linePos] != ']') {
+                fprintf(stderr, "invalid! expected ']': %s\n", inLine);
+            } else {
+                sectName = strdup(tmpStr);
+                fprintf(stderr, "filter: %s\n", sectName);
+                sectBegin = TRUE;
+            }
+        } else if ((inLine[linePos] != ';') && (inLine[linePos] != 0)) {
+            /* Syntax error */
+            fprintf(stderr, "syntax error: %s\n", inLine);
+        }
+    }
+    
+    fclose(inFile);
+    return TRUE;
 }
 
 
 static gboolean xs_filters_export(const gchar *pcFilename, t_xs_sid2_filter **pFilters, gint nFilters)
 {
-	FILE *outFile;
-	t_xs_sid2_filter *f;
-	gint n;
-	
-	/* Open/create the file */
-	if ((outFile = fopen(pcFilename, "wa")) == NULL)
-		return FALSE;
-	
-	/* Header */
-	fprintf(outFile,
-		"; SIDPlay2 compatible filter definition file\n"
-		"; Exported by " PACKAGE_STRING "\n\n");
-	
-	/* Write each filter spec in "INI"-style format */
-	for (n = 0; n < nFilters; n++) {
-		gint i;
-		f = pFilters[n];
-		
-		fprintf(outFile,
-		"[%s]\n"
-		"type=1\n"
-		"points=%d\n",
-		f->name, f->npoints);
-	
-		for (i = 0; i < f->npoints; i++) {
-			fprintf(outFile,
-			"point%d=%d,%d\n",
-			i + 1,
-			f->points[i].x,
-			f->points[i].y);
-		}
-	
-		fprintf(outFile, "\n");
-		f++;
-	}
-	
-	fclose(outFile);
-	return TRUE;
+    FILE *outFile;
+    t_xs_sid2_filter *f;
+    gint n;
+    
+    /* Open/create the file */
+    if ((outFile = fopen(pcFilename, "wa")) == NULL)
+        return FALSE;
+    
+    /* Header */
+    fprintf(outFile,
+        "; SIDPlay2 compatible filter definition file\n"
+        "; Exported by " PACKAGE_STRING "\n\n");
+    
+    /* Write each filter spec in "INI"-style format */
+    for (n = 0; n < nFilters; n++) {
+        gint i;
+        f = pFilters[n];
+        
+        fprintf(outFile,
+        "[%s]\n"
+        "type=1\n"
+        "points=%d\n",
+        f->name, f->npoints);
+    
+        for (i = 0; i < f->npoints; i++) {
+            fprintf(outFile,
+            "point%d=%d,%d\n",
+            i + 1,
+            f->points[i].x,
+            f->points[i].y);
+        }
+    
+        fprintf(outFile, "\n");
+        f++;
+    }
+    
+    fclose(outFile);
+    return TRUE;
 }
 
 /* Get the configuration (from file or default)
  */
 void xs_read_configuration(void)
 {
-	XS_CONFIG_FILE *cfg;
-	gint i;
-	gchar *tmpStr;
+    XS_CONFIG_FILE *cfg;
+    gint i;
+    gchar *tmpStr;
 
-	/* Try to open the XMMS configuration file  */
-	XS_MUTEX_LOCK(xs_cfg);
-	XSDEBUG("loading from config-file ...\n");
+    /* Try to open the XMMS configuration file  */
+    XS_MUTEX_LOCK(xs_cfg);
+    XSDEBUG("loading from config-file ...\n");
 
-	cfg = XS_CONFIG_OPEN();
+    cfg = XS_CONFIG_OPEN();
 
-	if (cfg == NULL) {
-		XSDEBUG("Could not open configuration, trying to write defaults...\n");
-		xs_write_configuration();
-		return;
-	}
+    if (cfg == NULL) {
+        XSDEBUG("Could not open configuration, trying to write defaults...\n");
+        xs_write_configuration();
+        return;
+    }
 
-	/* Read the new settings from XMMS configuration file */
-	for (i = 0; i < xs_cfgtable_max; i++) {
-		switch (xs_cfgtable[i].itemType) {
-		case CTYPE_INT:
-			XS_CFG_GET_INT(cfg, XS_CONFIG_IDENT,
-				xs_cfgtable[i].itemName,
-				(gint *) xs_cfgtable[i].itemData);
-			break;
+    /* Read the new settings from XMMS configuration file */
+    for (i = 0; i < xs_cfgtable_max; i++) {
+        switch (xs_cfgtable[i].itemType) {
+        case CTYPE_INT:
+            XS_CFG_GET_INT(cfg, XS_CONFIG_IDENT,
+                xs_cfgtable[i].itemName,
+                (gint *) xs_cfgtable[i].itemData);
+            break;
 
-		case CTYPE_BOOL:
-			XS_CFG_GET_BOOL(cfg, XS_CONFIG_IDENT,
-				xs_cfgtable[i].itemName,
-				(gboolean *) xs_cfgtable[i].itemData);
-			break;
+        case CTYPE_BOOL:
+            XS_CFG_GET_BOOL(cfg, XS_CONFIG_IDENT,
+                xs_cfgtable[i].itemName,
+                (gboolean *) xs_cfgtable[i].itemData);
+            break;
 
-		case CTYPE_FLOAT:
-			XS_CFG_GET_FLOAT(cfg, XS_CONFIG_IDENT,
-				xs_cfgtable[i].itemName,
-				(gfloat *) xs_cfgtable[i].itemData);
-			break;
-		
-		case CTYPE_STR:
-			if (XS_CFG_GET_STRING(cfg, XS_CONFIG_IDENT,
-				xs_cfgtable[i].itemName, (gchar **) &tmpStr)) {
-				xs_pstrcpy((gchar **) xs_cfgtable[i].itemData, tmpStr);
-				g_free(tmpStr);
-			}
-			break;
-		}
-	}
-	
-	/* Filters and presets are a special case */
-	xs_filter_load_into(cfg, 0, &xs_cfg.sid2Filter);
-	
-	if (xs_cfg.sid2NFilterPresets > 0) {
-		xs_cfg.sid2FilterPresets = g_malloc0(xs_cfg.sid2NFilterPresets * sizeof(t_xs_sid2_filter *));
-		if (!xs_cfg.sid2FilterPresets) {
-			xs_error("Allocation of sid2FilterPresets structure failed!\n");
-		} else {
-			for (i = 0; i < xs_cfg.sid2NFilterPresets; i++) {
-				xs_cfg.sid2FilterPresets[i] = xs_filter_load(cfg, i);
-			}
-		}
-	}
+        case CTYPE_FLOAT:
+            XS_CFG_GET_FLOAT(cfg, XS_CONFIG_IDENT,
+                xs_cfgtable[i].itemName,
+                (gfloat *) xs_cfgtable[i].itemData);
+            break;
+        
+        case CTYPE_STR:
+            if (XS_CFG_GET_STRING(cfg, XS_CONFIG_IDENT,
+                xs_cfgtable[i].itemName, (gchar **) &tmpStr)) {
+                xs_pstrcpy((gchar **) xs_cfgtable[i].itemData, tmpStr);
+                g_free(tmpStr);
+            }
+            break;
+        }
+    }
+    
+    /* Filters and presets are a special case */
+    xs_filter_load_into(cfg, 0, &xs_cfg.sid2Filter);
+    
+    if (xs_cfg.sid2NFilterPresets > 0) {
+        xs_cfg.sid2FilterPresets = g_malloc0(xs_cfg.sid2NFilterPresets * sizeof(t_xs_sid2_filter *));
+        if (!xs_cfg.sid2FilterPresets) {
+            xs_error("Allocation of sid2FilterPresets structure failed!\n");
+        } else {
+            for (i = 0; i < xs_cfg.sid2NFilterPresets; i++) {
+                xs_cfg.sid2FilterPresets[i] = xs_filter_load(cfg, i);
+            }
+        }
+    }
 
-	XS_CONFIG_FREE(cfg);
+    XS_CONFIG_FREE(cfg);
 
-	XS_MUTEX_UNLOCK(xs_cfg);
-	XSDEBUG("OK\n");
+    XS_MUTEX_UNLOCK(xs_cfg);
+    XSDEBUG("OK\n");
 }
 
 
@@ -596,58 +596,58 @@
  */
 gint xs_write_configuration(void)
 {
-	XS_CONFIG_FILE *cfg;
-	gint i;
+    XS_CONFIG_FILE *cfg;
+    gint i;
 
-	XSDEBUG("writing configuration ...\n");
-	XS_MUTEX_LOCK(xs_cfg);
+    XSDEBUG("writing configuration ...\n");
+    XS_MUTEX_LOCK(xs_cfg);
 
-	/* Try to open the XMMS configuration file  */
-	cfg = XS_CONFIG_OPEN();
+    /* Try to open the XMMS configuration file  */
+    cfg = XS_CONFIG_OPEN();
 
 #ifndef AUDACIOUS_PLUGIN
-	if (!cfg) cfg = xmms_cfg_new();
-	if (!cfg) return -1;
+    if (!cfg) cfg = xmms_cfg_new();
+    if (!cfg) return -1;
 #endif
 
-	/* Write the new settings to XMMS configuration file */
-	for (i = 0; i < xs_cfgtable_max; i++) {
-		switch (xs_cfgtable[i].itemType) {
-		case CTYPE_INT:
-			XS_CFG_SET_INT(cfg, XS_CONFIG_IDENT,
-				xs_cfgtable[i].itemName,
-				*(gint *) xs_cfgtable[i].itemData);
-			break;
+    /* Write the new settings to XMMS configuration file */
+    for (i = 0; i < xs_cfgtable_max; i++) {
+        switch (xs_cfgtable[i].itemType) {
+        case CTYPE_INT:
+            XS_CFG_SET_INT(cfg, XS_CONFIG_IDENT,
+                xs_cfgtable[i].itemName,
+                *(gint *) xs_cfgtable[i].itemData);
+            break;
 
-		case CTYPE_BOOL:
-			XS_CFG_SET_BOOL(cfg, XS_CONFIG_IDENT,
-				xs_cfgtable[i].itemName,
-				*(gboolean *) xs_cfgtable[i].itemData);
-			break;
+        case CTYPE_BOOL:
+            XS_CFG_SET_BOOL(cfg, XS_CONFIG_IDENT,
+                xs_cfgtable[i].itemName,
+                *(gboolean *) xs_cfgtable[i].itemData);
+            break;
 
-		case CTYPE_FLOAT:
-			XS_CFG_SET_FLOAT(cfg, XS_CONFIG_IDENT,
-				xs_cfgtable[i].itemName,
-				*(gfloat *) xs_cfgtable[i].itemData);
-			break;
+        case CTYPE_FLOAT:
+            XS_CFG_SET_FLOAT(cfg, XS_CONFIG_IDENT,
+                xs_cfgtable[i].itemName,
+                *(gfloat *) xs_cfgtable[i].itemData);
+            break;
 
-		case CTYPE_STR:
-			XS_CFG_SET_STRING(cfg, XS_CONFIG_IDENT,
-				xs_cfgtable[i].itemName,
-				*(gchar **) xs_cfgtable[i].itemData);
-			break;
-		}
-	}
+        case CTYPE_STR:
+            XS_CFG_SET_STRING(cfg, XS_CONFIG_IDENT,
+                xs_cfgtable[i].itemName,
+                *(gchar **) xs_cfgtable[i].itemData);
+            break;
+        }
+    }
 
 
 #ifndef AUDACIOUS_PLUGIN
-	xmms_cfg_write_default_file(cfg);
+    xmms_cfg_write_default_file(cfg);
 #endif
-	XS_CONFIG_FREE(cfg);
+    XS_CONFIG_FREE(cfg);
 
-	XS_MUTEX_UNLOCK(xs_cfg);
+    XS_MUTEX_UNLOCK(xs_cfg);
 
-	return 0;
+    return 0;
 }
 
 
@@ -660,97 +660,97 @@
  */
 void xs_cfg_ok(void)
 {
-	gint i;
-	gfloat tmpValue;
-	gint tmpInt;
-	const gchar *tmpStr;
+    gint i;
+    gfloat tmpValue;
+    gint tmpInt;
+    const gchar *tmpStr;
 
-	/* Get lock on configuration */
-	XS_MUTEX_LOCK(xs_cfg);
+    /* Get lock on configuration */
+    XS_MUTEX_LOCK(xs_cfg);
 
-	XSDEBUG("get data from widgets to config...\n");
+    XSDEBUG("get data from widgets to config...\n");
 
-	for (i = 0; i < xs_widtable_max; i++) {
-		switch (xs_widtable[i].widType) {
-		case WTYPE_BGROUP:
-			/* Check if toggle-button is active */
-			if (GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName))->active) {
-				/* Yes, set the constant value */
-				*((gint *) xs_widtable[i].itemData) = xs_widtable[i].itemSet;
-			}
-			break;
+    for (i = 0; i < xs_widtable_max; i++) {
+        switch (xs_widtable[i].widType) {
+        case WTYPE_BGROUP:
+            /* Check if toggle-button is active */
+            if (GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName))->active) {
+                /* Yes, set the constant value */
+                *((gint *) xs_widtable[i].itemData) = xs_widtable[i].itemSet;
+            }
+            break;
 
-		case WTYPE_COMBO:
-			/* Get text from text-widget */
-			tmpStr = gtk_entry_get_text(GTK_ENTRY(LUW(xs_widtable[i].widName)));
-			if (sscanf(tmpStr, "%d", &tmpInt) != 1)
-				tmpInt = xs_widtable[i].itemSet;
+        case WTYPE_COMBO:
+            /* Get text from text-widget */
+            tmpStr = gtk_entry_get_text(GTK_ENTRY(LUW(xs_widtable[i].widName)));
+            if (sscanf(tmpStr, "%d", &tmpInt) != 1)
+                tmpInt = xs_widtable[i].itemSet;
 
-			*((gint *) xs_widtable[i].itemData) = tmpInt;
-			break;
-			
-		case WTYPE_SPIN:
-		case WTYPE_SCALE:
-			/* Get the value */
-			switch (xs_widtable[i].widType) {
-			case WTYPE_SPIN:
-				tmpValue = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW(xs_widtable[i].widName)))->value;
-				break;
+            *((gint *) xs_widtable[i].itemData) = tmpInt;
+            break;
+            
+        case WTYPE_SPIN:
+        case WTYPE_SCALE:
+            /* Get the value */
+            switch (xs_widtable[i].widType) {
+            case WTYPE_SPIN:
+                tmpValue = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW(xs_widtable[i].widName)))->value;
+                break;
 
-			case WTYPE_SCALE:
-				tmpValue = gtk_range_get_adjustment(GTK_RANGE(LUW(xs_widtable[i].widName)))->value;
-				break;
-			
-			default:
-				tmpValue = -1;
-				break;
-			}
+            case WTYPE_SCALE:
+                tmpValue = gtk_range_get_adjustment(GTK_RANGE(LUW(xs_widtable[i].widName)))->value;
+                break;
+            
+            default:
+                tmpValue = -1;
+                break;
+            }
 
-			/* Set the value */
-			switch (xs_widtable[i].itemType) {
-			case CTYPE_INT:
-				*((gint *) xs_widtable[i].itemData) = (gint) tmpValue;
-				break;
+            /* Set the value */
+            switch (xs_widtable[i].itemType) {
+            case CTYPE_INT:
+                *((gint *) xs_widtable[i].itemData) = (gint) tmpValue;
+                break;
 
-			case CTYPE_FLOAT:
-				*((gfloat *) xs_widtable[i].itemData) = tmpValue;
-				break;
-			}
-			break;
+            case CTYPE_FLOAT:
+                *((gfloat *) xs_widtable[i].itemData) = tmpValue;
+                break;
+            }
+            break;
 
-		case WTYPE_BUTTON:
-			/* Check if toggle-button is active */
-			*((gboolean *) xs_widtable[i].itemData) =
-				(GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName))->active);
-			break;
+        case WTYPE_BUTTON:
+            /* Check if toggle-button is active */
+            *((gboolean *) xs_widtable[i].itemData) =
+                (GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName))->active);
+            break;
 
-		case WTYPE_TEXT:
-			/* Get text from text-widget */
-			xs_pstrcpy((gchar **) xs_widtable[i].itemData,
-				gtk_entry_get_text(GTK_ENTRY(LUW(xs_widtable[i].widName))));
-			break;
-		}
-	}
-	
-	/* Get filter settings */
-	/*
-	if (!xs_curve_get_points(XS_CURVE(LUW("")), &xs_cfg.sid2Filter.points, &xs_cfg.sid2Filter.npoints)) {
-		xs_error("Warning: Could not get filter curve widget points!\n");
-	}
-	*/
+        case WTYPE_TEXT:
+            /* Get text from text-widget */
+            xs_pstrcpy((gchar **) xs_widtable[i].itemData,
+                gtk_entry_get_text(GTK_ENTRY(LUW(xs_widtable[i].widName))));
+            break;
+        }
+    }
+    
+    /* Get filter settings */
+    /*
+    if (!xs_curve_get_points(XS_CURVE(LUW("")), &xs_cfg.sid2Filter.points, &xs_cfg.sid2Filter.npoints)) {
+        xs_error("Warning: Could not get filter curve widget points!\n");
+    }
+    */
 
-	/* Release lock */
-	XS_MUTEX_UNLOCK(xs_cfg);
-	
-	/* Close window */
-	gtk_widget_destroy(xs_configwin);
-	xs_configwin = NULL;
+    /* Release lock */
+    XS_MUTEX_UNLOCK(xs_cfg);
+    
+    /* Close window */
+    gtk_widget_destroy(xs_configwin);
+    xs_configwin = NULL;
 
-	/* Write settings */
-	xs_write_configuration();
+    /* Write settings */
+    xs_write_configuration();
 
-	/* Re-initialize */
-	xs_reinit();
+    /* Re-initialize */
+    xs_reinit();
 }
 
 
@@ -758,11 +758,11 @@
  */
 gboolean xs_confirmwin_delete(GtkWidget *widget, GdkEvent *event, gpointer user_data)
 {
-	(void) widget;
-	(void) event;
-	(void) user_data;
-	
-	return FALSE;
+    (void) widget;
+    (void) event;
+    (void) user_data;
+    
+    return FALSE;
 }
 
 
@@ -771,34 +771,34 @@
  */
 void xs_cfg_sldb_browse(GtkButton * button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
+    (void) button;
+    (void) user_data;
 
-	if (xs_sldb_fileselector != NULL) {
+    if (xs_sldb_fileselector != NULL) {
                 gtk_window_present(GTK_WINDOW(xs_sldb_fileselector));
-		return;
-	}
+        return;
+    }
 
-	xs_sldb_fileselector = create_xs_sldb_fs();
-	XS_MUTEX_LOCK(xs_cfg);
-	gtk_file_selection_set_filename(GTK_FILE_SELECTION(xs_sldb_fileselector), xs_cfg.songlenDBPath);
-	XS_MUTEX_UNLOCK(xs_cfg);
-	gtk_widget_show(xs_sldb_fileselector);
+    xs_sldb_fileselector = create_xs_sldb_fs();
+    XS_MUTEX_LOCK(xs_cfg);
+    gtk_file_selection_set_filename(GTK_FILE_SELECTION(xs_sldb_fileselector), xs_cfg.songlenDBPath);
+    XS_MUTEX_UNLOCK(xs_cfg);
+    gtk_widget_show(xs_sldb_fileselector);
 }
 
 
 void xs_sldb_fs_ok(GtkButton *button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
-	
-	/* Selection was accepted! */
-	gtk_entry_set_text(GTK_ENTRY(LUW("cfg_sld_dbpath")),
-			   gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_sldb_fileselector)));
+    (void) button;
+    (void) user_data;
+    
+    /* Selection was accepted! */
+    gtk_entry_set_text(GTK_ENTRY(LUW("cfg_sld_dbpath")),
+               gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_sldb_fileselector)));
 
-	/* Close file selector window */
-	gtk_widget_destroy(xs_sldb_fileselector);
-	xs_sldb_fileselector = NULL;
+    /* Close file selector window */
+    gtk_widget_destroy(xs_sldb_fileselector);
+    xs_sldb_fileselector = NULL;
 }
 
 XS_DEF_WINDOW_CLOSE(sldb_fs_cancel, sldb_fileselector)
@@ -809,34 +809,34 @@
  */
 void xs_cfg_stil_browse(GtkButton * button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
+    (void) button;
+    (void) user_data;
 
-	if (xs_stil_fileselector != NULL) {
+    if (xs_stil_fileselector != NULL) {
                 gtk_window_present(GTK_WINDOW(xs_stil_fileselector));
-		return;
-	}
+        return;
+    }
 
-	xs_stil_fileselector = create_xs_stil_fs();
-	XS_MUTEX_LOCK(xs_cfg);
-	gtk_file_selection_set_filename(GTK_FILE_SELECTION(xs_stil_fileselector), xs_cfg.stilDBPath);
-	XS_MUTEX_UNLOCK(xs_cfg);
-	gtk_widget_show(xs_stil_fileselector);
+    xs_stil_fileselector = create_xs_stil_fs();
+    XS_MUTEX_LOCK(xs_cfg);
+    gtk_file_selection_set_filename(GTK_FILE_SELECTION(xs_stil_fileselector), xs_cfg.stilDBPath);
+    XS_MUTEX_UNLOCK(xs_cfg);
+    gtk_widget_show(xs_stil_fileselector);
 }
 
 
 void xs_stil_fs_ok(GtkButton *button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
+    (void) button;
+    (void) user_data;
 
-	/* Selection was accepted! */
-	gtk_entry_set_text(GTK_ENTRY(LUW("cfg_stil_dbpath")),
-		gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_stil_fileselector)));
+    /* Selection was accepted! */
+    gtk_entry_set_text(GTK_ENTRY(LUW("cfg_stil_dbpath")),
+        gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_stil_fileselector)));
 
-	/* Close file selector window */
-	gtk_widget_destroy(xs_stil_fileselector);
-	xs_stil_fileselector = NULL;
+    /* Close file selector window */
+    gtk_widget_destroy(xs_stil_fileselector);
+    xs_stil_fileselector = NULL;
 }
 
 
@@ -848,34 +848,34 @@
  */
 void xs_cfg_hvsc_browse(GtkButton * button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
+    (void) button;
+    (void) user_data;
 
-	if (xs_hvsc_selector != NULL) {
+    if (xs_hvsc_selector != NULL) {
                 gtk_window_present(GTK_WINDOW(xs_hvsc_selector));
-		return;
-	}
+        return;
+    }
 
-	xs_hvsc_selector = create_xs_hvsc_fs();
-	XS_MUTEX_LOCK(xs_cfg);
-	gtk_file_selection_set_filename(GTK_FILE_SELECTION(xs_hvsc_selector), xs_cfg.hvscPath);
-	XS_MUTEX_UNLOCK(xs_cfg);
-	gtk_widget_show(xs_hvsc_selector);
+    xs_hvsc_selector = create_xs_hvsc_fs();
+    XS_MUTEX_LOCK(xs_cfg);
+    gtk_file_selection_set_filename(GTK_FILE_SELECTION(xs_hvsc_selector), xs_cfg.hvscPath);
+    XS_MUTEX_UNLOCK(xs_cfg);
+    gtk_widget_show(xs_hvsc_selector);
 }
 
 
 void xs_hvsc_fs_ok(GtkButton *button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
+    (void) button;
+    (void) user_data;
 
-	/* Selection was accepted! */
-	gtk_entry_set_text(GTK_ENTRY(LUW("cfg_hvsc_path")),
-		gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_hvsc_selector)));
+    /* Selection was accepted! */
+    gtk_entry_set_text(GTK_ENTRY(LUW("cfg_hvsc_path")),
+        gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_hvsc_selector)));
 
-	/* Close file selector window */
-	gtk_widget_destroy(xs_hvsc_selector);
-	xs_hvsc_selector = NULL;
+    /* Close file selector window */
+    gtk_widget_destroy(xs_hvsc_selector);
+    xs_hvsc_selector = NULL;
 }
 
 
@@ -887,155 +887,155 @@
  */
 void xs_cfg_sp1_filter_reset(GtkButton * button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
+    (void) button;
+    (void) user_data;
 
-	gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_sp1_filter_fs"))), XS_SIDPLAY1_FS);
-	gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_sp1_filter_fm"))), XS_SIDPLAY1_FM);
-	gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_sp1_filter_ft"))), XS_SIDPLAY1_FT);
+    gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_sp1_filter_fs"))), XS_SIDPLAY1_FS);
+    gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_sp1_filter_fm"))), XS_SIDPLAY1_FM);
+    gtk_adjustment_set_value(gtk_range_get_adjustment(GTK_RANGE(LUW("cfg_sp1_filter_ft"))), XS_SIDPLAY1_FT);
 }
 
 
 void xs_cfg_sp2_filter_update(XSCurve *curve, t_xs_sid2_filter *f)
 {
-	assert(curve);
-	assert(f);
-	
-	xs_curve_reset(curve);
-	xs_curve_set_range(curve, 0,0, XS_SIDPLAY2_NFPOINTS, XS_SIDPLAY2_FMAX);
-	if (!xs_curve_set_points(curve, f->points, f->npoints))
-		// FIXME
-		xs_error("Warning: Could not set filter curve widget points!\n");
+    assert(curve);
+    assert(f);
+    
+    xs_curve_reset(curve);
+    xs_curve_set_range(curve, 0,0, XS_SIDPLAY2_NFPOINTS, XS_SIDPLAY2_FMAX);
+    if (!xs_curve_set_points(curve, f->points, f->npoints))
+        // FIXME
+        xs_error("Warning: Could not set filter curve widget points!\n");
 }
 
 
 void xs_cfg_sp2_presets_update(void)
 {
-	GList *tmpList = NULL;
-	gint i;
-	
-	for (i = 0; i < xs_cfg.sid2NFilterPresets; i++) {
-		tmpList = g_list_append(tmpList,
-			(gpointer) xs_cfg.sid2FilterPresets[i]->name);
-	}
-	
-	gtk_combo_set_popdown_strings(GTK_COMBO(LUW("cfg_sp2_filter_combo")), tmpList);
-	g_list_free(tmpList);
+    GList *tmpList = NULL;
+    gint i;
+    
+    for (i = 0; i < xs_cfg.sid2NFilterPresets; i++) {
+        tmpList = g_list_append(tmpList,
+            (gpointer) xs_cfg.sid2FilterPresets[i]->name);
+    }
+    
+    gtk_combo_set_popdown_strings(GTK_COMBO(LUW("cfg_sp2_filter_combo")), tmpList);
+    g_list_free(tmpList);
 }
 
 
 void xs_cfg_sp2_filter_load(GtkButton *button, gpointer user_data)
 {
-	const gchar *tmpStr;
-	gint i, j;
-	
-	(void) button;
-	(void) user_data;
-	
-	XS_MUTEX_LOCK(xs_cfg);
-	
-	tmpStr = gtk_entry_get_text(GTK_ENTRY(LUW("cfg_sp2_filter_combo_entry")));
-	for (i = 0, j = -1; i < xs_cfg.sid2NFilterPresets; i++) {
-		if (!strcmp(tmpStr, xs_cfg.sid2FilterPresets[i]->name)) {
-			j = i;
-			break;
-		}
-	}
-	
-	if (j != -1) {
-		fprintf(stderr, "Updating from '%s'\n", tmpStr);
-		xs_cfg_sp2_filter_update(
-			XS_CURVE(LUW("cfg_sp2_filter_curve")),
-			xs_cfg.sid2FilterPresets[i]);
-	} else {
-		/* error/warning: no such filter preset */
-		fprintf(stderr, "No such filter preset '%s'!\n", tmpStr);
-	}
-	
-	XS_MUTEX_UNLOCK(xs_cfg);
+    const gchar *tmpStr;
+    gint i, j;
+    
+    (void) button;
+    (void) user_data;
+    
+    XS_MUTEX_LOCK(xs_cfg);
+    
+    tmpStr = gtk_entry_get_text(GTK_ENTRY(LUW("cfg_sp2_filter_combo_entry")));
+    for (i = 0, j = -1; i < xs_cfg.sid2NFilterPresets; i++) {
+        if (!strcmp(tmpStr, xs_cfg.sid2FilterPresets[i]->name)) {
+            j = i;
+            break;
+        }
+    }
+    
+    if (j != -1) {
+        fprintf(stderr, "Updating from '%s'\n", tmpStr);
+        xs_cfg_sp2_filter_update(
+            XS_CURVE(LUW("cfg_sp2_filter_curve")),
+            xs_cfg.sid2FilterPresets[i]);
+    } else {
+        /* error/warning: no such filter preset */
+        fprintf(stderr, "No such filter preset '%s'!\n", tmpStr);
+    }
+    
+    XS_MUTEX_UNLOCK(xs_cfg);
 }
 
 
 void xs_cfg_sp2_filter_save(GtkButton *button, gpointer user_data)
 {
-	/*
-	1) check if textentry matches any current filter name
-		yes) ask if saving over ok?
-		no) ...
-		
-	2) save current filter to the name		
-	*/
-	const gchar *tmpStr;
-	gint i, j;
-	
-	(void) button;
-	(void) user_data;
-	
-	XS_MUTEX_LOCK(xs_cfg);
-	
-	tmpStr = gtk_entry_get_text(GTK_ENTRY(LUW("cfg_sp2_filter_combo_entry")));
-	for (i = 0, j = -1; i < xs_cfg.sid2NFilterPresets; i++) {
-		if (!strcmp(tmpStr, xs_cfg.sid2FilterPresets[i]->name)) {
-			j = i;
-			break;
-		}
-	}
-	
-	if (j != -1) {
-		fprintf(stderr, "Found, confirm overwrite?\n");
-	}
-	
-	fprintf(stderr, "saving!\n");
-	
-	xs_cfg_sp2_presets_update();
-	
-	XS_MUTEX_UNLOCK(xs_cfg);
+    /*
+    1) check if textentry matches any current filter name
+        yes) ask if saving over ok?
+        no) ...
+        
+    2) save current filter to the name        
+    */
+    const gchar *tmpStr;
+    gint i, j;
+    
+    (void) button;
+    (void) user_data;
+    
+    XS_MUTEX_LOCK(xs_cfg);
+    
+    tmpStr = gtk_entry_get_text(GTK_ENTRY(LUW("cfg_sp2_filter_combo_entry")));
+    for (i = 0, j = -1; i < xs_cfg.sid2NFilterPresets; i++) {
+        if (!strcmp(tmpStr, xs_cfg.sid2FilterPresets[i]->name)) {
+            j = i;
+            break;
+        }
+    }
+    
+    if (j != -1) {
+        fprintf(stderr, "Found, confirm overwrite?\n");
+    }
+    
+    fprintf(stderr, "saving!\n");
+    
+    xs_cfg_sp2_presets_update();
+    
+    XS_MUTEX_UNLOCK(xs_cfg);
 }
 
 
 void xs_cfg_sp2_filter_delete(GtkButton *button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
-	/*
-	1) confirm
-	2) delete
-	*/
+    (void) button;
+    (void) user_data;
+    /*
+    1) confirm
+    2) delete
+    */
 }
 
 
 void xs_cfg_sp2_filter_import(GtkButton *button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
+    (void) button;
+    (void) user_data;
 
-	if (xs_filt_importselector != NULL) {
+    if (xs_filt_importselector != NULL) {
                 gtk_window_present(GTK_WINDOW(xs_filt_importselector));
-		return;
-	}
+        return;
+    }
 
-	xs_filt_importselector = create_xs_filter_import_fs();
-	gtk_widget_show(xs_filt_importselector);
+    xs_filt_importselector = create_xs_filter_import_fs();
+    gtk_widget_show(xs_filt_importselector);
 }
 
 
 void xs_filter_import_fs_ok(GtkButton *button, gpointer user_data)
 {
-	const gchar *tmpStr;
-	(void) button;
-	(void) user_data;
-	
-	XS_MUTEX_LOCK(xs_cfg);
+    const gchar *tmpStr;
+    (void) button;
+    (void) user_data;
+    
+    XS_MUTEX_LOCK(xs_cfg);
 
-	/* Selection was accepted! */
-	tmpStr = gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_filt_importselector));
-	xs_filters_import(tmpStr, xs_cfg.sid2FilterPresets, &xs_cfg.sid2NFilterPresets);
-	xs_cfg_sp2_presets_update();
+    /* Selection was accepted! */
+    tmpStr = gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_filt_importselector));
+    xs_filters_import(tmpStr, xs_cfg.sid2FilterPresets, &xs_cfg.sid2NFilterPresets);
+    xs_cfg_sp2_presets_update();
 
-	/* Close file selector window */
-	gtk_widget_destroy(xs_filt_importselector);
-	xs_filt_importselector = NULL;
-	XS_MUTEX_UNLOCK(xs_cfg);
+    /* Close file selector window */
+    gtk_widget_destroy(xs_filt_importselector);
+    xs_filt_importselector = NULL;
+    XS_MUTEX_UNLOCK(xs_cfg);
 }
 
 
@@ -1045,35 +1045,35 @@
 
 void xs_cfg_sp2_filter_export(GtkButton *button, gpointer user_data)
 {
-	(void) button;
-	(void) user_data;
+    (void) button;
+    (void) user_data;
 
-	if (xs_filt_exportselector != NULL) {
+    if (xs_filt_exportselector != NULL) {
                 gtk_window_present(GTK_WINDOW(xs_filt_exportselector));
-		return;
-	}
+        return;
+    }
 
-	xs_filt_exportselector = create_xs_filter_export_fs();
-	gtk_widget_show(xs_filt_exportselector);
+    xs_filt_exportselector = create_xs_filter_export_fs();
+    gtk_widget_show(xs_filt_exportselector);
 }
 
 
 void xs_filter_export_fs_ok(GtkButton *button, gpointer user_data)
 {
-	const gchar *tmpStr;
-	(void) button;
-	(void) user_data;
+    const gchar *tmpStr;
+    (void) button;
+    (void) user_data;
 
-	XS_MUTEX_LOCK(xs_cfg);
+    XS_MUTEX_LOCK(xs_cfg);
 
-	/* Selection was accepted! */
-	tmpStr = gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_filt_exportselector));
-	xs_filters_export(tmpStr, xs_cfg.sid2FilterPresets, xs_cfg.sid2NFilterPresets);
+    /* Selection was accepted! */
+    tmpStr = gtk_file_selection_get_filename(GTK_FILE_SELECTION(xs_filt_exportselector));
+    xs_filters_export(tmpStr, xs_cfg.sid2FilterPresets, xs_cfg.sid2NFilterPresets);
 
-	/* Close file selector window */
-	gtk_widget_destroy(xs_filt_exportselector);
-	xs_filt_exportselector = NULL;
-	XS_MUTEX_UNLOCK(xs_cfg);
+    /* Close file selector window */
+    gtk_widget_destroy(xs_filt_exportselector);
+    xs_filt_exportselector = NULL;
+    XS_MUTEX_UNLOCK(xs_cfg);
 }
 
 
@@ -1085,162 +1085,162 @@
  */
 void xs_cfg_emu_filters_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_filters_notebook"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_filters_notebook"), isActive);
 }
 
 
 void xs_cfg_ftitle_override_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_ftitle_box"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_ftitle_box"), isActive);
 }
 
 
 void xs_cfg_emu_sidplay1_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	(void) togglebutton;
-	(void) user_data;
+    (void) togglebutton;
+    (void) user_data;
 }
 
 
 void xs_cfg_emu_sidplay2_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_emu_mem_real"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_emu_mem_real"), isActive);
 
-	gtk_widget_set_sensitive(LUW("cfg_sidplay2_frame"), isActive);
-	gtk_widget_set_sensitive(LUW("cfg_emu_sp2_opt"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_sidplay2_frame"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_emu_sp2_opt"), isActive);
 
-	gtk_widget_set_sensitive(LUW("cfg_chn_autopan"), !isActive);
+    gtk_widget_set_sensitive(LUW("cfg_chn_autopan"), !isActive);
 
 #ifdef HAVE_RESID_BUILDER
-	gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), isActive);
 #else
-	gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), FALSE);
+    gtk_widget_set_sensitive(LUW("cfg_emu_sp2_resid"), FALSE);
 #endif
 
 #ifdef HAVE_HARDSID_BUILDER
-	gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), isActive);
 #else
-	gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), FALSE);
+    gtk_widget_set_sensitive(LUW("cfg_emu_sp2_hardsid"), FALSE);
 #endif
 }
 
 
 void xs_cfg_oversample_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_oversample_box"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_oversample_box"), isActive);
 }
 
 
 void xs_cfg_mintime_enable_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_mintime_box"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_mintime_box"), isActive);
 }
 
 
 void xs_cfg_maxtime_enable_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_maxtime_enable"))->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(LUW("cfg_maxtime_enable"))->active;
 
-	(void) togglebutton;
-	(void) user_data;
+    (void) togglebutton;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_maxtime_unknown"), isActive);
-	gtk_widget_set_sensitive(LUW("cfg_maxtime_box"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_maxtime_unknown"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_maxtime_box"), isActive);
 }
 
 
 void xs_cfg_sldb_enable_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_sld_box"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_sld_box"), isActive);
 }
 
 
 void xs_cfg_stil_enable_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_stil_box1"), isActive);
-	gtk_widget_set_sensitive(LUW("cfg_stil_box2"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_stil_box1"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_stil_box2"), isActive);
 }
 
 
 void xs_cfg_subauto_enable_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_subauto_min_only"), isActive);
-	gtk_widget_set_sensitive(LUW("cfg_subauto_box"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_subauto_min_only"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_subauto_box"), isActive);
 }
 
 
 void xs_cfg_subauto_min_only_toggled(GtkToggleButton * togglebutton, gpointer user_data)
 {
-	gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active &&
-		GTK_TOGGLE_BUTTON(LUW("cfg_subauto_enable"))->active;
+    gboolean isActive = GTK_TOGGLE_BUTTON(togglebutton)->active &&
+        GTK_TOGGLE_BUTTON(LUW("cfg_subauto_enable"))->active;
 
-	(void) user_data;
+    (void) user_data;
 
-	gtk_widget_set_sensitive(LUW("cfg_subauto_box"), isActive);
+    gtk_widget_set_sensitive(LUW("cfg_subauto_box"), isActive);
 }
 
 
 void xs_cfg_mintime_changed(GtkEditable * editable, gpointer user_data)
 {
-	gint tmpValue;
-	GtkAdjustment *tmpAdj;
+    gint tmpValue;
+    GtkAdjustment *tmpAdj;
 
-	(void) user_data;
+    (void) user_data;
 
-	tmpAdj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW("cfg_maxtime")));
+    tmpAdj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW("cfg_maxtime")));
 
-	tmpValue = (gint) gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(editable))->value;
+    tmpValue = (gint) gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(editable))->value;
 
-	if (tmpValue > tmpAdj->value)
-		gtk_adjustment_set_value(tmpAdj, tmpValue);
+    if (tmpValue > tmpAdj->value)
+        gtk_adjustment_set_value(tmpAdj, tmpValue);
 }
 
 
 void xs_cfg_maxtime_changed(GtkEditable * editable, gpointer user_data)
 {
-	gint tmpValue;
-	GtkAdjustment *tmpAdj;
+    gint tmpValue;
+    GtkAdjustment *tmpAdj;
 
-	(void) user_data;
+    (void) user_data;
 
-	tmpAdj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW("cfg_mintime")));
+    tmpAdj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(LUW("cfg_mintime")));
 
-	tmpValue = (gint) gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(editable))->value;
+    tmpValue = (gint) gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(editable))->value;
 
-	if (tmpValue < tmpAdj->value)
-		gtk_adjustment_set_value(tmpAdj, tmpValue);
+    if (tmpValue < tmpAdj->value)
+        gtk_adjustment_set_value(tmpAdj, tmpValue);
 }
 
 
@@ -1251,148 +1251,148 @@
  */
 void xs_configure(void)
 {
-	gint i;
-	gfloat tmpValue;
-	gchar tmpStr[64];
-	GList *tmpList = NULL;
-	GtkWidget *tmpCurve;
+    gint i;
+    gfloat tmpValue;
+    gchar tmpStr[64];
+    GList *tmpList = NULL;
+    GtkWidget *tmpCurve;
 
-	/* Check if the window already exists */
-	if (xs_configwin) {
+    /* Check if the window already exists */
+    if (xs_configwin) {
                 gtk_window_present(GTK_WINDOW(xs_configwin));
-		return;
-	}
+        return;
+    }
 
-	/* Create the window */
-	xs_configwin = create_xs_configwin();
-	
-	/* Get lock on configuration */
-	XS_MUTEX_LOCK(xs_cfg);
+    /* Create the window */
+    xs_configwin = create_xs_configwin();
+    
+    /* Get lock on configuration */
+    XS_MUTEX_LOCK(xs_cfg);
 
-	/* Add samplerates */
-	for (i = 0; i < xs_nsamplerates_table; i++) {
-		tmpList = g_list_append (tmpList,
-			(gpointer) xs_samplerates_table[i]);
-	}
-	gtk_combo_set_popdown_strings(GTK_COMBO(LUW("cfg_samplerate_combo")), tmpList);
-	g_list_free(tmpList);
-	
-	/* Create the custom filter curve widget for libSIDPlay2 */
-	xs_cfg_sp2_presets_update();
-	tmpCurve = xs_curve_new();
-	xs_cfg_sp2_filter_update(XS_CURVE(tmpCurve), &xs_cfg.sid2Filter);
-	gtk_widget_set_name(tmpCurve, "cfg_sp2_filter_curve");
-	gtk_widget_ref(tmpCurve);
-	gtk_object_set_data_full(GTK_OBJECT(xs_configwin),
-		"cfg_sp2_filter_curve", tmpCurve, (GtkDestroyNotify) gtk_widget_unref);
-	gtk_widget_show(tmpCurve);
-	gtk_container_add(GTK_CONTAINER(LUW("cfg_sp2_filter_frame")), tmpCurve);
+    /* Add samplerates */
+    for (i = 0; i < xs_nsamplerates_table; i++) {
+        tmpList = g_list_append (tmpList,
+            (gpointer) xs_samplerates_table[i]);
+    }
+    gtk_combo_set_popdown_strings(GTK_COMBO(LUW("cfg_samplerate_combo")), tmpList);
+    g_list_free(tmpList);
+    
+    /* Create the custom filter curve widget for libSIDPlay2 */
+    xs_cfg_sp2_presets_update();
+    tmpCurve = xs_curve_new();
+    xs_cfg_sp2_filter_update(XS_CURVE(tmpCurve), &xs_cfg.sid2Filter);
+    gtk_widget_set_name(tmpCurve, "cfg_sp2_filter_curve");
+    gtk_widget_ref(tmpCurve);
+    gtk_object_set_data_full(GTK_OBJECT(xs_configwin),
+        "cfg_sp2_filter_curve", tmpCurve, (GtkDestroyNotify) gtk_widget_unref);
+    gtk_widget_show(tmpCurve);
+    gtk_container_add(GTK_CONTAINER(LUW("cfg_sp2_filter_frame")), tmpCurve);
 
 
-	/* Based on available optional parts, gray out options */
+    /* Based on available optional parts, gray out options */
 #ifndef HAVE_SIDPLAY1
-	gtk_widget_set_sensitive(LUW("cfg_emu_sidplay1"), FALSE);
-	gtk_widget_set_sensitive(LUW("cfg_box_filter_sidplay1"), FALSE);
+    gtk_widget_set_sensitive(LUW("cfg_emu_sidplay1"), FALSE);
+    gtk_widget_set_sensitive(LUW("cfg_box_filter_sidplay1"), FALSE);
 #endif
 
 #ifndef HAVE_SIDPLAY2
-	gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2"), FALSE);
-	gtk_widget_set_sensitive(LUW("cfg_box_filter_sidplay2"), FALSE);
+    gtk_widget_set_sensitive(LUW("cfg_emu_sidplay2"), FALSE);
+    gtk_widget_set_sensitive(LUW("cfg_box_filter_sidplay2"), FALSE);
 #endif
 
-	gtk_widget_set_sensitive(LUW("cfg_resid_frame"), FALSE);
+    gtk_widget_set_sensitive(LUW("cfg_resid_frame"), FALSE);
 
 #if !defined(HAVE_XMMSEXTRA) && !defined(AUDACIOUS_PLUGIN)
-	gtk_widget_set_sensitive(LUW("cfg_ftitle_override"), FALSE);
-	xs_cfg.titleOverride = TRUE;
+    gtk_widget_set_sensitive(LUW("cfg_ftitle_override"), FALSE);
+    xs_cfg.titleOverride = TRUE;
 #endif
 
 #if !defined(HAVE_SONG_POSITION) && !defined(AUDACIOUS_PLUGIN)
-	gtk_widget_set_sensitive(LUW("cfg_subctrl_patch"), FALSE);
+    gtk_widget_set_sensitive(LUW("cfg_subctrl_patch"), FALSE);
 #endif
 
-	xs_cfg_ftitle_override_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_ftitle_override")), NULL);
-	xs_cfg_emu_filters_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_filters")), NULL);
-	xs_cfg_emu_sidplay1_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay1")), NULL);
-	xs_cfg_emu_sidplay2_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay2")), NULL);
-	xs_cfg_oversample_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_oversample")), NULL);
-	xs_cfg_mintime_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_mintime_enable")), NULL);
-	xs_cfg_maxtime_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_maxtime_enable")), NULL);
-	xs_cfg_sldb_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_sld_enable")), NULL);
-	xs_cfg_stil_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_stil_enable")), NULL);
-	xs_cfg_subauto_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_subauto_enable")), NULL);
-	xs_cfg_subauto_min_only_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_subauto_min_only")), NULL);
+    xs_cfg_ftitle_override_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_ftitle_override")), NULL);
+    xs_cfg_emu_filters_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_filters")), NULL);
+    xs_cfg_emu_sidplay1_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay1")), NULL);
+    xs_cfg_emu_sidplay2_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_emu_sidplay2")), NULL);
+    xs_cfg_oversample_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_oversample")), NULL);
+    xs_cfg_mintime_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_mintime_enable")), NULL);
+    xs_cfg_maxtime_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_maxtime_enable")), NULL);
+    xs_cfg_sldb_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_sld_enable")), NULL);
+    xs_cfg_stil_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_stil_enable")), NULL);
+    xs_cfg_subauto_enable_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_subauto_enable")), NULL);
+    xs_cfg_subauto_min_only_toggled(GTK_TOGGLE_BUTTON(LUW("cfg_subauto_min_only")), NULL);
 
 
-	/* Set current data to widgets */
-	for (i = 0; i < xs_widtable_max; i++) {
-		switch (xs_widtable[i].widType) {
-		case WTYPE_BGROUP:
-			assert(xs_widtable[i].itemType == CTYPE_INT);
-			/* Check if current value matches the given one */
-			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName)),
-				(*((gint *) xs_widtable[i].itemData) == xs_widtable[i].itemSet));
-			break;
+    /* Set current data to widgets */
+    for (i = 0; i < xs_widtable_max; i++) {
+        switch (xs_widtable[i].widType) {
+        case WTYPE_BGROUP:
+            assert(xs_widtable[i].itemType == CTYPE_INT);
+            /* Check if current value matches the given one */
+            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName)),
+                (*((gint *) xs_widtable[i].itemData) == xs_widtable[i].itemSet));
+            break;
 
-		case WTYPE_COMBO:
-			assert(xs_widtable[i].itemType == CTYPE_INT);
-			g_snprintf(tmpStr, sizeof(tmpStr), "%d", *(gint *) xs_widtable[i].itemData);
-			gtk_entry_set_text(GTK_ENTRY(LUW(xs_widtable[i].widName)), tmpStr);
-			break;
-			
-		case WTYPE_SPIN:
-		case WTYPE_SCALE:
-			/* Get the value */
-			switch (xs_widtable[i].itemType) {
-			case CTYPE_INT:
-				tmpValue = (gfloat) * ((gint *) xs_widtable[i].itemData);
-				break;
+        case WTYPE_COMBO:
+            assert(xs_widtable[i].itemType == CTYPE_INT);
+            g_snprintf(tmpStr, sizeof(tmpStr), "%d", *(gint *) xs_widtable[i].itemData);
+            gtk_entry_set_text(GTK_ENTRY(LUW(xs_widtable[i].widName)), tmpStr);
+            break;
+            
+        case WTYPE_SPIN:
+        case WTYPE_SCALE:
+            /* Get the value */
+            switch (xs_widtable[i].itemType) {
+            case CTYPE_INT:
+                tmpValue = (gfloat) * ((gint *) xs_widtable[i].itemData);
+                break;
 
-			case CTYPE_FLOAT:
-				tmpValue = *((gfloat *) xs_widtable[i].itemData);
-				break;
+            case CTYPE_FLOAT:
+                tmpValue = *((gfloat *) xs_widtable[i].itemData);
+                break;
 
-			default:
-				tmpValue = -1;
-				assert(0);
-				break;
-			}
+            default:
+                tmpValue = -1;
+                assert(0);
+                break;
+            }
 
-			/* Set the value */
-			switch (xs_widtable[i].widType) {
-			case WTYPE_SPIN:
-				gtk_adjustment_set_value(gtk_spin_button_get_adjustment
-					(GTK_SPIN_BUTTON(LUW(xs_widtable[i].widName))), tmpValue);
-				break;
+            /* Set the value */
+            switch (xs_widtable[i].widType) {
+            case WTYPE_SPIN:
+                gtk_adjustment_set_value(gtk_spin_button_get_adjustment
+                    (GTK_SPIN_BUTTON(LUW(xs_widtable[i].widName))), tmpValue);
+                break;
 
-			case WTYPE_SCALE:
-				gtk_adjustment_set_value(gtk_range_get_adjustment
-					(GTK_RANGE(LUW(xs_widtable[i].widName))), tmpValue);
-				break;
-			}
-			break;
+            case WTYPE_SCALE:
+                gtk_adjustment_set_value(gtk_range_get_adjustment
+                    (GTK_RANGE(LUW(xs_widtable[i].widName))), tmpValue);
+                break;
+            }
+            break;
 
-		case WTYPE_BUTTON:
-			assert(xs_widtable[i].itemType == CTYPE_BOOL);
-			/* Set toggle-button */
-			gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName)),
-				*((gboolean *) xs_widtable[i].itemData));
-			break;
+        case WTYPE_BUTTON:
+            assert(xs_widtable[i].itemType == CTYPE_BOOL);
+            /* Set toggle-button */
+            gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(LUW(xs_widtable[i].widName)),
+                *((gboolean *) xs_widtable[i].itemData));
+            break;
 
-		case WTYPE_TEXT:
-			assert(xs_widtable[i].itemType == CTYPE_STR);
-			/* Set text to text-widget */
-			if (*(gchar **) xs_widtable[i].itemData != NULL) {
-				gtk_entry_set_text(GTK_ENTRY(LUW(xs_widtable[i].widName)),
-				*(gchar **) xs_widtable[i].itemData);
-			}
-			break;
-		}
-	}
+        case WTYPE_TEXT:
+            assert(xs_widtable[i].itemType == CTYPE_STR);
+            /* Set text to text-widget */
+            if (*(gchar **) xs_widtable[i].itemData != NULL) {
+                gtk_entry_set_text(GTK_ENTRY(LUW(xs_widtable[i].widName)),
+                *(gchar **) xs_widtable[i].itemData);
+            }
+            break;
+        }
+    }
 
-	/* Release the configuration */
-	XS_MUTEX_UNLOCK(xs_cfg);
+    /* Release the configuration */
+    XS_MUTEX_UNLOCK(xs_cfg);
 
-	/* Show the widget */
-	gtk_widget_show(xs_configwin);
+    /* Show the widget */
+    gtk_widget_show(xs_configwin);
 }
--- a/src/sid/xs_config.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_config.h	Thu Apr 03 00:52:14 2008 +0300
@@ -12,124 +12,124 @@
 /* Configuration structure
  */
 enum XS_EMUENGINE {
-	XS_ENG_SIDPLAY1 = 1,
-	XS_ENG_SIDPLAY2
+    XS_ENG_SIDPLAY1 = 1,
+    XS_ENG_SIDPLAY2
 };
 
 
 enum XS_BUILDER {
-	XS_BLD_RESID = 1,
-	XS_BLD_HARDSID
+    XS_BLD_RESID = 1,
+    XS_BLD_HARDSID
 };
 
 enum XS_RESOLUTION {
-	XS_RES_8BIT = 8,
-	XS_RES_16BIT = 16
+    XS_RES_8BIT = 8,
+    XS_RES_16BIT = 16
 };
 
 enum XS_CHANNELS {
-	XS_CHN_MONO = 1,
-	XS_CHN_STEREO = 2,
-	XS_CHN_AUTOPAN = 3
+    XS_CHN_MONO = 1,
+    XS_CHN_STEREO = 2,
+    XS_CHN_AUTOPAN = 3
 };
 
 
 enum XS_CLOCK {
-	XS_CLOCK_PAL = 1,
-	XS_CLOCK_NTSC,
-	XS_CLOCK_VBI,
-	XS_CLOCK_CIA,
-	XS_CLOCK_ANY
+    XS_CLOCK_PAL = 1,
+    XS_CLOCK_NTSC,
+    XS_CLOCK_VBI,
+    XS_CLOCK_CIA,
+    XS_CLOCK_ANY
 };
 
 
 enum XS_MPU {
-	XS_MPU_BANK_SWITCHING = 1,
-	XS_MPU_TRANSPARENT_ROM,
-	XS_MPU_PLAYSID_ENVIRONMENT,
-	XS_MPU_REAL
+    XS_MPU_BANK_SWITCHING = 1,
+    XS_MPU_TRANSPARENT_ROM,
+    XS_MPU_PLAYSID_ENVIRONMENT,
+    XS_MPU_REAL
 };
 
 
 enum XS_SSC {
-	XS_SSC_NONE = 1,
-	XS_SSC_POPUP,
-	XS_SSC_PATCH,
-	XS_SSC_SEEK
+    XS_SSC_NONE = 1,
+    XS_SSC_POPUP,
+    XS_SSC_PATCH,
+    XS_SSC_SEEK
 };
 
 
 enum XS_SIDMODEL {
-	XS_SIDMODEL_UNKNOWN = 0,
-	XS_SIDMODEL_6581,
-	XS_SIDMODEL_8580,
-	XS_SIDMODEL_ANY
+    XS_SIDMODEL_UNKNOWN = 0,
+    XS_SIDMODEL_6581,
+    XS_SIDMODEL_8580,
+    XS_SIDMODEL_ANY
 };
 
 
 typedef struct {
-	t_xs_int_point	points[XS_SIDPLAY2_NFPOINTS];
-	gint		npoints;
-	gchar		*name;
+    t_xs_int_point    points[XS_SIDPLAY2_NFPOINTS];
+    gint        npoints;
+    gchar        *name;
 } t_xs_sid2_filter;
 
 
 extern struct t_xs_cfg {
-	/* General audio settings */
-	gint		audioBitsPerSample;
-	gint		audioChannels;
-	gint		audioFrequency;
+    /* General audio settings */
+    gint        audioBitsPerSample;
+    gint        audioChannels;
+    gint        audioFrequency;
 
-	gboolean	oversampleEnable;
-	gint		oversampleFactor;	/* Factor of oversampling */
+    gboolean    oversampleEnable;
+    gint        oversampleFactor;    /* Factor of oversampling */
 
-	/* Emulation settings */
-	gboolean	mos8580;		/* TRUE = 8580, FALSE = 6581 */
-	gboolean	forceModel;
-	gint		memoryMode;		/* See XS_MPU-constants */
-	gint		clockSpeed;		/* PAL (50Hz) or NTSC (60Hz) */
-	gboolean	forceSpeed;		/* TRUE = force to given clockspeed */
+    /* Emulation settings */
+    gboolean    mos8580;        /* TRUE = 8580, FALSE = 6581 */
+    gboolean    forceModel;
+    gint        memoryMode;        /* See XS_MPU-constants */
+    gint        clockSpeed;        /* PAL (50Hz) or NTSC (60Hz) */
+    gboolean    forceSpeed;        /* TRUE = force to given clockspeed */
 
-	gint		playerEngine;		/* Selected player engine */
+    gint        playerEngine;        /* Selected player engine */
 
-	gboolean	emulateFilters;
-	gfloat		sid1FilterFs;
-	gfloat		sid1FilterFm;
-	gfloat		sid1FilterFt;
+    gboolean    emulateFilters;
+    gfloat        sid1FilterFs;
+    gfloat        sid1FilterFm;
+    gfloat        sid1FilterFt;
 
-	gint		sid2OptLevel;		/* SIDPlay2 emulation optimization */
-	gint		sid2Builder;		/* SIDPlay2 "builder" aka SID-emu */
-	t_xs_sid2_filter	sid2Filter;	/* Current SIDPlay2 filter */
-	t_xs_sid2_filter	**sid2FilterPresets;
-	gint		sid2NFilterPresets;
-	
-	
-	/* Playing settings */
-	gboolean	playMaxTimeEnable,
-			playMaxTimeUnknown;	/* Use max-time only when song-length is unknown */
-	gint		playMaxTime;		/* MAX playtime in seconds */
+    gint        sid2OptLevel;        /* SIDPlay2 emulation optimization */
+    gint        sid2Builder;        /* SIDPlay2 "builder" aka SID-emu */
+    t_xs_sid2_filter    sid2Filter;    /* Current SIDPlay2 filter */
+    t_xs_sid2_filter    **sid2FilterPresets;
+    gint        sid2NFilterPresets;
+    
+    
+    /* Playing settings */
+    gboolean    playMaxTimeEnable,
+            playMaxTimeUnknown;    /* Use max-time only when song-length is unknown */
+    gint        playMaxTime;        /* MAX playtime in seconds */
 
-	gboolean	playMinTimeEnable;
-	gint		playMinTime;		/* MIN playtime in seconds */
+    gboolean    playMinTimeEnable;
+    gint        playMinTime;        /* MIN playtime in seconds */
 
-	gboolean	songlenDBEnable;
-	gchar		*songlenDBPath;		/* Path to Songlengths.txt */
+    gboolean    songlenDBEnable;
+    gchar        *songlenDBPath;        /* Path to Songlengths.txt */
 
 
-	/* Miscellaneous settings */
-	gboolean	stilDBEnable;
-	gchar		*stilDBPath;		/* Path to STIL.txt */
-	gchar		*hvscPath;		/* Path-prefix for HVSC */
+    /* Miscellaneous settings */
+    gboolean    stilDBEnable;
+    gchar        *stilDBPath;        /* Path to STIL.txt */
+    gchar        *hvscPath;        /* Path-prefix for HVSC */
 
-	gint		subsongControl;
-	gboolean	detectMagic;
+    gint        subsongControl;
+    gboolean    detectMagic;
 
-	gboolean	titleOverride;		/* TRUE if XMMS titles are overriden */
-	gchar		*titleFormat;
+    gboolean    titleOverride;        /* TRUE if XMMS titles are overriden */
+    gchar        *titleFormat;
 
-	gboolean	subAutoEnable,
-			subAutoMinOnly;
-	gint		subAutoMinTime;
+    gboolean    subAutoEnable,
+            subAutoMinOnly;
+    gint        subAutoMinTime;
 } xs_cfg;
 
 XS_MUTEX_H(xs_cfg);
@@ -138,46 +138,46 @@
 /* Configuration-file
  */
 enum {
-	CTYPE_INT = 1,
-	CTYPE_FLOAT,
-	CTYPE_STR,
-	CTYPE_BOOL
+    CTYPE_INT = 1,
+    CTYPE_FLOAT,
+    CTYPE_STR,
+    CTYPE_BOOL
 };
 
 enum {
-	WTYPE_BGROUP = 1,
-	WTYPE_SPIN,
-	WTYPE_SCALE,
-	WTYPE_BUTTON,
-	WTYPE_TEXT,
-	WTYPE_COMBO
+    WTYPE_BGROUP = 1,
+    WTYPE_SPIN,
+    WTYPE_SCALE,
+    WTYPE_BUTTON,
+    WTYPE_TEXT,
+    WTYPE_COMBO
 };
 
 
 typedef struct {
-	gint	itemType;	/* Type of item (CTYPE_*) */
-	void	*itemData;	/* Pointer to variable */
-	gchar	*itemName;	/* Name of configuration item */
+    gint    itemType;    /* Type of item (CTYPE_*) */
+    void    *itemData;    /* Pointer to variable */
+    gchar    *itemName;    /* Name of configuration item */
 } t_xs_cfg_item;
 
 
 typedef struct {
-	gint	widType;
-	gint	itemType;
-	gchar	*widName;
-	void	*itemData;
-	gint	itemSet;
+    gint    widType;
+    gint    itemType;
+    gchar    *widName;
+    void    *itemData;
+    gint    itemSet;
 } t_xs_wid_item;
 
 
 /* Functions
  */
-void	xs_init_configuration(void);
-void	xs_configure(void);
-void	xs_read_configuration(void);
-gint	xs_write_configuration(void);
+void    xs_init_configuration(void);
+void    xs_configure(void);
+void    xs_read_configuration(void);
+gint    xs_write_configuration(void);
 
 #ifdef __cplusplus
 }
 #endif
-#endif	/* XS_CONFIG_H */
+#endif    /* XS_CONFIG_H */
--- a/src/sid/xs_curve.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_curve.c	Thu Apr 03 00:52:14 2008 +0300
@@ -33,29 +33,29 @@
 #include <gtk/gtkprivate.h>
 
 
-#define RADIUS		3	/* radius of the control points */
-#define RADIUS2		(RADIUS * 2)
-#define MIN_DISTANCE	7	/* min distance between control points */
+#define RADIUS        3    /* radius of the control points */
+#define RADIUS2        (RADIUS * 2)
+#define MIN_DISTANCE    7    /* min distance between control points */
 
 
-#define GRAPH_MASK	(GDK_EXPOSURE_MASK |		\
-			GDK_POINTER_MOTION_MASK |	\
-			GDK_POINTER_MOTION_HINT_MASK |	\
-			GDK_ENTER_NOTIFY_MASK |		\
-			GDK_BUTTON_PRESS_MASK |		\
-			GDK_BUTTON_RELEASE_MASK |	\
-			GDK_BUTTON1_MOTION_MASK)
+#define GRAPH_MASK    (GDK_EXPOSURE_MASK |        \
+            GDK_POINTER_MOTION_MASK |    \
+            GDK_POINTER_MOTION_HINT_MASK |    \
+            GDK_ENTER_NOTIFY_MASK |        \
+            GDK_BUTTON_PRESS_MASK |        \
+            GDK_BUTTON_RELEASE_MASK |    \
+            GDK_BUTTON1_MOTION_MASK)
 
-#define GET_X(i)	curve->ctlpoints[i].x
-#define GET_Y(i)	curve->ctlpoints[i].y
+#define GET_X(i)    curve->ctlpoints[i].x
+#define GET_Y(i)    curve->ctlpoints[i].y
 
 
 enum {
-	PROP_0,
-	PROP_MIN_X,
-	PROP_MAX_X,
-	PROP_MIN_Y,
-	PROP_MAX_Y
+    PROP_0,
+    PROP_MIN_X,
+    PROP_MAX_X,
+    PROP_MIN_Y,
+    PROP_MAX_Y
 };
 
 static GtkDrawingAreaClass *parent_class = NULL;
@@ -63,9 +63,9 @@
 static void xs_curve_class_init(XSCurveClass * class);
 static void xs_curve_init(XSCurve * curve);
 static void xs_curve_get_property(GObject * object, guint param_id,
-			GValue * value, GParamSpec * pspec);
+            GValue * value, GParamSpec * pspec);
 static void xs_curve_set_property(GObject * object, guint param_id,
-			const GValue * value, GParamSpec * pspec);
+            const GValue * value, GParamSpec * pspec);
 static void xs_curve_finalize(GObject * object);
 static gint xs_curve_graph_events(GtkWidget * widget, GdkEvent * event, XSCurve * c);
 static void xs_curve_size_graph(XSCurve * curve);
@@ -73,640 +73,640 @@
 
 GtkType xs_curve_get_type(void)
 {
-	static GType curve_type = 0;
+    static GType curve_type = 0;
 
-	if (!curve_type) {
-		static const GTypeInfo curve_info = {
-			sizeof(XSCurveClass),
-			NULL,	/* base_init */
-			NULL,	/* base_finalize */
-			(GClassInitFunc) xs_curve_class_init,
-			NULL,	/* class_finalize */
-			NULL,	/* class_data */
-			sizeof(XSCurve),
-			0,	/* n_preallocs */
-			(GInstanceInitFunc) xs_curve_init,
-		};
+    if (!curve_type) {
+        static const GTypeInfo curve_info = {
+            sizeof(XSCurveClass),
+            NULL,    /* base_init */
+            NULL,    /* base_finalize */
+            (GClassInitFunc) xs_curve_class_init,
+            NULL,    /* class_finalize */
+            NULL,    /* class_data */
+            sizeof(XSCurve),
+            0,    /* n_preallocs */
+            (GInstanceInitFunc) xs_curve_init,
+        };
 
-		curve_type = g_type_register_static(
-			GTK_TYPE_DRAWING_AREA, "XSCurve",
-			&curve_info, 0);
-	}
-	return curve_type;
+        curve_type = g_type_register_static(
+            GTK_TYPE_DRAWING_AREA, "XSCurve",
+            &curve_info, 0);
+    }
+    return curve_type;
 }
 
 
 static void xs_curve_class_init(XSCurveClass *class)
 {
-	GObjectClass *gobject_class = G_OBJECT_CLASS(class);
+    GObjectClass *gobject_class = G_OBJECT_CLASS(class);
 
-	parent_class = g_type_class_peek_parent(class);
+    parent_class = g_type_class_peek_parent(class);
 
-	gobject_class->finalize = xs_curve_finalize;
+    gobject_class->finalize = xs_curve_finalize;
 
-	gobject_class->set_property = xs_curve_set_property;
-	gobject_class->get_property = xs_curve_get_property;
+    gobject_class->set_property = xs_curve_set_property;
+    gobject_class->get_property = xs_curve_get_property;
 
-	g_object_class_install_property(gobject_class, PROP_MIN_X,
-		g_param_spec_float("min-x",
-			"Minimum X",
-			"Minimum possible value for X",
-			-G_MAXFLOAT, G_MAXFLOAT, 0.0,
-			GTK_PARAM_READWRITE)
-		);
+    g_object_class_install_property(gobject_class, PROP_MIN_X,
+        g_param_spec_float("min-x",
+            "Minimum X",
+            "Minimum possible value for X",
+            -G_MAXFLOAT, G_MAXFLOAT, 0.0,
+            GTK_PARAM_READWRITE)
+        );
 
-	g_object_class_install_property(gobject_class, PROP_MAX_X,
-		g_param_spec_float("max-x",
-			"Maximum X",
-			"Maximum possible X value",
-			-G_MAXFLOAT, G_MAXFLOAT, 1.0,
-			GTK_PARAM_READWRITE)
-		);
-	
-	g_object_class_install_property(gobject_class, PROP_MIN_Y,
-		g_param_spec_float("min-y",
-			"Minimum Y",
-			"Minimum possible value for Y",
-			-G_MAXFLOAT, G_MAXFLOAT, 0.0,
-			GTK_PARAM_READWRITE)
-		);
-	
-	g_object_class_install_property(gobject_class, PROP_MAX_Y,
-		g_param_spec_float("max-y",
-			"Maximum Y",
-			"Maximum possible value for Y",
-			-G_MAXFLOAT, G_MAXFLOAT, 1.0,
-			GTK_PARAM_READWRITE)
-		);
+    g_object_class_install_property(gobject_class, PROP_MAX_X,
+        g_param_spec_float("max-x",
+            "Maximum X",
+            "Maximum possible X value",
+            -G_MAXFLOAT, G_MAXFLOAT, 1.0,
+            GTK_PARAM_READWRITE)
+        );
+    
+    g_object_class_install_property(gobject_class, PROP_MIN_Y,
+        g_param_spec_float("min-y",
+            "Minimum Y",
+            "Minimum possible value for Y",
+            -G_MAXFLOAT, G_MAXFLOAT, 0.0,
+            GTK_PARAM_READWRITE)
+        );
+    
+    g_object_class_install_property(gobject_class, PROP_MAX_Y,
+        g_param_spec_float("max-y",
+            "Maximum Y",
+            "Maximum possible value for Y",
+            -G_MAXFLOAT, G_MAXFLOAT, 1.0,
+            GTK_PARAM_READWRITE)
+        );
 }
 
 
 static void xs_curve_init(XSCurve *curve)
 {
-	gint old_mask;
+    gint old_mask;
 
-	curve->pixmap = NULL;
-	curve->grab_point = -1;
+    curve->pixmap = NULL;
+    curve->grab_point = -1;
 
-	curve->nctlpoints = 0;
-	curve->ctlpoints = NULL;
+    curve->nctlpoints = 0;
+    curve->ctlpoints = NULL;
 
-	curve->min_x = 0.0;
-	curve->max_x = 2047.0;
-	curve->min_y = 0.0;
-	curve->max_y = 24000.0;
+    curve->min_x = 0.0;
+    curve->max_x = 2047.0;
+    curve->min_y = 0.0;
+    curve->max_y = 24000.0;
 
-	old_mask = gtk_widget_get_events(GTK_WIDGET(curve));
-	gtk_widget_set_events(GTK_WIDGET(curve), old_mask | GRAPH_MASK);
-	g_signal_connect(curve, "event", G_CALLBACK(xs_curve_graph_events), curve);
-	xs_curve_size_graph(curve);
+    old_mask = gtk_widget_get_events(GTK_WIDGET(curve));
+    gtk_widget_set_events(GTK_WIDGET(curve), old_mask | GRAPH_MASK);
+    g_signal_connect(curve, "event", G_CALLBACK(xs_curve_graph_events), curve);
+    xs_curve_size_graph(curve);
 }
 
 
 static void xs_curve_set_property(GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)
 {
-	XSCurve *curve = XS_CURVE(object);
+    XSCurve *curve = XS_CURVE(object);
 
-	switch (prop_id) {
-	case PROP_MIN_X:
-		xs_curve_set_range(curve,
-			g_value_get_float(value), curve->max_x,
-			curve->min_y, curve->max_y);
-		break;
-	case PROP_MAX_X:
-		xs_curve_set_range(curve,
-			curve->min_x, g_value_get_float(value),
-			curve->min_y, curve->max_y);
-		break;
-	case PROP_MIN_Y:
-		xs_curve_set_range(curve,
-			curve->min_x, curve->max_x,
-			g_value_get_float(value), curve->max_y);
-		break;
-	case PROP_MAX_Y:
-		xs_curve_set_range(curve,
-			curve->min_x, curve->max_x,
-			curve->min_y, g_value_get_float(value));
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
-		break;
-	}
+    switch (prop_id) {
+    case PROP_MIN_X:
+        xs_curve_set_range(curve,
+            g_value_get_float(value), curve->max_x,
+            curve->min_y, curve->max_y);
+        break;
+    case PROP_MAX_X:
+        xs_curve_set_range(curve,
+            curve->min_x, g_value_get_float(value),
+            curve->min_y, curve->max_y);
+        break;
+    case PROP_MIN_Y:
+        xs_curve_set_range(curve,
+            curve->min_x, curve->max_x,
+            g_value_get_float(value), curve->max_y);
+        break;
+    case PROP_MAX_Y:
+        xs_curve_set_range(curve,
+            curve->min_x, curve->max_x,
+            curve->min_y, g_value_get_float(value));
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+        break;
+    }
 }
 
 
 static void xs_curve_get_property(GObject * object, guint prop_id, GValue * value, GParamSpec * pspec)
 {
-	XSCurve *curve = XS_CURVE(object);
+    XSCurve *curve = XS_CURVE(object);
 
-	switch (prop_id) {
-	case PROP_MIN_X:
-		g_value_set_float(value, curve->min_x);
-		break;
-	case PROP_MAX_X:
-		g_value_set_float(value, curve->max_x);
-		break;
-	case PROP_MIN_Y:
-		g_value_set_float(value, curve->min_y);
-		break;
-	case PROP_MAX_Y:
-		g_value_set_float(value, curve->max_y);
-		break;
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
-		break;
-	}
+    switch (prop_id) {
+    case PROP_MIN_X:
+        g_value_set_float(value, curve->min_x);
+        break;
+    case PROP_MAX_X:
+        g_value_set_float(value, curve->max_x);
+        break;
+    case PROP_MIN_Y:
+        g_value_set_float(value, curve->min_y);
+        break;
+    case PROP_MAX_Y:
+        g_value_set_float(value, curve->max_y);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+        break;
+    }
 }
 
 
 static int xs_project(gfloat value, gfloat min, gfloat max, int norm)
 {
-	return (norm - 1) * ((value - min) / (max - min)) + 0.5;
+    return (norm - 1) * ((value - min) / (max - min)) + 0.5;
 }
 
 
 static gfloat xs_unproject(gint value, gfloat min, gfloat max, int norm)
 {
-	return value / (gfloat) (norm - 1) * (max - min) + min;
+    return value / (gfloat) (norm - 1) * (max - min) + min;
 }
 
 
 static inline void xs_cubic_coeff(gfloat x1, gfloat y1,
-			gfloat x2, gfloat y2,
-			gfloat k1, gfloat k2,
-			gfloat *a, gfloat *b,
-			gfloat *c, gfloat *d)
+            gfloat x2, gfloat y2,
+            gfloat k1, gfloat k2,
+            gfloat *a, gfloat *b,
+            gfloat *c, gfloat *d)
 {
-	gfloat dx = x2 - x1, dy = y2 - y1;
+    gfloat dx = x2 - x1, dy = y2 - y1;
 
-	*a = ((k1 + k2) - 2 * dy / dx) / (dx * dx);
-	*b = ((k2 - k1) / dx - 3 * (x1 + x2) * (*a)) / 2;
-	*c = k1 - (3 * x1 * (*a) + 2 * (*b)) * x1;
-	*d = y1 - ((x1 * (*a) + (*b)) * x1 + (*c)) * x1;
+    *a = ((k1 + k2) - 2 * dy / dx) / (dx * dx);
+    *b = ((k2 - k1) / dx - 3 * (x1 + x2) * (*a)) / 2;
+    *c = k1 - (3 * x1 * (*a) + 2 * (*b)) * x1;
+    *d = y1 - ((x1 * (*a) + (*b)) * x1 + (*c)) * x1;
 }
 
 
 static void xs_curve_draw(XSCurve *curve, gint width, gint height)
 {
-	gfloat res = 5.0f;
-	GtkStateType state;
-	GtkStyle *style;
-	gint i, ox = -1, oy = -1;
-	t_xs_point *p0, *p1, *p2, *p3;
+    gfloat res = 5.0f;
+    GtkStateType state;
+    GtkStyle *style;
+    gint i, ox = -1, oy = -1;
+    t_xs_point *p0, *p1, *p2, *p3;
 
-	if (!curve->pixmap)
-		return;
+    if (!curve->pixmap)
+        return;
 
-	state = GTK_STATE_NORMAL;
-	if (!GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(curve)))
-		state = GTK_STATE_INSENSITIVE;
+    state = GTK_STATE_NORMAL;
+    if (!GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(curve)))
+        state = GTK_STATE_INSENSITIVE;
 
-	style = GTK_WIDGET(curve)->style;
+    style = GTK_WIDGET(curve)->style;
 
-	/* Clear the pixmap */
-	gtk_paint_flat_box(style, curve->pixmap,
-		GTK_STATE_NORMAL, GTK_SHADOW_NONE,
-		NULL, GTK_WIDGET(curve), "curve_bg",
-		0, 0,
-		width + RADIUS2,
-		height + RADIUS2);
+    /* Clear the pixmap */
+    gtk_paint_flat_box(style, curve->pixmap,
+        GTK_STATE_NORMAL, GTK_SHADOW_NONE,
+        NULL, GTK_WIDGET(curve), "curve_bg",
+        0, 0,
+        width + RADIUS2,
+        height + RADIUS2);
 
-	
-	/* Draw the grid */
-	for (i = 0; i < 5; i++) {
-		gdk_draw_line(curve->pixmap, style->dark_gc[state],
-			RADIUS,		i * (height / 4.0) + RADIUS,
-			width + RADIUS,	i * (height / 4.0) + RADIUS);
+    
+    /* Draw the grid */
+    for (i = 0; i < 5; i++) {
+        gdk_draw_line(curve->pixmap, style->dark_gc[state],
+            RADIUS,        i * (height / 4.0) + RADIUS,
+            width + RADIUS,    i * (height / 4.0) + RADIUS);
 
-		gdk_draw_line(curve->pixmap, style->dark_gc[state],
-			i * (width / 4.0) + RADIUS, RADIUS,
-			i * (width / 4.0) + RADIUS, height + RADIUS);
-	}
+        gdk_draw_line(curve->pixmap, style->dark_gc[state],
+            i * (width / 4.0) + RADIUS, RADIUS,
+            i * (width / 4.0) + RADIUS, height + RADIUS);
+    }
 
 #if 1
-	/* Draw the spline/curve itself */
-	p0 = curve->ctlpoints;
-	p1 = p0;
-	p2 = p1; p2++;
-	p3 = p2; p3++;
+    /* Draw the spline/curve itself */
+    p0 = curve->ctlpoints;
+    p1 = p0;
+    p2 = p1; p2++;
+    p3 = p2; p3++;
 
-	/* Draw each curve segment */
-	if (curve->nctlpoints > 5)
-	for (i = 0; i < curve->nctlpoints; i++, ++p0, ++p1, ++p2, ++p3) {
-		gint n;
-		gfloat k1, k2, a, b, c, d, x;
-		
-		if (p1->x == p2->x)
-			continue;
+    /* Draw each curve segment */
+    if (curve->nctlpoints > 5)
+    for (i = 0; i < curve->nctlpoints; i++, ++p0, ++p1, ++p2, ++p3) {
+        gint n;
+        gfloat k1, k2, a, b, c, d, x;
+        
+        if (p1->x == p2->x)
+            continue;
 
-		if (p0->x == p1->x && p2->x == p3->x) {
-			k1 = k2 = (p2->y - p1->y) / (p2->x - p1->x);
-		} else if (p0->x == p1->x) {
-			k2 = (p3->y - p1->y) / (p3->x - p1->x);
-			k1 = (3 * (p2->y - p1->y) / (p2->x - p1->x) - k2) / 2;
-		} else if (p2->x == p3->x) {
-			k1 = (p2->y - p0->y) / (p2->x - p0->x);
-			k2 = (3 * (p2->y - p1->y) / (p2->x - p1->x) - k1) / 2;
-		} else {
-			k1 = (p2->y - p0->y) / (p2->x - p0->x);
-			k2 = (p3->y - p1->y) / (p3->x - p1->x);
-		}
+        if (p0->x == p1->x && p2->x == p3->x) {
+            k1 = k2 = (p2->y - p1->y) / (p2->x - p1->x);
+        } else if (p0->x == p1->x) {
+            k2 = (p3->y - p1->y) / (p3->x - p1->x);
+            k1 = (3 * (p2->y - p1->y) / (p2->x - p1->x) - k2) / 2;
+        } else if (p2->x == p3->x) {
+            k1 = (p2->y - p0->y) / (p2->x - p0->x);
+            k2 = (3 * (p2->y - p1->y) / (p2->x - p1->x) - k1) / 2;
+        } else {
+            k1 = (p2->y - p0->y) / (p2->x - p0->x);
+            k2 = (p3->y - p1->y) / (p3->x - p1->x);
+        }
 
-		xs_cubic_coeff(p1->x, p1->y, p2->x, p2->y, k1, k2, &a, &b, &c, &d);
+        xs_cubic_coeff(p1->x, p1->y, p2->x, p2->y, k1, k2, &a, &b, &c, &d);
 
-		for (x = p1->x; x <= p2->x; x += res, n++) {
-			gfloat y = ((a * x + b) * x + c) * x + d;
-			gint qx, qy;
-			qx = RADIUS + xs_project(x, curve->min_x, curve->max_x, width);
-			qy = RADIUS + xs_project(y, curve->min_y, curve->max_y, height);
-			
-			if (ox != -1) {
-				gdk_draw_line(curve->pixmap, style->fg_gc[state],
-					ox, oy, qx, qy);
-			}
-			ox = qx; oy = qy;
-		}
-	}
+        for (x = p1->x; x <= p2->x; x += res, n++) {
+            gfloat y = ((a * x + b) * x + c) * x + d;
+            gint qx, qy;
+            qx = RADIUS + xs_project(x, curve->min_x, curve->max_x, width);
+            qy = RADIUS + xs_project(y, curve->min_y, curve->max_y, height);
+            
+            if (ox != -1) {
+                gdk_draw_line(curve->pixmap, style->fg_gc[state],
+                    ox, oy, qx, qy);
+            }
+            ox = qx; oy = qy;
+        }
+    }
 
 #endif
 
-	/* Draw control points */
-	for (i = 0; i < curve->nctlpoints; ++i) {
-		gint x, y;
-		GtkStateType cstate;
+    /* Draw control points */
+    for (i = 0; i < curve->nctlpoints; ++i) {
+        gint x, y;
+        GtkStateType cstate;
 
-		if (GET_X(i) < curve->min_x || GET_Y(i) < curve->min_y ||
-			GET_X(i) >= curve->max_x || GET_Y(i) >= curve->max_y)
-			continue;
+        if (GET_X(i) < curve->min_x || GET_Y(i) < curve->min_y ||
+            GET_X(i) >= curve->max_x || GET_Y(i) >= curve->max_y)
+            continue;
 
-		x = xs_project(GET_X(i), curve->min_x, curve->max_x, width);
-		y = xs_project(GET_Y(i), curve->min_y, curve->max_y, height);
-		
-		if (i == curve->grab_point) {
-			cstate = GTK_STATE_SELECTED;
-			gdk_draw_line(curve->pixmap, style->fg_gc[cstate],
-				x + RADIUS, RADIUS, x + RADIUS, height + RADIUS);
-			gdk_draw_line(curve->pixmap, style->fg_gc[cstate],
-				RADIUS, y + RADIUS, width + RADIUS, y + RADIUS);
-		} else
-			cstate = state;
-		
-		gdk_draw_arc(curve->pixmap, style->fg_gc[cstate], TRUE,
-			x, y, RADIUS2, RADIUS2, 0, 360 * 64);
-	}
-	
-	/* Draw pixmap in the widget */
-	gdk_draw_pixmap(GTK_WIDGET(curve)->window,
-			style->fg_gc[state], curve->pixmap,
-			0, 0, 0, 0,
-			width + RADIUS2,
-			height + RADIUS2);
+        x = xs_project(GET_X(i), curve->min_x, curve->max_x, width);
+        y = xs_project(GET_Y(i), curve->min_y, curve->max_y, height);
+        
+        if (i == curve->grab_point) {
+            cstate = GTK_STATE_SELECTED;
+            gdk_draw_line(curve->pixmap, style->fg_gc[cstate],
+                x + RADIUS, RADIUS, x + RADIUS, height + RADIUS);
+            gdk_draw_line(curve->pixmap, style->fg_gc[cstate],
+                RADIUS, y + RADIUS, width + RADIUS, y + RADIUS);
+        } else
+            cstate = state;
+        
+        gdk_draw_arc(curve->pixmap, style->fg_gc[cstate], TRUE,
+            x, y, RADIUS2, RADIUS2, 0, 360 * 64);
+    }
+    
+    /* Draw pixmap in the widget */
+    gdk_draw_pixmap(GTK_WIDGET(curve)->window,
+            style->fg_gc[state], curve->pixmap,
+            0, 0, 0, 0,
+            width + RADIUS2,
+            height + RADIUS2);
 }
 
 
 static gint xs_curve_graph_events(GtkWidget *widget, GdkEvent *event, XSCurve *curve)
 {
-	GdkCursorType new_type = curve->cursor_type;
-	GdkEventButton *bevent;
-	GtkWidget *w;
-	gint i, width, height, x, y, tx, ty, cx, closest_point = 0, min_x;
-	guint distance;
+    GdkCursorType new_type = curve->cursor_type;
+    GdkEventButton *bevent;
+    GtkWidget *w;
+    gint i, width, height, x, y, tx, ty, cx, closest_point = 0, min_x;
+    guint distance;
 
-	w = GTK_WIDGET(curve);
-	width = w->allocation.width - RADIUS2;
-	height = w->allocation.height - RADIUS2;
+    w = GTK_WIDGET(curve);
+    width = w->allocation.width - RADIUS2;
+    height = w->allocation.height - RADIUS2;
 
-	if ((width < 0) || (height < 0))
-		return FALSE;
+    if ((width < 0) || (height < 0))
+        return FALSE;
 
-	/* get the pointer position */
-	gdk_window_get_pointer(w->window, &tx, &ty, NULL);
-	x = CLAMP((tx - RADIUS), 0, width - 1);
-	y = CLAMP((ty - RADIUS), 0, height - 1);
-	min_x = curve->min_x;
+    /* get the pointer position */
+    gdk_window_get_pointer(w->window, &tx, &ty, NULL);
+    x = CLAMP((tx - RADIUS), 0, width - 1);
+    y = CLAMP((ty - RADIUS), 0, height - 1);
+    min_x = curve->min_x;
 
-	distance = ~0U;
-	for (i = 0; i < curve->nctlpoints; ++i) {
-		cx = xs_project(GET_X(i), min_x, curve->max_x, width);
-		if ((guint) abs(x - cx) < distance) {
-			distance = abs(x - cx);
-			closest_point = i;
-		}
-	}
-	
-	/* Act based on event type */
-	switch (event->type) {
-	case GDK_CONFIGURE:
-		if (curve->pixmap)
-			gdk_pixmap_unref(curve->pixmap);
-		curve->pixmap = 0;
+    distance = ~0U;
+    for (i = 0; i < curve->nctlpoints; ++i) {
+        cx = xs_project(GET_X(i), min_x, curve->max_x, width);
+        if ((guint) abs(x - cx) < distance) {
+            distance = abs(x - cx);
+            closest_point = i;
+        }
+    }
+    
+    /* Act based on event type */
+    switch (event->type) {
+    case GDK_CONFIGURE:
+        if (curve->pixmap)
+            gdk_pixmap_unref(curve->pixmap);
+        curve->pixmap = 0;
 
-		/* fall through */
+        /* fall through */
 
-	case GDK_EXPOSE:
-		if (!curve->pixmap) {
-			curve->pixmap = gdk_pixmap_new(w->window,
-			w->allocation.width, w->allocation.height, -1);
-		}
-		xs_curve_draw(curve, width, height);
-		break;
+    case GDK_EXPOSE:
+        if (!curve->pixmap) {
+            curve->pixmap = gdk_pixmap_new(w->window,
+            w->allocation.width, w->allocation.height, -1);
+        }
+        xs_curve_draw(curve, width, height);
+        break;
 
-	case GDK_BUTTON_PRESS:
-		gtk_grab_add(widget);
+    case GDK_BUTTON_PRESS:
+        gtk_grab_add(widget);
 
-		bevent = (GdkEventButton *) event;
-		new_type = GDK_TCROSS;
+        bevent = (GdkEventButton *) event;
+        new_type = GDK_TCROSS;
 
-		if (distance > MIN_DISTANCE) {
-			/* insert a new control point */
-			if (curve->nctlpoints > 0) {
-				cx = xs_project(GET_X(closest_point), min_x, curve->max_x, width);
-				if (x > cx) closest_point++;
-			}
-			
-			curve->nctlpoints++;
-			
-			curve->ctlpoints = g_realloc(curve->ctlpoints,
-				curve->nctlpoints * sizeof(*curve->ctlpoints));
-			
-			for (i = curve->nctlpoints - 1; i > closest_point; --i) {
-				memcpy(curve->ctlpoints + i,
-					curve->ctlpoints + i - 1,
-					sizeof(*curve->ctlpoints));
-			}
-		}
-		
-		curve->grab_point = closest_point;
-		GET_X(curve->grab_point) = xs_unproject(x, min_x, curve->max_x, width);
-		GET_Y(curve->grab_point) = xs_unproject(y, curve->min_y, curve->max_y, height);
+        if (distance > MIN_DISTANCE) {
+            /* insert a new control point */
+            if (curve->nctlpoints > 0) {
+                cx = xs_project(GET_X(closest_point), min_x, curve->max_x, width);
+                if (x > cx) closest_point++;
+            }
+            
+            curve->nctlpoints++;
+            
+            curve->ctlpoints = g_realloc(curve->ctlpoints,
+                curve->nctlpoints * sizeof(*curve->ctlpoints));
+            
+            for (i = curve->nctlpoints - 1; i > closest_point; --i) {
+                memcpy(curve->ctlpoints + i,
+                    curve->ctlpoints + i - 1,
+                    sizeof(*curve->ctlpoints));
+            }
+        }
+        
+        curve->grab_point = closest_point;
+        GET_X(curve->grab_point) = xs_unproject(x, min_x, curve->max_x, width);
+        GET_Y(curve->grab_point) = xs_unproject(y, curve->min_y, curve->max_y, height);
 
-		xs_curve_draw(curve, width, height);
-		break;
+        xs_curve_draw(curve, width, height);
+        break;
 
-	case GDK_BUTTON_RELEASE:
-		{
-		gint src, dst;
-		
-		gtk_grab_remove(widget);
+    case GDK_BUTTON_RELEASE:
+        {
+        gint src, dst;
+        
+        gtk_grab_remove(widget);
 
-		/* delete inactive points: */
-		for (src = dst = 0; src < curve->nctlpoints; ++src) {
-			if (GET_X(src) >= min_x) {
-				memcpy(curve->ctlpoints + dst,
-					curve->ctlpoints + src,
-					sizeof(*curve->ctlpoints));
-				dst++;
-			}
-		}
+        /* delete inactive points: */
+        for (src = dst = 0; src < curve->nctlpoints; ++src) {
+            if (GET_X(src) >= min_x) {
+                memcpy(curve->ctlpoints + dst,
+                    curve->ctlpoints + src,
+                    sizeof(*curve->ctlpoints));
+                dst++;
+            }
+        }
 
-		if (dst < src) {
-			curve->nctlpoints -= (src - dst);
-			if (curve->nctlpoints <= 0) {
-				curve->nctlpoints = 1;
-				GET_X(0) = min_x;
-				GET_Y(0) = curve->min_y;
-				xs_curve_draw(curve, width, height);
-			}
-			curve->ctlpoints = g_realloc(curve->ctlpoints,
-				curve->nctlpoints * sizeof(*curve->ctlpoints));
-		}
+        if (dst < src) {
+            curve->nctlpoints -= (src - dst);
+            if (curve->nctlpoints <= 0) {
+                curve->nctlpoints = 1;
+                GET_X(0) = min_x;
+                GET_Y(0) = curve->min_y;
+                xs_curve_draw(curve, width, height);
+            }
+            curve->ctlpoints = g_realloc(curve->ctlpoints,
+                curve->nctlpoints * sizeof(*curve->ctlpoints));
+        }
 
-		new_type = GDK_FLEUR;
-		curve->grab_point = -1;
-		}
-		xs_curve_draw(curve, width, height);
-		break;
+        new_type = GDK_FLEUR;
+        curve->grab_point = -1;
+        }
+        xs_curve_draw(curve, width, height);
+        break;
 
-	case GDK_MOTION_NOTIFY:
-		if (curve->grab_point == -1) {
-			/* if no point is grabbed...  */
-			if (distance <= MIN_DISTANCE)
-				new_type = GDK_FLEUR;
-			else
-				new_type = GDK_TCROSS;
-		} else {
-			gint leftbound, rightbound;
-			
-			/* drag the grabbed point  */
-			new_type = GDK_TCROSS;
-			
-			leftbound = -MIN_DISTANCE;
-			if (curve->grab_point > 0) {
-				leftbound = xs_project(
-					GET_X(curve->grab_point-1),
-					min_x, curve->max_x, width);
-			}
+    case GDK_MOTION_NOTIFY:
+        if (curve->grab_point == -1) {
+            /* if no point is grabbed...  */
+            if (distance <= MIN_DISTANCE)
+                new_type = GDK_FLEUR;
+            else
+                new_type = GDK_TCROSS;
+        } else {
+            gint leftbound, rightbound;
+            
+            /* drag the grabbed point  */
+            new_type = GDK_TCROSS;
+            
+            leftbound = -MIN_DISTANCE;
+            if (curve->grab_point > 0) {
+                leftbound = xs_project(
+                    GET_X(curve->grab_point-1),
+                    min_x, curve->max_x, width);
+            }
 
-			rightbound = width + RADIUS2 + MIN_DISTANCE;
-			if (curve->grab_point + 1 < curve->nctlpoints) {
-				rightbound = xs_project(
-					GET_X(curve->grab_point+1),
-					min_x, curve->max_x, width);
-			}
+            rightbound = width + RADIUS2 + MIN_DISTANCE;
+            if (curve->grab_point + 1 < curve->nctlpoints) {
+                rightbound = xs_project(
+                    GET_X(curve->grab_point+1),
+                    min_x, curve->max_x, width);
+            }
 
-			if ((tx <= leftbound) || (tx >= rightbound) ||
-				(ty > height + RADIUS2 + MIN_DISTANCE) || (ty < -MIN_DISTANCE)) {
-				GET_X(curve->grab_point) = min_x - 1.0;
-			} else {
-				GET_X(curve->grab_point) =
-					xs_unproject(x, min_x, curve->max_x, width);
-				GET_Y(curve->grab_point) =
-					xs_unproject(y, curve->min_y, curve->max_y, height);
-			}
-			
-			xs_curve_draw(curve, width, height);
-		}
-		
-		/* See if cursor type was changed and update accordingly */
-		if (new_type != (GdkCursorType) curve->cursor_type) {
-			GdkCursor *cursor;
-			curve->cursor_type = new_type;
-			cursor = gdk_cursor_new(curve->cursor_type);
-			gdk_window_set_cursor(w->window, cursor);
-			gdk_cursor_destroy(cursor);
-		}
-		break;
+            if ((tx <= leftbound) || (tx >= rightbound) ||
+                (ty > height + RADIUS2 + MIN_DISTANCE) || (ty < -MIN_DISTANCE)) {
+                GET_X(curve->grab_point) = min_x - 1.0;
+            } else {
+                GET_X(curve->grab_point) =
+                    xs_unproject(x, min_x, curve->max_x, width);
+                GET_Y(curve->grab_point) =
+                    xs_unproject(y, curve->min_y, curve->max_y, height);
+            }
+            
+            xs_curve_draw(curve, width, height);
+        }
+        
+        /* See if cursor type was changed and update accordingly */
+        if (new_type != (GdkCursorType) curve->cursor_type) {
+            GdkCursor *cursor;
+            curve->cursor_type = new_type;
+            cursor = gdk_cursor_new(curve->cursor_type);
+            gdk_window_set_cursor(w->window, cursor);
+            gdk_cursor_destroy(cursor);
+        }
+        break;
 
-	default:
-		break;
-	}
-	
-	return FALSE;
+    default:
+        break;
+    }
+    
+    return FALSE;
 }
 
 
 static void xs_curve_size_graph(XSCurve *curve)
 {
-	gint width, height;
-	gfloat aspect;
-	GdkScreen *screen = gtk_widget_get_screen(GTK_WIDGET(curve));
+    gint width, height;
+    gfloat aspect;
+    GdkScreen *screen = gtk_widget_get_screen(GTK_WIDGET(curve));
 
-	width = (curve->max_x - curve->min_x) + 1;
-	height = (curve->max_y - curve->min_y) + 1;
-	aspect = width / (gfloat) height;
+    width = (curve->max_x - curve->min_x) + 1;
+    height = (curve->max_y - curve->min_y) + 1;
+    aspect = width / (gfloat) height;
 
-	if (width > gdk_screen_get_width(screen) / 4)
-		width = gdk_screen_get_width(screen) / 4;
+    if (width > gdk_screen_get_width(screen) / 4)
+        width = gdk_screen_get_width(screen) / 4;
 
-	if (height > gdk_screen_get_height(screen) / 4)
-		height = gdk_screen_get_height(screen) / 4;
+    if (height > gdk_screen_get_height(screen) / 4)
+        height = gdk_screen_get_height(screen) / 4;
 
-	if (aspect < 1.0)
-		width = height * aspect;
-	else
-		height = width / aspect;
+    if (aspect < 1.0)
+        width = height * aspect;
+    else
+        height = width / aspect;
 
-	gtk_widget_set_size_request(GTK_WIDGET(curve), width + RADIUS2, height + RADIUS2);
+    gtk_widget_set_size_request(GTK_WIDGET(curve), width + RADIUS2, height + RADIUS2);
 }
 
 
 static void xs_curve_update(XSCurve *curve)
 {
-	if (curve->pixmap) {
-		gint width, height;
+    if (curve->pixmap) {
+        gint width, height;
 
-		width = GTK_WIDGET(curve)->allocation.width - RADIUS2;
-		height = GTK_WIDGET(curve)->allocation.height - RADIUS2;
-		xs_curve_draw(curve, width, height);
-	}
+        width = GTK_WIDGET(curve)->allocation.width - RADIUS2;
+        height = GTK_WIDGET(curve)->allocation.height - RADIUS2;
+        xs_curve_draw(curve, width, height);
+    }
 }
 
 
 void xs_curve_reset(XSCurve *curve)
 {
-	if (curve->ctlpoints)
-		g_free(curve->ctlpoints);
+    if (curve->ctlpoints)
+        g_free(curve->ctlpoints);
 
-	curve->nctlpoints = 4;
-	curve->ctlpoints = g_malloc(curve->nctlpoints * sizeof(curve->ctlpoints[0]));
+    curve->nctlpoints = 4;
+    curve->ctlpoints = g_malloc(curve->nctlpoints * sizeof(curve->ctlpoints[0]));
 
-	GET_X(0) = curve->min_x;
-	GET_Y(0) = curve->min_y;
-	GET_X(1) = curve->min_x;
-	GET_Y(1) = curve->min_y;
+    GET_X(0) = curve->min_x;
+    GET_Y(0) = curve->min_y;
+    GET_X(1) = curve->min_x;
+    GET_Y(1) = curve->min_y;
 
-	GET_X(2) = curve->max_x;
-	GET_Y(2) = curve->max_y;
-	GET_X(3) = curve->max_x;
-	GET_Y(3) = curve->max_y;
-	
-	xs_curve_update(curve);
+    GET_X(2) = curve->max_x;
+    GET_Y(2) = curve->max_y;
+    GET_X(3) = curve->max_x;
+    GET_Y(3) = curve->max_y;
+    
+    xs_curve_update(curve);
 }
 
 
 void xs_curve_set_range(XSCurve *curve, gfloat min_x, gfloat min_y, gfloat max_x, gfloat max_y)
 {
-	g_object_freeze_notify(G_OBJECT(curve));
-	if (curve->min_x != min_x) {
-		curve->min_x = min_x;
-		g_object_notify(G_OBJECT(curve), "min-x");
-	}
-	if (curve->max_x != max_x) {
-		curve->max_x = max_x;
-		g_object_notify(G_OBJECT(curve), "max-x");
-	}
-	if (curve->min_y != min_y) {
-		curve->min_y = min_y;
-		g_object_notify(G_OBJECT(curve), "min-y");
-	}
-	if (curve->max_y != max_y) {
-		curve->max_y = max_y;
-		g_object_notify(G_OBJECT(curve), "max-y");
-	}
-	g_object_thaw_notify(G_OBJECT(curve));
+    g_object_freeze_notify(G_OBJECT(curve));
+    if (curve->min_x != min_x) {
+        curve->min_x = min_x;
+        g_object_notify(G_OBJECT(curve), "min-x");
+    }
+    if (curve->max_x != max_x) {
+        curve->max_x = max_x;
+        g_object_notify(G_OBJECT(curve), "max-x");
+    }
+    if (curve->min_y != min_y) {
+        curve->min_y = min_y;
+        g_object_notify(G_OBJECT(curve), "min-y");
+    }
+    if (curve->max_y != max_y) {
+        curve->max_y = max_y;
+        g_object_notify(G_OBJECT(curve), "max-y");
+    }
+    g_object_thaw_notify(G_OBJECT(curve));
 
-	xs_curve_size_graph(curve);
-	xs_curve_reset(curve);
+    xs_curve_size_graph(curve);
+    xs_curve_reset(curve);
 }
 
 
 gboolean xs_curve_realloc_data(XSCurve *curve, gint npoints)
 {
-	if (npoints != curve->nctlpoints) {
-		curve->nctlpoints = npoints;
-		curve->ctlpoints = (t_xs_point *) g_realloc(curve->ctlpoints,
-			curve->nctlpoints * sizeof(*curve->ctlpoints));
+    if (npoints != curve->nctlpoints) {
+        curve->nctlpoints = npoints;
+        curve->ctlpoints = (t_xs_point *) g_realloc(curve->ctlpoints,
+            curve->nctlpoints * sizeof(*curve->ctlpoints));
 
-		if (curve->ctlpoints == NULL)
-			return FALSE;
-	}
-	
-	return TRUE;
+        if (curve->ctlpoints == NULL)
+            return FALSE;
+    }
+    
+    return TRUE;
 }
 
 
 void xs_curve_get_data(XSCurve *curve, t_xs_point ***points, gint **npoints)
 {
-	*points = &(curve->ctlpoints);
-	*npoints = &(curve->nctlpoints);
+    *points = &(curve->ctlpoints);
+    *npoints = &(curve->nctlpoints);
 }
 
 
 gboolean xs_curve_set_points(XSCurve *curve, t_xs_int_point *points, gint npoints)
 {
-	gint i;
+    gint i;
 
-	if (!xs_curve_realloc_data(curve, npoints + 4))
-		return FALSE;
-	
-	GET_X(0) = curve->min_x;
-	GET_Y(0) = curve->min_y;
-	GET_X(1) = curve->min_x;
-	GET_Y(1) = curve->min_y;
+    if (!xs_curve_realloc_data(curve, npoints + 4))
+        return FALSE;
+    
+    GET_X(0) = curve->min_x;
+    GET_Y(0) = curve->min_y;
+    GET_X(1) = curve->min_x;
+    GET_Y(1) = curve->min_y;
 
-	for (i = 0; i < npoints; i++) {
-		GET_X(i+2) = points[i].x;
-		GET_Y(i+2) = points[i].y;
-	}
+    for (i = 0; i < npoints; i++) {
+        GET_X(i+2) = points[i].x;
+        GET_Y(i+2) = points[i].y;
+    }
 
-	GET_X(npoints+2) = curve->max_x;
-	GET_Y(npoints+2) = curve->max_y;
-	GET_X(npoints+3) = curve->max_x;
-	GET_Y(npoints+3) = curve->max_y;
-	
-	xs_curve_update(curve);
-	return TRUE;
+    GET_X(npoints+2) = curve->max_x;
+    GET_Y(npoints+2) = curve->max_y;
+    GET_X(npoints+3) = curve->max_x;
+    GET_Y(npoints+3) = curve->max_y;
+    
+    xs_curve_update(curve);
+    return TRUE;
 }
 
 
 gboolean xs_curve_get_points(XSCurve *curve, t_xs_int_point **points, gint *npoints)
 {
-	gint i, n;
-	
-	n = curve->nctlpoints - 4;
-	
-	*points = g_malloc(n * sizeof(t_xs_int_point));
-	if (*points == NULL)
-		return FALSE;
-	
-	*npoints = n;
-	for (i = 2; i < curve->nctlpoints - 2; i++) {
-		(*points)[i].x = GET_X(i);
-		(*points)[i].y = GET_Y(i);
-	}
+    gint i, n;
+    
+    n = curve->nctlpoints - 4;
+    
+    *points = g_malloc(n * sizeof(t_xs_int_point));
+    if (*points == NULL)
+        return FALSE;
+    
+    *npoints = n;
+    for (i = 2; i < curve->nctlpoints - 2; i++) {
+        (*points)[i].x = GET_X(i);
+        (*points)[i].y = GET_Y(i);
+    }
 
-	return TRUE;
+    return TRUE;
 }
 
 
 GtkWidget *xs_curve_new(void)
 {
-	return g_object_new(XS_TYPE_CURVE, NULL);
+    return g_object_new(XS_TYPE_CURVE, NULL);
 }
 
 
 static void xs_curve_finalize(GObject *object)
 {
-	XSCurve *curve;
+    XSCurve *curve;
 
-	g_return_if_fail(object != NULL);
-	g_return_if_fail(XS_IS_CURVE(object));
+    g_return_if_fail(object != NULL);
+    g_return_if_fail(XS_IS_CURVE(object));
 
-	curve = XS_CURVE(object);
-	if (curve->pixmap)
-		g_object_unref(curve->pixmap);
-	if (curve->ctlpoints)
-		g_free(curve->ctlpoints);
+    curve = XS_CURVE(object);
+    if (curve->pixmap)
+        g_object_unref(curve->pixmap);
+    if (curve->ctlpoints)
+        g_free(curve->ctlpoints);
 
-	G_OBJECT_CLASS(parent_class)->finalize(object);
+    G_OBJECT_CLASS(parent_class)->finalize(object);
 }
--- a/src/sid/xs_curve.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_curve.h	Thu Apr 03 00:52:14 2008 +0300
@@ -8,12 +8,12 @@
 
 /* Macros for type-classing this GtkWidget/object
  */
-#define XS_TYPE_CURVE			(xs_curve_get_type())
-#define XS_CURVE(obj)			(G_TYPE_CHECK_INSTANCE_CAST ((obj), XS_TYPE_CURVE, XSCurve))
-#define XS_CURVE_CLASS(luokka)		(G_TYPE_CHECK_CLASS_CAST ((luokka), XS_TYPE_CURVE, XSCurveClass))
-#define XS_IS_CURVE(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), XS_TYPE_CURVE))
-#define XS_IS_CURVE_CLASS(luokka)	(G_TYPE_CHECK_CLASS_TYPE ((luokka), XS_TYPE_CURVE))
-#define XS_CURVE_GET_CLASS(obj)		(G_TYPE_INSTANCE_GET_CLASS ((obj), XS_TYPE_CURVE, XSCurveClass))
+#define XS_TYPE_CURVE            (xs_curve_get_type())
+#define XS_CURVE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), XS_TYPE_CURVE, XSCurve))
+#define XS_CURVE_CLASS(luokka)        (G_TYPE_CHECK_CLASS_CAST ((luokka), XS_TYPE_CURVE, XSCurveClass))
+#define XS_IS_CURVE(obj)        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), XS_TYPE_CURVE))
+#define XS_IS_CURVE_CLASS(luokka)    (G_TYPE_CHECK_CLASS_TYPE ((luokka), XS_TYPE_CURVE))
+#define XS_CURVE_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), XS_TYPE_CURVE, XSCurveClass))
 
 
 /* Structures
@@ -22,44 +22,44 @@
 typedef struct _XSCurveClass XSCurveClass;
 
 typedef struct {
-	gfloat x,y;
+    gfloat x,y;
 } t_xs_point;
 
 typedef struct {
-	gint x, y;
+    gint x, y;
 } t_xs_int_point;
 
 struct _XSCurve {
-	GtkDrawingArea graph;
+    GtkDrawingArea graph;
 
-	gint cursor_type;
-	gfloat min_x;
-	gfloat max_x;
-	gfloat min_y;
-	gfloat max_y;
-	GdkPixmap *pixmap;
-	gint grab_point;	/* point currently grabbed */
+    gint cursor_type;
+    gfloat min_x;
+    gfloat max_x;
+    gfloat min_y;
+    gfloat max_y;
+    GdkPixmap *pixmap;
+    gint grab_point;    /* point currently grabbed */
 
-	/* control points */
-	gint nctlpoints;	/* number of control points */
-	t_xs_point *ctlpoints;	/* array of control points */
+    /* control points */
+    gint nctlpoints;    /* number of control points */
+    t_xs_point *ctlpoints;    /* array of control points */
 };
 
 struct _XSCurveClass {
-	GtkDrawingAreaClass parent_class;
+    GtkDrawingAreaClass parent_class;
 };
 
 
-GType		xs_curve_get_type	(void);
-GtkWidget*	xs_curve_new		(void);
-void		xs_curve_reset		(XSCurve *curve);
-void		xs_curve_set_range	(XSCurve *curve,
-					 gfloat min_x, gfloat min_y,
-					 gfloat max_x, gfloat max_y);
-gboolean	xs_curve_realloc_data	(XSCurve *curve, gint npoints);
-void		xs_curve_get_data	(XSCurve *curve, t_xs_point ***points, gint **npoints);
-gboolean	xs_curve_set_points	(XSCurve *curve, t_xs_int_point *points, gint npoints);
-gboolean	xs_curve_get_points	(XSCurve *curve, t_xs_int_point **points, gint *npoints);
+GType        xs_curve_get_type    (void);
+GtkWidget*    xs_curve_new        (void);
+void        xs_curve_reset        (XSCurve *curve);
+void        xs_curve_set_range    (XSCurve *curve,
+                     gfloat min_x, gfloat min_y,
+                     gfloat max_x, gfloat max_y);
+gboolean    xs_curve_realloc_data    (XSCurve *curve, gint npoints);
+void        xs_curve_get_data    (XSCurve *curve, t_xs_point ***points, gint **npoints);
+gboolean    xs_curve_set_points    (XSCurve *curve, t_xs_int_point *points, gint npoints);
+gboolean    xs_curve_get_points    (XSCurve *curve, t_xs_int_point **points, gint *npoints);
 
 G_END_DECLS
 
--- a/src/sid/xs_fileinfo.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_fileinfo.c	Thu Apr 03 00:52:14 2008 +0300
@@ -36,258 +36,258 @@
 static stil_node_t *xs_fileinfostil = NULL;
 XS_MUTEX(xs_fileinfowin);
 
-#define LUW(x)	lookup_widget(xs_fileinfowin, x)
+#define LUW(x)    lookup_widget(xs_fileinfowin, x)
 
 
 #ifndef AUDACIOUS_PLUGIN
 void xs_fileinfo_update(void)
 {
-	XS_MUTEX_LOCK(xs_status);
-	XS_MUTEX_LOCK(xs_fileinfowin);
+    XS_MUTEX_LOCK(xs_status);
+    XS_MUTEX_LOCK(xs_fileinfowin);
 
-	/* Check if control window exists, we are currently playing and have a tune */
-	if (xs_fileinfowin) {
-		gboolean isEnabled;
-		GtkAdjustment *tmpAdj;
+    /* Check if control window exists, we are currently playing and have a tune */
+    if (xs_fileinfowin) {
+        gboolean isEnabled;
+        GtkAdjustment *tmpAdj;
 
-		if (xs_status.tuneInfo && xs_status.isPlaying && (xs_status.tuneInfo->nsubTunes > 1)) {
-			tmpAdj = gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj")));
+        if (xs_status.tuneInfo && xs_status.isPlaying && (xs_status.tuneInfo->nsubTunes > 1)) {
+            tmpAdj = gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj")));
 
-			tmpAdj->value = xs_status.currSong;
-			tmpAdj->lower = 1;
-			tmpAdj->upper = xs_status.tuneInfo->nsubTunes;
-			XS_MUTEX_UNLOCK(xs_status);
-			XS_MUTEX_UNLOCK(xs_fileinfowin);
-			gtk_adjustment_value_changed(tmpAdj);
-			XS_MUTEX_LOCK(xs_status);
-			XS_MUTEX_LOCK(xs_fileinfowin);
-			isEnabled = TRUE;
-		} else
-			isEnabled = FALSE;
+            tmpAdj->value = xs_status.currSong;
+            tmpAdj->lower = 1;
+            tmpAdj->upper = xs_status.tuneInfo->nsubTunes;
+            XS_MUTEX_UNLOCK(xs_status);
+            XS_MUTEX_UNLOCK(xs_fileinfowin);
+            gtk_adjustment_value_changed(tmpAdj);
+            XS_MUTEX_LOCK(xs_status);
+            XS_MUTEX_LOCK(xs_fileinfowin);
+            isEnabled = TRUE;
+        } else
+            isEnabled = FALSE;
 
-		/* Enable or disable subtune-control in fileinfo window */
-		gtk_widget_set_sensitive(LUW("fileinfo_subctrl_prev"), isEnabled);
-		gtk_widget_set_sensitive(LUW("fileinfo_subctrl_adj"), isEnabled);
-		gtk_widget_set_sensitive(LUW("fileinfo_subctrl_next"), isEnabled);
-	}
+        /* Enable or disable subtune-control in fileinfo window */
+        gtk_widget_set_sensitive(LUW("fileinfo_subctrl_prev"), isEnabled);
+        gtk_widget_set_sensitive(LUW("fileinfo_subctrl_adj"), isEnabled);
+        gtk_widget_set_sensitive(LUW("fileinfo_subctrl_next"), isEnabled);
+    }
 
-	XS_MUTEX_UNLOCK(xs_status);
-	XS_MUTEX_UNLOCK(xs_fileinfowin);
+    XS_MUTEX_UNLOCK(xs_status);
+    XS_MUTEX_UNLOCK(xs_fileinfowin);
 }
 
 
 static void xs_fileinfo_setsong(void)
 {
-	gint n;
+    gint n;
 
-	XS_MUTEX_LOCK(xs_status);
-	XS_MUTEX_LOCK(xs_fileinfowin);
+    XS_MUTEX_LOCK(xs_status);
+    XS_MUTEX_LOCK(xs_fileinfowin);
 
-	if (xs_status.tuneInfo && xs_status.isPlaying) {
-		n = (gint) gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj")))->value;
-		if ((n >= 1) && (n <= xs_status.tuneInfo->nsubTunes))
-			xs_status.currSong = n;
-	}
+    if (xs_status.tuneInfo && xs_status.isPlaying) {
+        n = (gint) gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj")))->value;
+        if ((n >= 1) && (n <= xs_status.tuneInfo->nsubTunes))
+            xs_status.currSong = n;
+    }
 
-	XS_MUTEX_UNLOCK(xs_fileinfowin);
-	XS_MUTEX_UNLOCK(xs_status);
+    XS_MUTEX_UNLOCK(xs_fileinfowin);
+    XS_MUTEX_UNLOCK(xs_status);
 }
 #endif /* AUDACIOUS_PLUGIN */
 
 
 void xs_fileinfo_ok(void)
 {
-	XS_MUTEX_LOCK(xs_fileinfowin);
-	if (xs_fileinfowin) {
-		gtk_widget_destroy(xs_fileinfowin);
-		xs_fileinfowin = NULL;
-	}
-	XS_MUTEX_UNLOCK(xs_fileinfowin);
+    XS_MUTEX_LOCK(xs_fileinfowin);
+    if (xs_fileinfowin) {
+        gtk_widget_destroy(xs_fileinfowin);
+        xs_fileinfowin = NULL;
+    }
+    XS_MUTEX_UNLOCK(xs_fileinfowin);
 }
 
 
 gboolean xs_fileinfo_delete(GtkWidget * widget, GdkEvent * event, gpointer user_data)
 {
-	(void) widget;
-	(void) event;
-	(void) user_data;
+    (void) widget;
+    (void) event;
+    (void) user_data;
 
-	XSDEBUG("delete_event\n");
-	xs_fileinfo_ok();
-	return FALSE;
+    XSDEBUG("delete_event\n");
+    xs_fileinfo_ok();
+    return FALSE;
 }
 
 
 static void xs_fileinfo_subtune(GtkWidget * widget, void *data)
 {
-	stil_subnode_t *tmpNode;
-	GtkWidget *tmpText;
-	gchar *subName, *subAuthor, *subInfo;
+    stil_subnode_t *tmpNode;
+    GtkWidget *tmpText;
+    gchar *subName, *subAuthor, *subInfo;
 
-	(void) widget;
-	(void) data;
+    (void) widget;
+    (void) data;
 
-	/* Freeze text-widget and delete the old text */
-	tmpText = LUW("fileinfo_sub_info");
+    /* Freeze text-widget and delete the old text */
+    tmpText = LUW("fileinfo_sub_info");
 #ifndef AUDACIOUS_PLUGIN
-	gtk_text_freeze(GTK_TEXT(tmpText));
-	gtk_text_set_point(GTK_TEXT(tmpText), 0);
-	gtk_text_forward_delete(GTK_TEXT(tmpText), gtk_text_get_length(GTK_TEXT(tmpText)));
+    gtk_text_freeze(GTK_TEXT(tmpText));
+    gtk_text_set_point(GTK_TEXT(tmpText), 0);
+    gtk_text_forward_delete(GTK_TEXT(tmpText), gtk_text_get_length(GTK_TEXT(tmpText)));
 #endif
 
-	/* Get subtune information */
-	tmpNode = (stil_subnode_t *) data;
-	if (!tmpNode && xs_fileinfostil)
-		tmpNode = xs_fileinfostil->subTunes[0];
-	
-	if (tmpNode) {
-		subName = tmpNode->name;
-		subAuthor = tmpNode->author;
-		subInfo = tmpNode->info;
-	} else {
-		subName = NULL;
-		subAuthor = NULL;
-		subInfo = NULL;
-	}
+    /* Get subtune information */
+    tmpNode = (stil_subnode_t *) data;
+    if (!tmpNode && xs_fileinfostil)
+        tmpNode = xs_fileinfostil->subTunes[0];
+    
+    if (tmpNode) {
+        subName = tmpNode->name;
+        subAuthor = tmpNode->author;
+        subInfo = tmpNode->info;
+    } else {
+        subName = NULL;
+        subAuthor = NULL;
+        subInfo = NULL;
+    }
 
-	/* Get and set subtune information */
-	gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_sub_name")), subName ? subName : "");
-	gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_sub_author")), subAuthor ? subAuthor : "");
+    /* Get and set subtune information */
+    gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_sub_name")), subName ? subName : "");
+    gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_sub_author")), subAuthor ? subAuthor : "");
 
 #ifdef AUDACIOUS_PLUGIN
-	gtk_text_buffer_set_text(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmpText))),
-		subInfo ? subInfo : "", -1);
+    gtk_text_buffer_set_text(GTK_TEXT_BUFFER(gtk_text_view_get_buffer(GTK_TEXT_VIEW(tmpText))),
+        subInfo ? subInfo : "", -1);
 #else
-	gtk_text_insert(GTK_TEXT(tmpText), NULL, NULL, NULL,
-		subInfo ? subInfo : "", -1);
+    gtk_text_insert(GTK_TEXT(tmpText), NULL, NULL, NULL,
+        subInfo ? subInfo : "", -1);
 
-	/* Un-freeze the widget */
-	gtk_text_thaw(GTK_TEXT(tmpText));
+    /* Un-freeze the widget */
+    gtk_text_thaw(GTK_TEXT(tmpText));
 #endif
 }
 
 
 void xs_fileinfo(gchar * filename)
 {
-	GtkWidget *tmpMenuItem, *tmpMenu, *tmpOptionMenu;
-	xs_tuneinfo_t *tmpInfo;
-	stil_subnode_t *tmpNode;
-	gchar tmpStr[256], *tmpFilename;
-	gint n;
+    GtkWidget *tmpMenuItem, *tmpMenu, *tmpOptionMenu;
+    xs_tuneinfo_t *tmpInfo;
+    stil_subnode_t *tmpNode;
+    gchar tmpStr[256], *tmpFilename;
+    gint n;
 
-	/* Current implementation leaves old fileinfo window untouched if
-	 * no information can be found for the new file. Hmm...
-	 */
+    /* Current implementation leaves old fileinfo window untouched if
+     * no information can be found for the new file. Hmm...
+     */
 #ifdef AUDACIOUS_PLUGIN
-	xs_get_trackinfo(filename, &tmpFilename, &n);
+    xs_get_trackinfo(filename, &tmpFilename, &n);
 #else
-	tmpFilename = filename;
-#endif	
+    tmpFilename = filename;
+#endif    
 
-	/* Get new tune information */
-	XS_MUTEX_LOCK(xs_fileinfowin);
-	XS_MUTEX_LOCK(xs_status);
-	if ((tmpInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename)) == NULL) {
-		XS_MUTEX_UNLOCK(xs_fileinfowin);
-		XS_MUTEX_UNLOCK(xs_status);
-		return;
-	}
-	XS_MUTEX_UNLOCK(xs_status);
+    /* Get new tune information */
+    XS_MUTEX_LOCK(xs_fileinfowin);
+    XS_MUTEX_LOCK(xs_status);
+    if ((tmpInfo = xs_status.sidPlayer->plrGetSIDInfo(tmpFilename)) == NULL) {
+        XS_MUTEX_UNLOCK(xs_fileinfowin);
+        XS_MUTEX_UNLOCK(xs_status);
+        return;
+    }
+    XS_MUTEX_UNLOCK(xs_status);
 
-	xs_fileinfostil = xs_stil_get(tmpFilename);
+    xs_fileinfostil = xs_stil_get(tmpFilename);
 
 #ifdef AUDACIOUS_PLUGIN
-	g_free(tmpFilename);
+    g_free(tmpFilename);
 #endif
 
-	/* Check if there already is an open fileinfo window */
-	if (xs_fileinfowin)
+    /* Check if there already is an open fileinfo window */
+    if (xs_fileinfowin)
                 gtk_window_present(GTK_WINDOW(xs_fileinfowin));
-	else {
-		xs_fileinfowin = create_xs_fileinfowin();
+    else {
+        xs_fileinfowin = create_xs_fileinfowin();
 #ifndef AUDACIOUS_PLUGIN
-		XS_SIGNAL_CONNECT(gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj"))),
-			"value_changed", xs_fileinfo_setsong, NULL);
+        XS_SIGNAL_CONNECT(gtk_range_get_adjustment(GTK_RANGE(LUW("fileinfo_subctrl_adj"))),
+            "value_changed", xs_fileinfo_setsong, NULL);
 #endif
-	}
+    }
 
-	/* Delete current items */
-	tmpOptionMenu = LUW("fileinfo_sub_tune");
-	tmpMenu = gtk_option_menu_get_menu(GTK_OPTION_MENU(tmpOptionMenu));
-	gtk_widget_destroy(tmpMenu);
-	gtk_option_menu_remove_menu(GTK_OPTION_MENU(tmpOptionMenu));
-	tmpMenu = gtk_menu_new();
+    /* Delete current items */
+    tmpOptionMenu = LUW("fileinfo_sub_tune");
+    tmpMenu = gtk_option_menu_get_menu(GTK_OPTION_MENU(tmpOptionMenu));
+    gtk_widget_destroy(tmpMenu);
+    gtk_option_menu_remove_menu(GTK_OPTION_MENU(tmpOptionMenu));
+    tmpMenu = gtk_menu_new();
 
 
-	/* Set the generic song information */
-	tmpFilename = XS_CS_FILENAME(filename);
-	gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_filename")), tmpFilename);
-	g_free(tmpFilename);
-	gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_songname")), tmpInfo->sidName);
-	gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_composer")), tmpInfo->sidComposer);
-	gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_copyright")), tmpInfo->sidCopyright);
+    /* Set the generic song information */
+    tmpFilename = XS_CS_FILENAME(filename);
+    gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_filename")), tmpFilename);
+    g_free(tmpFilename);
+    gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_songname")), tmpInfo->sidName);
+    gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_composer")), tmpInfo->sidComposer);
+    gtk_entry_set_text(GTK_ENTRY(LUW("fileinfo_copyright")), tmpInfo->sidCopyright);
 
 
-	/* Main tune - the pseudo tune */
-	tmpMenuItem = gtk_menu_item_new_with_label(_("General info"));
-	gtk_widget_show(tmpMenuItem);
-	gtk_menu_append(GTK_MENU(tmpMenu), tmpMenuItem);
-	if (xs_fileinfostil)
-		tmpNode = xs_fileinfostil->subTunes[0];
-	else
-		tmpNode = NULL;
-	XS_SIGNAL_CONNECT(tmpMenuItem, "activate", xs_fileinfo_subtune, tmpNode);
+    /* Main tune - the pseudo tune */
+    tmpMenuItem = gtk_menu_item_new_with_label(_("General info"));
+    gtk_widget_show(tmpMenuItem);
+    gtk_menu_append(GTK_MENU(tmpMenu), tmpMenuItem);
+    if (xs_fileinfostil)
+        tmpNode = xs_fileinfostil->subTunes[0];
+    else
+        tmpNode = NULL;
+    XS_SIGNAL_CONNECT(tmpMenuItem, "activate", xs_fileinfo_subtune, tmpNode);
 
-	/* Other menu items */
-	for (n = 1; n <= tmpInfo->nsubTunes; n++) {
-		if (xs_fileinfostil && n <= xs_fileinfostil->nsubTunes && xs_fileinfostil->subTunes[n]) {
-			gboolean isSet = FALSE;
-			tmpNode = xs_fileinfostil->subTunes[n];
-			
-			g_snprintf(tmpStr, sizeof(tmpStr), _("Tune #%i: "), n);
+    /* Other menu items */
+    for (n = 1; n <= tmpInfo->nsubTunes; n++) {
+        if (xs_fileinfostil && n <= xs_fileinfostil->nsubTunes && xs_fileinfostil->subTunes[n]) {
+            gboolean isSet = FALSE;
+            tmpNode = xs_fileinfostil->subTunes[n];
+            
+            g_snprintf(tmpStr, sizeof(tmpStr), _("Tune #%i: "), n);
 
-			if (tmpNode->name) {
-				xs_pnstrcat(tmpStr, sizeof(tmpStr), tmpNode->name);
-				isSet = TRUE;
-			}
+            if (tmpNode->name) {
+                xs_pnstrcat(tmpStr, sizeof(tmpStr), tmpNode->name);
+                isSet = TRUE;
+            }
 
-			if (tmpNode->title) {
-				xs_pnstrcat(tmpStr, sizeof(tmpStr),
-					isSet ? " [*]" : tmpNode->title);
-				isSet = TRUE;
-			}
+            if (tmpNode->title) {
+                xs_pnstrcat(tmpStr, sizeof(tmpStr),
+                    isSet ? " [*]" : tmpNode->title);
+                isSet = TRUE;
+            }
 
-			if (tmpNode->info) {
-				xs_pnstrcat(tmpStr, sizeof(tmpStr), " [!]");
-				isSet = TRUE;
-			}
+            if (tmpNode->info) {
+                xs_pnstrcat(tmpStr, sizeof(tmpStr), " [!]");
+                isSet = TRUE;
+            }
 
-			if (!isSet)
-				xs_pnstrcat(tmpStr, sizeof(tmpStr), "---");
+            if (!isSet)
+                xs_pnstrcat(tmpStr, sizeof(tmpStr), "---");
 
-			tmpMenuItem = gtk_menu_item_new_with_label(tmpStr);
-			gtk_widget_show(tmpMenuItem);
-			gtk_menu_append(GTK_MENU(tmpMenu), tmpMenuItem);
-			XS_SIGNAL_CONNECT(tmpMenuItem, "activate", xs_fileinfo_subtune, tmpNode);
-		}
+            tmpMenuItem = gtk_menu_item_new_with_label(tmpStr);
+            gtk_widget_show(tmpMenuItem);
+            gtk_menu_append(GTK_MENU(tmpMenu), tmpMenuItem);
+            XS_SIGNAL_CONNECT(tmpMenuItem, "activate", xs_fileinfo_subtune, tmpNode);
+        }
 
-	}
+    }
 
-	gtk_option_menu_set_menu(GTK_OPTION_MENU(tmpOptionMenu), tmpMenu);
-	gtk_widget_show(tmpOptionMenu);
+    gtk_option_menu_set_menu(GTK_OPTION_MENU(tmpOptionMenu), tmpMenu);
+    gtk_widget_show(tmpOptionMenu);
 
-	/* Set the subtune information */
-	xs_fileinfo_subtune(tmpOptionMenu, NULL);
+    /* Set the subtune information */
+    xs_fileinfo_subtune(tmpOptionMenu, NULL);
 
-	/* Free temporary tuneinfo */
-	xs_tuneinfo_free(tmpInfo);
+    /* Free temporary tuneinfo */
+    xs_tuneinfo_free(tmpInfo);
 
-	/* Show the window */
-	gtk_widget_show(xs_fileinfowin);
+    /* Show the window */
+    gtk_widget_show(xs_fileinfowin);
 
-	XS_MUTEX_UNLOCK(xs_fileinfowin);
+    XS_MUTEX_UNLOCK(xs_fileinfowin);
 
 #ifndef AUDACIOUS_PLUGIN
-	xs_fileinfo_update();
+    xs_fileinfo_update();
 #endif
 }
--- a/src/sid/xs_fileinfo.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_fileinfo.h	Thu Apr 03 00:52:14 2008 +0300
@@ -8,9 +8,9 @@
 #endif
 
 #ifndef AUDACIOUS_PLUGIN
-void	xs_fileinfo_update(void);
+void    xs_fileinfo_update(void);
 #endif
-void	xs_fileinfo(gchar *);
+void    xs_fileinfo(gchar *);
 
 #ifdef __cplusplus
 }
--- a/src/sid/xs_filter.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_filter.c	Thu Apr 03 00:52:14 2008 +0300
@@ -25,60 +25,60 @@
 /* Let's do some preprocessor magic :) */
 #define XS_FVAR(T, P, K) g ## K ## int ## P *sp_ ## T ## P , *dp_ ## T ## P
 
-#define XS_FILTER1(T, P, K, Q)							\
-	dataSize /= sizeof(g ## K ## int ## P); 				\
-	sp_ ## T ## P = (g ## K ## int ## P *) srcBuf;				\
-	dp_ ## T ## P = (g ## K ## int ## P *) destBuf;				\
-	while (dataSize-- > 0) {						\
-		for (tmp = 0, i = 0; i < oversampleFactor; i++)			\
-			tmp += (gint32) ((gint ## P) (*(sp_ ## T ## P ++) Q));	\
-		xs_filter_mbn = (tmp + xs_filter_mbn) / (oversampleFactor + 1);	\
-		*(dp_ ## T ## P ++) = ((g ## K ## int ## P) xs_filter_mbn) Q ;	\
-		}
+#define XS_FILTER1(T, P, K, Q)                            \
+    dataSize /= sizeof(g ## K ## int ## P);                 \
+    sp_ ## T ## P = (g ## K ## int ## P *) srcBuf;                \
+    dp_ ## T ## P = (g ## K ## int ## P *) destBuf;                \
+    while (dataSize-- > 0) {                        \
+        for (tmp = 0, i = 0; i < oversampleFactor; i++)            \
+            tmp += (gint32) ((gint ## P) (*(sp_ ## T ## P ++) Q));    \
+        xs_filter_mbn = (tmp + xs_filter_mbn) / (oversampleFactor + 1);    \
+        *(dp_ ## T ## P ++) = ((g ## K ## int ## P) xs_filter_mbn) Q ;    \
+        }
 
 
 static gint32 xs_filter_mbn = 0;
 
 
 gint xs_filter_rateconv(void *destBuf, void *srcBuf, const AFormat audioFormat,
-			const gint oversampleFactor, const gint bufSize)
+            const gint oversampleFactor, const gint bufSize)
 {
-	static gint32 tmp;
-	XS_FVAR(s, 8,);
-	XS_FVAR(u, 8, u);
-	XS_FVAR(s, 16,);
-	XS_FVAR(u, 16, u);
-	gint i;
-	gint dataSize = bufSize;
+    static gint32 tmp;
+    XS_FVAR(s, 8,);
+    XS_FVAR(u, 8, u);
+    XS_FVAR(s, 16,);
+    XS_FVAR(u, 16, u);
+    gint i;
+    gint dataSize = bufSize;
 
-	if (dataSize <= 0)
-		return dataSize;
+    if (dataSize <= 0)
+        return dataSize;
 
-	switch (audioFormat) {
-	case FMT_U8:
-		XS_FILTER1(u, 8, u, ^0x80)
-		    break;
+    switch (audioFormat) {
+    case FMT_U8:
+        XS_FILTER1(u, 8, u, ^0x80)
+            break;
 
-	case FMT_S8:
-		XS_FILTER1(s, 8,,)
-		    break;
+    case FMT_S8:
+        XS_FILTER1(s, 8,,)
+            break;
 
 
-	case FMT_U16_BE:
-	case FMT_U16_LE:
-	case FMT_U16_NE:
-		XS_FILTER1(u, 16, u, ^0x8000)
-		    break;
+    case FMT_U16_BE:
+    case FMT_U16_LE:
+    case FMT_U16_NE:
+        XS_FILTER1(u, 16, u, ^0x8000)
+            break;
 
-	case FMT_S16_BE:
-	case FMT_S16_LE:
-	case FMT_S16_NE:
-		XS_FILTER1(s, 16,,)
-		    break;
+    case FMT_S16_BE:
+    case FMT_S16_LE:
+    case FMT_S16_NE:
+        XS_FILTER1(s, 16,,)
+            break;
 
-	default:
-		return -1;
-	}
+    default:
+        return -1;
+    }
 
-	return 0;
+    return 0;
 }
--- a/src/sid/xs_filter.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_filter.h	Thu Apr 03 00:52:14 2008 +0300
@@ -11,9 +11,9 @@
 typedef struct {
 } t_xs_filter;
 
-void	xs_filter_init(t_xs_filter *);
+void    xs_filter_init(t_xs_filter *);
 */
-gint	xs_filter_rateconv(void *, void *, const AFormat, const gint, const gint);
+gint    xs_filter_rateconv(void *, void *, const AFormat, const gint, const gint);
 
 #ifdef __cplusplus
 }
--- a/src/sid/xs_init.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_init.c	Thu Apr 03 00:52:14 2008 +0300
@@ -28,24 +28,24 @@
 
 
 InputPlugin xs_plugin_ip = {
-	.description = XS_PACKAGE_STRING,	/* Plugin description */
-	.init = xs_init,			/* Initialization */
-	.cleanup = xs_close,			/* Cleanup */
-	.about = xs_about,			/* Show aboutbox */
-	.configure = xs_configure,		/* Show/edit configuration */
+    .description = XS_PACKAGE_STRING,    /* Plugin description */
+    .init = xs_init,            /* Initialization */
+    .cleanup = xs_close,            /* Cleanup */
+    .about = xs_about,            /* Show aboutbox */
+    .configure = xs_configure,        /* Show/edit configuration */
 
-	.play_file = xs_play_file,		/* Play given file */
-	.stop = xs_stop,			/* Stop playing */
-	.pause = xs_pause,			/* Pause playing */
-	.seek = xs_seek,			/* Seek time */
-	.get_time = xs_get_time,		/* Get playing time */
+    .play_file = xs_play_file,        /* Play given file */
+    .stop = xs_stop,            /* Stop playing */
+    .pause = xs_pause,            /* Pause playing */
+    .seek = xs_seek,            /* Seek time */
+    .get_time = xs_get_time,        /* Get playing time */
 
-	.file_info_box = xs_fileinfo,		/* Show file-information dialog */
+    .file_info_box = xs_fileinfo,        /* Show file-information dialog */
 
-	.get_song_tuple = xs_get_song_tuple,		/* Get Tuple */
-	.vfs_extensions = xs_sid_fmts,			/* File ext assist */
-	.probe_for_tuple = xs_probe_for_tuple,
-	.have_subtune = TRUE
+    .get_song_tuple = xs_get_song_tuple,        /* Get Tuple */
+    .vfs_extensions = xs_sid_fmts,            /* File ext assist */
+    .probe_for_tuple = xs_probe_for_tuple,
+    .have_subtune = TRUE
 };
 
 static InputPlugin *sid_iplist[] = { &xs_plugin_ip, NULL };
--- a/src/sid/xs_length.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_length.c	Thu Apr 03 00:52:14 2008 +0300
@@ -32,11 +32,11 @@
  */
 static void xs_sldb_node_free(sldb_node_t *node)
 {
-	if (node) {
-		/* Nothing much to do here ... */
-		g_free(node->lengths);
-		g_free(node);
-	}
+    if (node) {
+        /* Nothing much to do here ... */
+        g_free(node->lengths);
+        g_free(node);
+    }
 }
 
 
@@ -44,19 +44,19 @@
  */
 static void xs_sldb_node_insert(xs_sldb_t *db, sldb_node_t *node)
 {
-	assert(db);
+    assert(db);
 
-	if (db->nodes) {
-		/* The first node's prev points to last node */
-		LPREV = db->nodes->prev;	/* New node's prev = Previous last node */
-		db->nodes->prev->next = node;	/* Previous last node's next = New node */
-		db->nodes->prev = node;	/* New last node = New node */
-		LNEXT = NULL;	/* But next is NULL! */
-	} else {
-		db->nodes = node;	/* First node ... */
-		LPREV = node;	/* ... it's also last */
-		LNEXT = NULL;	/* But next is NULL! */
-	}
+    if (db->nodes) {
+        /* The first node's prev points to last node */
+        LPREV = db->nodes->prev;    /* New node's prev = Previous last node */
+        db->nodes->prev->next = node;    /* Previous last node's next = New node */
+        db->nodes->prev = node;    /* New last node = New node */
+        LNEXT = NULL;    /* But next is NULL! */
+    } else {
+        db->nodes = node;    /* First node ... */
+        LPREV = node;    /* ... it's also last */
+        LNEXT = NULL;    /* But next is NULL! */
+    }
 }
 
 
@@ -64,37 +64,37 @@
  */
 static gint xs_sldb_gettime(gchar *str, size_t *pos)
 {
-	gint result, tmp;
+    gint result, tmp;
 
-	/* Check if it starts with a digit */
-	if (isdigit(str[*pos])) {
-		/* Get minutes-field */
-		result = 0;
-		while (isdigit(str[*pos]))
-			result = (result * 10) + (str[(*pos)++] - '0');
+    /* Check if it starts with a digit */
+    if (isdigit(str[*pos])) {
+        /* Get minutes-field */
+        result = 0;
+        while (isdigit(str[*pos]))
+            result = (result * 10) + (str[(*pos)++] - '0');
 
-		result *= 60;
+        result *= 60;
 
-		/* Check the field separator char */
-		if (str[*pos] == ':') {
-			/* Get seconds-field */
-			(*pos)++;
-			tmp = 0;
-			while (isdigit(str[*pos])) {
-				tmp = (tmp * 10) + (str[(*pos)++] - '0');
-			}
+        /* Check the field separator char */
+        if (str[*pos] == ':') {
+            /* Get seconds-field */
+            (*pos)++;
+            tmp = 0;
+            while (isdigit(str[*pos])) {
+                tmp = (tmp * 10) + (str[(*pos)++] - '0');
+            }
 
-			result += tmp;
-		} else
-			result = -2;
-	} else
-		result = -1;
+            result += tmp;
+        } else
+            result = -2;
+    } else
+        result = -1;
 
-	/* Ignore and skip the possible attributes */
-	while (str[*pos] && !isspace(str[*pos]))
-		(*pos)++;
+    /* Ignore and skip the possible attributes */
+    while (str[*pos] && !isspace(str[*pos]))
+        (*pos)++;
 
-	return result;
+    return result;
 }
 
 
@@ -102,90 +102,90 @@
  */
 sldb_node_t * xs_sldb_read_entry(gchar *inLine)
 {
-	size_t linePos;
-	gint i;
-	gboolean isOK;
-	sldb_node_t *tmnode;
+    size_t linePos;
+    gint i;
+    gboolean isOK;
+    sldb_node_t *tmnode;
 
-	/* Allocate new node */
-	tmnode = (sldb_node_t *) g_malloc0(sizeof(sldb_node_t));
-	if (!tmnode) {
-		xs_error("Error allocating new node. Fatal error.\n");
-		return NULL;
-	}
+    /* Allocate new node */
+    tmnode = (sldb_node_t *) g_malloc0(sizeof(sldb_node_t));
+    if (!tmnode) {
+        xs_error("Error allocating new node. Fatal error.\n");
+        return NULL;
+    }
 
-	/* Get hash value */
-	linePos = 0;
-	for (i = 0; i < XS_MD5HASH_LENGTH; i++, linePos += 2) {
-		gint tmpu;
-		sscanf(&inLine[linePos], "%2x", &tmpu);
-		tmnode->md5Hash[i] = tmpu;
-	}
-		
-	/* Get playtimes */
-	if (inLine[linePos] != 0) {
-		if (inLine[linePos] != '=') {
-			xs_error("'=' expected on column #%d.\n", linePos);
-			xs_sldb_node_free(tmnode);
-			return NULL;
-		} else {
-			size_t tmpLen, savePos;
-			
-			/* First playtime is after '=' */
-			savePos = ++linePos;
-			tmpLen = strlen(inLine);
-						
-			/* Get number of sub-tune lengths */						
-			isOK = TRUE;
-			while ((linePos < tmpLen) && isOK) {
-				xs_findnext(inLine, &linePos);
+    /* Get hash value */
+    linePos = 0;
+    for (i = 0; i < XS_MD5HASH_LENGTH; i++, linePos += 2) {
+        gint tmpu;
+        sscanf(&inLine[linePos], "%2x", &tmpu);
+        tmnode->md5Hash[i] = tmpu;
+    }
+        
+    /* Get playtimes */
+    if (inLine[linePos] != 0) {
+        if (inLine[linePos] != '=') {
+            xs_error("'=' expected on column #%d.\n", linePos);
+            xs_sldb_node_free(tmnode);
+            return NULL;
+        } else {
+            size_t tmpLen, savePos;
+            
+            /* First playtime is after '=' */
+            savePos = ++linePos;
+            tmpLen = strlen(inLine);
+                        
+            /* Get number of sub-tune lengths */                        
+            isOK = TRUE;
+            while ((linePos < tmpLen) && isOK) {
+                xs_findnext(inLine, &linePos);
 
-				if (xs_sldb_gettime(inLine, &linePos) >= 0)
-					tmnode->nlengths++;
-				else
-					isOK = FALSE;
-			}
-			
-			/* Allocate memory for lengths */
-			if (tmnode->nlengths > 0) {
-				tmnode->lengths = (gint *) g_malloc0(tmnode->nlengths * sizeof(gint));
-				if (!tmnode->lengths) {
-					xs_error("Could not allocate memory for node.\n");
-					xs_sldb_node_free(tmnode);
-					return NULL;
-				}
-			} else {
-				xs_sldb_node_free(tmnode);
-				return NULL;
-			}
-			
-			/* Read lengths in */
-			i = 0;
-			linePos = savePos;
-			isOK = TRUE;
-			while ((linePos < tmpLen) && (i < tmnode->nlengths) && isOK) {
-				gint l;
-				
-				xs_findnext(inLine, &linePos);
+                if (xs_sldb_gettime(inLine, &linePos) >= 0)
+                    tmnode->nlengths++;
+                else
+                    isOK = FALSE;
+            }
+            
+            /* Allocate memory for lengths */
+            if (tmnode->nlengths > 0) {
+                tmnode->lengths = (gint *) g_malloc0(tmnode->nlengths * sizeof(gint));
+                if (!tmnode->lengths) {
+                    xs_error("Could not allocate memory for node.\n");
+                    xs_sldb_node_free(tmnode);
+                    return NULL;
+                }
+            } else {
+                xs_sldb_node_free(tmnode);
+                return NULL;
+            }
+            
+            /* Read lengths in */
+            i = 0;
+            linePos = savePos;
+            isOK = TRUE;
+            while ((linePos < tmpLen) && (i < tmnode->nlengths) && isOK) {
+                gint l;
+                
+                xs_findnext(inLine, &linePos);
 
-				l = xs_sldb_gettime(inLine, &linePos);
-				if (l >= 0)
-					tmnode->lengths[i] = l;
-				else
-					isOK = FALSE;
+                l = xs_sldb_gettime(inLine, &linePos);
+                if (l >= 0)
+                    tmnode->lengths[i] = l;
+                else
+                    isOK = FALSE;
 
-				i++;
-			}
+                i++;
+            }
 
-			if (!isOK) {
-				xs_sldb_node_free(tmnode);
-				return NULL;
-			} else
-				return tmnode;
-		}
-	}
+            if (!isOK) {
+                xs_sldb_node_free(tmnode);
+                return NULL;
+            } else
+                return tmnode;
+        }
+    }
 
-	return NULL;
+    return NULL;
 }
 
 
@@ -193,56 +193,56 @@
  */
 gint xs_sldb_read(xs_sldb_t *db, const gchar *dbFilename)
 {
-	FILE *inFile;
-	gchar inLine[XS_BUF_SIZE];
-	size_t lineNum;
-	sldb_node_t *tmnode;
-	assert(db);
+    FILE *inFile;
+    gchar inLine[XS_BUF_SIZE];
+    size_t lineNum;
+    sldb_node_t *tmnode;
+    assert(db);
 
-	/* Try to open the file */
-	if ((inFile = fopen(dbFilename, "ra")) == NULL) {
-		xs_error("Could not open SongLengthDB '%s'\n", dbFilename);
-		return -1;
-	}
+    /* Try to open the file */
+    if ((inFile = fopen(dbFilename, "ra")) == NULL) {
+        xs_error("Could not open SongLengthDB '%s'\n", dbFilename);
+        return -1;
+    }
 
-	/* Read and parse the data */
-	lineNum = 0;
+    /* Read and parse the data */
+    lineNum = 0;
 
-	while (fgets(inLine, XS_BUF_SIZE, inFile) != NULL) {
-		size_t linePos = 0;
-		lineNum++;
-		
-		xs_findnext(inLine, &linePos);
+    while (fgets(inLine, XS_BUF_SIZE, inFile) != NULL) {
+        size_t linePos = 0;
+        lineNum++;
+        
+        xs_findnext(inLine, &linePos);
 
-		/* Check if it is datafield */
-		if (isxdigit(inLine[linePos])) {
-			/* Check the length of the hash */
-			gint hashLen;
-			for (hashLen = 0; inLine[linePos] && isxdigit(inLine[linePos]); hashLen++, linePos++);
+        /* Check if it is datafield */
+        if (isxdigit(inLine[linePos])) {
+            /* Check the length of the hash */
+            gint hashLen;
+            for (hashLen = 0; inLine[linePos] && isxdigit(inLine[linePos]); hashLen++, linePos++);
 
-			if (hashLen != XS_MD5HASH_LENGTH_CH) {
-				xs_error("Invalid MD5-hash in SongLengthDB file '%s' line #%d!\n",
-					dbFilename, lineNum);
-			} else {
-				/* Parse and add node to db */
-				if ((tmnode = xs_sldb_read_entry(inLine)) != NULL) {
-					xs_sldb_node_insert(db, tmnode);
-				} else {
-					xs_error("Invalid entry in SongLengthDB file '%s' line #%d!\n",
-						dbFilename, lineNum);
-				}
-			}
-		} else if ((inLine[linePos] != ';') && (inLine[linePos] != '[') && (inLine[linePos] != 0)) {
-			xs_error("Invalid line in SongLengthDB file '%s' line #%d\n",
-				dbFilename, lineNum);
-		}
+            if (hashLen != XS_MD5HASH_LENGTH_CH) {
+                xs_error("Invalid MD5-hash in SongLengthDB file '%s' line #%d!\n",
+                    dbFilename, lineNum);
+            } else {
+                /* Parse and add node to db */
+                if ((tmnode = xs_sldb_read_entry(inLine)) != NULL) {
+                    xs_sldb_node_insert(db, tmnode);
+                } else {
+                    xs_error("Invalid entry in SongLengthDB file '%s' line #%d!\n",
+                        dbFilename, lineNum);
+                }
+            }
+        } else if ((inLine[linePos] != ';') && (inLine[linePos] != '[') && (inLine[linePos] != 0)) {
+            xs_error("Invalid line in SongLengthDB file '%s' line #%d\n",
+                dbFilename, lineNum);
+        }
 
-	}
+    }
 
-	/* Close the file */
-	fclose(inFile);
+    /* Close the file */
+    fclose(inFile);
 
-	return 0;
+    return 0;
 }
 
 
@@ -253,13 +253,13 @@
  */
 static gint xs_sldb_cmphash(xs_md5hash_t testHash1, xs_md5hash_t testHash2)
 {
-	gint i, d;
+    gint i, d;
 
-	/* Compute difference of hashes */
-	for (i = 0, d = 0; (i < XS_MD5HASH_LENGTH) && !d; i++)
-		d = (testHash1[i] - testHash2[i]);
+    /* Compute difference of hashes */
+    for (i = 0, d = 0; (i < XS_MD5HASH_LENGTH) && !d; i++)
+        d = (testHash1[i] - testHash2[i]);
 
-	return d;
+    return d;
 }
 
 
@@ -267,10 +267,10 @@
  */
 static gint xs_sldb_cmp(const void *node1, const void *node2)
 {
-	/* We assume here that we never ever get NULL-pointers or similar */
-	return xs_sldb_cmphash(
-		(*(sldb_node_t **) node1)->md5Hash,
-		(*(sldb_node_t **) node2)->md5Hash);
+    /* We assume here that we never ever get NULL-pointers or similar */
+    return xs_sldb_cmphash(
+        (*(sldb_node_t **) node1)->md5Hash,
+        (*(sldb_node_t **) node2)->md5Hash);
 }
 
 
@@ -278,44 +278,44 @@
  */
 gint xs_sldb_index(xs_sldb_t * db)
 {
-	sldb_node_t *pCurr;
-	size_t i;
-	assert(db);
+    sldb_node_t *pCurr;
+    size_t i;
+    assert(db);
 
-	/* Free old index */
-	if (db->pindex) {
-		g_free(db->pindex);
-		db->pindex = NULL;
-	}
+    /* Free old index */
+    if (db->pindex) {
+        g_free(db->pindex);
+        db->pindex = NULL;
+    }
 
-	/* Get size of db */
-	pCurr = db->nodes;
-	db->n = 0;
-	while (pCurr) {
-		db->n++;
-		pCurr = pCurr->next;
-	}
+    /* Get size of db */
+    pCurr = db->nodes;
+    db->n = 0;
+    while (pCurr) {
+        db->n++;
+        pCurr = pCurr->next;
+    }
 
-	/* Check number of nodes */
-	if (db->n > 0) {
-		/* Allocate memory for index-table */
-		db->pindex = (sldb_node_t **) g_malloc(sizeof(sldb_node_t *) * db->n);
-		if (!db->pindex)
-			return -1;
+    /* Check number of nodes */
+    if (db->n > 0) {
+        /* Allocate memory for index-table */
+        db->pindex = (sldb_node_t **) g_malloc(sizeof(sldb_node_t *) * db->n);
+        if (!db->pindex)
+            return -1;
 
-		/* Get node-pointers to table */
-		i = 0;
-		pCurr = db->nodes;
-		while (pCurr && (i < db->n)) {
-			db->pindex[i++] = pCurr;
-			pCurr = pCurr->next;
-		}
+        /* Get node-pointers to table */
+        i = 0;
+        pCurr = db->nodes;
+        while (pCurr && (i < db->n)) {
+            db->pindex[i++] = pCurr;
+            pCurr = pCurr->next;
+        }
 
-		/* Sort the indexes */
-		qsort(db->pindex, db->n, sizeof(sldb_node_t *), xs_sldb_cmp);
-	}
+        /* Sort the indexes */
+        qsort(db->pindex, db->n, sizeof(sldb_node_t *), xs_sldb_cmp);
+    }
 
-	return 0;
+    return 0;
 }
 
 
@@ -323,172 +323,172 @@
  */
 void xs_sldb_free(xs_sldb_t * db)
 {
-	sldb_node_t *pCurr, *next;
+    sldb_node_t *pCurr, *next;
 
-	if (!db)
-		return;
+    if (!db)
+        return;
 
-	/* Free the memory allocated for nodes */
-	pCurr = db->nodes;
-	while (pCurr) {
-		next = pCurr->next;
-		xs_sldb_node_free(pCurr);
-		pCurr = next;
-	}
+    /* Free the memory allocated for nodes */
+    pCurr = db->nodes;
+    while (pCurr) {
+        next = pCurr->next;
+        xs_sldb_node_free(pCurr);
+        pCurr = next;
+    }
 
-	db->nodes = NULL;
+    db->nodes = NULL;
 
-	/* Free memory allocated for index */
-	if (db->pindex) {
-		g_free(db->pindex);
-		db->pindex = NULL;
-	}
+    /* Free memory allocated for index */
+    if (db->pindex) {
+        g_free(db->pindex);
+        db->pindex = NULL;
+    }
 
-	/* Free structure */
-	db->n = 0;
-	g_free(db);
+    /* Free structure */
+    db->n = 0;
+    g_free(db);
 }
 
 
 /* Compute md5hash of given SID-file
  */
 typedef struct {
-	gchar magicID[4];	/* "PSID" / "RSID" magic identifier */
-	guint16 version,	/* Version number */
-		dataOffset,	/* Start of actual c64 data in file */
-		loadAddress,	/* Loading address */
-		initAddress,	/* Initialization address */
-		playAddress,	/* Play one frame */
-		nSongs,		/* Number of subsongs */
-		startSong;	/* Default starting song */
-	guint32 speed;		/* Speed */
-	gchar sidName[32];	/* Descriptive text-fields, ASCIIZ */
-	gchar sidAuthor[32];
-	gchar sidCopyright[32];
+    gchar magicID[4];    /* "PSID" / "RSID" magic identifier */
+    guint16 version,    /* Version number */
+        dataOffset,    /* Start of actual c64 data in file */
+        loadAddress,    /* Loading address */
+        initAddress,    /* Initialization address */
+        playAddress,    /* Play one frame */
+        nSongs,        /* Number of subsongs */
+        startSong;    /* Default starting song */
+    guint32 speed;        /* Speed */
+    gchar sidName[32];    /* Descriptive text-fields, ASCIIZ */
+    gchar sidAuthor[32];
+    gchar sidCopyright[32];
 } psidv1_header_t;
 
 
 typedef struct {
-	guint16 flags;		/* Flags */
-	guint8 startPage, pageLength;
-	guint16 reserved;
+    guint16 flags;        /* Flags */
+    guint8 startPage, pageLength;
+    guint16 reserved;
 } psidv2_header_t;
 
 
 static gint xs_get_sid_hash(const gchar *filename, xs_md5hash_t hash)
 {
-	xs_file_t *inFile;
-	xs_md5state_t inState;
-	psidv1_header_t psidH;
-	psidv2_header_t psidH2;
-	guint8 *songData;
-	guint8 ib8[2], i8;
-	gint index, result;
+    xs_file_t *inFile;
+    xs_md5state_t inState;
+    psidv1_header_t psidH;
+    psidv2_header_t psidH2;
+    guint8 *songData;
+    guint8 ib8[2], i8;
+    gint index, result;
 
-	/* Try to open the file */
-	if ((inFile = xs_fopen(filename, "rb")) == NULL)
-		return -1;
+    /* Try to open the file */
+    if ((inFile = xs_fopen(filename, "rb")) == NULL)
+        return -1;
 
-	/* Read PSID header in */
-	xs_fread(psidH.magicID, sizeof(psidH.magicID), 1, inFile);
-	if (strncmp(psidH.magicID, "PSID", 4) && strncmp(psidH.magicID, "RSID", 4)) {
-		xs_fclose(inFile);
-		xs_error("Not a PSID or RSID file '%s'\n", filename);
-		return -2;
-	}
+    /* Read PSID header in */
+    xs_fread(psidH.magicID, sizeof(psidH.magicID), 1, inFile);
+    if (strncmp(psidH.magicID, "PSID", 4) && strncmp(psidH.magicID, "RSID", 4)) {
+        xs_fclose(inFile);
+        xs_error("Not a PSID or RSID file '%s'\n", filename);
+        return -2;
+    }
 
-	psidH.version = xs_fread_be16(inFile);
-	psidH.dataOffset = xs_fread_be16(inFile);
-	psidH.loadAddress = xs_fread_be16(inFile);
-	psidH.initAddress = xs_fread_be16(inFile);
-	psidH.playAddress = xs_fread_be16(inFile);
-	psidH.nSongs = xs_fread_be16(inFile);
-	psidH.startSong = xs_fread_be16(inFile);
-	psidH.speed = xs_fread_be32(inFile);
+    psidH.version = xs_fread_be16(inFile);
+    psidH.dataOffset = xs_fread_be16(inFile);
+    psidH.loadAddress = xs_fread_be16(inFile);
+    psidH.initAddress = xs_fread_be16(inFile);
+    psidH.playAddress = xs_fread_be16(inFile);
+    psidH.nSongs = xs_fread_be16(inFile);
+    psidH.startSong = xs_fread_be16(inFile);
+    psidH.speed = xs_fread_be32(inFile);
 
-	xs_fread(psidH.sidName, sizeof(gchar), sizeof(psidH.sidName), inFile);
-	xs_fread(psidH.sidAuthor, sizeof(gchar), sizeof(psidH.sidAuthor), inFile);
-	xs_fread(psidH.sidCopyright, sizeof(gchar), sizeof(psidH.sidCopyright), inFile);
-	
-	if (xs_feof(inFile) || xs_ferror(inFile)) {
-		xs_fclose(inFile);
-		xs_error("Error reading SID file header from '%s'\n", filename);
-		return -4;
-	}
-	
-	/* Check if we need to load PSIDv2NG header ... */
-	psidH2.flags = 0;	/* Just silence a stupid gcc warning */
-	
-	if (psidH.version == 2) {
-		/* Yes, we need to */
-		psidH2.flags = xs_fread_be16(inFile);
-		psidH2.startPage = xs_fgetc(inFile);
-		psidH2.pageLength = xs_fgetc(inFile);
-		psidH2.reserved = xs_fread_be16(inFile);
-	}
+    xs_fread(psidH.sidName, sizeof(gchar), sizeof(psidH.sidName), inFile);
+    xs_fread(psidH.sidAuthor, sizeof(gchar), sizeof(psidH.sidAuthor), inFile);
+    xs_fread(psidH.sidCopyright, sizeof(gchar), sizeof(psidH.sidCopyright), inFile);
+    
+    if (xs_feof(inFile) || xs_ferror(inFile)) {
+        xs_fclose(inFile);
+        xs_error("Error reading SID file header from '%s'\n", filename);
+        return -4;
+    }
+    
+    /* Check if we need to load PSIDv2NG header ... */
+    psidH2.flags = 0;    /* Just silence a stupid gcc warning */
+    
+    if (psidH.version == 2) {
+        /* Yes, we need to */
+        psidH2.flags = xs_fread_be16(inFile);
+        psidH2.startPage = xs_fgetc(inFile);
+        psidH2.pageLength = xs_fgetc(inFile);
+        psidH2.reserved = xs_fread_be16(inFile);
+    }
 
-	/* Allocate buffer */
-	songData = (guint8 *) g_malloc(XS_SIDBUF_SIZE * sizeof(guint8));
-	if (!songData) {
-		xs_fclose(inFile);
-		xs_error("Error allocating temp data buffer for file '%s'\n", filename);
-		return -3;
-	}
+    /* Allocate buffer */
+    songData = (guint8 *) g_malloc(XS_SIDBUF_SIZE * sizeof(guint8));
+    if (!songData) {
+        xs_fclose(inFile);
+        xs_error("Error allocating temp data buffer for file '%s'\n", filename);
+        return -3;
+    }
 
-	/* Read data to buffer */
-	result = xs_fread(songData, sizeof(guint8), XS_SIDBUF_SIZE, inFile);
-	xs_fclose(inFile);
+    /* Read data to buffer */
+    result = xs_fread(songData, sizeof(guint8), XS_SIDBUF_SIZE, inFile);
+    xs_fclose(inFile);
 
-	/* Initialize and start MD5-hash calculation */
-	xs_md5_init(&inState);
+    /* Initialize and start MD5-hash calculation */
+    xs_md5_init(&inState);
 
-	if (psidH.loadAddress == 0) {
-		/* Strip load address (2 first bytes) */
-		xs_md5_append(&inState, &songData[2], result - 2);
-	} else {
-		/* Append "as is" */
-		xs_md5_append(&inState, songData, result);
-	}
+    if (psidH.loadAddress == 0) {
+        /* Strip load address (2 first bytes) */
+        xs_md5_append(&inState, &songData[2], result - 2);
+    } else {
+        /* Append "as is" */
+        xs_md5_append(&inState, songData, result);
+    }
 
-	/* Free buffer */
-	g_free(songData);
+    /* Free buffer */
+    g_free(songData);
 
-	/* Append header data to hash */
-#define XSADDHASH(QDATAB) do {					\
-	ib8[0] = (QDATAB & 0xff);				\
-	ib8[1] = (QDATAB >> 8);					\
-	xs_md5_append(&inState, (guint8 *) &ib8, sizeof(ib8));	\
-	} while (0)
+    /* Append header data to hash */
+#define XSADDHASH(QDATAB) do {                    \
+    ib8[0] = (QDATAB & 0xff);                \
+    ib8[1] = (QDATAB >> 8);                    \
+    xs_md5_append(&inState, (guint8 *) &ib8, sizeof(ib8));    \
+    } while (0)
 
-	XSADDHASH(psidH.initAddress);
-	XSADDHASH(psidH.playAddress);
-	XSADDHASH(psidH.nSongs);
+    XSADDHASH(psidH.initAddress);
+    XSADDHASH(psidH.playAddress);
+    XSADDHASH(psidH.nSongs);
 #undef XSADDHASH
 
-	/* Append song speed data to hash */
-	i8 = 0;
-	for (index = 0; (index < psidH.nSongs) && (index < 32); index++) {
-		i8 = (psidH.speed & (1 << index)) ? 60 : 0;
-		xs_md5_append(&inState, &i8, sizeof(i8));
-	}
+    /* Append song speed data to hash */
+    i8 = 0;
+    for (index = 0; (index < psidH.nSongs) && (index < 32); index++) {
+        i8 = (psidH.speed & (1 << index)) ? 60 : 0;
+        xs_md5_append(&inState, &i8, sizeof(i8));
+    }
 
-	/* Rest of songs (more than 32) */
-	for (index = 32; index < psidH.nSongs; index++) {
-		xs_md5_append(&inState, &i8, sizeof(i8));
-	}
+    /* Rest of songs (more than 32) */
+    for (index = 32; index < psidH.nSongs; index++) {
+        xs_md5_append(&inState, &i8, sizeof(i8));
+    }
 
-	/* PSIDv2NG specific */
-	if (psidH.version == 2) {
-		/* SEE SIDPLAY HEADERS FOR INFO */
-		i8 = (psidH2.flags >> 2) & 3;
-		if (i8 == 2)
-			xs_md5_append(&inState, &i8, sizeof(i8));
-	}
+    /* PSIDv2NG specific */
+    if (psidH.version == 2) {
+        /* SEE SIDPLAY HEADERS FOR INFO */
+        i8 = (psidH2.flags >> 2) & 3;
+        if (i8 == 2)
+            xs_md5_append(&inState, &i8, sizeof(i8));
+    }
 
-	/* Calculate the hash */
-	xs_md5_finish(&inState, hash);
+    /* Calculate the hash */
+    xs_md5_finish(&inState, hash);
 
-	return 0;
+    return 0;
 }
 
 
@@ -496,24 +496,24 @@
  */
 sldb_node_t *xs_sldb_get(xs_sldb_t *db, const gchar *filename)
 {
-	sldb_node_t keyItem, *key, **item;
+    sldb_node_t keyItem, *key, **item;
 
-	/* Check the database pointers */
-	if (!db || !db->nodes || !db->pindex)
-		return NULL;
+    /* Check the database pointers */
+    if (!db || !db->nodes || !db->pindex)
+        return NULL;
 
-	/* Get the hash and then look up from db */
-	if (xs_get_sid_hash(filename, keyItem.md5Hash) == 0) {
-		key = &keyItem;
-		item = bsearch(&key, db->pindex, db->n,
-			sizeof(db->pindex[0]), xs_sldb_cmp);
-		
-		if (item)
-			return *item;
-		else
-			return NULL;
-	} else
-		return NULL;
+    /* Get the hash and then look up from db */
+    if (xs_get_sid_hash(filename, keyItem.md5Hash) == 0) {
+        key = &keyItem;
+        item = bsearch(&key, db->pindex, db->n,
+            sizeof(db->pindex[0]), xs_sldb_cmp);
+        
+        if (item)
+            return *item;
+        else
+            return NULL;
+    } else
+        return NULL;
 }
 
 
--- a/src/sid/xs_length.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_length.h	Thu Apr 03 00:52:14 2008 +0300
@@ -11,26 +11,26 @@
 /* Types
  */
 typedef struct _sldb_node_t {
-	xs_md5hash_t	md5Hash;	/* 128-bit MD5 hash-digest */
-	gint		nlengths;	/* Number of lengths */
-	gint		*lengths;	/* Lengths in seconds */
-	struct _sldb_node_t *prev, *next;
+    xs_md5hash_t    md5Hash;    /* 128-bit MD5 hash-digest */
+    gint        nlengths;    /* Number of lengths */
+    gint        *lengths;    /* Lengths in seconds */
+    struct _sldb_node_t *prev, *next;
 } sldb_node_t;
 
 
 typedef struct {
-	sldb_node_t	*nodes,
-			**pindex;
-	size_t		n;
+    sldb_node_t    *nodes,
+            **pindex;
+    size_t        n;
 } xs_sldb_t;
 
 
 /* Functions
  */
-gint		xs_sldb_read(xs_sldb_t *, const gchar *);
-gint		xs_sldb_index(xs_sldb_t *);
-void		xs_sldb_free(xs_sldb_t *);
-sldb_node_t *	xs_sldb_get(xs_sldb_t *, const gchar *);
+gint        xs_sldb_read(xs_sldb_t *, const gchar *);
+gint        xs_sldb_index(xs_sldb_t *);
+void        xs_sldb_free(xs_sldb_t *);
+sldb_node_t *    xs_sldb_get(xs_sldb_t *, const gchar *);
 
 #ifdef __cplusplus
 }
--- a/src/sid/xs_md5.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_md5.c	Thu Apr 03 00:52:14 2008 +0300
@@ -13,17 +13,17 @@
 
 
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define xs_md5_bytereverse(buf, len)	/* Nothing */
+#define xs_md5_bytereverse(buf, len)    /* Nothing */
 #else
 #if G_BYTE_ORDER == G_BIG_ENDIAN
 static void xs_md5_bytereverse(guint8 *buf, guint l)
 {
-	guint32 t;
-	do {
-		t = (guint32) ((guint) buf[3] << 8 | buf[2]) << 16 | ((guint) buf[1] << 8 | buf[0]);
-		*(guint32 *) buf = t;
-		buf += sizeof(guint32);
-	} while (--l);
+    guint32 t;
+    do {
+        t = (guint32) ((guint) buf[3] << 8 | buf[2]) << 16 | ((guint) buf[1] << 8 | buf[0]);
+        *(guint32 *) buf = t;
+        buf += sizeof(guint32);
+    } while (--l);
 }
 #else
 #error Unsupported endianess!
@@ -36,13 +36,13 @@
  */
 void xs_md5_init(xs_md5state_t *ctx)
 {
-	ctx->buf[0] = 0x67452301;
-	ctx->buf[1] = 0xefcdab89;
-	ctx->buf[2] = 0x98badcfe;
-	ctx->buf[3] = 0x10325476;
+    ctx->buf[0] = 0x67452301;
+    ctx->buf[1] = 0xefcdab89;
+    ctx->buf[2] = 0x98badcfe;
+    ctx->buf[3] = 0x10325476;
 
-	ctx->bits[0] = 0;
-	ctx->bits[1] = 0;
+    ctx->bits[0] = 0;
+    ctx->bits[1] = 0;
 }
 
 
@@ -55,89 +55,89 @@
 #define F3(x, y, z) (x ^ y ^ z)
 #define F4(x, y, z) (y ^ (x | ~z))
 #define MD5STEP(f, w, x, y, z, data, s) \
-	( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
+    ( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
 
 static void xs_md5_transform(guint32 buf[4], guint32 const in[16])
 {
-	register guint32 a, b, c, d;
+    register guint32 a, b, c, d;
 
-	a = buf[0];
-	b = buf[1];
-	c = buf[2];
-	d = buf[3];
+    a = buf[0];
+    b = buf[1];
+    c = buf[2];
+    d = buf[3];
 
-	MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
-	MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
-	MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
-	MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
-	MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
-	MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
-	MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
-	MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
-	MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
-	MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
-	MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
-	MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
-	MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
-	MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
-	MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
-	MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
+    MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
+    MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
+    MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
+    MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
+    MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
+    MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
+    MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
+    MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
+    MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
+    MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
+    MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
+    MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
+    MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
+    MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
+    MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
+    MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
 
-	MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
-	MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
-	MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
-	MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
-	MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
-	MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
-	MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
-	MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
-	MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
-	MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
-	MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
-	MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
-	MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
-	MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
-	MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
-	MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
+    MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
+    MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
+    MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
+    MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
+    MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
+    MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
+    MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
+    MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
+    MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
+    MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
+    MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
+    MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
+    MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
+    MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
+    MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
+    MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
 
-	MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
-	MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
-	MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
-	MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
-	MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
-	MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
-	MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
-	MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
-	MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
-	MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
-	MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
-	MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
-	MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
-	MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
-	MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
-	MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
+    MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
+    MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
+    MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
+    MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
+    MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
+    MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
+    MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
+    MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
+    MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
+    MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
+    MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
+    MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
+    MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
+    MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
+    MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
+    MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
 
-	MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
-	MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
-	MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
-	MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
-	MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
-	MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
-	MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
-	MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
-	MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
-	MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
-	MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
-	MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
-	MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
-	MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
-	MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
-	MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
+    MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
+    MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
+    MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
+    MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
+    MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
+    MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
+    MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
+    MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
+    MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
+    MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
+    MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
+    MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
+    MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
+    MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
+    MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
+    MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
 
-	buf[0] += a;
-	buf[1] += b;
-	buf[2] += c;
-	buf[3] += d;
+    buf[0] += a;
+    buf[1] += b;
+    buf[2] += c;
+    buf[3] += d;
 }
 
 
@@ -146,43 +146,43 @@
  */
 void xs_md5_append(xs_md5state_t *ctx, const guint8 *buf, guint len)
 {
-	guint32 t;
+    guint32 t;
 
-	/* Update bitcount */
-	t = ctx->bits[0];
-	if ((ctx->bits[0] = t + ((guint32) len << 3)) < t)
-		ctx->bits[1]++;	/* Carry from low to high */
-	ctx->bits[1] += len >> 29;
+    /* Update bitcount */
+    t = ctx->bits[0];
+    if ((ctx->bits[0] = t + ((guint32) len << 3)) < t)
+        ctx->bits[1]++;    /* Carry from low to high */
+    ctx->bits[1] += len >> 29;
 
-	t = (t >> 3) & 0x3f;	/* Bytes already in shsInfo->data */
+    t = (t >> 3) & 0x3f;    /* Bytes already in shsInfo->data */
 
-	/* Handle any leading odd-sized chunks */
-	if (t) {
-		guint8 *p = (guint8 *) ctx->in + t;
+    /* Handle any leading odd-sized chunks */
+    if (t) {
+        guint8 *p = (guint8 *) ctx->in + t;
 
-		t = 64 - t;
-		if (len < t) {
-			memcpy(p, buf, len);
-			return;
-		}
-		memcpy(p, buf, t);
-		xs_md5_bytereverse(ctx->in, 16);
-		xs_md5_transform(ctx->buf, (guint32 *) ctx->in);
-		buf += t;
-		len -= t;
-	}
+        t = 64 - t;
+        if (len < t) {
+            memcpy(p, buf, len);
+            return;
+        }
+        memcpy(p, buf, t);
+        xs_md5_bytereverse(ctx->in, 16);
+        xs_md5_transform(ctx->buf, (guint32 *) ctx->in);
+        buf += t;
+        len -= t;
+    }
 
-	/* Process data in 64-byte chunks */
-	while (len >= 64) {
-		memcpy(ctx->in, buf, 64);
-		xs_md5_bytereverse(ctx->in, 16);
-		xs_md5_transform(ctx->buf, (guint32 *) ctx->in);
-		buf += 64;
-		len -= 64;
-	}
+    /* Process data in 64-byte chunks */
+    while (len >= 64) {
+        memcpy(ctx->in, buf, 64);
+        xs_md5_bytereverse(ctx->in, 16);
+        xs_md5_transform(ctx->buf, (guint32 *) ctx->in);
+        buf += 64;
+        len -= 64;
+    }
 
-	/* Handle any remaining bytes of data. */
-	memcpy(ctx->in, buf, len);
+    /* Handle any remaining bytes of data. */
+    memcpy(ctx->in, buf, len);
 }
 
 /* Final wrapup - pad to 64-byte boundary with the bit pattern 
@@ -190,41 +190,41 @@
  */
 void xs_md5_finish(xs_md5state_t *ctx, xs_md5hash_t digest)
 {
-	guint count;
-	guint8 *p;
+    guint count;
+    guint8 *p;
 
-	/* Compute number of bytes mod 64 */
-	count = (ctx->bits[0] >> 3) & 0x3F;
+    /* Compute number of bytes mod 64 */
+    count = (ctx->bits[0] >> 3) & 0x3F;
 
-	/* Set the first char of padding to 0x80.  This is safe since there is
-	   always at least one byte free */
-	p = ctx->in + count;
-	*p++ = 0x80;
+    /* Set the first char of padding to 0x80.  This is safe since there is
+       always at least one byte free */
+    p = ctx->in + count;
+    *p++ = 0x80;
 
-	/* Bytes of padding needed to make 64 bytes */
-	count = 64 - 1 - count;
+    /* Bytes of padding needed to make 64 bytes */
+    count = 64 - 1 - count;
 
-	/* Pad out to 56 mod 64 */
-	if (count < 8) {
-		/* Two lots of padding:  Pad the first block to 64 bytes */
-		memset(p, 0, count);
-		xs_md5_bytereverse(ctx->in, 16);
-		xs_md5_transform(ctx->buf, (guint32 *) ctx->in);
+    /* Pad out to 56 mod 64 */
+    if (count < 8) {
+        /* Two lots of padding:  Pad the first block to 64 bytes */
+        memset(p, 0, count);
+        xs_md5_bytereverse(ctx->in, 16);
+        xs_md5_transform(ctx->buf, (guint32 *) ctx->in);
 
-		/* Now fill the next block with 56 bytes */
-		memset(ctx->in, 0, 56);
-	} else {
-		/* Pad block to 56 bytes */
-		memset(p, 0, count - 8);
-	}
-	xs_md5_bytereverse(ctx->in, 14);
+        /* Now fill the next block with 56 bytes */
+        memset(ctx->in, 0, 56);
+    } else {
+        /* Pad block to 56 bytes */
+        memset(p, 0, count - 8);
+    }
+    xs_md5_bytereverse(ctx->in, 14);
 
-	/* Append length in bits and transform */
-	((guint32 *) ctx->in)[14] = ctx->bits[0];
-	((guint32 *) ctx->in)[15] = ctx->bits[1];
+    /* Append length in bits and transform */
+    ((guint32 *) ctx->in)[14] = ctx->bits[0];
+    ((guint32 *) ctx->in)[15] = ctx->bits[1];
 
-	xs_md5_transform(ctx->buf, (guint32 *) ctx->in);
-	xs_md5_bytereverse((guint8 *) ctx->buf, 4);
-	memcpy(digest, ctx->buf, 16);
-	memset(ctx, 0, sizeof(ctx));	/* In case it's sensitive */
+    xs_md5_transform(ctx->buf, (guint32 *) ctx->in);
+    xs_md5_bytereverse((guint8 *) ctx->buf, 4);
+    memcpy(digest, ctx->buf, 16);
+    memset(ctx, 0, sizeof(ctx));    /* In case it's sensitive */
 }
--- a/src/sid/xs_md5.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_md5.h	Thu Apr 03 00:52:14 2008 +0300
@@ -10,13 +10,13 @@
 /* Typedefs
  */
 typedef struct md5_state_s {
-	guint32 bits[2];	/* message length in bits, lsw first */
-	guint32 buf[4];		/* digest buffer */
-	guint8 in[64];		/* accumulate block */
+    guint32 bits[2];    /* message length in bits, lsw first */
+    guint32 buf[4];        /* digest buffer */
+    guint8 in[64];        /* accumulate block */
 } xs_md5state_t;
 
-#define XS_MD5HASH_LENGTH	(16)
-#define XS_MD5HASH_LENGTH_CH	(XS_MD5HASH_LENGTH * 2)
+#define XS_MD5HASH_LENGTH    (16)
+#define XS_MD5HASH_LENGTH_CH    (XS_MD5HASH_LENGTH * 2)
 
 typedef guint8 xs_md5hash_t[XS_MD5HASH_LENGTH];
 
--- a/src/sid/xs_player.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_player.h	Thu Apr 03 00:52:14 2008 +0300
@@ -11,45 +11,45 @@
 struct xs_status_t;
 
 typedef struct {
-	gint		plrIdent;
-	gboolean	(*plrProbe)(xs_file_t *);
-	gboolean	(*plrInit)(struct xs_status_t *);
-	void		(*plrClose)(struct xs_status_t *);
-	gboolean	(*plrInitSong)(struct xs_status_t *);
-	guint		(*plrFillBuffer)(struct xs_status_t *, gchar *, guint);
-	gboolean	(*plrLoadSID)(struct xs_status_t *, gchar *);
-	void		(*plrDeleteSID)(struct xs_status_t *);
-	xs_tuneinfo_t*	(*plrGetSIDInfo)(const gchar *);
-	gboolean	(*plrUpdateSIDInfo)(struct xs_status_t *);
-	void		(*plrFlush)(struct xs_status_t *);
+    gint        plrIdent;
+    gboolean    (*plrProbe)(xs_file_t *);
+    gboolean    (*plrInit)(struct xs_status_t *);
+    void        (*plrClose)(struct xs_status_t *);
+    gboolean    (*plrInitSong)(struct xs_status_t *);
+    guint        (*plrFillBuffer)(struct xs_status_t *, gchar *, guint);
+    gboolean    (*plrLoadSID)(struct xs_status_t *, gchar *);
+    void        (*plrDeleteSID)(struct xs_status_t *);
+    xs_tuneinfo_t*    (*plrGetSIDInfo)(const gchar *);
+    gboolean    (*plrUpdateSIDInfo)(struct xs_status_t *);
+    void        (*plrFlush)(struct xs_status_t *);
 } xs_player_t;
 
 
 typedef struct xs_status_t {
-	gint		audioFrequency,		/* Audio settings */
-			audioChannels,
-			audioBitsPerSample,
-			oversampleFactor;	/* Factor of oversampling */
-	AFormat		audioFormat;
-	gboolean	oversampleEnable;	/* TRUE after sidEngine initialization,
-						if xs_cfg.oversampleEnable == TRUE and
-						emulation backend supports oversampling.
-						*/
-	void		*sidEngine;		/* SID-emulation internal engine data */
-	xs_player_t	*sidPlayer;		/* Selected player engine */
-	gboolean	isError, isPlaying, isInitialized;
-	gint		currSong,		/* Current sub-tune */
-			lastTime;
+    gint        audioFrequency,        /* Audio settings */
+            audioChannels,
+            audioBitsPerSample,
+            oversampleFactor;    /* Factor of oversampling */
+    AFormat        audioFormat;
+    gboolean    oversampleEnable;    /* TRUE after sidEngine initialization,
+                        if xs_cfg.oversampleEnable == TRUE and
+                        emulation backend supports oversampling.
+                        */
+    void        *sidEngine;        /* SID-emulation internal engine data */
+    xs_player_t    *sidPlayer;        /* Selected player engine */
+    gboolean    isError, isPlaying, isInitialized;
+    gint        currSong,        /* Current sub-tune */
+            lastTime;
 
-	xs_tuneinfo_t	*tuneInfo;
+    xs_tuneinfo_t    *tuneInfo;
 } xs_status_t;
 
 
 /* Global variables
  */
-extern InputPlugin	xs_plugin_ip;
+extern InputPlugin    xs_plugin_ip;
 
-extern xs_status_t	xs_status;
+extern xs_status_t    xs_status;
 XS_MUTEX_H(xs_status);
 
 
--- a/src/sid/xs_sidplay.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_sidplay.h	Thu Apr 03 00:52:14 2008 +0300
@@ -28,55 +28,55 @@
  */
 xs_tuneinfo_t *TFUNCTION(const gchar *sidFilename)
 {
-	xs_tuneinfo_t *pResult;
-	TTUNEINFO myInfo;
-	TTUNE *myTune;
-	guint8 *buf = NULL;
-	size_t bufSize = 0;
+    xs_tuneinfo_t *pResult;
+    TTUNEINFO myInfo;
+    TTUNE *myTune;
+    guint8 *buf = NULL;
+    size_t bufSize = 0;
 
-	/* Load file */
-	if (!sidFilename) return NULL;
+    /* Load file */
+    if (!sidFilename) return NULL;
 
-	if (xs_fload_buffer(sidFilename, &buf, &bufSize) != 0)
-		return NULL;
-	
-	/* Check if the tune exists and is readable */
-	if ((myTune = new TTUNE(buf, bufSize)) == NULL) {
-		g_free(buf);
-		return NULL;
-	}
-	g_free(buf);
+    if (xs_fload_buffer(sidFilename, &buf, &bufSize) != 0)
+        return NULL;
+    
+    /* Check if the tune exists and is readable */
+    if ((myTune = new TTUNE(buf, bufSize)) == NULL) {
+        g_free(buf);
+        return NULL;
+    }
+    g_free(buf);
 
-	if (!myTune->getStatus()) {
-		delete myTune;
-		return NULL;
-	}
+    if (!myTune->getStatus()) {
+        delete myTune;
+        return NULL;
+    }
 
-	/* Get general tune information */
+    /* Get general tune information */
 #ifdef XS_SIDPLAY1_H
-	myTune->getInfo(myInfo);
+    myTune->getInfo(myInfo);
 #endif
 #ifdef XS_SIDPLAY2_H
-	myInfo = myTune->getInfo();
+    myInfo = myTune->getInfo();
 #endif
 
-	/* Allocate tuneinfo structure and set information */
-	pResult = xs_tuneinfo_new(sidFilename,
-		myInfo.songs, myInfo.startSong,
-		myInfo.infoString[0], myInfo.infoString[1], myInfo.infoString[2],
-		myInfo.loadAddr, myInfo.initAddr, myInfo.playAddr,
-		myInfo.dataFileLen, myInfo.formatString, myInfo.sidModel);
-	
-	/* NOTICE! libSIDPlay[12] headers specifically state that sidModel,
-	 * songSpeed and clockSpeed are "undefined" before song initialization,
-	 * but in practice sidModel is known after getInfo() invocation...
-	 * This of course does not take the sub-tune specific changes into account,
-	 * but at least we have a reasonable guesstimate.
-	 */
+    /* Allocate tuneinfo structure and set information */
+    pResult = xs_tuneinfo_new(sidFilename,
+        myInfo.songs, myInfo.startSong,
+        myInfo.infoString[0], myInfo.infoString[1], myInfo.infoString[2],
+        myInfo.loadAddr, myInfo.initAddr, myInfo.playAddr,
+        myInfo.dataFileLen, myInfo.formatString, myInfo.sidModel);
+    
+    /* NOTICE! libSIDPlay[12] headers specifically state that sidModel,
+     * songSpeed and clockSpeed are "undefined" before song initialization,
+     * but in practice sidModel is known after getInfo() invocation...
+     * This of course does not take the sub-tune specific changes into account,
+     * but at least we have a reasonable guesstimate.
+     */
 
-	delete myTune;
+    delete myTune;
 
-	return pResult;
+    return pResult;
 }
 
 
@@ -84,68 +84,68 @@
  */
 gboolean TFUNCTION2(xs_status_t *myStatus)
 {
-	TTUNEINFO myInfo;
-	TTUNE *myTune;
-	TENGINE *myEngine;
-	xs_tuneinfo_t *i;
-	
-	/* Check if we have required structures initialized */
-	if (!myStatus || !myStatus->tuneInfo || !myStatus->sidEngine)
-		return FALSE;
+    TTUNEINFO myInfo;
+    TTUNE *myTune;
+    TENGINE *myEngine;
+    xs_tuneinfo_t *i;
+    
+    /* Check if we have required structures initialized */
+    if (!myStatus || !myStatus->tuneInfo || !myStatus->sidEngine)
+        return FALSE;
 
-	myEngine = (TENGINE *) myStatus->sidEngine;
-	myTune = myEngine->currTune;
-	if (!myTune)
-		return FALSE;
+    myEngine = (TENGINE *) myStatus->sidEngine;
+    myTune = myEngine->currTune;
+    if (!myTune)
+        return FALSE;
 
-	/* Get currently playing tune information */
+    /* Get currently playing tune information */
 #ifdef XS_SIDPLAY1_H
-	myTune->getInfo(myInfo);
+    myTune->getInfo(myInfo);
 #endif
 #ifdef XS_SIDPLAY2_H
-	myInfo = myTune->getInfo();
+    myInfo = myTune->getInfo();
 #endif
 
-	/* NOTICE! Here we assume that libSIDPlay[12] headers define
-	 * SIDTUNE_SIDMODEL_* similarly to our enums in xs_config.h ...
-	 */
-	i = myStatus->tuneInfo;
-	i->sidModel = myInfo.sidModel;
+    /* NOTICE! Here we assume that libSIDPlay[12] headers define
+     * SIDTUNE_SIDMODEL_* similarly to our enums in xs_config.h ...
+     */
+    i = myStatus->tuneInfo;
+    i->sidModel = myInfo.sidModel;
 
-	if ((myStatus->currSong > 0) && (myStatus->currSong <= i->nsubTunes)) {
-		gint tmpSpeed = -1;
-		
-		switch (myInfo.clockSpeed) {
-		case SIDTUNE_CLOCK_PAL:
-			tmpSpeed = XS_CLOCK_PAL;
-			break;
-		case SIDTUNE_CLOCK_NTSC:
-			tmpSpeed = XS_CLOCK_NTSC;
-			break;
-		case SIDTUNE_CLOCK_ANY:
-			tmpSpeed = XS_CLOCK_ANY;
-			break;
-		case SIDTUNE_CLOCK_UNKNOWN:
-			switch (myInfo.songSpeed) {
-			case SIDTUNE_SPEED_VBI:
-				tmpSpeed = XS_CLOCK_VBI;
-				break;
-			case SIDTUNE_SPEED_CIA_1A:
-				tmpSpeed = XS_CLOCK_CIA;
-				break;
-			default:
-				tmpSpeed = myInfo.songSpeed;
-				break;
-			}
-		default:
-			tmpSpeed = myInfo.clockSpeed;
-			break;
-		}
-			
-		i->subTunes[myStatus->currSong - 1].tuneSpeed = tmpSpeed;
-	}
+    if ((myStatus->currSong > 0) && (myStatus->currSong <= i->nsubTunes)) {
+        gint tmpSpeed = -1;
+        
+        switch (myInfo.clockSpeed) {
+        case SIDTUNE_CLOCK_PAL:
+            tmpSpeed = XS_CLOCK_PAL;
+            break;
+        case SIDTUNE_CLOCK_NTSC:
+            tmpSpeed = XS_CLOCK_NTSC;
+            break;
+        case SIDTUNE_CLOCK_ANY:
+            tmpSpeed = XS_CLOCK_ANY;
+            break;
+        case SIDTUNE_CLOCK_UNKNOWN:
+            switch (myInfo.songSpeed) {
+            case SIDTUNE_SPEED_VBI:
+                tmpSpeed = XS_CLOCK_VBI;
+                break;
+            case SIDTUNE_SPEED_CIA_1A:
+                tmpSpeed = XS_CLOCK_CIA;
+                break;
+            default:
+                tmpSpeed = myInfo.songSpeed;
+                break;
+            }
+        default:
+            tmpSpeed = myInfo.clockSpeed;
+            break;
+        }
+            
+        i->subTunes[myStatus->currSong - 1].tuneSpeed = tmpSpeed;
+    }
 
-	return TRUE;
+    return TRUE;
 }
 
 /* Undefine these */
--- a/src/sid/xs_sidplay1.cc	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_sidplay1.cc	Thu Apr 03 00:52:14 2008 +0300
@@ -34,15 +34,15 @@
 
 
 /* Maximum audio frequency supported by libSIDPlay v1 */
-#define SIDPLAY1_MAX_FREQ	(48000)
+#define SIDPLAY1_MAX_FREQ    (48000)
 
 
 typedef struct {
-	emuEngine *currEng;
-	emuConfig currConfig;
-	sidTune *currTune;
-	guint8 *buf;
-	size_t bufSize;
+    emuEngine *currEng;
+    emuConfig currConfig;
+    sidTune *currTune;
+    guint8 *buf;
+    size_t bufSize;
 } xs_sidplay1_t;
 
 
@@ -52,11 +52,11 @@
 
 /* Return song information
  */
-#define	TFUNCTION	xs_sidplay1_getinfo
-#define	TFUNCTION2	xs_sidplay1_updateinfo
-#define	TTUNEINFO	sidTuneInfo
-#define	TTUNE		sidTune
-#define TENGINE		xs_sidplay1_t
+#define    TFUNCTION    xs_sidplay1_getinfo
+#define    TFUNCTION2    xs_sidplay1_updateinfo
+#define    TTUNEINFO    sidTuneInfo
+#define    TTUNE        sidTune
+#define TENGINE        xs_sidplay1_t
 #include "xs_sidplay.h"
 
 
@@ -64,17 +64,17 @@
  */
 gboolean xs_sidplay1_probe(xs_file_t *f)
 {
-	gchar tmpBuf[4];
-	
-	if (!f) return FALSE;
-	
-	if (xs_fread(tmpBuf, sizeof(gchar), 4, f) != 4)
-		return FALSE;
-	
-	if (!strncmp(tmpBuf, "PSID", 4))
-		return TRUE;
-	else
-		return FALSE;
+    gchar tmpBuf[4];
+    
+    if (!f) return FALSE;
+    
+    if (xs_fread(tmpBuf, sizeof(gchar), 4, f) != 4)
+        return FALSE;
+    
+    if (!strncmp(tmpBuf, "PSID", 4))
+        return TRUE;
+    else
+        return FALSE;
 }
 
 
@@ -82,171 +82,171 @@
  */
 gboolean xs_sidplay1_init(xs_status_t * myStatus)
 {
-	gint tmpFreq;
-	xs_sidplay1_t *myEngine;
-	assert(myStatus);
+    gint tmpFreq;
+    xs_sidplay1_t *myEngine;
+    assert(myStatus);
 
-	/* Allocate internal structures */
-	myEngine = (xs_sidplay1_t *) g_malloc0(sizeof(xs_sidplay1_t));
-	if (!myEngine) return FALSE;
+    /* Allocate internal structures */
+    myEngine = (xs_sidplay1_t *) g_malloc0(sizeof(xs_sidplay1_t));
+    if (!myEngine) return FALSE;
 
-	/* Initialize engine */
-	myEngine->currEng = new emuEngine();
-	if (!myEngine->currEng) {
-		xs_error("[SIDPlay1] Could not initialize emulation engine.\n");
-		g_free(myEngine);
-		return FALSE;
-	}
+    /* Initialize engine */
+    myEngine->currEng = new emuEngine();
+    if (!myEngine->currEng) {
+        xs_error("[SIDPlay1] Could not initialize emulation engine.\n");
+        g_free(myEngine);
+        return FALSE;
+    }
 
-	/* Verify endianess */
-	if (!myEngine->currEng->verifyEndianess()) {
-		xs_error("[SIDPlay1] Endianess verification failed.\n");
-		delete myEngine->currEng;
-		g_free(myEngine);
-		return FALSE;
-	}
+    /* Verify endianess */
+    if (!myEngine->currEng->verifyEndianess()) {
+        xs_error("[SIDPlay1] Endianess verification failed.\n");
+        delete myEngine->currEng;
+        g_free(myEngine);
+        return FALSE;
+    }
 
-	myStatus->sidEngine = myEngine;
+    myStatus->sidEngine = myEngine;
 
-	/* Get current configuration */
-	myEngine->currEng->getConfig(myEngine->currConfig);
+    /* Get current configuration */
+    myEngine->currEng->getConfig(myEngine->currConfig);
 
-	/* Configure channel parameters */
-	switch (myStatus->audioChannels) {
+    /* Configure channel parameters */
+    switch (myStatus->audioChannels) {
 
-	case XS_CHN_AUTOPAN:
-		myEngine->currConfig.channels = SIDEMU_STEREO;
-		myEngine->currConfig.autoPanning = SIDEMU_CENTEREDAUTOPANNING;
-		myEngine->currConfig.volumeControl = SIDEMU_FULLPANNING;
-		break;
+    case XS_CHN_AUTOPAN:
+        myEngine->currConfig.channels = SIDEMU_STEREO;
+        myEngine->currConfig.autoPanning = SIDEMU_CENTEREDAUTOPANNING;
+        myEngine->currConfig.volumeControl = SIDEMU_FULLPANNING;
+        break;
 
-	case XS_CHN_STEREO:
-		myEngine->currConfig.channels = SIDEMU_STEREO;
-		myEngine->currConfig.autoPanning = SIDEMU_NONE;
-		myEngine->currConfig.volumeControl = SIDEMU_NONE;
-		break;
+    case XS_CHN_STEREO:
+        myEngine->currConfig.channels = SIDEMU_STEREO;
+        myEngine->currConfig.autoPanning = SIDEMU_NONE;
+        myEngine->currConfig.volumeControl = SIDEMU_NONE;
+        break;
 
-	case XS_CHN_MONO:
-	default:
-		myEngine->currConfig.channels = SIDEMU_MONO;
-		myEngine->currConfig.autoPanning = SIDEMU_NONE;
-		myEngine->currConfig.volumeControl = SIDEMU_NONE;
-		myStatus->audioChannels = XS_CHN_MONO;
-		break;
-	}
+    case XS_CHN_MONO:
+    default:
+        myEngine->currConfig.channels = SIDEMU_MONO;
+        myEngine->currConfig.autoPanning = SIDEMU_NONE;
+        myEngine->currConfig.volumeControl = SIDEMU_NONE;
+        myStatus->audioChannels = XS_CHN_MONO;
+        break;
+    }
 
 
-	/* Memory mode settings */
-	switch (xs_cfg.memoryMode) {
-	case XS_MPU_TRANSPARENT_ROM:
-		myEngine->currConfig.memoryMode = MPU_TRANSPARENT_ROM;
-		break;
+    /* Memory mode settings */
+    switch (xs_cfg.memoryMode) {
+    case XS_MPU_TRANSPARENT_ROM:
+        myEngine->currConfig.memoryMode = MPU_TRANSPARENT_ROM;
+        break;
 
-	case XS_MPU_PLAYSID_ENVIRONMENT:
-		myEngine->currConfig.memoryMode = MPU_PLAYSID_ENVIRONMENT;
-		break;
+    case XS_MPU_PLAYSID_ENVIRONMENT:
+        myEngine->currConfig.memoryMode = MPU_PLAYSID_ENVIRONMENT;
+        break;
 
-	case XS_MPU_BANK_SWITCHING:
-	default:
-		myEngine->currConfig.memoryMode = MPU_BANK_SWITCHING;
-		xs_cfg.memoryMode = XS_MPU_BANK_SWITCHING;
-		break;
-	}
+    case XS_MPU_BANK_SWITCHING:
+    default:
+        myEngine->currConfig.memoryMode = MPU_BANK_SWITCHING;
+        xs_cfg.memoryMode = XS_MPU_BANK_SWITCHING;
+        break;
+    }
 
 
-	/* Audio parameters sanity checking and setup */
-	myEngine->currConfig.bitsPerSample = myStatus->audioBitsPerSample;
-	tmpFreq = myStatus->audioFrequency;
+    /* Audio parameters sanity checking and setup */
+    myEngine->currConfig.bitsPerSample = myStatus->audioBitsPerSample;
+    tmpFreq = myStatus->audioFrequency;
 
-	if (myStatus->oversampleEnable) {
-		if ((tmpFreq * myStatus->oversampleFactor) > SIDPLAY1_MAX_FREQ) {
-			myStatus->oversampleEnable = FALSE;
-		} else {
-			tmpFreq = (tmpFreq * myStatus->oversampleFactor);
-		}
-	} else {
-		if (tmpFreq > SIDPLAY1_MAX_FREQ)
-			tmpFreq = SIDPLAY1_MAX_FREQ;
-	}
+    if (myStatus->oversampleEnable) {
+        if ((tmpFreq * myStatus->oversampleFactor) > SIDPLAY1_MAX_FREQ) {
+            myStatus->oversampleEnable = FALSE;
+        } else {
+            tmpFreq = (tmpFreq * myStatus->oversampleFactor);
+        }
+    } else {
+        if (tmpFreq > SIDPLAY1_MAX_FREQ)
+            tmpFreq = SIDPLAY1_MAX_FREQ;
+    }
 
-	myEngine->currConfig.frequency = tmpFreq;
+    myEngine->currConfig.frequency = tmpFreq;
 
-	switch (myStatus->audioBitsPerSample) {
-	case XS_RES_8BIT:
-		switch (myStatus->audioFormat) {
-		case FMT_S8:
-			myStatus->audioFormat = FMT_S8;
-			myEngine->currConfig.sampleFormat = SIDEMU_SIGNED_PCM;
-			break;
+    switch (myStatus->audioBitsPerSample) {
+    case XS_RES_8BIT:
+        switch (myStatus->audioFormat) {
+        case FMT_S8:
+            myStatus->audioFormat = FMT_S8;
+            myEngine->currConfig.sampleFormat = SIDEMU_SIGNED_PCM;
+            break;
 
-		case FMT_U8:
-		default:
-			myStatus->audioFormat = FMT_U8;
-			myEngine->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM;
-			break;
-		}
-		break;
+        case FMT_U8:
+        default:
+            myStatus->audioFormat = FMT_U8;
+            myEngine->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM;
+            break;
+        }
+        break;
 
-	case XS_RES_16BIT:
-	default:
-		switch (myStatus->audioFormat) {
-		case FMT_U16_NE:
-		case FMT_U16_LE:
-		case FMT_U16_BE:
-			myStatus->audioFormat = FMT_U16_NE;
-			myEngine->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM;
-			break;
+    case XS_RES_16BIT:
+    default:
+        switch (myStatus->audioFormat) {
+        case FMT_U16_NE:
+        case FMT_U16_LE:
+        case FMT_U16_BE:
+            myStatus->audioFormat = FMT_U16_NE;
+            myEngine->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM;
+            break;
 
-		case FMT_S16_NE:
-		case FMT_S16_LE:
-		case FMT_S16_BE:
-		default:
-			myStatus->audioFormat = FMT_S16_NE;
-			myEngine->currConfig.sampleFormat = SIDEMU_SIGNED_PCM;
-			break;
-		}
-		break;
-	}
+        case FMT_S16_NE:
+        case FMT_S16_LE:
+        case FMT_S16_BE:
+        default:
+            myStatus->audioFormat = FMT_S16_NE;
+            myEngine->currConfig.sampleFormat = SIDEMU_SIGNED_PCM;
+            break;
+        }
+        break;
+    }
 
-	/* Clockspeed settings */
-	switch (xs_cfg.clockSpeed) {
-	case XS_CLOCK_NTSC:
-		myEngine->currConfig.clockSpeed = SIDTUNE_CLOCK_NTSC;
-		break;
+    /* Clockspeed settings */
+    switch (xs_cfg.clockSpeed) {
+    case XS_CLOCK_NTSC:
+        myEngine->currConfig.clockSpeed = SIDTUNE_CLOCK_NTSC;
+        break;
 
-	case XS_CLOCK_PAL:
-	default:
-		myEngine->currConfig.clockSpeed = SIDTUNE_CLOCK_PAL;
-		xs_cfg.clockSpeed = XS_CLOCK_PAL;
-		break;
-	}
+    case XS_CLOCK_PAL:
+    default:
+        myEngine->currConfig.clockSpeed = SIDTUNE_CLOCK_PAL;
+        xs_cfg.clockSpeed = XS_CLOCK_PAL;
+        break;
+    }
 
-	myEngine->currConfig.forceSongSpeed = xs_cfg.forceSpeed;
-	
-	
-	/* Configure rest of the emulation */
-	/* if (xs_cfg.forceModel) */
-	myEngine->currConfig.mos8580 = xs_cfg.mos8580;
-	myEngine->currConfig.emulateFilter = xs_cfg.emulateFilters;
-	myEngine->currConfig.filterFs = xs_cfg.sid1FilterFs;
-	myEngine->currConfig.filterFm = xs_cfg.sid1FilterFm;
-	myEngine->currConfig.filterFt = xs_cfg.sid1FilterFt;
+    myEngine->currConfig.forceSongSpeed = xs_cfg.forceSpeed;
+    
+    
+    /* Configure rest of the emulation */
+    /* if (xs_cfg.forceModel) */
+    myEngine->currConfig.mos8580 = xs_cfg.mos8580;
+    myEngine->currConfig.emulateFilter = xs_cfg.emulateFilters;
+    myEngine->currConfig.filterFs = xs_cfg.sid1FilterFs;
+    myEngine->currConfig.filterFm = xs_cfg.sid1FilterFm;
+    myEngine->currConfig.filterFt = xs_cfg.sid1FilterFt;
 
 
-	/* Now set the emulator configuration */
-	if (!myEngine->currEng->setConfig(myEngine->currConfig)) {
-		xs_error("[SIDPlay1] Emulator engine configuration failed!\n");
-		return FALSE;
-	}
-	
-	/* Create sidtune object */
-	myEngine->currTune = new sidTune(0);
-	if (!myEngine->currTune) {
-		xs_error("[SIDPlay1] Could not initialize SIDTune object.\n");
-		return FALSE;
-	}
-	
-	return TRUE;
+    /* Now set the emulator configuration */
+    if (!myEngine->currEng->setConfig(myEngine->currConfig)) {
+        xs_error("[SIDPlay1] Emulator engine configuration failed!\n");
+        return FALSE;
+    }
+    
+    /* Create sidtune object */
+    myEngine->currTune = new sidTune(0);
+    if (!myEngine->currTune) {
+        xs_error("[SIDPlay1] Could not initialize SIDTune object.\n");
+        return FALSE;
+    }
+    
+    return TRUE;
 }
 
 
@@ -254,26 +254,26 @@
  */
 void xs_sidplay1_close(xs_status_t * myStatus)
 {
-	xs_sidplay1_t *myEngine;
-	assert(myStatus);
+    xs_sidplay1_t *myEngine;
+    assert(myStatus);
 
-	myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
+    myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
 
-	/* Free internals */
-	if (myEngine->currEng) {
-		delete myEngine->currEng;
-		myEngine->currEng = NULL;
-	}
+    /* Free internals */
+    if (myEngine->currEng) {
+        delete myEngine->currEng;
+        myEngine->currEng = NULL;
+    }
 
-	if (myEngine->currTune) {
-		delete myEngine->currTune;
-		myEngine->currTune = NULL;
-	}
+    if (myEngine->currTune) {
+        delete myEngine->currTune;
+        myEngine->currTune = NULL;
+    }
 
-	xs_sidplay1_delete(myStatus);
-	
-	g_free(myEngine);
-	myStatus->sidEngine = NULL;
+    xs_sidplay1_delete(myStatus);
+    
+    g_free(myEngine);
+    myStatus->sidEngine = NULL;
 }
 
 
@@ -281,25 +281,25 @@
  */
 gboolean xs_sidplay1_initsong(xs_status_t * myStatus)
 {
-	xs_sidplay1_t *myEngine;
-	assert(myStatus);
+    xs_sidplay1_t *myEngine;
+    assert(myStatus);
 
-	myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
-	if (!myEngine) return FALSE;
+    myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
+    if (!myEngine) return FALSE;
 
-	if (!myEngine->currTune) {
-		xs_error("[SIDPlay1] SID-tune struct pointer was NULL. This should not happen, report to XMMS-SID author.\n");
-		return FALSE;
-	}
+    if (!myEngine->currTune) {
+        xs_error("[SIDPlay1] SID-tune struct pointer was NULL. This should not happen, report to XMMS-SID author.\n");
+        return FALSE;
+    }
 
-	if (!myEngine->currTune->getStatus()) {
-		xs_error("[SIDPlay1] SID-tune status check failed. This should not happen, report to XMMS-SID author.\n");
-		return FALSE;
-	}
+    if (!myEngine->currTune->getStatus()) {
+        xs_error("[SIDPlay1] SID-tune status check failed. This should not happen, report to XMMS-SID author.\n");
+        return FALSE;
+    }
 
-	myStatus->isInitialized = TRUE;
+    myStatus->isInitialized = TRUE;
 
-	return sidEmuInitializeSong(*myEngine->currEng, *myEngine->currTune, myStatus->currSong);
+    return sidEmuInitializeSong(*myEngine->currEng, *myEngine->currTune, myStatus->currSong);
 }
 
 
@@ -307,15 +307,15 @@
  */
 guint xs_sidplay1_fillbuffer(xs_status_t * myStatus, gchar * audioBuffer, guint audioBufSize)
 {
-	xs_sidplay1_t *myEngine;
-	assert(myStatus);
+    xs_sidplay1_t *myEngine;
+    assert(myStatus);
 
-	myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
-	if (!myEngine) return 0;
+    myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
+    if (!myEngine) return 0;
 
-	sidEmuFillBuffer(*myEngine->currEng, *myEngine->currTune, audioBuffer, audioBufSize);
+    sidEmuFillBuffer(*myEngine->currEng, *myEngine->currTune, audioBuffer, audioBufSize);
 
-	return audioBufSize;
+    return audioBufSize;
 }
 
 
@@ -323,23 +323,23 @@
  */
 gboolean xs_sidplay1_load(xs_status_t * myStatus, gchar * filename)
 {
-	xs_sidplay1_t *myEngine;
-	assert(myStatus);
-	myStatus->isInitialized = FALSE;
+    xs_sidplay1_t *myEngine;
+    assert(myStatus);
+    myStatus->isInitialized = FALSE;
 
-	myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
-	if (!myEngine) return FALSE;
+    myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
+    if (!myEngine) return FALSE;
 
-	/* Try to get the tune */
-	if (!filename) return FALSE;
-	
-	if (xs_fload_buffer(filename, &(myEngine->buf), &(myEngine->bufSize)) != 0)
-		return FALSE;
-	
-	if (!myEngine->currTune->load(myEngine->buf, myEngine->bufSize))
-		return FALSE;
+    /* Try to get the tune */
+    if (!filename) return FALSE;
+    
+    if (xs_fload_buffer(filename, &(myEngine->buf), &(myEngine->bufSize)) != 0)
+        return FALSE;
+    
+    if (!myEngine->currTune->load(myEngine->buf, myEngine->bufSize))
+        return FALSE;
 
-	return TRUE;
+    return TRUE;
 }
 
 
@@ -347,17 +347,17 @@
  */
 void xs_sidplay1_delete(xs_status_t * myStatus)
 {
-	xs_sidplay1_t *myEngine;
-	assert(myStatus);
+    xs_sidplay1_t *myEngine;
+    assert(myStatus);
 
-	myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
-	if (!myEngine) return;
-	
-	g_free(myEngine->buf);
-	myEngine->buf = NULL;
-	myEngine->bufSize = 0;
+    myEngine = (xs_sidplay1_t *) myStatus->sidEngine;
+    if (!myEngine) return;
+    
+    g_free(myEngine->buf);
+    myEngine->buf = NULL;
+    myEngine->bufSize = 0;
 }
 
 
-}	/* extern "C" */
-#endif	/* HAVE_SIDPLAY1 */
+}    /* extern "C" */
+#endif    /* HAVE_SIDPLAY1 */
--- a/src/sid/xs_sidplay1.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_sidplay1.h	Thu Apr 03 00:52:14 2008 +0300
@@ -9,15 +9,15 @@
 extern "C" {
 #endif
 
-gboolean	xs_sidplay1_probe(xs_file_t *);
-void		xs_sidplay1_close(xs_status_t *);
-gboolean	xs_sidplay1_init(xs_status_t *);
-gboolean	xs_sidplay1_initsong(xs_status_t *);
-guint		xs_sidplay1_fillbuffer(xs_status_t *, gchar *, guint);
-gboolean	xs_sidplay1_load(xs_status_t *, gchar *);
-void		xs_sidplay1_delete(xs_status_t *);
-xs_tuneinfo_t*	xs_sidplay1_getinfo(const gchar *);
-gboolean	xs_sidplay1_updateinfo(xs_status_t *);
+gboolean    xs_sidplay1_probe(xs_file_t *);
+void        xs_sidplay1_close(xs_status_t *);
+gboolean    xs_sidplay1_init(xs_status_t *);
+gboolean    xs_sidplay1_initsong(xs_status_t *);
+guint        xs_sidplay1_fillbuffer(xs_status_t *, gchar *, guint);
+gboolean    xs_sidplay1_load(xs_status_t *, gchar *);
+void        xs_sidplay1_delete(xs_status_t *);
+xs_tuneinfo_t*    xs_sidplay1_getinfo(const gchar *);
+gboolean    xs_sidplay1_updateinfo(xs_status_t *);
 
 #ifdef __cplusplus
 }
--- a/src/sid/xs_sidplay2.cc	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_sidplay2.cc	Thu Apr 03 00:52:14 2008 +0300
@@ -39,12 +39,12 @@
 
 
 typedef struct {
-	sidplay2 *currEng;
-	sidbuilder *currBuilder;
-	sid2_config_t currConfig;
-	SidTune *currTune;
-	guint8 *buf;
-	size_t bufSize;
+    sidplay2 *currEng;
+    sidbuilder *currBuilder;
+    sid2_config_t currConfig;
+    SidTune *currTune;
+    guint8 *buf;
+    size_t bufSize;
 } xs_sidplay2_t;
 
 
@@ -54,11 +54,11 @@
 
 /* Return song information
  */
-#define TFUNCTION	xs_sidplay2_getinfo
-#define TFUNCTION2	xs_sidplay2_updateinfo
-#define TTUNEINFO	SidTuneInfo
-#define TTUNE		SidTune
-#define TENGINE		xs_sidplay2_t
+#define TFUNCTION    xs_sidplay2_getinfo
+#define TFUNCTION2    xs_sidplay2_updateinfo
+#define TTUNEINFO    SidTuneInfo
+#define TTUNE        SidTune
+#define TENGINE        xs_sidplay2_t
 #include "xs_sidplay.h"
 
 
@@ -66,17 +66,17 @@
  */
 gboolean xs_sidplay2_probe(xs_file_t *f)
 {
-	gchar tmpBuf[4];
-	
-	if (!f) return FALSE;
-	
-	if (xs_fread(tmpBuf, sizeof(gchar), 4, f) != 4)
-		return FALSE;
-	
-	if (!strncmp(tmpBuf, "PSID", 4) || !strncmp(tmpBuf, "RSID", 4))
-		return TRUE;
-	else
-		return FALSE;
+    gchar tmpBuf[4];
+    
+    if (!f) return FALSE;
+    
+    if (xs_fread(tmpBuf, sizeof(gchar), 4, f) != 4)
+        return FALSE;
+    
+    if (!strncmp(tmpBuf, "PSID", 4) || !strncmp(tmpBuf, "RSID", 4))
+        return TRUE;
+    else
+        return FALSE;
 }
 
 
@@ -84,282 +84,282 @@
  */
 gboolean xs_sidplay2_init(xs_status_t * myStatus)
 {
-	gint tmpFreq, i;
-	xs_sidplay2_t *myEngine;
-	sid_filter_t tmpFilter;
-	t_xs_sid2_filter *f;
-	assert(myStatus);
+    gint tmpFreq, i;
+    xs_sidplay2_t *myEngine;
+    sid_filter_t tmpFilter;
+    t_xs_sid2_filter *f;
+    assert(myStatus);
 
-	/* Allocate internal structures */
-	myEngine = (xs_sidplay2_t *) g_malloc0(sizeof(xs_sidplay2_t));
-	myStatus->sidEngine = myEngine;
-	if (!myEngine) return FALSE;
+    /* Allocate internal structures */
+    myEngine = (xs_sidplay2_t *) g_malloc0(sizeof(xs_sidplay2_t));
+    myStatus->sidEngine = myEngine;
+    if (!myEngine) return FALSE;
 
-	/* Initialize the engine */
-	myEngine->currEng = new sidplay2;
-	if (!myEngine->currEng) {
-		xs_error("[SIDPlay2] Could not initialize emulation engine.\n");
-		return FALSE;
-	}
+    /* Initialize the engine */
+    myEngine->currEng = new sidplay2;
+    if (!myEngine->currEng) {
+        xs_error("[SIDPlay2] Could not initialize emulation engine.\n");
+        return FALSE;
+    }
 
-	/* Get current configuration */
-	myEngine->currConfig = myEngine->currEng->config();
+    /* Get current configuration */
+    myEngine->currConfig = myEngine->currEng->config();
 
-	/* Configure channels and stuff */
-	switch (myStatus->audioChannels) {
+    /* Configure channels and stuff */
+    switch (myStatus->audioChannels) {
 
-	case XS_CHN_AUTOPAN:
-		myEngine->currConfig.playback = sid2_stereo;
-		break;
+    case XS_CHN_AUTOPAN:
+        myEngine->currConfig.playback = sid2_stereo;
+        break;
 
-	case XS_CHN_STEREO:
-		myEngine->currConfig.playback = sid2_stereo;
-		break;
+    case XS_CHN_STEREO:
+        myEngine->currConfig.playback = sid2_stereo;
+        break;
 
-	case XS_CHN_MONO:
-	default:
-		myEngine->currConfig.playback = sid2_mono;
-		myStatus->audioChannels = XS_CHN_MONO;
-		break;
-	}
+    case XS_CHN_MONO:
+    default:
+        myEngine->currConfig.playback = sid2_mono;
+        myStatus->audioChannels = XS_CHN_MONO;
+        break;
+    }
 
 
-	/* Memory mode settings */
-	switch (xs_cfg.memoryMode) {
-	case XS_MPU_BANK_SWITCHING:
-		myEngine->currConfig.environment = sid2_envBS;
-		break;
+    /* Memory mode settings */
+    switch (xs_cfg.memoryMode) {
+    case XS_MPU_BANK_SWITCHING:
+        myEngine->currConfig.environment = sid2_envBS;
+        break;
 
-	case XS_MPU_TRANSPARENT_ROM:
-		myEngine->currConfig.environment = sid2_envTP;
-		break;
+    case XS_MPU_TRANSPARENT_ROM:
+        myEngine->currConfig.environment = sid2_envTP;
+        break;
 
-	case XS_MPU_PLAYSID_ENVIRONMENT:
-		myEngine->currConfig.environment = sid2_envPS;
-		break;
+    case XS_MPU_PLAYSID_ENVIRONMENT:
+        myEngine->currConfig.environment = sid2_envPS;
+        break;
 
-	case XS_MPU_REAL:
-	default:
-		myEngine->currConfig.environment = sid2_envR;
-		xs_cfg.memoryMode = XS_MPU_REAL;
-		break;
-	}
+    case XS_MPU_REAL:
+    default:
+        myEngine->currConfig.environment = sid2_envR;
+        xs_cfg.memoryMode = XS_MPU_REAL;
+        break;
+    }
 
 
-	/* Audio parameters sanity checking and setup */
-	myEngine->currConfig.precision = myStatus->audioBitsPerSample;
-	tmpFreq = myStatus->audioFrequency;
+    /* Audio parameters sanity checking and setup */
+    myEngine->currConfig.precision = myStatus->audioBitsPerSample;
+    tmpFreq = myStatus->audioFrequency;
 
-	if (myStatus->oversampleEnable)
-		tmpFreq = (tmpFreq * myStatus->oversampleFactor);
+    if (myStatus->oversampleEnable)
+        tmpFreq = (tmpFreq * myStatus->oversampleFactor);
 
-	myEngine->currConfig.frequency = tmpFreq;
+    myEngine->currConfig.frequency = tmpFreq;
 
-	switch (myStatus->audioBitsPerSample) {
-	case XS_RES_8BIT:
-		myStatus->audioFormat = FMT_U8;
-		myEngine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
-		break;
+    switch (myStatus->audioBitsPerSample) {
+    case XS_RES_8BIT:
+        myStatus->audioFormat = FMT_U8;
+        myEngine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
+        break;
 
-	case XS_RES_16BIT:
-	default:
-		switch (myStatus->audioFormat) {
-		case FMT_U16_LE:
-			myEngine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
-			break;
+    case XS_RES_16BIT:
+    default:
+        switch (myStatus->audioFormat) {
+        case FMT_U16_LE:
+            myEngine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
+            break;
 
-		case FMT_U16_BE:
-			myEngine->currConfig.sampleFormat = SID2_BIG_UNSIGNED;
-			break;
+        case FMT_U16_BE:
+            myEngine->currConfig.sampleFormat = SID2_BIG_UNSIGNED;
+            break;
 
-		case FMT_U16_NE:
+        case FMT_U16_NE:
 #if G_BYTE_ORDER == G_BIG_ENDIAN
-			myEngine->currConfig.sampleFormat = SID2_BIG_UNSIGNED;
+            myEngine->currConfig.sampleFormat = SID2_BIG_UNSIGNED;
 #else
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
-			myEngine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
+            myEngine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
 #else
 #error Unsupported endianess!
 #endif
 #endif
-			break;
+            break;
 
-		case FMT_S16_LE:
-			myEngine->currConfig.sampleFormat = SID2_LITTLE_SIGNED;
-			break;
+        case FMT_S16_LE:
+            myEngine->currConfig.sampleFormat = SID2_LITTLE_SIGNED;
+            break;
 
-		case FMT_S16_BE:
-			myEngine->currConfig.sampleFormat = SID2_BIG_SIGNED;
-			break;
+        case FMT_S16_BE:
+            myEngine->currConfig.sampleFormat = SID2_BIG_SIGNED;
+            break;
 
-		default:
-			myStatus->audioFormat = FMT_S16_NE;
+        default:
+            myStatus->audioFormat = FMT_S16_NE;
 #if G_BYTE_ORDER == G_BIG_ENDIAN
-			myEngine->currConfig.sampleFormat = SID2_BIG_SIGNED;
+            myEngine->currConfig.sampleFormat = SID2_BIG_SIGNED;
 #else
 #if G_BYTE_ORDER == G_LITTLE_ENDIAN
-			myEngine->currConfig.sampleFormat = SID2_LITTLE_SIGNED;
+            myEngine->currConfig.sampleFormat = SID2_LITTLE_SIGNED;
 #else
 #error Unsupported endianess!
 #endif
 #endif
-			break;
+            break;
 
-		}
-		break;
-	}
-	
-	/* Convert filter */
-	f = &(xs_cfg.sid2Filter);
-	XSDEBUG("using filter '%s', %d points\n", f->name, f->npoints);
-	if (f->npoints > XS_SIDPLAY2_NFPOINTS) {
-		xs_error("[SIDPlay2] Invalid number of filter curve points (%d > %d)\n",
-			f->npoints, XS_SIDPLAY2_NFPOINTS);
-		f->npoints = XS_SIDPLAY2_NFPOINTS;
-	}
-	
-	tmpFilter.points = f->npoints;
-	for (i = 0; i < f->npoints; i++) {
-		tmpFilter.cutoff[i][0] = f->points[i].x;
-		tmpFilter.cutoff[i][1] = f->points[i].y;
-	}
+        }
+        break;
+    }
+    
+    /* Convert filter */
+    f = &(xs_cfg.sid2Filter);
+    XSDEBUG("using filter '%s', %d points\n", f->name, f->npoints);
+    if (f->npoints > XS_SIDPLAY2_NFPOINTS) {
+        xs_error("[SIDPlay2] Invalid number of filter curve points (%d > %d)\n",
+            f->npoints, XS_SIDPLAY2_NFPOINTS);
+        f->npoints = XS_SIDPLAY2_NFPOINTS;
+    }
+    
+    tmpFilter.points = f->npoints;
+    for (i = 0; i < f->npoints; i++) {
+        tmpFilter.cutoff[i][0] = f->points[i].x;
+        tmpFilter.cutoff[i][1] = f->points[i].y;
+    }
 
-	/* Initialize builder object */
-	XSDEBUG("init builder #%i, maxsids=%i\n", xs_cfg.sid2Builder, (myEngine->currEng->info()).maxsids);
+    /* Initialize builder object */
+    XSDEBUG("init builder #%i, maxsids=%i\n", xs_cfg.sid2Builder, (myEngine->currEng->info()).maxsids);
 #ifdef HAVE_RESID_BUILDER
-	if (xs_cfg.sid2Builder == XS_BLD_RESID) {
-		ReSIDBuilder *rs = new ReSIDBuilder("ReSID builder");
-		myEngine->currBuilder = (sidbuilder *) rs;
-		if (rs) {
-			/* Builder object created, initialize it */
-			rs->create((myEngine->currEng->info()).maxsids);
-			if (!*rs) {
-				xs_error("reSID->create() failed.\n");
-				return FALSE;
-			}
+    if (xs_cfg.sid2Builder == XS_BLD_RESID) {
+        ReSIDBuilder *rs = new ReSIDBuilder("ReSID builder");
+        myEngine->currBuilder = (sidbuilder *) rs;
+        if (rs) {
+            /* Builder object created, initialize it */
+            rs->create((myEngine->currEng->info()).maxsids);
+            if (!*rs) {
+                xs_error("reSID->create() failed.\n");
+                return FALSE;
+            }
 
-			rs->filter(xs_cfg.emulateFilters);
-			if (!*rs) {
-				xs_error("reSID->filter(%d) failed.\n", xs_cfg.emulateFilters);
-				return FALSE;
-			}
+            rs->filter(xs_cfg.emulateFilters);
+            if (!*rs) {
+                xs_error("reSID->filter(%d) failed.\n", xs_cfg.emulateFilters);
+                return FALSE;
+            }
 
-			// FIXME FIX ME: support other configurable parameters ...
-			// ... WHEN/IF resid-builder+libsidplay2 gets fixed
-			rs->sampling(tmpFreq);
-			if (!*rs) {
-				xs_error("reSID->sampling(%d) failed.\n", tmpFreq);
-				return FALSE;
-			}
-			
-			if (tmpFilter.points > 0)
-				rs->filter((sid_filter_t *) &tmpFilter);
-			else
-				rs->filter((sid_filter_t *) NULL);
-			
-			if (!*rs) {
-				xs_error("reSID->filter(NULL) failed.\n");
-				return FALSE;
-			}
-		}
-	}
+            // FIXME FIX ME: support other configurable parameters ...
+            // ... WHEN/IF resid-builder+libsidplay2 gets fixed
+            rs->sampling(tmpFreq);
+            if (!*rs) {
+                xs_error("reSID->sampling(%d) failed.\n", tmpFreq);
+                return FALSE;
+            }
+            
+            if (tmpFilter.points > 0)
+                rs->filter((sid_filter_t *) &tmpFilter);
+            else
+                rs->filter((sid_filter_t *) NULL);
+            
+            if (!*rs) {
+                xs_error("reSID->filter(NULL) failed.\n");
+                return FALSE;
+            }
+        }
+    }
 #endif
 #ifdef HAVE_HARDSID_BUILDER
-	if (xs_cfg.sid2Builder == XS_BLD_HARDSID) {
-		HardSIDBuilder *hs = new HardSIDBuilder("HardSID builder");
-		myEngine->currBuilder = (sidbuilder *) hs;
-		if (hs) {
-			/* Builder object created, initialize it */
-			hs->create((myEngine->currEng->info()).maxsids);
-			if (!*hs) {
-				xs_error("hardSID->create() failed.\n");
-				return FALSE;
-			}
+    if (xs_cfg.sid2Builder == XS_BLD_HARDSID) {
+        HardSIDBuilder *hs = new HardSIDBuilder("HardSID builder");
+        myEngine->currBuilder = (sidbuilder *) hs;
+        if (hs) {
+            /* Builder object created, initialize it */
+            hs->create((myEngine->currEng->info()).maxsids);
+            if (!*hs) {
+                xs_error("hardSID->create() failed.\n");
+                return FALSE;
+            }
 
-			hs->filter(xs_cfg.emulateFilters);
-			if (!*hs) {
-				xs_error("hardSID->filter(%d) failed.\n", xs_cfg.emulateFilters);
-				return FALSE;
-			}
-		}
-	}
+            hs->filter(xs_cfg.emulateFilters);
+            if (!*hs) {
+                xs_error("hardSID->filter(%d) failed.\n", xs_cfg.emulateFilters);
+                return FALSE;
+            }
+        }
+    }
 #endif
 
-	if (!myEngine->currBuilder) {
-		xs_error("[SIDPlay2] Could not initialize SIDBuilder object.\n");
-		return FALSE;
-	}
+    if (!myEngine->currBuilder) {
+        xs_error("[SIDPlay2] Could not initialize SIDBuilder object.\n");
+        return FALSE;
+    }
 
-	XSDEBUG("%s\n", myEngine->currBuilder->credits());
+    XSDEBUG("%s\n", myEngine->currBuilder->credits());
 
 
-	/* Clockspeed settings */
-	switch (xs_cfg.clockSpeed) {
-	case XS_CLOCK_NTSC:
-		myEngine->currConfig.clockDefault = SID2_CLOCK_NTSC;
-		break;
+    /* Clockspeed settings */
+    switch (xs_cfg.clockSpeed) {
+    case XS_CLOCK_NTSC:
+        myEngine->currConfig.clockDefault = SID2_CLOCK_NTSC;
+        break;
 
-	default:
-		xs_error("[SIDPlay2] Invalid clockSpeed=%d, falling back to PAL.\n",
-			xs_cfg.clockSpeed);
+    default:
+        xs_error("[SIDPlay2] Invalid clockSpeed=%d, falling back to PAL.\n",
+            xs_cfg.clockSpeed);
 
-	case XS_CLOCK_PAL:
-		myEngine->currConfig.clockDefault = SID2_CLOCK_PAL;
-		xs_cfg.clockSpeed = XS_CLOCK_PAL;
-		break;
-	}
+    case XS_CLOCK_PAL:
+        myEngine->currConfig.clockDefault = SID2_CLOCK_PAL;
+        xs_cfg.clockSpeed = XS_CLOCK_PAL;
+        break;
+    }
 
 
-	/* Configure rest of the emulation */
-	myEngine->currConfig.sidEmulation = myEngine->currBuilder;
-	
-	if (xs_cfg.forceSpeed) { 
-		myEngine->currConfig.clockForced = true;
-		myEngine->currConfig.clockSpeed = myEngine->currConfig.clockDefault;
-	} else {
-		myEngine->currConfig.clockForced = false;
-		myEngine->currConfig.clockSpeed = SID2_CLOCK_CORRECT;
-	}
-	
-	if ((xs_cfg.sid2OptLevel >= 0) && (xs_cfg.sid2OptLevel <= SID2_MAX_OPTIMISATION))
-		myEngine->currConfig.optimisation = xs_cfg.sid2OptLevel;
-	else {
-		xs_error("Invalid sid2OptLevel=%d, falling back to %d.\n",
-			xs_cfg.sid2OptLevel, SID2_DEFAULT_OPTIMISATION);
-		
-		xs_cfg.sid2OptLevel =
-		myEngine->currConfig.optimisation = SID2_DEFAULT_OPTIMISATION;
-	}
+    /* Configure rest of the emulation */
+    myEngine->currConfig.sidEmulation = myEngine->currBuilder;
+    
+    if (xs_cfg.forceSpeed) { 
+        myEngine->currConfig.clockForced = true;
+        myEngine->currConfig.clockSpeed = myEngine->currConfig.clockDefault;
+    } else {
+        myEngine->currConfig.clockForced = false;
+        myEngine->currConfig.clockSpeed = SID2_CLOCK_CORRECT;
+    }
+    
+    if ((xs_cfg.sid2OptLevel >= 0) && (xs_cfg.sid2OptLevel <= SID2_MAX_OPTIMISATION))
+        myEngine->currConfig.optimisation = xs_cfg.sid2OptLevel;
+    else {
+        xs_error("Invalid sid2OptLevel=%d, falling back to %d.\n",
+            xs_cfg.sid2OptLevel, SID2_DEFAULT_OPTIMISATION);
+        
+        xs_cfg.sid2OptLevel =
+        myEngine->currConfig.optimisation = SID2_DEFAULT_OPTIMISATION;
+    }
 
-	if (xs_cfg.mos8580)
-		myEngine->currConfig.sidDefault = SID2_MOS8580;
-	else
-		myEngine->currConfig.sidDefault = SID2_MOS6581;
+    if (xs_cfg.mos8580)
+        myEngine->currConfig.sidDefault = SID2_MOS8580;
+    else
+        myEngine->currConfig.sidDefault = SID2_MOS6581;
 
-	if (xs_cfg.forceModel)
-		myEngine->currConfig.sidModel = myEngine->currConfig.sidDefault;
-	else
-		myEngine->currConfig.sidModel = SID2_MODEL_CORRECT;
+    if (xs_cfg.forceModel)
+        myEngine->currConfig.sidModel = myEngine->currConfig.sidDefault;
+    else
+        myEngine->currConfig.sidModel = SID2_MODEL_CORRECT;
 
-	
-	/* XXX: Should this be configurable? libSIDPlay1 does not support it, though */
-	myEngine->currConfig.sidSamples = TRUE;
+    
+    /* XXX: Should this be configurable? libSIDPlay1 does not support it, though */
+    myEngine->currConfig.sidSamples = TRUE;
 
 
-	/* Now set the emulator configuration */
-	if (myEngine->currEng->config(myEngine->currConfig) < 0) {
-		xs_error("[SIDPlay2] Emulator engine configuration failed!\n");
-		return FALSE;
-	}
+    /* Now set the emulator configuration */
+    if (myEngine->currEng->config(myEngine->currConfig) < 0) {
+        xs_error("[SIDPlay2] Emulator engine configuration failed!\n");
+        return FALSE;
+    }
 
-	/* Create the sidtune */
-	myEngine->currTune = new SidTune(0);
-	if (!myEngine->currTune) {
-		xs_error("[SIDPlay2] Could not initialize SIDTune object.\n");
-		return FALSE;
-	}
+    /* Create the sidtune */
+    myEngine->currTune = new SidTune(0);
+    if (!myEngine->currTune) {
+        xs_error("[SIDPlay2] Could not initialize SIDTune object.\n");
+        return FALSE;
+    }
 
-	return TRUE;
+    return TRUE;
 }
 
 
@@ -367,31 +367,31 @@
  */
 void xs_sidplay2_close(xs_status_t * myStatus)
 {
-	xs_sidplay2_t *myEngine;
-	assert(myStatus);
+    xs_sidplay2_t *myEngine;
+    assert(myStatus);
 
-	myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
+    myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
 
-	/* Free internals */
-	if (myEngine->currBuilder) {
-		delete myEngine->currBuilder;
-		myEngine->currBuilder = NULL;
-	}
+    /* Free internals */
+    if (myEngine->currBuilder) {
+        delete myEngine->currBuilder;
+        myEngine->currBuilder = NULL;
+    }
 
-	if (myEngine->currEng) {
-		delete myEngine->currEng;
-		myEngine->currEng = NULL;
-	}
+    if (myEngine->currEng) {
+        delete myEngine->currEng;
+        myEngine->currEng = NULL;
+    }
 
-	if (myEngine->currTune) {
-		delete myEngine->currTune;
-		myEngine->currTune = NULL;
-	}
+    if (myEngine->currTune) {
+        delete myEngine->currTune;
+        myEngine->currTune = NULL;
+    }
 
-	xs_sidplay2_delete(myStatus);
+    xs_sidplay2_delete(myStatus);
 
-	g_free(myEngine);
-	myStatus->sidEngine = NULL;
+    g_free(myEngine);
+    myStatus->sidEngine = NULL;
 }
 
 
@@ -399,25 +399,25 @@
  */
 gboolean xs_sidplay2_initsong(xs_status_t * myStatus)
 {
-	xs_sidplay2_t *myEngine;
-	assert(myStatus);
+    xs_sidplay2_t *myEngine;
+    assert(myStatus);
 
-	myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
-	if (!myEngine) return FALSE;
+    myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
+    if (!myEngine) return FALSE;
 
-	if (!myEngine->currTune->selectSong(myStatus->currSong)) {
-		xs_error("[SIDPlay2] currTune->selectSong() failed\n");
-		return FALSE;
-	}
+    if (!myEngine->currTune->selectSong(myStatus->currSong)) {
+        xs_error("[SIDPlay2] currTune->selectSong() failed\n");
+        return FALSE;
+    }
 
-	if (myEngine->currEng->load(myEngine->currTune) < 0) {
-		xs_error("[SIDPlay2] currEng->load() failed\n");
-		return FALSE;
-	}
-	
-	myStatus->isInitialized = TRUE;
+    if (myEngine->currEng->load(myEngine->currTune) < 0) {
+        xs_error("[SIDPlay2] currEng->load() failed\n");
+        return FALSE;
+    }
+    
+    myStatus->isInitialized = TRUE;
 
-	return TRUE;
+    return TRUE;
 }
 
 
@@ -425,13 +425,13 @@
  */
 guint xs_sidplay2_fillbuffer(xs_status_t * myStatus, gchar * audioBuffer, guint audioBufSize)
 {
-	xs_sidplay2_t *myEngine;
-	assert(myStatus);
+    xs_sidplay2_t *myEngine;
+    assert(myStatus);
 
-	myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
-	if (!myEngine) return 0;
+    myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
+    if (!myEngine) return 0;
 
-	return myEngine->currEng->play(audioBuffer, audioBufSize);
+    return myEngine->currEng->play(audioBuffer, audioBufSize);
 }
 
 
@@ -439,23 +439,23 @@
  */
 gboolean xs_sidplay2_load(xs_status_t * myStatus, gchar * pcFilename)
 {
-	xs_sidplay2_t *myEngine;
-	assert(myStatus);
-	myStatus->isInitialized = FALSE;
+    xs_sidplay2_t *myEngine;
+    assert(myStatus);
+    myStatus->isInitialized = FALSE;
 
-	myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
-	if (!myEngine) return FALSE;
+    myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
+    if (!myEngine) return FALSE;
 
-	/* Try to get the tune */
-	if (!pcFilename) return FALSE;
+    /* Try to get the tune */
+    if (!pcFilename) return FALSE;
 
-	if (xs_fload_buffer(pcFilename, &(myEngine->buf), &(myEngine->bufSize)) != 0)
-		return FALSE;
-	
-	if (!myEngine->currTune->read(myEngine->buf, myEngine->bufSize))
-		return FALSE;
+    if (xs_fload_buffer(pcFilename, &(myEngine->buf), &(myEngine->bufSize)) != 0)
+        return FALSE;
+    
+    if (!myEngine->currTune->read(myEngine->buf, myEngine->bufSize))
+        return FALSE;
 
-	return TRUE;
+    return TRUE;
 }
 
 
@@ -463,15 +463,15 @@
  */
 void xs_sidplay2_delete(xs_status_t * myStatus)
 {
-	xs_sidplay2_t *myEngine;
-	assert(myStatus);
+    xs_sidplay2_t *myEngine;
+    assert(myStatus);
 
-	myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
-	if (!myEngine) return;
-	
-	g_free(myEngine->buf);
-	myEngine->buf = NULL;
-	myEngine->bufSize = 0;
+    myEngine = (xs_sidplay2_t *) myStatus->sidEngine;
+    if (!myEngine) return;
+    
+    g_free(myEngine->buf);
+    myEngine->buf = NULL;
+    myEngine->bufSize = 0;
 }
 
 
@@ -479,20 +479,20 @@
  */
 void xs_sidplay2_flush(xs_status_t * myStatus)
 {
-	assert(myStatus);
+    assert(myStatus);
 
 #ifdef HAVE_HARDSID_BUILDER
 #ifdef HSID_SID2_COM
-	IfPtr<HardSIDBuilder> hs(myStatus->currBuilder);
-	if (hs)
-		hs->flush();
+    IfPtr<HardSIDBuilder> hs(myStatus->currBuilder);
+    if (hs)
+        hs->flush();
 #else
-	if (xs_cfg.sid2Builder == XS_BLD_HARDSID)
-		((HardSIDBuilder *) myStatus->currBuilder)->flush();
+    if (xs_cfg.sid2Builder == XS_BLD_HARDSID)
+        ((HardSIDBuilder *) myStatus->currBuilder)->flush();
 #endif
 #endif
 }
 
 
-}	/* extern "C" */
-#endif	/* HAVE_SIDPLAY2 */
+}    /* extern "C" */
+#endif    /* HAVE_SIDPLAY2 */
--- a/src/sid/xs_sidplay2.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_sidplay2.h	Thu Apr 03 00:52:14 2008 +0300
@@ -9,16 +9,16 @@
 extern "C" {
 #endif
 
-gboolean	xs_sidplay2_probe(xs_file_t *);
-void		xs_sidplay2_close(xs_status_t *);
-gboolean	xs_sidplay2_init(xs_status_t *);
-gboolean	xs_sidplay2_initsong(xs_status_t *);
-guint		xs_sidplay2_fillbuffer(xs_status_t *, gchar *, guint);
-gboolean	xs_sidplay2_load(xs_status_t *, gchar *);
-void		xs_sidplay2_delete(xs_status_t *);
-xs_tuneinfo_t*	xs_sidplay2_getinfo(const gchar *);
-gboolean	xs_sidplay2_updateinfo(xs_status_t *);
-void		xs_sidplay2_flush(xs_status_t *);
+gboolean    xs_sidplay2_probe(xs_file_t *);
+void        xs_sidplay2_close(xs_status_t *);
+gboolean    xs_sidplay2_init(xs_status_t *);
+gboolean    xs_sidplay2_initsong(xs_status_t *);
+guint        xs_sidplay2_fillbuffer(xs_status_t *, gchar *, guint);
+gboolean    xs_sidplay2_load(xs_status_t *, gchar *);
+void        xs_sidplay2_delete(xs_status_t *);
+xs_tuneinfo_t*    xs_sidplay2_getinfo(const gchar *);
+gboolean    xs_sidplay2_updateinfo(xs_status_t *);
+void        xs_sidplay2_flush(xs_status_t *);
 
 #ifdef __cplusplus
 }
--- a/src/sid/xs_slsup.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_slsup.c	Thu Apr 03 00:52:14 2008 +0300
@@ -35,92 +35,92 @@
  */
 gint xs_stil_init(void)
 {
-	XS_MUTEX_LOCK(xs_cfg);
+    XS_MUTEX_LOCK(xs_cfg);
 
-	if (!xs_cfg.stilDBPath) {
-		XS_MUTEX_UNLOCK(xs_cfg);
-		return -1;
-	}
+    if (!xs_cfg.stilDBPath) {
+        XS_MUTEX_UNLOCK(xs_cfg);
+        return -1;
+    }
 
-	XS_MUTEX_LOCK(xs_stildb_db);
+    XS_MUTEX_LOCK(xs_stildb_db);
 
-	/* Check if already initialized */
-	if (xs_stildb_db)
-		xs_stildb_free(xs_stildb_db);
+    /* Check if already initialized */
+    if (xs_stildb_db)
+        xs_stildb_free(xs_stildb_db);
 
-	/* Allocate database */
-	xs_stildb_db = (xs_stildb_t *) g_malloc0(sizeof(xs_stildb_t));
-	if (!xs_stildb_db) {
-		XS_MUTEX_UNLOCK(xs_cfg);
-		XS_MUTEX_UNLOCK(xs_stildb_db);
-		return -2;
-	}
+    /* Allocate database */
+    xs_stildb_db = (xs_stildb_t *) g_malloc0(sizeof(xs_stildb_t));
+    if (!xs_stildb_db) {
+        XS_MUTEX_UNLOCK(xs_cfg);
+        XS_MUTEX_UNLOCK(xs_stildb_db);
+        return -2;
+    }
 
-	/* Read the database */
-	if (xs_stildb_read(xs_stildb_db, xs_cfg.stilDBPath) != 0) {
-		xs_stildb_free(xs_stildb_db);
-		xs_stildb_db = NULL;
-		XS_MUTEX_UNLOCK(xs_cfg);
-		XS_MUTEX_UNLOCK(xs_stildb_db);
-		return -3;
-	}
+    /* Read the database */
+    if (xs_stildb_read(xs_stildb_db, xs_cfg.stilDBPath) != 0) {
+        xs_stildb_free(xs_stildb_db);
+        xs_stildb_db = NULL;
+        XS_MUTEX_UNLOCK(xs_cfg);
+        XS_MUTEX_UNLOCK(xs_stildb_db);
+        return -3;
+    }
 
-	/* Create index */
-	if (xs_stildb_index(xs_stildb_db) != 0) {
-		xs_stildb_free(xs_stildb_db);
-		xs_stildb_db = NULL;
-		XS_MUTEX_UNLOCK(xs_cfg);
-		XS_MUTEX_UNLOCK(xs_stildb_db);
-		return -4;
-	}
+    /* Create index */
+    if (xs_stildb_index(xs_stildb_db) != 0) {
+        xs_stildb_free(xs_stildb_db);
+        xs_stildb_db = NULL;
+        XS_MUTEX_UNLOCK(xs_cfg);
+        XS_MUTEX_UNLOCK(xs_stildb_db);
+        return -4;
+    }
 
-	XS_MUTEX_UNLOCK(xs_cfg);
-	XS_MUTEX_UNLOCK(xs_stildb_db);
-	return 0;
+    XS_MUTEX_UNLOCK(xs_cfg);
+    XS_MUTEX_UNLOCK(xs_stildb_db);
+    return 0;
 }
 
 
 void xs_stil_close(void)
 {
-	XS_MUTEX_LOCK(xs_stildb_db);
-	xs_stildb_free(xs_stildb_db);
-	xs_stildb_db = NULL;
-	XS_MUTEX_UNLOCK(xs_stildb_db);
+    XS_MUTEX_LOCK(xs_stildb_db);
+    xs_stildb_free(xs_stildb_db);
+    xs_stildb_db = NULL;
+    XS_MUTEX_UNLOCK(xs_stildb_db);
 }
 
 
 stil_node_t *xs_stil_get(gchar *filename)
 {
-	stil_node_t *result;
-	gchar *tmpFilename;
+    stil_node_t *result;
+    gchar *tmpFilename;
 
-	XS_MUTEX_LOCK(xs_stildb_db);
-	XS_MUTEX_LOCK(xs_cfg);
+    XS_MUTEX_LOCK(xs_stildb_db);
+    XS_MUTEX_LOCK(xs_cfg);
 
-	if (xs_cfg.stilDBEnable && xs_stildb_db) {
-		if (xs_cfg.hvscPath) {
-			/* Remove postfixed directory separator from HVSC-path */
-			tmpFilename = xs_strrchr(xs_cfg.hvscPath, '/');
-			if (tmpFilename && (tmpFilename[1] == 0))
-				tmpFilename[0] = 0;
+    if (xs_cfg.stilDBEnable && xs_stildb_db) {
+        if (xs_cfg.hvscPath) {
+            /* Remove postfixed directory separator from HVSC-path */
+            tmpFilename = xs_strrchr(xs_cfg.hvscPath, '/');
+            if (tmpFilename && (tmpFilename[1] == 0))
+                tmpFilename[0] = 0;
 
-			/* Remove HVSC location-prefix from filename */
-			tmpFilename = strstr(filename, xs_cfg.hvscPath);
-			if (tmpFilename)
-				tmpFilename += strlen(xs_cfg.hvscPath);
-			else
-				tmpFilename = filename;
-		} else
-			tmpFilename = filename;
+            /* Remove HVSC location-prefix from filename */
+            tmpFilename = strstr(filename, xs_cfg.hvscPath);
+            if (tmpFilename)
+                tmpFilename += strlen(xs_cfg.hvscPath);
+            else
+                tmpFilename = filename;
+        } else
+            tmpFilename = filename;
 
-		result = xs_stildb_get_node(xs_stildb_db, tmpFilename);
-	} else
-		result = NULL;
+        result = xs_stildb_get_node(xs_stildb_db, tmpFilename);
+    } else
+        result = NULL;
 
-	XS_MUTEX_UNLOCK(xs_stildb_db);
-	XS_MUTEX_UNLOCK(xs_cfg);
+    XS_MUTEX_UNLOCK(xs_stildb_db);
+    XS_MUTEX_UNLOCK(xs_cfg);
 
-	return result;
+    return result;
 }
 
 
@@ -128,146 +128,146 @@
  */
 gint xs_songlen_init(void)
 {
-	XS_MUTEX_LOCK(xs_cfg);
+    XS_MUTEX_LOCK(xs_cfg);
 
-	if (!xs_cfg.songlenDBPath) {
-		XS_MUTEX_UNLOCK(xs_cfg);
-		return -1;
-	}
+    if (!xs_cfg.songlenDBPath) {
+        XS_MUTEX_UNLOCK(xs_cfg);
+        return -1;
+    }
 
-	XS_MUTEX_LOCK(xs_sldb_db);
+    XS_MUTEX_LOCK(xs_sldb_db);
 
-	/* Check if already initialized */
-	if (xs_sldb_db)
-		xs_sldb_free(xs_sldb_db);
+    /* Check if already initialized */
+    if (xs_sldb_db)
+        xs_sldb_free(xs_sldb_db);
 
-	/* Allocate database */
-	xs_sldb_db = (xs_sldb_t *) g_malloc0(sizeof(xs_sldb_t));
-	if (!xs_sldb_db) {
-		XS_MUTEX_UNLOCK(xs_cfg);
-		XS_MUTEX_UNLOCK(xs_sldb_db);
-		return -2;
-	}
+    /* Allocate database */
+    xs_sldb_db = (xs_sldb_t *) g_malloc0(sizeof(xs_sldb_t));
+    if (!xs_sldb_db) {
+        XS_MUTEX_UNLOCK(xs_cfg);
+        XS_MUTEX_UNLOCK(xs_sldb_db);
+        return -2;
+    }
 
-	/* Read the database */
-	if (xs_sldb_read(xs_sldb_db, xs_cfg.songlenDBPath) != 0) {
-		xs_sldb_free(xs_sldb_db);
-		xs_sldb_db = NULL;
-		XS_MUTEX_UNLOCK(xs_cfg);
-		XS_MUTEX_UNLOCK(xs_sldb_db);
-		return -3;
-	}
+    /* Read the database */
+    if (xs_sldb_read(xs_sldb_db, xs_cfg.songlenDBPath) != 0) {
+        xs_sldb_free(xs_sldb_db);
+        xs_sldb_db = NULL;
+        XS_MUTEX_UNLOCK(xs_cfg);
+        XS_MUTEX_UNLOCK(xs_sldb_db);
+        return -3;
+    }
 
-	/* Create index */
-	if (xs_sldb_index(xs_sldb_db) != 0) {
-		xs_sldb_free(xs_sldb_db);
-		xs_sldb_db = NULL;
-		XS_MUTEX_UNLOCK(xs_cfg);
-		XS_MUTEX_UNLOCK(xs_sldb_db);
-		return -4;
-	}
+    /* Create index */
+    if (xs_sldb_index(xs_sldb_db) != 0) {
+        xs_sldb_free(xs_sldb_db);
+        xs_sldb_db = NULL;
+        XS_MUTEX_UNLOCK(xs_cfg);
+        XS_MUTEX_UNLOCK(xs_sldb_db);
+        return -4;
+    }
 
-	XS_MUTEX_UNLOCK(xs_cfg);
-	XS_MUTEX_UNLOCK(xs_sldb_db);
-	return 0;
+    XS_MUTEX_UNLOCK(xs_cfg);
+    XS_MUTEX_UNLOCK(xs_sldb_db);
+    return 0;
 }
 
 
 void xs_songlen_close(void)
 {
-	XS_MUTEX_LOCK(xs_sldb_db);
-	xs_sldb_free(xs_sldb_db);
-	xs_sldb_db = NULL;
-	XS_MUTEX_UNLOCK(xs_sldb_db);
+    XS_MUTEX_LOCK(xs_sldb_db);
+    xs_sldb_free(xs_sldb_db);
+    xs_sldb_db = NULL;
+    XS_MUTEX_UNLOCK(xs_sldb_db);
 }
 
 
 sldb_node_t *xs_songlen_get(const gchar * filename)
 {
-	sldb_node_t *result;
+    sldb_node_t *result;
 
-	XS_MUTEX_LOCK(xs_sldb_db);
+    XS_MUTEX_LOCK(xs_sldb_db);
 
-	if (xs_cfg.songlenDBEnable && xs_sldb_db)
-		result = xs_sldb_get(xs_sldb_db, filename);
-	else
-		result = NULL;
+    if (xs_cfg.songlenDBEnable && xs_sldb_db)
+        result = xs_sldb_get(xs_sldb_db, filename);
+    else
+        result = NULL;
 
-	XS_MUTEX_UNLOCK(xs_sldb_db);
+    XS_MUTEX_UNLOCK(xs_sldb_db);
 
-	return result;
+    return result;
 }
 
 
 /* Allocate a new tune information structure
  */
 xs_tuneinfo_t *xs_tuneinfo_new(const gchar * filename,
-		gint nsubTunes, gint startTune, const gchar * sidName,
-		const gchar * sidComposer, const gchar * sidCopyright,
-		gint loadAddr, gint initAddr, gint playAddr,
-		gint dataFileLen, const gchar *sidFormat, gint sidModel)
+        gint nsubTunes, gint startTune, const gchar * sidName,
+        const gchar * sidComposer, const gchar * sidCopyright,
+        gint loadAddr, gint initAddr, gint playAddr,
+        gint dataFileLen, const gchar *sidFormat, gint sidModel)
 {
-	xs_tuneinfo_t *result;
-	sldb_node_t *tmpLength;
-	gint i;
+    xs_tuneinfo_t *result;
+    sldb_node_t *tmpLength;
+    gint i;
 
-	/* Allocate structure */
-	result = (xs_tuneinfo_t *) g_malloc0(sizeof(xs_tuneinfo_t));
-	if (!result) {
-		xs_error("Could not allocate memory for tuneinfo ('%s')\n",
-			filename);
-		return NULL;
-	}
+    /* Allocate structure */
+    result = (xs_tuneinfo_t *) g_malloc0(sizeof(xs_tuneinfo_t));
+    if (!result) {
+        xs_error("Could not allocate memory for tuneinfo ('%s')\n",
+            filename);
+        return NULL;
+    }
 
-	result->sidFilename = XS_CS_FILENAME(filename);
-	if (!result->sidFilename) {
-		xs_error("Could not allocate sidFilename ('%s')\n",
-			filename);
-		g_free(result);
-		return NULL;
-	}
+    result->sidFilename = XS_CS_FILENAME(filename);
+    if (!result->sidFilename) {
+        xs_error("Could not allocate sidFilename ('%s')\n",
+            filename);
+        g_free(result);
+        return NULL;
+    }
 
-	/* Allocate space for subtune information */
-	result->subTunes = g_malloc0(sizeof(xs_subtuneinfo_t) * (nsubTunes + 1));
-	if (!result->subTunes) {
-		xs_error("Could not allocate memory for subtuneinfo ('%s', %i)\n",
-			filename, nsubTunes);
+    /* Allocate space for subtune information */
+    result->subTunes = g_malloc0(sizeof(xs_subtuneinfo_t) * (nsubTunes + 1));
+    if (!result->subTunes) {
+        xs_error("Could not allocate memory for subtuneinfo ('%s', %i)\n",
+            filename, nsubTunes);
 
-		g_free(result->sidFilename);
-		g_free(result);
-		return NULL;
-	}
+        g_free(result->sidFilename);
+        g_free(result);
+        return NULL;
+    }
 
-	/* The following allocations don't matter if they fail */
-	result->sidName = XS_CS_SID(sidName);
-	result->sidComposer = XS_CS_SID(sidComposer);
-	result->sidCopyright = XS_CS_SID(sidCopyright);
+    /* The following allocations don't matter if they fail */
+    result->sidName = XS_CS_SID(sidName);
+    result->sidComposer = XS_CS_SID(sidComposer);
+    result->sidCopyright = XS_CS_SID(sidCopyright);
 
-	result->nsubTunes = nsubTunes;
-	result->startTune = startTune;
+    result->nsubTunes = nsubTunes;
+    result->startTune = startTune;
 
-	result->loadAddr = loadAddr;
-	result->initAddr = initAddr;
-	result->playAddr = playAddr;
-	result->dataFileLen = dataFileLen;
-	result->sidFormat = XS_CS_SID(sidFormat);
-	
-	result->sidModel = sidModel;
+    result->loadAddr = loadAddr;
+    result->initAddr = initAddr;
+    result->playAddr = playAddr;
+    result->dataFileLen = dataFileLen;
+    result->sidFormat = XS_CS_SID(sidFormat);
+    
+    result->sidModel = sidModel;
 
-	/* Get length information (NOTE: Do not free this!) */
-	tmpLength = xs_songlen_get(filename);
-	
-	/* Fill in sub-tune information */
-	for (i = 0; i < result->nsubTunes; i++) {
-		if (tmpLength && (i < tmpLength->nlengths))
-			result->subTunes[i].tuneLength = tmpLength->lengths[i];
-		else
-			result->subTunes[i].tuneLength = -1;
-		
-		result->subTunes[i].tuneSpeed = -1;
-	}
-	
-	return result;
+    /* Get length information (NOTE: Do not free this!) */
+    tmpLength = xs_songlen_get(filename);
+    
+    /* Fill in sub-tune information */
+    for (i = 0; i < result->nsubTunes; i++) {
+        if (tmpLength && (i < tmpLength->nlengths))
+            result->subTunes[i].tuneLength = tmpLength->lengths[i];
+        else
+            result->subTunes[i].tuneLength = -1;
+        
+        result->subTunes[i].tuneSpeed = -1;
+    }
+    
+    return result;
 }
 
 
@@ -275,13 +275,13 @@
  */
 void xs_tuneinfo_free(xs_tuneinfo_t * tune)
 {
-	if (!tune) return;
+    if (!tune) return;
 
-	g_free(tune->subTunes);
-	g_free(tune->sidFilename);
-	g_free(tune->sidName);
-	g_free(tune->sidComposer);
-	g_free(tune->sidCopyright);
-	g_free(tune->sidFormat);
-	g_free(tune);
+    g_free(tune->subTunes);
+    g_free(tune->sidFilename);
+    g_free(tune->sidName);
+    g_free(tune->sidComposer);
+    g_free(tune->sidCopyright);
+    g_free(tune->sidFormat);
+    g_free(tune);
 }
--- a/src/sid/xs_slsup.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_slsup.h	Thu Apr 03 00:52:14 2008 +0300
@@ -9,20 +9,20 @@
 extern "C" {
 #endif
 
-gint		xs_stil_init(void);
-void		xs_stil_close(void);
-stil_node_t	*xs_stil_get(gchar *filename);
+gint        xs_stil_init(void);
+void        xs_stil_close(void);
+stil_node_t    *xs_stil_get(gchar *filename);
 
-gint		xs_songlen_init(void);
-void		xs_songlen_close(void);
-sldb_node_t	*xs_songlen_get(const gchar *);
+gint        xs_songlen_init(void);
+void        xs_songlen_close(void);
+sldb_node_t    *xs_songlen_get(const gchar *);
 
-xs_tuneinfo_t	*xs_tuneinfo_new(const gchar * pcFilename,
-		gint nsubTunes, gint startTune, const gchar * sidName,
-		const gchar * sidComposer, const gchar * sidCopyright,
-		gint loadAddr, gint initAddr, gint playAddr,
-		gint dataFileLen, const gchar *sidFormat, gint sidModel);
-void	xs_tuneinfo_free(xs_tuneinfo_t *);
+xs_tuneinfo_t    *xs_tuneinfo_new(const gchar * pcFilename,
+        gint nsubTunes, gint startTune, const gchar * sidName,
+        const gchar * sidComposer, const gchar * sidCopyright,
+        gint loadAddr, gint initAddr, gint playAddr,
+        gint dataFileLen, const gchar *sidFormat, gint sidModel);
+void    xs_tuneinfo_free(xs_tuneinfo_t *);
 
 
 #ifdef __cplusplus
--- a/src/sid/xs_stil.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_stil.c	Thu Apr 03 00:52:14 2008 +0300
@@ -32,90 +32,90 @@
  */
 static gboolean xs_stildb_node_realloc(stil_node_t *node, gint nsubTunes)
 {
-	if (!node) return FALSE;
+    if (!node) return FALSE;
 
-	/* Re-allocate subTune structure if needed */
-	if (nsubTunes > node->nsubTunes) {
-		gint clearIndex, clearLength;
-		
-		node->subTunes =
-			(stil_subnode_t **) g_realloc(node->subTunes,
-			(nsubTunes + 1) * sizeof(stil_subnode_t **));
+    /* Re-allocate subTune structure if needed */
+    if (nsubTunes > node->nsubTunes) {
+        gint clearIndex, clearLength;
+        
+        node->subTunes =
+            (stil_subnode_t **) g_realloc(node->subTunes,
+            (nsubTunes + 1) * sizeof(stil_subnode_t **));
 
-		if (!node->subTunes) {
-			xs_error("SubTune pointer structure realloc failed.\n");
-			return FALSE;
-		}
-		
-		/* Clear the newly allocated memory */
-		if (node->nsubTunes == 0) {
-			clearIndex = 0;
-			clearLength = nsubTunes + 1;
-		} else {
-			clearIndex = node->nsubTunes + 1;
-			clearLength = (nsubTunes - clearIndex + 1);
-		}
-		memset(&(node->subTunes[clearIndex]), 0, clearLength * sizeof(stil_subnode_t **));
-		
-		node->nsubTunes = nsubTunes;
-	}
+        if (!node->subTunes) {
+            xs_error("SubTune pointer structure realloc failed.\n");
+            return FALSE;
+        }
+        
+        /* Clear the newly allocated memory */
+        if (node->nsubTunes == 0) {
+            clearIndex = 0;
+            clearLength = nsubTunes + 1;
+        } else {
+            clearIndex = node->nsubTunes + 1;
+            clearLength = (nsubTunes - clearIndex + 1);
+        }
+        memset(&(node->subTunes[clearIndex]), 0, clearLength * sizeof(stil_subnode_t **));
+        
+        node->nsubTunes = nsubTunes;
+    }
 
-	/* Allocate memory for subTune */
-	if (!node->subTunes[nsubTunes]) {
-		node->subTunes[nsubTunes] = (stil_subnode_t *)
-			g_malloc0(sizeof(stil_subnode_t));
-		
-		if (!node->subTunes[nsubTunes]) {
-			xs_error("SubTune structure malloc failed!\n");
-			return FALSE;
-		}
-	}
+    /* Allocate memory for subTune */
+    if (!node->subTunes[nsubTunes]) {
+        node->subTunes[nsubTunes] = (stil_subnode_t *)
+            g_malloc0(sizeof(stil_subnode_t));
+        
+        if (!node->subTunes[nsubTunes]) {
+            xs_error("SubTune structure malloc failed!\n");
+            return FALSE;
+        }
+    }
 
-	return TRUE;
+    return TRUE;
 }
 
 
 static void xs_stildb_node_free(stil_node_t *node)
 {
-	gint i;
-	stil_subnode_t *subnode;
+    gint i;
+    stil_subnode_t *subnode;
 
-	if (!node) return;
+    if (!node) return;
 
-	/* Free subtune information */
-	for (i = 0; i <= node->nsubTunes; i++) {
-		subnode = node->subTunes[i];
-		if (subnode) {
-			g_free(subnode->name);
-			g_free(subnode->author);
-			g_free(subnode->info);
-			g_free(subnode->title);
-			g_free(subnode);
-		}
-	}
-	g_free(node->subTunes);
-	g_free(node->filename);
-	g_free(node);
+    /* Free subtune information */
+    for (i = 0; i <= node->nsubTunes; i++) {
+        subnode = node->subTunes[i];
+        if (subnode) {
+            g_free(subnode->name);
+            g_free(subnode->author);
+            g_free(subnode->info);
+            g_free(subnode->title);
+            g_free(subnode);
+        }
+    }
+    g_free(node->subTunes);
+    g_free(node->filename);
+    g_free(node);
 }
 
 
 static stil_node_t *xs_stildb_node_new(gchar *filename)
 {
-	stil_node_t *result;
+    stil_node_t *result;
 
-	/* Allocate memory for new node */
-	result = (stil_node_t *) g_malloc0(sizeof(stil_node_t));
-	if (!result)
-		return NULL;
+    /* Allocate memory for new node */
+    result = (stil_node_t *) g_malloc0(sizeof(stil_node_t));
+    if (!result)
+        return NULL;
 
-	/* Allocate filename and initial space for one subtune */
-	result->filename = g_strdup(filename);
-	if (!result->filename || !xs_stildb_node_realloc(result, 1)) {
-		xs_stildb_node_free(result);
-		return NULL;
-	}
-	
-	return result;
+    /* Allocate filename and initial space for one subtune */
+    result->filename = g_strdup(filename);
+    if (!result->filename || !xs_stildb_node_realloc(result, 1)) {
+        xs_stildb_node_free(result);
+        return NULL;
+    }
+    
+    return result;
 }
 
 
@@ -123,204 +123,204 @@
  */
 static void xs_stildb_node_insert(xs_stildb_t *db, stil_node_t *node)
 {
-	assert(db != NULL);
+    assert(db != NULL);
 
-	if (db->nodes) {
-		/* The first node's pPrev points to last node */
-		LPREV = db->nodes->prev;	/* New node's prev = Previous last node */
-		db->nodes->prev->next = node;	/* Previous last node's next = New node */
-		db->nodes->prev = node;	/* New last node = New node */
-		LNEXT = NULL;	/* But next is NULL! */
-	} else {
-		db->nodes = node;	/* First node ... */
-		LPREV = node;	/* ... it's also last */
-		LNEXT = NULL;	/* But next is NULL! */
-	}
+    if (db->nodes) {
+        /* The first node's pPrev points to last node */
+        LPREV = db->nodes->prev;    /* New node's prev = Previous last node */
+        db->nodes->prev->next = node;    /* Previous last node's next = New node */
+        db->nodes->prev = node;    /* New last node = New node */
+        LNEXT = NULL;    /* But next is NULL! */
+    } else {
+        db->nodes = node;    /* First node ... */
+        LPREV = node;    /* ... it's also last */
+        LNEXT = NULL;    /* But next is NULL! */
+    }
 }
 
 
 /* Read database (additively) to given db-structure
  */
-#define XS_STILDB_MULTI							\
-	if (isMulti) {							\
-		isMulti = FALSE;					\
-		xs_pstrcat(&(tmnode->subTunes[subEntry]->info), "\n");\
-	}
+#define XS_STILDB_MULTI                            \
+    if (isMulti) {                            \
+        isMulti = FALSE;                    \
+        xs_pstrcat(&(tmnode->subTunes[subEntry]->info), "\n");\
+    }
 
 static void XS_STILDB_ERR(gint lineNum, gchar *inLine, const char *fmt, ...)
 {
-	va_list ap;
+    va_list ap;
 
-	va_start(ap, fmt);
-	xs_error(fmt, ap);
-	va_end(ap);
-	
-	fprintf(stderr, "#%d: '%s'\n", lineNum, inLine);
+    va_start(ap, fmt);
+    xs_error(fmt, ap);
+    va_end(ap);
+    
+    fprintf(stderr, "#%d: '%s'\n", lineNum, inLine);
 }
 
 gint xs_stildb_read(xs_stildb_t *db, gchar *dbFilename)
 {
-	FILE *inFile;
-	gchar inLine[XS_BUF_SIZE + 16];	/* Since we add some chars here and there */
-	size_t lineNum;
-	stil_node_t *tmnode;
-	gboolean isError, isMulti;
-	gint subEntry;
-	gchar *tmpLine = inLine;
-	assert(db != NULL);
+    FILE *inFile;
+    gchar inLine[XS_BUF_SIZE + 16];    /* Since we add some chars here and there */
+    size_t lineNum;
+    stil_node_t *tmnode;
+    gboolean isError, isMulti;
+    gint subEntry;
+    gchar *tmpLine = inLine;
+    assert(db != NULL);
 
-	/* Try to open the file */
-	if ((inFile = fopen(dbFilename, "ra")) == NULL) {
-		xs_error("Could not open STILDB '%s'\n", dbFilename);
-		return -1;
-	}
+    /* Try to open the file */
+    if ((inFile = fopen(dbFilename, "ra")) == NULL) {
+        xs_error("Could not open STILDB '%s'\n", dbFilename);
+        return -1;
+    }
 
-	/* Read and parse the data */
-	lineNum = 0;
-	isError = FALSE;
-	isMulti = FALSE;
-	tmnode = NULL;
-	subEntry = 0;
+    /* Read and parse the data */
+    lineNum = 0;
+    isError = FALSE;
+    isMulti = FALSE;
+    tmnode = NULL;
+    subEntry = 0;
 
-	while (!isError && fgets(inLine, XS_BUF_SIZE, inFile) != NULL) {
-		size_t linePos = 0, eolPos = 0;
-		xs_findeol(inLine, &eolPos);
-		inLine[eolPos] = 0;
-		lineNum++;
-		
-		tmpLine = XS_CS_STIL(inLine);
+    while (!isError && fgets(inLine, XS_BUF_SIZE, inFile) != NULL) {
+        size_t linePos = 0, eolPos = 0;
+        xs_findeol(inLine, &eolPos);
+        inLine[eolPos] = 0;
+        lineNum++;
+        
+        tmpLine = XS_CS_STIL(inLine);
 
-		switch (tmpLine[0]) {
-		case '/':
-			/* Check if we are already parsing entry */
-			isMulti = FALSE;
-			if (tmnode) {
-				XS_STILDB_ERR(lineNum, tmpLine,
-					"New entry found before end of current ('%s')!\n",
-					tmnode->filename);
-				xs_stildb_node_free(tmnode);
-			}
+        switch (tmpLine[0]) {
+        case '/':
+            /* Check if we are already parsing entry */
+            isMulti = FALSE;
+            if (tmnode) {
+                XS_STILDB_ERR(lineNum, tmpLine,
+                    "New entry found before end of current ('%s')!\n",
+                    tmnode->filename);
+                xs_stildb_node_free(tmnode);
+            }
 
-			/* A new node */
-			subEntry = 0;
-			tmnode = xs_stildb_node_new(tmpLine);
-			if (!tmnode) {
-				/* Allocation failed */
-				XS_STILDB_ERR(lineNum, tmpLine,
-					"Could not allocate new STILdb-node!\n");
-				isError = TRUE;
-			}
-			break;
+            /* A new node */
+            subEntry = 0;
+            tmnode = xs_stildb_node_new(tmpLine);
+            if (!tmnode) {
+                /* Allocation failed */
+                XS_STILDB_ERR(lineNum, tmpLine,
+                    "Could not allocate new STILdb-node!\n");
+                isError = TRUE;
+            }
+            break;
 
-		case '(':
-			/* A new sub-entry */
-			isMulti = FALSE;
-			linePos++;
-			if (tmpLine[linePos] == '#') {
-				linePos++;
-				if (isdigit(tmpLine[linePos])) {
-					size_t savePos = linePos;
-					xs_findnum(tmpLine, &linePos);
-					tmpLine[linePos] = 0;
-					subEntry = atol(&tmpLine[savePos]);
+        case '(':
+            /* A new sub-entry */
+            isMulti = FALSE;
+            linePos++;
+            if (tmpLine[linePos] == '#') {
+                linePos++;
+                if (isdigit(tmpLine[linePos])) {
+                    size_t savePos = linePos;
+                    xs_findnum(tmpLine, &linePos);
+                    tmpLine[linePos] = 0;
+                    subEntry = atol(&tmpLine[savePos]);
 
-					/* Sanity check */
-					if (subEntry < 1) {
-						XS_STILDB_ERR(lineNum, tmpLine,
-							"Number of subEntry (%i) for '%s' is invalid\n",
-							subEntry, tmnode->filename);
-						subEntry = 0;
-					}
-				} else {
-					XS_STILDB_ERR(lineNum, tmpLine,
-						"Syntax error, expected subEntry number.\n");
-					subEntry = 0;
-				}
-			} else {
-				XS_STILDB_ERR(lineNum, tmpLine,
-					"Syntax error, expected '#' before subEntry number.\n");
-				subEntry = 0;
-			}
+                    /* Sanity check */
+                    if (subEntry < 1) {
+                        XS_STILDB_ERR(lineNum, tmpLine,
+                            "Number of subEntry (%i) for '%s' is invalid\n",
+                            subEntry, tmnode->filename);
+                        subEntry = 0;
+                    }
+                } else {
+                    XS_STILDB_ERR(lineNum, tmpLine,
+                        "Syntax error, expected subEntry number.\n");
+                    subEntry = 0;
+                }
+            } else {
+                XS_STILDB_ERR(lineNum, tmpLine,
+                    "Syntax error, expected '#' before subEntry number.\n");
+                subEntry = 0;
+            }
 
-			break;
+            break;
 
-		case 0:
-		case '#':
-		case '\n':
-		case '\r':
-			/* End of entry/field */
-			isMulti = FALSE;
-			if (tmnode) {
-				/* Insert to database */
-				xs_stildb_node_insert(db, tmnode);
-				tmnode = NULL;
-			}
-			break;
+        case 0:
+        case '#':
+        case '\n':
+        case '\r':
+            /* End of entry/field */
+            isMulti = FALSE;
+            if (tmnode) {
+                /* Insert to database */
+                xs_stildb_node_insert(db, tmnode);
+                tmnode = NULL;
+            }
+            break;
 
-		default:
-			/* Check if we are parsing an entry */
-			xs_findnext(tmpLine, &linePos);
-			
-			if (!tmnode) {
-				XS_STILDB_ERR(lineNum, tmpLine,
-					"Entry data encountered outside of entry or syntax error!\n");
-				break;
-			}
+        default:
+            /* Check if we are parsing an entry */
+            xs_findnext(tmpLine, &linePos);
+            
+            if (!tmnode) {
+                XS_STILDB_ERR(lineNum, tmpLine,
+                    "Entry data encountered outside of entry or syntax error!\n");
+                break;
+            }
 
-			if (!xs_stildb_node_realloc(tmnode, subEntry)) {
-				XS_STILDB_ERR(lineNum, tmpLine,
-					"Could not (re)allocate memory for subEntries!\n");
-				isError = TRUE;
-				break;
-			}
-			
-			/* Some other type */
-			if (strncmp(tmpLine, "   NAME:", 8) == 0) {
-				XS_STILDB_MULTI;
-				g_free(tmnode->subTunes[subEntry]->name);
-				tmnode->subTunes[subEntry]->name = g_strdup(&tmpLine[9]);
-			} else if (strncmp(tmpLine, "  TITLE:", 8) == 0) {
-				XS_STILDB_MULTI;
-				isMulti = TRUE;
-				if (!tmnode->subTunes[subEntry]->title)
-					tmnode->subTunes[subEntry]->title = g_strdup(&tmpLine[9]);
-				xs_pstrcat(&(tmnode->subTunes[subEntry]->info), &tmpLine[2]);
-			} else if (strncmp(tmpLine, " AUTHOR:", 8) == 0) {
-				XS_STILDB_MULTI;
-				g_free(tmnode->subTunes[subEntry]->author);
-				tmnode->subTunes[subEntry]->author = g_strdup(&tmpLine[9]);
-			} else if (strncmp(tmpLine, " ARTIST:", 8) == 0) {
-				XS_STILDB_MULTI;
-				isMulti = TRUE;
-				xs_pstrcat(&(tmnode->subTunes[subEntry]->info), &tmpLine[1]);
-			} else if (strncmp(tmpLine, "COMMENT:", 8) == 0) {
-				XS_STILDB_MULTI;
-				isMulti = TRUE;
-				xs_pstrcat(&(tmnode->subTunes[subEntry]->info), tmpLine);
-			} else {
-				if (isMulti) {
-					xs_pstrcat(&(tmnode->subTunes[subEntry]->info), " ");
-					xs_pstrcat(&(tmnode->subTunes[subEntry]->info), &tmpLine[linePos]);
-				} else {
-					XS_STILDB_ERR(lineNum, tmpLine,
-					"Entry continuation found when isMulti == FALSE.\n");
-				}
-			}
-			break;
-		}
-		
-		XS_CS_FREE(tmpLine);
+            if (!xs_stildb_node_realloc(tmnode, subEntry)) {
+                XS_STILDB_ERR(lineNum, tmpLine,
+                    "Could not (re)allocate memory for subEntries!\n");
+                isError = TRUE;
+                break;
+            }
+            
+            /* Some other type */
+            if (strncmp(tmpLine, "   NAME:", 8) == 0) {
+                XS_STILDB_MULTI;
+                g_free(tmnode->subTunes[subEntry]->name);
+                tmnode->subTunes[subEntry]->name = g_strdup(&tmpLine[9]);
+            } else if (strncmp(tmpLine, "  TITLE:", 8) == 0) {
+                XS_STILDB_MULTI;
+                isMulti = TRUE;
+                if (!tmnode->subTunes[subEntry]->title)
+                    tmnode->subTunes[subEntry]->title = g_strdup(&tmpLine[9]);
+                xs_pstrcat(&(tmnode->subTunes[subEntry]->info), &tmpLine[2]);
+            } else if (strncmp(tmpLine, " AUTHOR:", 8) == 0) {
+                XS_STILDB_MULTI;
+                g_free(tmnode->subTunes[subEntry]->author);
+                tmnode->subTunes[subEntry]->author = g_strdup(&tmpLine[9]);
+            } else if (strncmp(tmpLine, " ARTIST:", 8) == 0) {
+                XS_STILDB_MULTI;
+                isMulti = TRUE;
+                xs_pstrcat(&(tmnode->subTunes[subEntry]->info), &tmpLine[1]);
+            } else if (strncmp(tmpLine, "COMMENT:", 8) == 0) {
+                XS_STILDB_MULTI;
+                isMulti = TRUE;
+                xs_pstrcat(&(tmnode->subTunes[subEntry]->info), tmpLine);
+            } else {
+                if (isMulti) {
+                    xs_pstrcat(&(tmnode->subTunes[subEntry]->info), " ");
+                    xs_pstrcat(&(tmnode->subTunes[subEntry]->info), &tmpLine[linePos]);
+                } else {
+                    XS_STILDB_ERR(lineNum, tmpLine,
+                    "Entry continuation found when isMulti == FALSE.\n");
+                }
+            }
+            break;
+        }
+        
+        XS_CS_FREE(tmpLine);
 
-	} /* while */
+    } /* while */
 
-	/* Check if there is one remaining node */
-	if (tmnode)
-		xs_stildb_node_insert(db, tmnode);
+    /* Check if there is one remaining node */
+    if (tmnode)
+        xs_stildb_node_insert(db, tmnode);
 
-	/* Close the file */
-	fclose(inFile);
+    /* Close the file */
+    fclose(inFile);
 
-	return 0;
+    return 0;
 }
 
 
@@ -328,10 +328,10 @@
  */
 static gint xs_stildb_cmp(const void *node1, const void *node2)
 {
-	/* We assume here that we never ever get NULL-pointers or similar */
-	return strcmp(
-		(*(stil_node_t **) node1)->filename,
-		(*(stil_node_t **) node2)->filename);
+    /* We assume here that we never ever get NULL-pointers or similar */
+    return strcmp(
+        (*(stil_node_t **) node1)->filename,
+        (*(stil_node_t **) node2)->filename);
 }
 
 
@@ -339,43 +339,43 @@
  */
 gint xs_stildb_index(xs_stildb_t *db)
 {
-	stil_node_t *curr;
-	size_t i;
+    stil_node_t *curr;
+    size_t i;
 
-	/* Free old index */
-	if (db->pindex) {
-		g_free(db->pindex);
-		db->pindex = NULL;
-	}
+    /* Free old index */
+    if (db->pindex) {
+        g_free(db->pindex);
+        db->pindex = NULL;
+    }
 
-	/* Get size of db */
-	curr = db->nodes;
-	db->n = 0;
-	while (curr) {
-		db->n++;
-		curr = curr->next;
-	}
+    /* Get size of db */
+    curr = db->nodes;
+    db->n = 0;
+    while (curr) {
+        db->n++;
+        curr = curr->next;
+    }
 
-	/* Check number of nodes */
-	if (db->n > 0) {
-		/* Allocate memory for index-table */
-		db->pindex = (stil_node_t **) g_malloc(sizeof(stil_node_t *) * db->n);
-		if (!db->pindex)
-			return -1;
+    /* Check number of nodes */
+    if (db->n > 0) {
+        /* Allocate memory for index-table */
+        db->pindex = (stil_node_t **) g_malloc(sizeof(stil_node_t *) * db->n);
+        if (!db->pindex)
+            return -1;
 
-		/* Get node-pointers to table */
-		i = 0;
-		curr = db->nodes;
-		while (curr && (i < db->n)) {
-			db->pindex[i++] = curr;
-			curr = curr->next;
-		}
+        /* Get node-pointers to table */
+        i = 0;
+        curr = db->nodes;
+        while (curr && (i < db->n)) {
+            db->pindex[i++] = curr;
+            curr = curr->next;
+        }
 
-		/* Sort the indexes */
-		qsort(db->pindex, db->n, sizeof(stil_node_t *), xs_stildb_cmp);
-	}
+        /* Sort the indexes */
+        qsort(db->pindex, db->n, sizeof(stil_node_t *), xs_stildb_cmp);
+    }
 
-	return 0;
+    return 0;
 }
 
 
@@ -383,30 +383,30 @@
  */
 void xs_stildb_free(xs_stildb_t *db)
 {
-	stil_node_t *curr, *next;
+    stil_node_t *curr, *next;
 
-	if (!db)
-		return;
+    if (!db)
+        return;
 
-	/* Free the memory allocated for nodes */
-	curr = db->nodes;
-	while (curr) {
-		next = curr->next;
-		xs_stildb_node_free(curr);
-		curr = next;
-	}
+    /* Free the memory allocated for nodes */
+    curr = db->nodes;
+    while (curr) {
+        next = curr->next;
+        xs_stildb_node_free(curr);
+        curr = next;
+    }
 
-	db->nodes = NULL;
+    db->nodes = NULL;
 
-	/* Free memory allocated for index */
-	if (db->pindex) {
-		g_free(db->pindex);
-		db->pindex = NULL;
-	}
+    /* Free memory allocated for index */
+    if (db->pindex) {
+        g_free(db->pindex);
+        db->pindex = NULL;
+    }
 
-	/* Free structure */
-	db->n = 0;
-	g_free(db);
+    /* Free structure */
+    db->n = 0;
+    g_free(db);
 }
 
 
@@ -414,18 +414,18 @@
  */
 stil_node_t *xs_stildb_get_node(xs_stildb_t *db, gchar *filename)
 {
-	stil_node_t keyItem, *key, **item;
+    stil_node_t keyItem, *key, **item;
 
-	/* Check the database pointers */
-	if (!db || !db->nodes || !db->pindex)
-		return NULL;
+    /* Check the database pointers */
+    if (!db || !db->nodes || !db->pindex)
+        return NULL;
 
-	/* Look-up index using binary search */
-	keyItem.filename = filename;
-	key = &keyItem;
-	item = bsearch(&key, db->pindex, db->n, sizeof(stil_node_t *), xs_stildb_cmp);
-	if (item)
-		return *item;
-	else
-		return NULL;
+    /* Look-up index using binary search */
+    keyItem.filename = filename;
+    key = &keyItem;
+    item = bsearch(&key, db->pindex, db->n, sizeof(stil_node_t *), xs_stildb_cmp);
+    if (item)
+        return *item;
+    else
+        return NULL;
 }
--- a/src/sid/xs_stil.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_stil.h	Thu Apr 03 00:52:14 2008 +0300
@@ -10,34 +10,34 @@
 /* Types
  */
 typedef struct {
-	gchar	*name,
-		*author,
-		*title,
-		*info;
+    gchar    *name,
+        *author,
+        *title,
+        *info;
 } stil_subnode_t;
 
 
 typedef struct _stil_node_t {
-	gchar			*filename;
-	gint			nsubTunes;
-	stil_subnode_t		**subTunes;
-	struct _stil_node_t	*prev, *next;
+    gchar            *filename;
+    gint            nsubTunes;
+    stil_subnode_t        **subTunes;
+    struct _stil_node_t    *prev, *next;
 } stil_node_t;
 
 
 typedef struct {
-	stil_node_t	*nodes,
-			**pindex;
-	size_t		n;
+    stil_node_t    *nodes,
+            **pindex;
+    size_t        n;
 } xs_stildb_t;
 
 
 /* Functions
  */
-gint			xs_stildb_read(xs_stildb_t *, gchar *);
-gint			xs_stildb_index(xs_stildb_t *);
-void			xs_stildb_free(xs_stildb_t *);
-stil_node_t *	xs_stildb_get_node(xs_stildb_t *, gchar *);
+gint            xs_stildb_read(xs_stildb_t *, gchar *);
+gint            xs_stildb_index(xs_stildb_t *);
+void            xs_stildb_free(xs_stildb_t *);
+stil_node_t *    xs_stildb_get_node(xs_stildb_t *, gchar *);
 
 #ifdef __cplusplus
 }
--- a/src/sid/xs_support.c	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_support.c	Thu Apr 03 00:52:14 2008 +0300
@@ -26,16 +26,16 @@
 
 guint16 xs_fread_be16(xs_file_t *f)
 {
-	return (((guint16) xs_fgetc(f)) << 8) | ((guint16) xs_fgetc(f));
+    return (((guint16) xs_fgetc(f)) << 8) | ((guint16) xs_fgetc(f));
 }
 
 
 guint32 xs_fread_be32(xs_file_t *f)
 {
-	return (((guint32) xs_fgetc(f)) << 24) |
-		(((guint32) xs_fgetc(f)) << 16) |
-		(((guint32) xs_fgetc(f)) << 8) |
-		((guint32) xs_fgetc(f));
+    return (((guint32) xs_fgetc(f)) << 24) |
+        (((guint32) xs_fgetc(f)) << 16) |
+        (((guint32) xs_fgetc(f)) << 8) |
+        ((guint32) xs_fgetc(f));
 }
 
 
@@ -43,47 +43,47 @@
  */
 gint xs_fload_buffer(const gchar *filename, guint8 **buf, size_t *bufSize)
 {
-	xs_file_t *f;
-	glong seekPos;
-	
-	/* Open file, get file size */
-	if ((f = xs_fopen(filename, "rb")) == NULL)
-		return -1;
+    xs_file_t *f;
+    glong seekPos;
+    
+    /* Open file, get file size */
+    if ((f = xs_fopen(filename, "rb")) == NULL)
+        return -1;
 
-	xs_fseek(f, 0, SEEK_END);
-	seekPos = xs_ftell(f);
-	
-	if (seekPos > 0) {
-		size_t readSize = seekPos;
-		if (readSize >= *bufSize || *buf == NULL) {
-			/* Only re-allocate if the required size > current */
-			if (*buf != NULL) {
-				g_free(*buf);
-				*buf = NULL;
-			}
-	
-			*bufSize = seekPos;
-			
-			*buf = (guint8 *) g_malloc(*bufSize * sizeof(guint8));
-			if (*buf == NULL) {
-				xs_fclose(f);
-				return -2;
-			}
-		}
-		
-		/* Read data */	
-		xs_fseek(f, 0, SEEK_SET);
-		readSize = xs_fread(*buf, sizeof(guint8), *bufSize, f);
-		xs_fclose(f);
-		
-		if (readSize != *bufSize)
-			return -3;
-		else
-			return 0;
-	} else {
-		xs_fclose(f);
-		return -4;
-	}
+    xs_fseek(f, 0, SEEK_END);
+    seekPos = xs_ftell(f);
+    
+    if (seekPos > 0) {
+        size_t readSize = seekPos;
+        if (readSize >= *bufSize || *buf == NULL) {
+            /* Only re-allocate if the required size > current */
+            if (*buf != NULL) {
+                g_free(*buf);
+                *buf = NULL;
+            }
+    
+            *bufSize = seekPos;
+            
+            *buf = (guint8 *) g_malloc(*bufSize * sizeof(guint8));
+            if (*buf == NULL) {
+                xs_fclose(f);
+                return -2;
+            }
+        }
+        
+        /* Read data */    
+        xs_fseek(f, 0, SEEK_SET);
+        readSize = xs_fread(*buf, sizeof(guint8), *bufSize, f);
+        xs_fclose(f);
+        
+        if (readSize != *bufSize)
+            return -3;
+        else
+            return 0;
+    } else {
+        xs_fclose(f);
+        return -4;
+    }
 }
 
 
@@ -91,33 +91,33 @@
  */
 gchar *xs_strncpy(gchar *pDest, const gchar *pSource, size_t n)
 {
-	const gchar *s;
-	gchar *d;
-	size_t i;
+    const gchar *s;
+    gchar *d;
+    size_t i;
 
-	/* Check the string pointers */
-	if (!pSource || !pDest)
-		return pDest;
+    /* Check the string pointers */
+    if (!pSource || !pDest)
+        return pDest;
 
-	/* Copy to the destination */
-	i = n;
-	s = pSource;
-	d = pDest;
-	while (*s && (i > 0)) {
-		*(d++) = *(s++);
-		i--;
-	}
+    /* Copy to the destination */
+    i = n;
+    s = pSource;
+    d = pDest;
+    while (*s && (i > 0)) {
+        *(d++) = *(s++);
+        i--;
+    }
 
-	/* Fill rest of space with zeros */
-	while (i > 0) {
-		*(d++) = 0;
-		i--;
-	}
+    /* Fill rest of space with zeros */
+    while (i > 0) {
+        *(d++) = 0;
+        i--;
+    }
 
-	/* Ensure that last is always zero */
-	pDest[n - 1] = 0;
+    /* Ensure that last is always zero */
+    pDest[n - 1] = 0;
 
-	return pDest;
+    return pDest;
 }
 
 
@@ -125,21 +125,21 @@
  */
 gint xs_pstrcpy(gchar **ppResult, const gchar *pStr)
 {
-	/* Check the string pointers */
-	if (!ppResult || !pStr)
-		return -1;
+    /* Check the string pointers */
+    if (!ppResult || !pStr)
+        return -1;
 
-	/* Allocate memory for destination */
-	if (*ppResult)
-		g_free(*ppResult);
-	*ppResult = (gchar *) g_malloc(strlen(pStr) + 1);
-	if (!*ppResult)
-		return -2;
+    /* Allocate memory for destination */
+    if (*ppResult)
+        g_free(*ppResult);
+    *ppResult = (gchar *) g_malloc(strlen(pStr) + 1);
+    if (!*ppResult)
+        return -2;
 
-	/* Copy to the destination */
-	strcpy(*ppResult, pStr);
+    /* Copy to the destination */
+    strcpy(*ppResult, pStr);
 
-	return 0;
+    return 0;
 }
 
 
@@ -147,23 +147,23 @@
  */
 gint xs_pstrcat(gchar **ppResult, const gchar *pStr)
 {
-	/* Check the string pointers */
-	if (!ppResult || !pStr)
-		return -1;
+    /* Check the string pointers */
+    if (!ppResult || !pStr)
+        return -1;
 
-	if (*ppResult != NULL) {
-		*ppResult = (gchar *) g_realloc(*ppResult, strlen(*ppResult) + strlen(pStr) + 1);
-		if (*ppResult == NULL)
-			return -1;
-		strcat(*ppResult, pStr);
-	} else {
-		*ppResult = (gchar *) g_malloc(strlen(pStr) + 1);
-		if (*ppResult == NULL)
-			return -1;
-		strcpy(*ppResult, pStr);
-	}
+    if (*ppResult != NULL) {
+        *ppResult = (gchar *) g_realloc(*ppResult, strlen(*ppResult) + strlen(pStr) + 1);
+        if (*ppResult == NULL)
+            return -1;
+        strcat(*ppResult, pStr);
+    } else {
+        *ppResult = (gchar *) g_malloc(strlen(pStr) + 1);
+        if (*ppResult == NULL)
+            return -1;
+        strcpy(*ppResult, pStr);
+    }
 
-	return 0;
+    return 0;
 }
 
 
@@ -172,38 +172,38 @@
  */
 void xs_pnstrcat(gchar *pDest, size_t iSize, const gchar *pStr)
 {
-	size_t i, n;
-	const gchar *s;
-	gchar *d;
+    size_t i, n;
+    const gchar *s;
+    gchar *d;
 
-	d = pDest;
-	i = 0;
-	while (*d && (i < iSize)) {
-		i++;
-		d++;
-	}
+    d = pDest;
+    i = 0;
+    while (*d && (i < iSize)) {
+        i++;
+        d++;
+    }
 
-	s = pStr;
-	while (*s && (*s != '\n') && (i < iSize)) {
-		*d = *s;
-		d++;
-		s++;
-		i++;
-	}
+    s = pStr;
+    while (*s && (*s != '\n') && (i < iSize)) {
+        *d = *s;
+        d++;
+        s++;
+        i++;
+    }
 
-	*d = 0;
+    *d = 0;
 
-	if (i >= iSize) {
-		i--;
-		d--;
-		n = 3;
-		while ((i > 0) && (n > 0)) {
-			*d = '.';
-			d--;
-			i--;
-			n--;
-		}
-	}
+    if (i >= iSize) {
+        i--;
+        d--;
+        n = 3;
+        while ((i > 0) && (n > 0)) {
+            *d = '.';
+            d--;
+            i--;
+            n--;
+        }
+    }
 }
 
 
@@ -211,35 +211,35 @@
  */
 gchar *xs_strrchr(gchar *pcStr, const gchar ch)
 {
-	gchar *lastPos = NULL;
+    gchar *lastPos = NULL;
 
-	while (*pcStr) {
-		if (*pcStr == ch)
-			lastPos = pcStr;
-		pcStr++;
-	}
+    while (*pcStr) {
+        if (*pcStr == ch)
+            lastPos = pcStr;
+        pcStr++;
+    }
 
-	return lastPos;
+    return lastPos;
 }
 
 
 void xs_findnext(const gchar *pcStr, size_t *piPos)
 {
-	while (pcStr[*piPos] && isspace(pcStr[*piPos]))
-		(*piPos)++;
+    while (pcStr[*piPos] && isspace(pcStr[*piPos]))
+        (*piPos)++;
 }
 
 
 void xs_findeol(const gchar *pcStr, size_t *piPos)
 {
-	while (pcStr[*piPos] && (pcStr[*piPos] != '\n') && (pcStr[*piPos] != '\r'))
-		(*piPos)++;
+    while (pcStr[*piPos] && (pcStr[*piPos] != '\n') && (pcStr[*piPos] != '\r'))
+        (*piPos)++;
 }
 
 
 void xs_findnum(const gchar *pcStr, size_t *piPos)
 {
-	while (pcStr[*piPos] && isdigit(pcStr[*piPos]))
-		(*piPos)++;
+    while (pcStr[*piPos] && isdigit(pcStr[*piPos]))
+        (*piPos)++;
 }
 
--- a/src/sid/xs_support.h	Wed Apr 02 19:55:15 2008 +0300
+++ b/src/sid/xs_support.h	Thu Apr 03 00:52:14 2008 +0300
@@ -89,19 +89,19 @@
 #endif
 guint16 xs_fread_be16(xs_file_t *);
 guint32 xs_fread_be32(xs_file_t *);
-gint	xs_fload_buffer(const gchar *, guint8 **, size_t *);
+gint    xs_fload_buffer(const gchar *, guint8 **, size_t *);
 
 
 /* Misc functions
  */
-gchar	*xs_strncpy(gchar *, const gchar *, size_t);
-gint	xs_pstrcpy(gchar **, const gchar *);
-gint	xs_pstrcat(gchar **, const gchar *);
-void	xs_pnstrcat(gchar *, size_t, const gchar *);
-gchar	*xs_strrchr(gchar *, const gchar);
-void	xs_findnext(const gchar *, size_t *);
-void	xs_findeol(const gchar *, size_t *);
-void	xs_findnum(const gchar *, size_t *);
+gchar    *xs_strncpy(gchar *, const gchar *, size_t);
+gint    xs_pstrcpy(gchar **, const gchar *);
+gint    xs_pstrcat(gchar **, const gchar *);
+void    xs_pnstrcat(gchar *, size_t, const gchar *);
+gchar    *xs_strrchr(gchar *, const gchar);
+void    xs_findnext(const gchar *, size_t *);
+void    xs_findeol(const gchar *, size_t *);
+void    xs_findnum(const gchar *, size_t *);
 
 #ifdef __cplusplus
 }