aboutsummaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c122
1 files changed, 122 insertions, 0 deletions
diff --git a/main.c b/main.c
new file mode 100644
index 000000000..e91532277
--- /dev/null
+++ b/main.c
@@ -0,0 +1,122 @@
+/*
+ * $Id: main.c,v 1.5 2004/03/16 14:34:49 kalle Exp $
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include <glib.h>
+
+#include "config.h"
+#include "libmpdclient.h"
+#include "mpc.h"
+#include "options.h"
+#include "command.h"
+#include "screen.h"
+
+
+static mpd_client_t *mpc = NULL;
+
+void
+exit_and_cleanup(void)
+{
+ screen_exit();
+ if( mpc )
+ {
+ if( mpc_error(mpc) )
+ fprintf(stderr,"Error: %s\n", mpc_error_str(mpc));
+ mpc_close(mpc);
+ }
+}
+
+void
+catch_sigint( int sig )
+{
+ printf( "\nExiting...\n");
+ exit(EXIT_SUCCESS);
+}
+
+int
+main(int argc, char *argv[])
+{
+ options_t *options;
+ struct sigaction act;
+ int counter;
+
+ /* parse command line options */
+ options_init();
+ options = options_parse(argc, argv);
+
+ /* setup signal behavior - SIGINT */
+ sigemptyset( &act.sa_mask );
+ act.sa_flags = 0;
+ act.sa_handler = catch_sigint;
+ if( sigaction( SIGINT, &act, NULL )<0 )
+ {
+ perror("signal");
+ exit(EXIT_FAILURE);
+ }
+ /* setup signal behavior - SIGWINCH */
+ sigemptyset( &act.sa_mask );
+ act.sa_flags = 0;
+ act.sa_handler = screen_resized;
+ if( sigaction( SIGWINCH, &act, NULL )<0 )
+ {
+ perror("sigaction()");
+ exit(EXIT_FAILURE);
+ }
+ /* setup signal behavior - SIGTERM */
+ sigemptyset( &act.sa_mask );
+ act.sa_flags = 0;
+ act.sa_handler = catch_sigint;
+ if( sigaction( SIGTERM, &act, NULL )<0 )
+ {
+ perror("sigaction()");
+ exit(EXIT_FAILURE);
+ }
+
+ /* set xterm title */
+ printf("%c]0;%s%c", '\033', PACKAGE " v" VERSION, '\007');
+
+ /* install exit function */
+ atexit(exit_and_cleanup);
+
+ /* connect to our music player daemon */
+ mpc = mpc_connect(options->host, options->port);
+ if( mpc_error(mpc) )
+ exit(EXIT_FAILURE);
+
+ screen_init();
+#if 0
+ mpc_update(mpc);
+ mpc_update_filelist(mpc);
+ screen_paint(mpc);
+ // sleep(1);
+#endif
+
+ counter=0;
+ while( !mpc_error(mpc) )
+ {
+ command_t cmd;
+
+ if( !counter )
+ {
+ mpc_update(mpc);
+ mpd_finishCommand(mpc->connection);
+ counter=10;
+ }
+ else
+ counter--;
+
+ screen_update(mpc);
+
+ if( (cmd=get_keyboard_command()) != CMD_NONE )
+ {
+ screen_cmd(mpc, cmd);
+ counter=0;
+ }
+ }
+
+ exit(EXIT_FAILURE);
+}