static int linphonec_main_loop (LinphoneCore * opm) { char *input; print_prompt(opm); while (linphonec_running && (input=linphonec_readline(prompt))) { char *iptr; /* input and input pointer */ size_t input_len; /* Strip blanks */ iptr=lpc_strip_blanks(input); input_len = strlen(iptr); /* * Do nothing but release memory * if only blanks are read */ if ( ! input_len ) { free(input); continue; } #ifdef HAVE_READLINE /* * Only add to history if not already * last item in it, and only if the command * doesn't start with a space (to allow for * hiding passwords) */ if ( iptr == input && strcmp(last_in_history, iptr) ) { strncpy(last_in_history,iptr,sizeof(last_in_history)); last_in_history[sizeof(last_in_history)-1]='\0'; add_history(iptr); } #endif linphonec_parse_command_line(linphonec, iptr); linphonec_command_finished(); free(input); } return 0; }
/* * * Called every second from main read loop. * * Will use the following globals: * * - LinphoneCore linphonec * - LPC_AUTH_STACK auth_stack; * */ static int linphonec_idle_call () { LinphoneCore *opm=linphonec; /* Uncomment the following to verify being called */ /* printf(".\n"); */ linphone_core_iterate(opm); if (answer_call){ fprintf (stdout, "-------auto answering to call-------\n" ); linphone_core_accept_call(opm,NULL); answer_call=FALSE; } /* auto call handling */ if (sip_addr_to_call != NULL ) { char buf[512]; snprintf (buf, sizeof(buf),"call %s", sip_addr_to_call); sip_addr_to_call=NULL; linphonec_parse_command_line(linphonec, buf); } if ( auth_stack.nitems ) { /* * Inhibit command completion * during password prompts */ #ifdef HAVE_READLINE rl_inhibit_completion=1; #endif linphonec_prompt_for_auth_final(opm); #ifdef HAVE_READLINE rl_inhibit_completion=0; #endif } #ifdef VIDEO_ENABLED lpc_apply_video_params(); #endif return 0; }
/* * Close linphonec, cleanly terminating * any pending call */ void linphonec_finish(int exit_status) { printf("Terminating...\n"); /* Terminate any pending call */ linphonec_parse_command_line(&linphonec, "terminate"); linphonec_finish_readline(); linphone_core_uninit (&linphonec); if (mylogfile != NULL && mylogfile != stdout) { fclose (mylogfile); } exit(exit_status); }