| @@ -2,7 +2,7 @@ | |||
| * transport.c -- JACK transport master example client. | |||
| * | |||
| * Copyright (C) 2003 Jack O'Quin. | |||
| * | |||
| * | |||
| * 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 | |||
| @@ -24,14 +24,14 @@ | |||
| #include <signal.h> | |||
| #include <stdlib.h> | |||
| #include <string.h> | |||
| #ifdef HAVE_READLINE | |||
| #if HAVE_READLINE | |||
| #include <readline/readline.h> | |||
| #include <readline/history.h> | |||
| #endif | |||
| #include <jack/jack.h> | |||
| #include <jack/transport.h> | |||
| #ifndef HAVE_READLINE | |||
| #if !HAVE_READLINE | |||
| #define whitespace(c) (((c) == ' ') || ((c) == '\t')) | |||
| #endif | |||
| @@ -53,7 +53,7 @@ volatile int time_reset = 1; /* true when time values change */ | |||
| * | |||
| * Runs in the process thread. Realtime, must not wait. | |||
| */ | |||
| static void timebase(jack_transport_state_t state, jack_nframes_t nframes, | |||
| static void timebase(jack_transport_state_t state, jack_nframes_t nframes, | |||
| jack_position_t *pos, int new_pos, void *arg) | |||
| { | |||
| double min; /* minutes since frame 0 */ | |||
| @@ -238,7 +238,7 @@ command_t commands[] = { | |||
| {"?", com_help, "Synonym for `help'" }, | |||
| {(char *)NULL, (cmd_function_t *)NULL, (char *)NULL } | |||
| }; | |||
| static command_t *find_command(char *name) | |||
| { | |||
| register int i; | |||
| @@ -258,7 +258,7 @@ static command_t *find_command(char *name) | |||
| else | |||
| return (&commands[i]); | |||
| } | |||
| return ((command_t *)NULL); | |||
| } | |||
| @@ -302,33 +302,33 @@ static void execute_command(char *line) | |||
| register int i; | |||
| command_t *command; | |||
| char *word; | |||
| /* Isolate the command word. */ | |||
| i = 0; | |||
| while (line[i] && whitespace(line[i])) | |||
| i++; | |||
| word = line + i; | |||
| while (line[i] && !whitespace(line[i])) | |||
| i++; | |||
| if (line[i]) | |||
| line[i++] = '\0'; | |||
| command = find_command(word); | |||
| if (!command) { | |||
| fprintf(stderr, "%s: No such command. There is `help\'.\n", | |||
| word); | |||
| return; | |||
| } | |||
| /* Get argument to command, if any. */ | |||
| while (whitespace(line[i])) | |||
| i++; | |||
| word = line + i; | |||
| /* invoke the command function. */ | |||
| (*command->func)(word); | |||
| } | |||
| @@ -345,28 +345,28 @@ static char *stripwhite(char *string) | |||
| if (*s == '\0') | |||
| return s; | |||
| t = s + strlen (s) - 1; | |||
| while (t > s && whitespace(*t)) | |||
| t--; | |||
| *++t = '\0'; | |||
| return s; | |||
| } | |||
| static char *dupstr(char *s) | |||
| { | |||
| char *r = malloc(strlen(s) + 1); | |||
| strcpy(r, s); | |||
| return r; | |||
| } | |||
| /* Readline generator function for command completion. */ | |||
| static char *command_generator (const char *text, int state) | |||
| { | |||
| static int list_index, len; | |||
| char *name; | |||
| /* If this is a new word to complete, initialize now. This | |||
| includes saving the length of TEXT for efficiency, and | |||
| initializing the index variable to 0. */ | |||
| @@ -374,22 +374,22 @@ static char *command_generator (const char *text, int state) | |||
| list_index = 0; | |||
| len = strlen (text); | |||
| } | |||
| /* Return the next name which partially matches from the | |||
| command list. */ | |||
| while ((name = commands[list_index].name)) { | |||
| list_index++; | |||
| if (strncmp(name, text, len) == 0) | |||
| return dupstr(name); | |||
| } | |||
| return (char *) NULL; /* No names matched. */ | |||
| } | |||
| static void command_loop() | |||
| { | |||
| #ifdef HAVE_READLINE | |||
| #if HAVE_READLINE | |||
| char *line, *cmd; | |||
| char prompt[32]; | |||
| @@ -397,7 +397,7 @@ static void command_loop() | |||
| /* Allow conditional parsing of the ~/.inputrc file. */ | |||
| rl_readline_name = package; | |||
| /* Define a custom completion function. */ | |||
| rl_completion_entry_function = command_generator; | |||
| #else | |||
| @@ -408,9 +408,9 @@ static void command_loop() | |||
| /* Read and execute commands until the user quits. */ | |||
| while (!done) { | |||
| #ifdef HAVE_READLINE | |||
| #if HAVE_READLINE | |||
| line = readline(prompt); | |||
| if (line == NULL) { /* EOF? */ | |||
| printf("\n"); /* close out prompt */ | |||
| done = 1; | |||
| @@ -421,20 +421,20 @@ static void command_loop() | |||
| fgets(line, sizeof(line), stdin); | |||
| line[strlen(line)-1] = '\0'; | |||
| #endif | |||
| /* Remove leading and trailing whitespace from the line. */ | |||
| cmd = stripwhite(line); | |||
| /* If anything left, add to history and execute it. */ | |||
| if (*cmd) | |||
| { | |||
| #ifdef HAVE_READLINE | |||
| #if HAVE_READLINE | |||
| add_history(cmd); | |||
| #endif | |||
| execute_command(cmd); | |||
| } | |||
| #ifdef HAVE_READLINE | |||
| #if HAVE_READLINE | |||
| free(line); /* realine() called malloc() */ | |||
| #endif | |||
| } | |||
| @@ -459,7 +459,7 @@ int main(int argc, char *argv[]) | |||
| return 1; | |||
| } | |||
| #ifndef WIN32 | |||
| #if !WIN32 | |||
| signal(SIGQUIT, signal_handler); | |||
| signal(SIGHUP, signal_handler); | |||
| #endif | |||