Commit: deea1800ec71518161468c931dbac9ca4f6de5b1
Parent: 64930bb5943f874516346ed85e68d769610d25f4
Author: opask
Date: Wed, 14 Nov 2018 09:56:43 -0700
move linux specific code to linux.c
Diffstat:
4 files changed, 43 insertions(+), 36 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,6 +1,6 @@
include config.mk
-SRC = status.c
+SRC = status.c linux.c
OBJ = $(SRC:.c=.o)
all: status
diff --git a/linux.c b/linux.c
@@ -0,0 +1,37 @@
+#if defined(__linux__)
+#include <alsa/asoundlib.h>
+#include <alsa/mixer.h>
+
+#include "status.h"
+
+int
+getvol(const char *card, const char *output)
+{
+ snd_mixer_t *handle;
+ snd_mixer_selem_id_t *sid;
+ snd_mixer_elem_t *elem;
+
+ long vol, min, max;
+
+ snd_mixer_open(&handle, 0);
+ snd_mixer_attach(handle, card);
+ snd_mixer_selem_register(handle, NULL, NULL);
+ snd_mixer_load(handle);
+
+ snd_mixer_selem_id_malloc(&sid);
+ snd_mixer_selem_id_set_index(sid, 0);
+ snd_mixer_selem_id_set_name(sid, output);
+ elem = snd_mixer_find_selem(handle, sid);
+
+ snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &vol);
+ snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
+
+ /* covert from raw value to percent */
+ vol = (double)vol / (double)(max - min) * 100;
+
+ snd_mixer_close(handle);
+ snd_mixer_selem_id_free(sid);
+ return (int)vol;
+}
+
+#endif
diff --git a/status.c b/status.c
@@ -5,11 +5,10 @@
#include <string.h>
#include <time.h>
#include <unistd.h>
-#include <alsa/asoundlib.h>
-#include <alsa/mixer.h>
#include <mpd/client.h>
#include <X11/Xlib.h>
+#include "status.h"
#include "config.h"
static int done = 0;
@@ -64,36 +63,6 @@ setstatus(char *str)
XSync(dpy, False);
}
-static long
-alsavol(const char *card, const char *output)
-{
- snd_mixer_t *handle;
- snd_mixer_selem_id_t *sid;
- snd_mixer_elem_t *elem;
-
- long vol, min, max;
-
- snd_mixer_open(&handle, 0);
- snd_mixer_attach(handle, card);
- snd_mixer_selem_register(handle, NULL, NULL);
- snd_mixer_load(handle);
-
- snd_mixer_selem_id_malloc(&sid);
- snd_mixer_selem_id_set_index(sid, 0);
- snd_mixer_selem_id_set_name(sid, output);
- elem = snd_mixer_find_selem(handle, sid);
-
- snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_MONO, &vol);
- snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
-
- /* covert from raw value to percent */
- vol = (double)vol / (double)(max - min) * 100;
-
- snd_mixer_close(handle);
- snd_mixer_selem_id_free(sid);
- return vol;
-}
-
static char *
gettime(const char *fmt)
{
@@ -145,7 +114,7 @@ main(void)
char *status;
char *time;
char *artist, *song;
- long vol;
+ int vol;
memset(&sa, 0, sizeof(sa));
sa.sa_handler = terminate;
@@ -159,9 +128,9 @@ main(void)
time = gettime(timefmt);
song = mpd(MPD_TAG_TITLE);
artist = mpd(MPD_TAG_ARTIST);
- vol = alsavol(alsacard, alsaoutput);
+ vol = getvol(alsacard, alsaoutput);
- status = smprintf("[ %s - %s ][ %li%% ][ %s ]", artist, song,
+ status = smprintf("[ %s - %s ][ %d%% ][ %s ]", artist, song,
vol, time);
setstatus(status);
diff --git a/status.h b/status.h
@@ -0,0 +1 @@
+int getvol(const char *card, const char *output);