int check_power(int sm_sock_fd, int dev_path) { struct bjst_rback rback; rback.dev_handle = dev_path; rback.st_buf = NULL; /* no request status body */ if(print_system == PRNSYS_LPR) rback.rback_handle = sm_sock_fd; else rback.rback_handle = STAT_PATH; /* stderr */ status_to_viewer(&rback); return rback.fault; }
static int do_prn_com(int sm_sock_fd, lmsm_socket sm_data, int first_start) { int error; Prcom_st ptr; int count; struct bjst_rback rback; ptr = &(sm_data.prn_data.com); #ifdef DEBUG write_log("SM message LM_PRN_COM\n"); write_log(ptr->com_buffer+9); write_log("\n"); #endif rback.dev_handle = PRNT_PATH; rback.rback_handle = sm_sock_fd; rback.st_buf = NULL; /* no request status body */ while(1){ error = write_printer_command(PRNT_PATH, ptr->com_buffer, ptr->com_size); count = status_to_viewer(&rback); if(error){ if(check_signal_arrive() == 1) return 1; /* SIGINT/SIGTERM detect(abort) */ #ifdef DEBUG write_log("PRN_COM error(retry)\n"); #endif sleep(2); /* retry */ continue; } /* write command until printer respond */ if(count) break; else sleep(1); } if(first_start) kill(data_pid, SIGUSR2); /* message to output process(restart) */ return 0; }