int main(int argc, char *argv[]){ if(argc == 5){ c_getopt(argc,argv); }else if(argc == 3){ c_cat(argc,argv); } return 0; }
int main(int argc, char **argv) { int errorlevel = 0; process_type = CLIENT; set_getopt_env(); /* This is needed in a gnu system, so getopt works well */ default_command_line(); parse_opts(argc, argv); unset_getopt_env(); /* This will be inherited by the server, if it's run */ ignore_sigpipe(); if (command_line.need_server) { ensure_server_up(); c_check_version(); } switch(command_line.request) { case c_SHOW_VERSION: print_version(argv[0]); break; case c_SHOW_HELP: print_help(argv[0]); break; case c_QUEUE: if (command_line.command.num <= 0) error("Tried to queue a void command. parameters: %i", command_line.command.num); if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_new_job(); command_line.jobid = c_wait_newjob_ok(); if (command_line.store_output) { printf("%i\n", command_line.jobid); fflush(stdout); } if (command_line.should_go_background) { go_background(); c_wait_server_commands(); } else { errorlevel = c_wait_server_commands(); } break; case c_LIST: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_list_jobs(); c_wait_server_lines(); break; case c_KILL_SERVER: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_shutdown_server(); break; case c_CLEAR_FINISHED: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_clear_finished(); break; case c_TAIL: if (!command_line.need_server) error("The command %i needs the server", command_line.request); errorlevel = c_tail(); /* This will not return! */ break; case c_CAT: if (!command_line.need_server) error("The command %i needs the server", command_line.request); errorlevel = c_cat(); /* This will not return! */ break; case c_SHOW_OUTPUT_FILE: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_show_output_file(); break; case c_SHOW_PID: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_show_pid(); break; case c_KILL_JOB: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_kill_job(); break; case c_INFO: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_show_info(); break; case c_REMOVEJOB: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_remove_job(); break; case c_WAITJOB: if (!command_line.need_server) error("The command %i needs the server", command_line.request); errorlevel = c_wait_job(); break; case c_URGENT: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_move_urgent(); break; case c_SET_MAX_SLOTS: c_send_max_slots(command_line.max_slots); break; case c_GET_MAX_SLOTS: c_get_max_slots(); break; case c_SWAP_JOBS: if (!command_line.need_server) error("The command %i needs the server", command_line.request); c_swap_jobs(); break; case c_GET_STATE: if (!command_line.need_server) error("The command %i needs the server", command_line.request); /* This will also print the state into stdout */ c_get_state(); break; } if (command_line.need_server) { close(server_socket); } return errorlevel; }