summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe <bousset.rudy@gmail.com>2022-07-03 15:25:47 +0200
committerJoe <bousset.rudy@gmail.com>2022-07-03 15:25:47 +0200
commit6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff (patch)
tree20cae85bea9955ac26dcd20c530c2674b813dac7
parentWIP (diff)
downloadmpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.tar.gz
mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.tar.bz2
mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.tar.xz
mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.tar.zst
mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.zip
WIP
-rw-r--r--Makefile6
-rw-r--r--src/c_mpdview.c89
-rw-r--r--src/c_mpdview.h16
3 files changed, 80 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index 6c9bd85..858de08 100644
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@
# ========================
#
# mpdview: Makefile
-# Sun, 03 Jul 2022 04:09:41 +0200
+# Sun, 03 Jul 2022 15:15:01 +0200
# Joe
#
# BSD Makefile
@@ -32,7 +32,8 @@ SRCS := ${SRCS:S/^/${SRCS_DIR}\//g}
OBJS := ${SRCS:=.o}
# OBJS := ${OBJS:S/${SRCS_DIR}/${OBJS_DIR}/g}
-INCS := ${SRCS:.c=.h}
+# INCS :=
+# INCS += ${SRCS:.c=.h}
NAME := mpdview
@@ -43,6 +44,7 @@ CFLAGS += -Wextra
CFLAGS += -Werror
CFLAGS += -pedantic
CFLAGS += -isystem/usr/local/include
+# CFLAGS += -isystem${SRCS_DIR}/
CFLAGS += -glldb
# CFLAGS += -march=native -O2 -pipe
diff --git a/src/c_mpdview.c b/src/c_mpdview.c
index 0a356fc..cfad0be 100644
--- a/src/c_mpdview.c
+++ b/src/c_mpdview.c
@@ -61,58 +61,89 @@
#include "c_mpdview.h"
+static struct mpdview_s *
+c_create_view(void)
+{
+ struct mpdview_s* view;
+
+ view = (struct mpdview_s*)malloc(sizeof(struct mpdview_s));
+ view->conn = NULL;
+ view->status = NULL;
+ view->song = NULL;
+ view->state = MPD_STATE_UNKNOWN;
+ return (view);
+}
+
+static unsigned char
+c_connect_mpd(struct mpdview_s* view)
+{
+ view->conn = mpd_connection_new(NULL, 0, 3000);
+ if (mpd_connection_get_error(view->conn) != MPD_ERROR_SUCCESS) {
+ dprintf(
+ STDERR_FILENO,
+ "%s: %s\n",
+ PROGNAME,
+ mpd_connection_get_error_message(view->conn)
+ );
+ return (RET_ERR);
+ }
+ return (RET_OK);
+}
+
int
main
(int argc,
const char* argv[],
const char* envp[])
{
- struct mpd_connection* conn;
- struct mpd_status* status;
- struct mpd_song* song;
- enum mpd_state state;
+ struct mpdview_s* view;
int read_size;
char buff[BUFF_SIZE];
(void)argc;
(void)argv;
(void)envp;
- state = MPD_STATE_UNKNOWN;
- conn = mpd_connection_new(NULL, 0, 3000);
- if (mpd_connection_get_error(conn) != MPD_ERROR_SUCCESS) {
- dprintf(STDERR_FILENO, "%s: %s\n", PROGNAME, mpd_connection_get_error_message(conn));
- if (conn != NULL) {
- mpd_connection_free(conn);
+ view = c_create_view();
+ if (view == NULL) {
+ return (EXIT_FAILURE);
+ }
+ if (c_connect_mpd(view) != RET_OK) {
+ if (view->conn != NULL) {
+ mpd_connection_free(view->conn);
}
- conn = NULL;
+ view->conn = NULL;
+ free(view);
+ view = NULL;
return (EXIT_FAILURE);
}
- mpd_command_list_begin(conn, TRUE);
- mpd_send_status(conn);
- mpd_send_current_song(conn);
- mpd_command_list_end(conn);
- status = mpd_recv_status(conn);
- state = mpd_status_get_state(status);
- mpd_status_free(status);
- status = NULL;
- if (state == MPD_STATE_PLAY || state == MPD_STATE_PAUSE) {
- mpd_response_next(conn);
- song = mpd_recv_song(conn);
- mpd_response_finish(conn);
+ mpd_command_list_begin(view->conn, TRUE);
+ mpd_send_status(view->conn);
+ mpd_send_current_song(view->conn);
+ mpd_command_list_end(view->conn);
+ view->status = mpd_recv_status(view->conn);
+ view->state = mpd_status_get_state(view->status);
+ mpd_status_free(view->status);
+ view->status = NULL;
+ if (view->state == MPD_STATE_PLAY || view->state == MPD_STATE_PAUSE) {
+ mpd_response_next(view->conn);
+ view->song = mpd_recv_song(view->conn);
+ mpd_response_finish(view->conn);
bzero(buff, BUFF_SIZE);
- read_size = mpd_run_albumart(conn, mpd_song_get_uri(song), 0, buff, BUFF_SIZE);
+ read_size = mpd_run_albumart(view->conn, mpd_song_get_uri(view->song), 0, buff, BUFF_SIZE);
if (read_size > -1) {
write(STDOUT_FILENO, buff, read_size);
}
else {
dprintf(STDOUT_FILENO, "Exit\n");
}
- mpd_song_free(song);
- song = NULL;
+ mpd_song_free(view->song);
+ view->song = NULL;
}
- if (conn != NULL) {
- mpd_connection_free(conn);
+ if (view->conn != NULL) {
+ mpd_connection_free(view->conn);
}
- conn = NULL;
+ view->conn = NULL;
+ free(view);
+ view = NULL;
return (EXIT_SUCCESS);
}
diff --git a/src/c_mpdview.h b/src/c_mpdview.h
index 4848997..d3940be 100644
--- a/src/c_mpdview.h
+++ b/src/c_mpdview.h
@@ -46,6 +46,10 @@
#ifndef __C_MPDVIEW_H__
#define __C_MPDVIEW_H__
+/* #include <mpd/connection.h> */
+/* #include <mpd/song.h> */
+/* #include <mpd/status.h> */
+
#define BUFF_SIZE 262144
#define PROGNAME "mpdview"
@@ -57,4 +61,16 @@ enum bool_e {
TRUE
};
+enum ret_e {
+ RET_OK,
+ RET_ERR
+};
+
+struct mpdview_s {
+ struct mpd_connection* conn;
+ struct mpd_status* status;
+ struct mpd_song* song;
+ enum mpd_state state;
+};
+
#endif /* __C_MPDVIEW_H__ */