|
|
@@ -21,7 +21,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
|
|
|
#include <iostream> |
|
|
|
#include <assert.h> |
|
|
|
#include <process.h> |
|
|
|
#include <getopt.h>
|
|
|
|
#include <getopt.h> |
|
|
|
#include <signal.h> |
|
|
|
|
|
|
|
#include "JackServer.h" |
|
|
@@ -47,8 +47,8 @@ static int sync = 0; |
|
|
|
static int xverbose = 0; |
|
|
|
|
|
|
|
#define DEFAULT_TMP_DIR "/tmp" |
|
|
|
char *jack_tmpdir = DEFAULT_TMP_DIR;
|
|
|
|
|
|
|
|
char *jack_tmpdir = DEFAULT_TMP_DIR; |
|
|
|
|
|
|
|
HANDLE waitEvent; |
|
|
|
|
|
|
|
void jack_print_driver_options (jack_driver_desc_t * desc, FILE *file); |
|
|
@@ -111,13 +111,13 @@ static int JackDelete() |
|
|
|
delete fServer; |
|
|
|
printf("Jackdmp: delete server\n"); |
|
|
|
return 0; |
|
|
|
}
|
|
|
|
|
|
|
|
static void intrpt(int signum)
|
|
|
|
{
|
|
|
|
printf("jack main caught signal %d\n", signum);
|
|
|
|
(void) signal(SIGINT, SIG_DFL);
|
|
|
|
SetEvent(waitEvent);
|
|
|
|
} |
|
|
|
|
|
|
|
static void intrpt(int signum) |
|
|
|
{ |
|
|
|
printf("jack main caught signal %d\n", signum); |
|
|
|
(void) signal(SIGINT, SIG_DFL); |
|
|
|
SetEvent(waitEvent); |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
@@ -204,48 +204,48 @@ static void jack_cleanup_files (const char *server_name) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
BOOL CtrlHandler( DWORD fdwCtrlType )
|
|
|
|
{
|
|
|
|
switch( fdwCtrlType )
|
|
|
|
{
|
|
|
|
// Handle the CTRL-C signal.
|
|
|
|
case CTRL_C_EVENT:
|
|
|
|
printf( "Ctrl-C event\n\n" );
|
|
|
|
Beep( 750, 300 );
|
|
|
|
SetEvent(waitEvent);
|
|
|
|
return( TRUE );
|
|
|
|
|
|
|
|
// CTRL-CLOSE: confirm that the user wants to exit.
|
|
|
|
case CTRL_CLOSE_EVENT:
|
|
|
|
Beep( 600, 200 );
|
|
|
|
printf( "Ctrl-Close event\n\n" );
|
|
|
|
SetEvent(waitEvent);
|
|
|
|
return( TRUE );
|
|
|
|
|
|
|
|
// Pass other signals to the next handler.
|
|
|
|
case CTRL_BREAK_EVENT:
|
|
|
|
Beep( 900, 200 );
|
|
|
|
printf( "Ctrl-Break event\n\n" );
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
case CTRL_LOGOFF_EVENT:
|
|
|
|
Beep( 1000, 200 );
|
|
|
|
printf( "Ctrl-Logoff event\n\n" );
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
case CTRL_SHUTDOWN_EVENT:
|
|
|
|
Beep( 750, 500 );
|
|
|
|
printf( "Ctrl-Shutdown event\n\n" );
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
/* |
|
|
|
BOOL CtrlHandler( DWORD fdwCtrlType ) |
|
|
|
{ |
|
|
|
switch( fdwCtrlType ) |
|
|
|
{ |
|
|
|
// Handle the CTRL-C signal. |
|
|
|
case CTRL_C_EVENT: |
|
|
|
printf( "Ctrl-C event\n\n" ); |
|
|
|
Beep( 750, 300 ); |
|
|
|
SetEvent(waitEvent); |
|
|
|
return( TRUE ); |
|
|
|
|
|
|
|
// CTRL-CLOSE: confirm that the user wants to exit. |
|
|
|
case CTRL_CLOSE_EVENT: |
|
|
|
Beep( 600, 200 ); |
|
|
|
printf( "Ctrl-Close event\n\n" ); |
|
|
|
SetEvent(waitEvent); |
|
|
|
return( TRUE ); |
|
|
|
|
|
|
|
// Pass other signals to the next handler. |
|
|
|
case CTRL_BREAK_EVENT: |
|
|
|
Beep( 900, 200 ); |
|
|
|
printf( "Ctrl-Break event\n\n" ); |
|
|
|
return FALSE; |
|
|
|
|
|
|
|
case CTRL_LOGOFF_EVENT: |
|
|
|
Beep( 1000, 200 ); |
|
|
|
printf( "Ctrl-Logoff event\n\n" ); |
|
|
|
return FALSE; |
|
|
|
|
|
|
|
case CTRL_SHUTDOWN_EVENT: |
|
|
|
Beep( 750, 500 ); |
|
|
|
printf( "Ctrl-Shutdown event\n\n" ); |
|
|
|
return FALSE; |
|
|
|
|
|
|
|
default: |
|
|
|
return FALSE; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
int main(int argc, char* argv[]) |
|
|
@@ -282,12 +282,12 @@ int main(int argc, char* argv[]) |
|
|
|
int sync = 0; |
|
|
|
int i; |
|
|
|
int rc; |
|
|
|
char c;
|
|
|
|
|
|
|
|
// Creates wait event
|
|
|
|
if ((waitEvent = CreateEvent(NULL, FALSE, FALSE, NULL)) == NULL) {
|
|
|
|
printf("CreateEvent fails err = %ld\n", GetLastError());
|
|
|
|
return 0;
|
|
|
|
char c; |
|
|
|
|
|
|
|
// Creates wait event |
|
|
|
if ((waitEvent = CreateEvent(NULL, FALSE, FALSE, NULL)) == NULL) { |
|
|
|
printf("CreateEvent fails err = %ld\n", GetLastError()); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
opterr = 0; |
|
|
@@ -366,21 +366,21 @@ int main(int argc, char* argv[]) |
|
|
|
|
|
|
|
if (!seen_driver) { |
|
|
|
usage (stderr); |
|
|
|
//exit (1);
|
|
|
|
//exit (1); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
drivers = jack_drivers_load (drivers); |
|
|
|
if (!drivers) { |
|
|
|
fprintf (stderr, "jackdmp: no drivers found; exiting\n"); |
|
|
|
//exit (1);
|
|
|
|
//exit (1); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
driver_desc = jack_find_driver_descriptor (drivers, driver_name); |
|
|
|
if (!driver_desc) { |
|
|
|
fprintf (stderr, "jackdmp: unknown driver '%s'\n", driver_name); |
|
|
|
//exit (1);
|
|
|
|
//exit (1); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
@@ -405,7 +405,7 @@ int main(int argc, char* argv[]) |
|
|
|
|
|
|
|
if (jack_parse_driver_params (driver_desc, driver_nargs, |
|
|
|
driver_args, &driver_params)) { |
|
|
|
// exit (0);
|
|
|
|
// exit (0); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
@@ -418,15 +418,15 @@ int main(int argc, char* argv[]) |
|
|
|
switch (rc) { |
|
|
|
case EEXIST: |
|
|
|
fprintf (stderr, "`%s' server already active\n", server_name); |
|
|
|
//exit (1);
|
|
|
|
//exit (1); |
|
|
|
return 0; |
|
|
|
case ENOSPC: |
|
|
|
fprintf (stderr, "too many servers already active\n"); |
|
|
|
//exit (2);
|
|
|
|
//exit (2); |
|
|
|
return 0; |
|
|
|
case ENOMEM: |
|
|
|
fprintf (stderr, "no access to shm registry\n"); |
|
|
|
//exit (3);
|
|
|
|
//exit (3); |
|
|
|
return 0; |
|
|
|
default: |
|
|
|
if (xverbose) |
|
|
@@ -448,38 +448,38 @@ int main(int argc, char* argv[]) |
|
|
|
printf("Cannot start server... exit\n"); |
|
|
|
JackDelete(); |
|
|
|
return 0; |
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
if( SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ) )
|
|
|
|
{
|
|
|
|
printf( "\nThe Control Handler is installed.\n" );
|
|
|
|
} else {
|
|
|
|
printf( "\nERROR: Could not set control handler");
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
(void) signal(SIGINT, intrpt);
|
|
|
|
(void) signal(SIGABRT, intrpt);
|
|
|
|
(void) signal(SIGTERM, intrpt);
|
|
|
|
|
|
|
|
if ((res = WaitForSingleObject(waitEvent, INFINITE)) != WAIT_OBJECT_0) {
|
|
|
|
printf("WaitForSingleObject fails err = %ld\n", GetLastError());
|
|
|
|
}
|
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
if( SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ) ) |
|
|
|
{ |
|
|
|
printf( "\nThe Control Handler is installed.\n" ); |
|
|
|
} else { |
|
|
|
printf( "\nERROR: Could not set control handler"); |
|
|
|
} |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
(void) signal(SIGINT, intrpt); |
|
|
|
(void) signal(SIGABRT, intrpt); |
|
|
|
(void) signal(SIGTERM, intrpt); |
|
|
|
|
|
|
|
if ((res = WaitForSingleObject(waitEvent, INFINITE)) != WAIT_OBJECT_0) { |
|
|
|
printf("WaitForSingleObject fails err = %ld\n", GetLastError()); |
|
|
|
} |
|
|
|
|
|
|
|
/* |
|
|
|
printf("Type 'q' to quit\n"); |
|
|
|
while ((c = getchar()) != 'q') {}
|
|
|
|
*/
|
|
|
|
while ((c = getchar()) != 'q') {} |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
JackStop(); |
|
|
|
|
|
|
|
jack_cleanup_shm(); |
|
|
|
// jack_cleanup_files(server_name); |
|
|
|
jack_unregister_server(server_name);
|
|
|
|
|
|
|
|
jack_unregister_server(server_name); |
|
|
|
|
|
|
|
CloseHandle(waitEvent); |
|
|
|
return 1; |
|
|
|
} |
|
|
|