diff options
author | Joe <bousset.rudy@gmail.com> | 2022-07-03 15:25:47 +0200 |
---|---|---|
committer | Joe <bousset.rudy@gmail.com> | 2022-07-03 15:25:47 +0200 |
commit | 6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff (patch) | |
tree | 20cae85bea9955ac26dcd20c530c2674b813dac7 | |
parent | WIP (diff) | |
download | mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.tar.gz mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.tar.bz2 mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.tar.xz mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.tar.zst mpdview-6ef52d1894643aeb4a8c5bfc8ab48738c1b793ff.zip |
WIP
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | src/c_mpdview.c | 89 | ||||
-rw-r--r-- | src/c_mpdview.h | 16 |
3 files changed, 80 insertions, 31 deletions
@@ -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__ */ |