diff options
author | waker <wakeroid@gmail.com> | 2009-08-17 21:45:08 +0200 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2009-08-17 21:45:08 +0200 |
commit | 4cd7148d793912b8ef97ce9265962b73d32a1c3f (patch) | |
tree | 75885de9f977581452d6359e3e0e7824a0f75292 /conf.c | |
parent | e17823663289e21e043fbf32e8d26bc133a7b3fe (diff) |
added config file
Diffstat (limited to 'conf.c')
-rw-r--r-- | conf.c | 76 |
1 files changed, 76 insertions, 0 deletions
@@ -0,0 +1,76 @@ +#include <stdio.h> +#include <stdint.h> +#include <string.h> +#include <stdlib.h> + +char conf_alsa_soundcard[1024] = "default"; // name of soundcard for alsa player +int conf_samplerate = 48000; +int conf_src_quality = 1; +char conf_hvsc_path[1024] = ""; +int conf_hvsc_enable = 0; + +int +conf_load (void) { + extern char dbconfdir[1024]; // $HOME/.config/deadbeef + char str[1024]; + snprintf (str, 1024, "%s/config", dbconfdir); + FILE *fp = fopen (str, "rt"); + if (!fp) { + fprintf (stderr, "failed to load config file\n"); + return -1; + } + int line = 0; + while (fgets (str, 1024, fp) != NULL) { + line++; + if (str[0] == '#') { + continue; + } + uint8_t *p = (uint8_t *)str; + while (*p && *p > 0x20) { + p++; + } + if (!*p) { + fprintf (stderr, "error in config file line %d\n", line); + continue; + } + *p = 0; + p++; + // skip whitespace + while (*p && *p <= 0x20) { + p++; + } + if (!*p) { + fprintf (stderr, "error in config file line %d\n", line); + continue; + } + char *value = p; + // remove trailing trash + while (*p && *p >= 0x20) { + p++; + } + *p = 0; + if (!strcasecmp (str, "samplerate")) { + conf_samplerate = atoi (value); + } + else if (!strcasecmp (str, "alsa_soundcard")) { + strncpy (conf_alsa_soundcard, value, 1024); + conf_alsa_soundcard[1023] = 0; + } + else if (!strcasecmp (str, "src_quality")) { + conf_src_quality = atoi (value); + } + else if (!strcasecmp (str, "hvsc_path")) { + strncpy (conf_hvsc_path, value, 1024); + conf_hvsc_path[1023] = 0; + } + else if (!strcasecmp (str, "hvsc_enable")) { + conf_hvsc_enable = atoi (value); + } + else { + fprintf (stderr, "error in config file line %d\n", line); + } + } + fclose (fp); + return 0; +} + |