diff -Nur ../ant-phone-0.0.6-old/ant-phone.c ./ant-phone.c --- ../ant-phone-0.0.6-old/ant-phone.c Sun Nov 17 18:45:23 2002 +++ ./ant-phone.c Fri Nov 22 15:37:49 2002 @@ -84,6 +84,7 @@ {"help", no_argument, 0, 'h'}, {"usage", no_argument, 0, 'h'}, {"version", no_argument, 0, 'v'}, + {"noaudio", no_argument, 0, 'a'}, {"debug", optional_argument, 0, 'd'}, {"soundin", required_argument, 0, 'i'}, {"soundout", required_argument, 0, 'o'}, @@ -91,9 +92,10 @@ {"msns", required_argument, 0, 'l'}, {0, 0, 0, 0} }; - char *short_options = "hvd::i:o:m:l:"; + char *short_options = "hvad::i:o:m:l:"; int option_index = 0; int c; + int noAudio = 0; /* temporary default values = "", will be changed by command line options and options in options file */ @@ -152,6 +154,7 @@ default: /dev/dsp\n\ -o, --soundout[=device] OSS compatible device for output (playback),\n\ default: /dev/dsp\n\ + -a, --noaudio don't use any audio device, only show incoming/outgoing numbers\n\ -m, --msn identifying MSN (for outgoing calls), 0 for master\n\ MSN of this termination/port\n\ default: 0\n\ @@ -171,6 +174,9 @@ debug = 1; } break; + case 'a': /* no audio */ + noAudio = 1; + break; case 'i': /* sound input device */ audio_device_name_in = optarg; break; @@ -190,7 +196,7 @@ /* no further arguments expected, so not handled */ if (session_init(&session, audio_device_name_in, audio_device_name_out, - msn, msns)) { + msn, msns, noAudio)) { fprintf(stderr, "Error at session init.\n"); exit(1); } else { diff -Nur ../ant-phone-0.0.6-old/session.c ./session.c --- ../ant-phone-0.0.6-old/session.c Sun Nov 17 19:08:25 2002 +++ ./session.c Fri Nov 22 15:40:37 2002 @@ -80,7 +80,7 @@ int session_audio_close(struct session_t *session) { if (debug) printf("session_audio_close: Closing audio device(s).\n"); - if (close_audio_devices(session->audio_fd_in, session->audio_fd_out)) { + if (!session->noAudio && close_audio_devices(session->audio_fd_in, session->audio_fd_out)) { return -1; } return 0; @@ -98,6 +98,8 @@ */ int session_audio_init(struct session_t *session) { /* message: open audio device(s) */ + if (session->noAudio) return 0; + if (debug) { if (strcmp(session->audio_device_name_in, session->audio_device_name_out)) { @@ -210,6 +212,8 @@ */ int session_audio_deinit(struct session_t *session) { /* free allocated buffers */ + if (session->noAudio) return 0; + session_audio_free(session); /* close audio device(s) */ @@ -267,7 +271,7 @@ int session_init(struct session_t *session, char *audio_device_name_in, char *audio_device_name_out, - char *msn, char *msns) { + char *msn, char *msns, int noAudio) { /* * first: set all defaults possibly overridden by options file @@ -286,8 +290,10 @@ session->option_show_controlpad = 1; session->option_muted = 0; + session->noAudio = noAudio; session->audio_device_name_in = strdup(audio_device_name_in); session->audio_device_name_out = strdup(audio_device_name_out); + session->msn = strdup(msn); session->msns = strdup(msns); @@ -319,18 +325,21 @@ session->touchtone_index = 0; /* setup audio and isdn */ - if (session_audio_init(session) < 0) return -1; + if (!session->noAudio){ + if (session_audio_init(session) < 0) return -1; + } + if (session_isdn_init(session) < 0) return -1; session->state = STATE_SERVICE; /* initial state */ session->effect = EFFECT_NONE; - + return 0; } /* - * helper function to free single element data from g_list + * helper function to free single element data from g_list * (used by session_deinit) */ void free_g_list_element(gpointer data, gpointer user_data _U_) { @@ -354,11 +363,15 @@ /* close devices and clean up (buffers) */ if (session_isdn_deinit(session) < 0) return -1; - if (session_audio_deinit(session) < 0) return -1; + if (!session->noAudio){ + if (session_audio_deinit(session) < 0) return -1; + } /* clean up pre-set options */ - free(session->audio_device_name_in); - free(session->audio_device_name_out); + if (!session->noAudio){ + free(session->audio_device_name_in); + free(session->audio_device_name_out); + } free(session->msn); free(session->msns); @@ -369,7 +382,7 @@ * set up handlers for audio/ISDN input */ void session_io_handlers_start(struct session_t *session) { - if (!(session->option_release_devices && + if (!session->noAudio && !(session->option_release_devices && (session->state == STATE_READY || session->state == STATE_RINGING_QUIET))) { session->gdk_audio_input_tag = gdk_input_add(session->audio_fd_in, @@ -387,7 +400,7 @@ * remove handlers for audio/ISDN input */ void session_io_handlers_stop(struct session_t *session) { - if (!(session->option_release_devices && + if (!session->noAudio && !(session->option_release_devices && (session->state == STATE_READY || session->state == STATE_RINGING_QUIET))) { gdk_input_remove(session->gdk_audio_input_tag); @@ -409,6 +422,8 @@ int session_reset_audio(struct session_t *session) { int result = 0; + if (session->noAudio) return result; + if (!(session->option_release_devices && (session->state == STATE_READY || session->state == STATE_RINGING_QUIET))) { @@ -603,10 +618,13 @@ * Start an effect (effect_t) playing on the sound device */ void session_effect_start(struct session_t *session, enum effect_t kind) { - session->effect_tag = gdk_input_add(session->audio_fd_out, + if (!session->noAudio) + { + session->effect_tag = gdk_input_add(session->audio_fd_out, GDK_INPUT_WRITE, session_effect_callback, (gpointer) session); + } session->effect = kind; session->effect_pos = 0; diff -Nur ../ant-phone-0.0.6-old/session.h ./session.h --- ../ant-phone-0.0.6-old/session.h Sat Nov 16 10:09:48 2002 +++ ./session.h Fri Nov 22 15:38:54 2002 @@ -58,6 +58,7 @@ */ struct session_t { /* audio device data */ + int noAudio; char *audio_device_name_in; /* allocated memory! */ char *audio_device_name_out; /* allocated memory! */ int audio_fd_in; /* audio device file descriptors */ @@ -186,7 +187,7 @@ int session_init(struct session_t *session, char *audio_device_name_in, char *audio_device_name_out, - char *msn, char *msns); + char *msn, char *msns, int noAudio); void session_audio_free(struct session_t *session); int session_deinit(struct session_t *session);