removed command line options, now conf file only

added option for path to config file, defaults to home/.config/cava/config like before
also improved configscript, still not 100% sure what I'm doing
master
karlstav 11 years ago
parent 43b9523273
commit cf3a92d1e4
  1. 4
      Makefile.am
  2. 112
      cava.c
  3. 20
      iniparser/Makefile

@ -11,7 +11,9 @@ M_CPPFLAGS = -DSYSTEM_LIBINIPARSER=@SYSTEM_LIBINIPARSER@
bin_PROGRAMS = cava bin_PROGRAMS = cava
cava_SOURCES = cava.c cava_SOURCES = cava.c
cava_LDADD = -liniparser cava_LDADD = -liniparser
cava_CPPFLAGS = -std=c99 -Wall -Wextra cava_CPPFLAGS = -DPACKAGE=\"$(PACKAGE)\" -DVERSION=\"$(VERSION)\" \
-D_POSIX_SOURCE -D _POSIX_C_SOURCE=200809L
cava_CFLAGS = -std=c99 -Wall -Wextra -Wno-unused-result -Wno-maybe-uninitialized
if !SYSTEM_LIBINIPARSER if !SYSTEM_LIBINIPARSER
cava_SOURCES += iniparser/libiniparser.la cava_SOURCES += iniparser/libiniparser.la

112
cava.c

