summaryrefslogtreecommitdiff
path: root/conf.c
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2009-08-17 21:45:08 +0200
committerGravatar waker <wakeroid@gmail.com>2009-08-17 21:45:08 +0200
commit4cd7148d793912b8ef97ce9265962b73d32a1c3f (patch)
tree75885de9f977581452d6359e3e0e7824a0f75292 /conf.c
parente17823663289e21e043fbf32e8d26bc133a7b3fe (diff)
added config file
Diffstat (limited to 'conf.c')
-rw-r--r--conf.c76
1 files changed, 76 insertions, 0 deletions
diff --git a/conf.c b/conf.c
new file mode 100644
index 00000000..90a5f0a2
--- /dev/null
+++ b/conf.c
@@ -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;
+}
+