diff options
| -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__ */ | 