@ -86,38 +86,51 @@ void sig_handler(int sig_no)
raise(sig_no); raise(sig_no);
} }
void load_config() void load_config(char configPath[255])
{ {
//config: location
char *configFile = "config";
char configPath[255];
configPath[0] = '\0';
FILE *fp;
//config: creating path to default config file
if (configPath[0] == '\0') { if (configPath[0] == '\0') {
char *configFile = "config";
char *configHome = getenv("XDG_CONFIG_HOME"); char *configHome = getenv("XDG_CONFIG_HOME");
if (configHome != NULL) { if (configHome != NULL) {
snprintf(configPath, sizeof(configPath), "%s/%s/", configHome, PACKAGE); sprintf(configPath,"%s/%s/", configHome, PACKAGE);
} else { } else {
configHome = getenv("HOME"); configHome = getenv("HOME");
if (configHome != NULL) { if (configHome != NULL) {
snprintf(configPath, sizeof(configPath), "%s/%s/%s/", configHome, ".config", PACKAGE);
} else { } else {
sprintf(configPath,"%s/%s/%s/", configHome, ".config", PACKAGE);
printf("No HOME found (ERR_HOMELESS), exiting..."); printf("No HOME found (ERR_HOMELESS), exiting...");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
} }
}
// config: create directory // config: create directory
mkdir(configPath, 0777); mkdir(configPath, 0777);
// config: create empty file // config: adding default filename file
strcat(configPath, configFile); strcat(configPath, configFile);
FILE *fp = fopen(configPath, "ab+");
if (fp) { fp = fopen(configPath, "ab+");
fclose(fp); if (fp) {
} else { fclose(fp);
printf("Unable to access config '%s', exiting...\n", configPath); } else {
exit(EXIT_FAILURE); printf("Unable to access config '%s', exiting...\n", configPath);
exit(EXIT_FAILURE);
}
} else { //opening specified file
fp = fopen(configPath, "rb+");
if (fp) {
fclose(fp);
} else {
printf("Unable to open file '%s', exiting...\n", configPath);
exit(EXIT_FAILURE);
}
} }
// config: parse ini // config: parse ini
@ -370,7 +383,6 @@ int * monstercat_filter (int * f, int bars) {
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
load_config();
// general: define variables // general: define variables
pthread_t p_thread; pthread_t p_thread;
@ -398,27 +410,18 @@ int main(int argc, char **argv)
float k[200]; float k[200];
float g; float g;
struct timespec req = { .tv_sec = 0, .tv_nsec = 0 }; struct timespec req = { .tv_sec = 0, .tv_nsec = 0 };
char configPath[255];
char *usage = "\n\ char *usage = "\n\
Usage : " PACKAGE " [options]\n\ Usage : " PACKAGE " [options]\n\
Visualize audio input in terminal. \n\ Visualize audio input in terminal. \n\
\n\ \n\
Options:\n\ Options:\n\
-b 1..(console columns/2-1) or 200 number of bars in the spectrum (default 25 + fills up the console), program will automatically adjust if there are too many bars)\n\ -p path to config file\n\
-i 'input method' method used for listening to audio, supports: 'alsa' and 'fifo'\n\
-o 'output method' method used for outputting processed data, supports: 'ncurses', 'noncurses' and 'circle'\n\
-d 'alsa device' name of alsa capture device (default 'hw:Loopback,1')\n\
-p 'fifo path' path to fifo (default '/tmp/mpd.fifo')\n\
-c foreground color supported colors: red, green, yellow, magenta, cyan, white, blue, black (default: cyan)\n\
-C background color supported colors: same as above (default: no change)\n\
-s sensitivity sensitivity percentage, 0% - no response, 50% - half, 100% - normal, etc...\n\
-f framerate FPS limit, if you are experiencing high CPU usage, try reducing this (default: 60)\n\
-m mode set mode (normal, scientific, waves)\n\
-h print the usage\n\
-v print version\n\ -v print version\n\
\n"; \n";
char ch; char ch = '\0';
configPath[0] = '\0';
audio.format = -1; audio.format = -1;
audio.rate = 0; audio.rate = 0;
if (stereo) audio.channels = 2; if (stereo) audio.channels = 2;
@ -440,47 +443,14 @@ Options:\n\
// general: handle command-line arguments // general: handle command-line arguments
while ((c = getopt (argc, argv, "p:i:o:m:b:d:s:f:c:C:hv")) != -1) { while ((c = getopt (argc, argv, "p:vh")) != -1) {
switch (c) { switch (c) {
case 'i': // argument: input method
im = 0;
inputMethod = optarg;
break;
case 'p': // argument: fifo path case 'p': // argument: fifo path
audio.source = optarg; snprintf(configPath, sizeof(configPath), "%s", optarg);
break;
case 'o': // argument: output method
om = 0;
outputMethod = optarg;
break;
case 'm': // argument: smoothing mode
mode = 0;
modeString = optarg;
break;
case 'b': // argument: bar count
fixedbars = atoi(optarg);
if (fixedbars) autobars = 0;
break;
case 'd': // argument: alsa device
audio.source = optarg;
break;
case 's': // argument: sensitivity
sens = atoi(optarg);
break;
case 'f': // argument: framerate
framerate = atoi(optarg);
break;
case 'c': // argument: foreground color
col = -2;
color = optarg;
break;
case 'C': // argument: background color
bgcol = -2;
bcolor = optarg;
break; break;
case 'h': // argument: print usage case 'h': // argument: print usage
printf ("%s", usage); printf ("%s", usage);
return 0; return 1;
case '?': // argument: print usage case '?': // argument: print usage
printf ("%s", usage); printf ("%s", usage);
return 1; return 1;
@ -494,6 +464,8 @@ Options:\n\
n = 0; n = 0;
} }
load_config(configPath);
// config: validate // config: validate
validate_config(); validate_config();
@ -690,7 +662,7 @@ Options:\n\
} }
break; break;
case 'r': //reload config case 'r': //reload config
load_config(); load_config(configPath);
validate_config(); validate_config();
cont = 0; cont = 0;
break; break;

@ -193,13 +193,13 @@ am__define_uniq_tagged_files = \
ETAGS = etags ETAGS = etags
CTAGS = ctags CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/karl/conficava/missing aclocal-1.14 ACLOCAL = ${SHELL} /home/karl/cava/missing aclocal-1.14
AMTAR = $${TAR-tar} AMTAR = $${TAR-tar}
AM_DEFAULT_VERBOSITY = 1 AM_DEFAULT_VERBOSITY = 1
AR = ar AR = ar
AUTOCONF = ${SHELL} /home/karl/conficava/missing autoconf AUTOCONF = ${SHELL} /home/karl/cava/missing autoconf
AUTOHEADER = ${SHELL} /home/karl/conficava/missing autoheader AUTOHEADER = ${SHELL} /home/karl/cava/missing autoheader
AUTOMAKE = ${SHELL} /home/karl/conficava/missing automake-1.14 AUTOMAKE = ${SHELL} /home/karl/cava/missing automake-1.14
AWK = gawk AWK = gawk
CC = gcc -std=gnu99 CC = gcc -std=gnu99
CCDEPMODE = depmode=gcc3 CCDEPMODE = depmode=gcc3
@ -233,7 +233,7 @@ LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO = LIPO =
LN_S = ln -s LN_S = ln -s
LTLIBOBJS = LTLIBOBJS =
MAKEINFO = ${SHELL} /home/karl/conficava/missing makeinfo MAKEINFO = ${SHELL} /home/karl/cava/missing makeinfo
MANIFEST_TOOL = : MANIFEST_TOOL = :
MKDIR_P = /bin/mkdir -p MKDIR_P = /bin/mkdir -p
NM = /usr/bin/nm -B NM = /usr/bin/nm -B
@ -257,10 +257,10 @@ SHELL = /bin/bash
STRIP = strip STRIP = strip
SYSTEM_LIBINIPARSER = 0 SYSTEM_LIBINIPARSER = 0
VERSION = 0.3.5 VERSION = 0.3.5
abs_builddir = /home/karl/conficava/iniparser abs_builddir = /home/karl/cava/iniparser
abs_srcdir = /home/karl/conficava/iniparser abs_srcdir = /home/karl/cava/iniparser
abs_top_builddir = /home/karl/conficava abs_top_builddir = /home/karl/cava
abs_top_srcdir = /home/karl/conficava abs_top_srcdir = /home/karl/cava
ac_ct_AR = ar ac_ct_AR = ar
ac_ct_CC = gcc ac_ct_CC = gcc
ac_ct_DUMPBIN = ac_ct_DUMPBIN =
@ -289,7 +289,7 @@ host_vendor = unknown
htmldir = ${docdir} htmldir = ${docdir}
includedir = ${prefix}/include includedir = ${prefix}/include
infodir = ${datarootdir}/info infodir = ${datarootdir}/info
install_sh = ${SHELL} /home/karl/conficava/install-sh install_sh = ${SHELL} /home/karl/cava/install-sh
libdir = ${exec_prefix}/lib libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale localedir = ${datarootdir}/locale

Loading…
Cancel
Save