- interactive = args_info.inputs_num == 0? 1 : 0;
- if (interactive) {
- PARA_NOTICE_LOG("%s", "no command, entering interactive mode\n");
- signal(SIGINT, sigint_handler);
- } else {
- /* not interactive, concat args */
- for (i = 0; i < args_info.inputs_num; i++)
- append_str(&command, args_info.inputs[i]);
- }
-interactive_loop:
- crypt_function_recv = NULL;
- crypt_function_send = NULL;
- if (interactive) {
- int i = 0;
- char *p;
-
- rl_save_prompt();
- rl_message("\n");
- rl_kill_full_line(0, 0);
- rl_free_line_state();
- /* read a line via readline */
- line = rl_gets();
- if (!line)
- return 0;
- if (!line[0])
- goto interactive_loop;
- p = line;
- while (sscanf(p, "%200s%n", buf, &i) == 1) {
- append_str(&command, buf);
- p += i;
- }
- }
- /* get the host info */
- PARA_NOTICE_LOG("getting host info of %s\n",
- args_info.hostname_arg);
- if (!(he = get_host_info(args_info.hostname_arg)))
- exit(EXIT_FAILURE);
- /* get new socket */
- if ((sockfd = get_socket()) < 0)
- exit(EXIT_FAILURE);
- /* init their_addr */
- init_sockaddr(&their_addr, args_info.server_port_arg, he);
- /* Connect */
- PARA_NOTICE_LOG("connecting to %s...\n",
- args_info.hostname_arg);
- if (para_connect(sockfd, &their_addr) < 0)
- exit(EXIT_FAILURE);
- /* Receive Welcome message */
- if ((numbytes = recv_buffer(sockfd, buf, sizeof(buf))) < 0)
- exit(EXIT_FAILURE);