From 619beb63a1748cd9ece96260bfb2e9484e52cb67 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sat, 9 May 2009 16:07:05 +0200 Subject: Cleanup Remove unused files, move mpiosh to src, ... --- src/mpiosh.c | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 src/mpiosh.c (limited to 'src/mpiosh.c') diff --git a/src/mpiosh.c b/src/mpiosh.c new file mode 100644 index 0000000..e74278d --- /dev/null +++ b/src/mpiosh.c @@ -0,0 +1,163 @@ +/* -*- linux-c -*- */ + +/* + * + * $Id: mpiosh.c,v 1.27 2003/08/25 19:38:57 crunchy Exp $ + * + * Author: Andreas Büsching + * + * mpiosh - user interface of the mpio library, providing access to + * some model of the MPIO mp3 players. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * */ + +#include +#include +#include +#include + +#include "libmpio/debug.h" +#include "libmpio/mpio.h" + +#include "callback.h" +#include "command.h" +#include "cfg.h" +#include "readline.h" +#include "mpiosh.h" + +/* mpiosh core functions */ +void +mpiosh_init(void) +{ + /* set state */ + mpiosh.dev = NULL; + mpiosh.config = NULL; + mpiosh.prompt = NULL; + + /* read configuration */ + mpiosh.config = mpiosh_config_new(); + if (mpiosh.config) + mpiosh_config_read(mpiosh.config); + + mpiosh.card = mpiosh.config->default_mem; + if (mpiosh.config->default_mem == MPIO_EXTERNAL_MEM) + mpiosh.prompt = mpiosh.config->prompt_ext; + else + mpiosh.prompt = mpiosh.config->prompt_int; + + /* inital mpio library */ + mpiosh.dev = mpio_init(mpiosh_callback_init); + + printf("\n"); + + if ((mpiosh.dev) && (mpiosh.config->charset)) + mpio_charset_set(mpiosh.dev, mpiosh.config->charset); +} + +void +mpiosh_signal_handler(int signal) +{ + mpiosh_cancel = 1; + mpiosh_cancel_ack = 0; +} + +int +main(int argc, char *argv[]) { + char *line; + char **cmds, **walk; + struct mpiosh_cmd_t *cmd; + struct sigaction sigc; + int interactive = 1; + + UNUSED(argc); + UNUSED(argv); + + setenv("mpio_debug", "", 0); + setenv("mpio_color", "", 0); + + /* no unwanted interruption anymore */ + sigc.sa_handler = mpiosh_signal_handler; + sigc.sa_flags = SA_NOMASK; + + sigaction(SIGINT, &sigc, NULL); + + /* init readline and history */ + mpiosh_readline_init(); + debug_init(); + mpiosh_init(); + + if (!isatty(fileno(stdin))) { + interactive = 0; + mpiosh.prompt = NULL; + mpiosh_readline_pipe(); + } + + if( !isatty(fileno(stdout)) ) { + setvbuf( stdout, NULL, _IOLBF, 256 ); + } + + if (!mpiosh.dev && interactive) { + printf("ERROR: %s\n", mpio_strerror(mpio_errno())); + printf("could not find MPIO player.\n"); + } + + while ((line = readline(mpiosh.prompt))) { + if ((*line == '\0') || mpiosh_cancel) { + rl_clear_pending_input (); + mpiosh_cancel = 0; + mpiosh_cancel_ack = 0; + continue; + } + + cmds = mpiosh_command_split_line(line); + + if (cmds[0][0] == '\0') { + free(cmds); + continue; + } + + walk = cmds; + while (*walk) { + cmd = mpiosh_command_find(*walk); + + if (cmd) { + char ** help, **args = mpiosh_command_get_args(*walk); + help = args; + + if (!interactive) debug("running... '%s'\n", *walk); + cmd->cmd_func(args); + mpiosh_command_free_args(args); + } else + fprintf(stderr, "unknown command: '%s'\n", *walk); + +/* if ((idx = history_search(line, -1)) != -1) */ +/* history_set_pos(idx); */ +/* else */ + add_history(line); + free(*walk); + walk++; + } + free(cmds); + + /* reset abort state */ + mpiosh_cancel = 0; + } + + mpiosh_cmd_quit(NULL); + + return 0; +} -- cgit v1.2.3