Example #1
0
void simple_shell()
{ int n_args, i;
  //memory space for user command is always the same, freed on quit
  char * * sarray = malloc(max_arg_c * sizeof(*sarray));
  for (i = 0; i < max_arg_c; i += 1)
    sarray[i] = malloc(max_arg_length + 1);
  print_commands();
  while (1)
  { printf("\n---> ");
    for (i = 0; i < max_arg_c; i += 1)
      *sarray[i] = (char *)NULL;
    n_args = get_command_line(sarray);
    if (quit_command(sarray[0]))
    { printf("exiting shell \n");
      for (i = 0; i < max_arg_c; i += 1)
        free(sarray[i]);
      free(sarray);
      break; }
    else if (!strcmp(sarray[0], "help"))
      print_commands();
    else if (!strcmp(sarray[0], "echo"))
    { for (i = 1; i < n_args && sarray[i] != NULL; i += 1)
        printf("%s ", sarray[i]); }
    else if (!strcmp(sarray[0], "run"))
      run_program(sarray, n_args);
    else
      printf("command not found. "); } }
/**
 * Main function.
 *
 * @return error code (0 - no error)
 */
int
main (int argc, /**< number of arguments */
      char **argv) /**< argument list */
{
  cli_state_t cli_state = cli_init (main_opts, argc - 1, argv + 1);

  for (int id = cli_consume_option (&cli_state); id != CLI_OPT_END; id = cli_consume_option (&cli_state))
  {
    switch (id)
    {
      case OPT_MERGE_HELP:
      {
        /* Help is always printed if no command is provided. */
        break;
      }
      case CLI_OPT_DEFAULT:
      {
        const char *command_p = cli_consume_string (&cli_state);

        if (cli_state.error != NULL)
        {
          break;
        }

        if (!strcmp ("merge", command_p))
        {
          return process_merge (&cli_state, argc, argv[0]);
        }
        else if (!strcmp ("generate", command_p))
        {
          return process_generate (&cli_state, argc, argv[0]);
        }

        jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: unknown command: %s\n\n", command_p);
        print_commands (argv[0]);

        return JERRY_STANDALONE_EXIT_CODE_FAIL;
      }
      default:
      {
        cli_state.error = "Internal error";
        break;
      }
    }
  }

  if (check_cli_error (&cli_state))
  {
    return JERRY_STANDALONE_EXIT_CODE_FAIL;
  }

  print_commands (argv[0]);
  return JERRY_STANDALONE_EXIT_CODE_OK;
} /* main */
Example #3
0
void Parser_qhelp(int argc, char *argv[]) {

        printf("Available commands are:\n");

        print_commands(NULL, top_level);
        printf("For more help type: help command-name\n");
}
Example #4
0
int main(int argc, const char **argv)
{
    if (argc < 2) {
        print_commands();
        return -1;
    }

    const char *cmd = argv[1];
    int cmd_index = find_command(cmd);

    if (cmd_index == -1) {
        printf("Command %s not found\n", cmd);
        return -1;
    }

    argc -= 2;
    ++argv;
    ++argv;

    if (argc != s_commands[cmd_index].args_count) {
        printf("Invalid number of arguments supplied (%d instead of %d)\n",
               argc, s_commands[cmd_index].args_count);
        return -1;
    }

    s_commands[cmd_index].handler(argv);

    return 0;
}
Example #5
0
void Summary::print()
{
    print_versions();
    print_pools();
    print_bind();
    print_commands();
}
Example #6
0
File: shell.c Project: jimiszm/peos
int
main(int argc, char *argv[])
{
    int arg_c;
    char *cmd, *line = NULL;
    char *arg_v[256];
    COMMAND *cmd_func;

    while (1) {
	/* If the buffer has already been allocated, return the memory
	   to the free pool. */
	if (line) {
	    free (line);
	    line = (char *)NULL;
	}
     
	/* Get a line from the user. */
	line = readline ("> ");
     
	/* If the line has any text in it, save it on the history. */
	if (line && *line) {
	    add_history (line);
	    arg_c = parse_line(line, arg_v);
	    cmd = arg_v[0];

	    if (!(cmd_func = find_command(cmd))) {
		printf("no such command\n");
		print_commands();
	    } 
	    else {
		(*(cmd_func->impl))(arg_c, arg_v);
	    }
	}
    }    
}
Example #7
0
/*************************************************************************
 * COMMANDS                                                              *
 *************************************************************************/
static void print_commands(char * str, command_t * table) {
        command_t * cmds;
        char         buf[80];

        for (cmds = table; cmds->pc_name; cmds++) {
                if (cmds->pc_func) {
                        if (str) printf("\t%s %s\n", str, cmds->pc_name);
                        else printf("\t%s\n", cmds->pc_name);
                }
                if (cmds->pc_sub_cmd) {
                        if (str) {
                                sprintf(buf, "%s %s", str, cmds->pc_name);
                                print_commands(buf, cmds->pc_sub_cmd);
                        } else {
                                print_commands(cmds->pc_name, cmds->pc_sub_cmd);
                        }
                }
        }
}
Example #8
0
static
void usage(void)
{
	printf("occtl: [OPTIONS...] {COMMAND}\n\n");
	printf("  -s --socket-file       Specify the server's occtl socket file\n");
	printf("  -h --help              Show this help\n");
	printf("  -v --version           Show the program's version\n");
	printf("  -j --json              Use JSON formatting for output\n");
	printf("\n");
	print_commands(0);
	printf("\n");
}
Example #9
0
void Summary::print(xmrig::Controller *controller)
{
    print_versions(controller);
    print_mode(controller);
    print_algo(controller);
    printPools(controller->config());
    print_bind(controller);

#   ifndef XMRIG_NO_API
    print_api(controller);
#   endif

    print_commands(controller);
}
Example #10
0
void Summary::print()
{
    print_versions();
    print_memory();
    print_cpu();
    print_threads();
    print_pools();

#   ifndef XMRIG_NO_API
    print_api();
#   endif

    print_commands();
}
Example #11
0
void	bltin_completion(t_prompt *prompt, char **env)
{
  int	count;
  int	ret;

  if ((prompt->offset =
       get_offset(prompt->line, prompt->count_char, &ret)) == -1)
    return ;
  if (ret == 0
      && (count = count_commands(prompt, env)))
    print_commands(prompt, env, count);
  else
    print_files(prompt);

}
Example #12
0
static errcode_t exec_command(struct command_s *c)
{
	errcode_t ret = 0;
	unsigned int bytes, len;

	switch (c->c_type) {
	case REGISTER:
		ret = o2dlm_initialize(dlmfs_path, c->c_domain, &dlm_ctxt);
		break;
	case UNREGISTER:
		ret = o2dlm_destroy(dlm_ctxt);
		dlm_ctxt = NULL;
		break;
	case LOCK:
		ret = o2dlm_lock(dlm_ctxt, c->c_id, 0, c->c_level);
		break;
	case UNLOCK:
		ret = o2dlm_unlock(dlm_ctxt, c->c_id);
		break;
	case TRYLOCK:
		ret = o2dlm_lock(dlm_ctxt, c->c_id, O2DLM_TRYLOCK, c->c_level);
		break;
	case GETLVB:
		ret = o2dlm_read_lvb(dlm_ctxt, c->c_id, lvb_buf, LVB_LEN,
				     &bytes);
		if (!ret) {
			printf("%u bytes read. LVB begins on following "
			       "line and is terminated by a newline\n",
			       bytes);
			printf("%.*s\n", bytes, lvb_buf);
		}
		break;
	case SETLVB:
		len = strlen(c->c_lvb);
		ret = o2dlm_write_lvb(dlm_ctxt, c->c_id, c->c_lvb, len,
				      &bytes);
		if (!ret)
			printf("%u bytes written.\n", bytes);
		break;
	case HELP:
	default:
		print_commands();
	}

	return ret;
}
Example #13
0
void do_list (void)
{	header *hd;
	int lcount=0;
	output("  *** Builtin functions:\n");
	print_builtin();
	output("  *** Commands:\n");
	print_commands();
	output("  *** Your functions:\n");
	hd=(header *)ramstart;
	while ((char *)hd<udfend)
	{	if (hd->type!=s_udf) break;
		if (lcount+(int)strlen(hd->name)+2>=linelength)
			{ lcount=0; output("\n"); }
		output1("%s ",hd->name);
		lcount+=(int)strlen(hd->name)+1;
		hd=nextof(hd);
	}
	output("\n");
}
Example #14
0
void PaintApp::Initialize()
{
   // HACK for ubuntu1024: https://github.com/DrMcCoy/xoreos/commit/9a6c84d5458256ac5a0ff7525055ef2d8761e683
   if (!XInitThreads()) {
      throw "Failed to initialize Xlib muti-threading support";
   }

   mCurrentVideoMode = VideoMode::OpenGL;
   mCurrentResolution = {640_px, 480_px};

   InitVideo();
   InitKinect("");
   SelectRenderer(); // Kinect has to be set up for this!

   mWindow = std::make_shared<kinex::Window>("paint");
   mKinectBg = std::make_shared<NuiBackground>(mKinect);
   mState = std::make_shared<PaintStatus>();

   print_commands();
}
Example #15
0
PROCESS_THREAD(command_process, ev, data)
{
	static struct etimer commandTimeout;
	static unsigned char buttonCount = 0;
	
	PROCESS_BEGIN();
	SENSORS_ACTIVATE(button_sensor);
	
	while(1)
	{
		PROCESS_WAIT_EVENT();

		if(ev == sensors_event && data == &button_sensor){
			++buttonCount;
			printf("Button pressed %d times\n", buttonCount);

			if(buttonCount == 1)//first press, set the timer
			{
				etimer_set( &commandTimeout, COMMAND_TIMEOUT * CLOCK_SECOND );
			}
			else
			{
				etimer_restart(&commandTimeout);
			}
		}
		else if(ev == PROCESS_EVENT_TIMER)
		{
			if(buttonCount != 0 && etimer_expired(&commandTimeout))
			{
				printf("Timer expired: count is %d\n", buttonCount);
				etimer_stop(&commandTimeout);
				command_switch(buttonCount);
				buttonCount = 0;
				print_commands();
			}
		}
	}
    PROCESS_END();
}
Example #16
0
void show_usage_and_exit( void )
{
	printf( "Specify one of the following commands:\n" );
	print_commands();
	exit( 1 );
}
void track_server_code (){
	RegisterAs("TRACKSERVER");
	// Server data
	sw_info sw_infos [NUM_SWITCHES];
	int sensor_info [NUM_SENSORS];		// time when the sensor is hit
	int broken_sensors[NUM_SENSORS] = {0};
	// Server's track data
	track_node track[TRACK_MAX];
	init_track(track);
	init_broken_sensors(broken_sensors);
	track_node *src, *dst;
	// Received stuff
	track_receive rcv_buff;
	int sender_tid;
	int request_type;
	int sensor_index = 0;
	//Reply buffs
	int reply_dist = 0;
	int reply_index = 0;
	struct track_loc reply_loc;
	char reply_buff;
	int reply_buff_loc_dist [2];
	
	struct train_server_request tsr;
	int train_server_id;
	while((train_server_id = WhoIs("TRAINSERVER")) == -1);
    int track_to_train_courier_tid = Create(PR_COURIER, track_to_train_courier_code);
    int track_to_train_courier_ready = 0;
    Queue train_serverQ;
    struct train_server_request allocated_buff[TRACK_TO_TRAIN_QUEUE_SIZE];
    Queue_init (&train_serverQ, allocated_buff, TRACK_TO_TRAIN_QUEUE_SIZE, sizeof(struct train_server_request));
    //things for shortest path request
    track_node* path[TRACK_MAX] = {0};
    int dist[TRACK_MAX] = {0};
    int shortest_dist = 0;
    routing_command commands[TRACK_MAX];
    init_routing_commands(commands);
    // switch_command sw_commands[NUM_MAX_SWITCH_ROUTE_COMMANDS];
    // memset(sw_commands, 0, NUM_MAX_SWITCH_ROUTE_COMMANDS * sizeof(switch_command));

    //things for changing switches when train goes
    //within a specified route
    Queue switch_queues[NUM_TRAINS];
    Queue *Q;
    switch_command switch_queue_buffers[NUM_TRAINS][NUM_MAX_SWITCH_ROUTE_COMMANDS];
    memset(switch_queue_buffers, 0, NUM_TRAINS * NUM_MAX_SWITCH_ROUTE_COMMANDS * sizeof(switch_command));
    int trnum;
    for (trnum = 0; trnum < NUM_TRAINS; trnum++) {
        Queue_init(&switch_queues[trnum], switch_queue_buffers[trnum], NUM_MAX_SWITCH_ROUTE_COMMANDS, sizeof(switch_command));
    }
    //


    //Reservation data structures
    track_reservation track_reservations[TRACK_MAX];
    train_reservation_info tr_reservation_infos[NUM_TRAINS];
    memset(track_reservations, 0, TRACK_MAX * sizeof(track_reservation));
    memset(tr_reservation_infos, -1, NUM_TRAINS * sizeof(train_reservation_info));

    //
    Queue isReservableQueue;
    isReservableQueueItem isReservableQueueItems[NUM_TRAINS];
    Queue_init(&isReservableQueue, isReservableQueueItems, NUM_TRAINS, sizeof(isReservableQueueItem));
    isReservableQueueItem irqi;

    int reserve_ret = -1;
	int ret;
	while(1){
		Receive(&sender_tid, &rcv_buff, sizeof(track_receive));
		request_type = rcv_buff.type;
		switch (request_type){
			case TRACK_TYPE_COURIER_RTS:
				track_to_train_courier_ready = 1;
				break;
			case TRACK_TYPE_SENSOR_INFO:
				sensor_index = (rcv_buff.data.track_data.data2 - 'A')*16+rcv_buff.data.track_data.data1-1;
				//if (sensor_index == 56) {HardDebug("D9 is hit. Hit time:%d. Rcv Time:%d", rcv_buff.data.track_data.time, Time());}
				sensor_info[sensor_index] = rcv_buff.data.track_data.time;
				Reply(sender_tid, &reply_buff, sizeof(char));
				tsr.type = TRAIN_TYPE_SENSOR_UPDATE;
				memcpy(&tsr.data, &rcv_buff.data.track_data, sizeof(track_info));
				if (!broken_sensors[sensor_index]) {
					//Send(train_server_id, &tsr, sizeof(struct train_server_request), &reply_buff, sizeof(char));
					ret = Queue_push(&train_serverQ, &tsr);
					Warning(ret == 0, "TRACKSERVER: Queue_push failed");
				}
				break;
			case TRACK_TYPE_SWITCH_INFO:
				(sw_infos[(int)rcv_buff.data.track_data.data1]).swdir = rcv_buff.data.track_data.data2;
				(sw_infos[(int)rcv_buff.data.track_data.data1]).time = rcv_buff.data.track_data.time;
				Reply(sender_tid, &reply_buff, sizeof(char));
				tsr.type = TRAIN_TYPE_SWITCH_UPDATE;
				memcpy(&tsr.data, &rcv_buff.data.track_data, sizeof(track_info));
				//Send(train_server_id, &tsr, sizeof(struct train_server_request), &reply_buff, sizeof(char));
				ret = Queue_push(&train_serverQ, &tsr);
				Warning(ret == 0, "TRACKSERVER: Queue_push failed");
				break;
			case TRACK_TYPE_DIST:
				if((int)rcv_buff.data.track_data.data1 >= TRACK_MAX || (int)rcv_buff.data.track_data.data2 >= TRACK_MAX) {
					reply_dist = 0;
				}
				else {
					src = &track[(int)rcv_buff.data.track_data.data1];
					dst = &track[(int)rcv_buff.data.track_data.data2];
					reply_dist = get_dist_between_nodes(src, dst, sw_infos);
				}
				Reply(sender_tid, &reply_dist, sizeof(int));
				break;
			case TRACK_TYPE_NEXT_LOC:
				//get current loc_index and find next node
				__get_next_node((int)rcv_buff.data.track_data.data1, track, sw_infos, &reply_loc.index, reply_loc.name);
				Reply(sender_tid, &reply_loc, sizeof(struct track_loc));
				break;
			case TRACK_TYPE_NEXT_SENSOR:
				reply_index = get_next_sensor_index((int)rcv_buff.data.track_request_data.data1, track, sw_infos, broken_sensors, &tsr.data.spd.spd_val);
				Assert(reply_index == tsr.data.spd.spd_val.next_expected_sensor_index, "reply_index != result->next_expected_sensor_index");
				//Debug("TRACKSERVER: Got next expected sensor %d, after that %d", tsr.data.spd.spd_val.next_expected_sensor_index, tsr.data.spd.spd_val.sensor_after_expected_sensor);
				Reply(sender_tid, &reply_index, sizeof(int));
				tsr.type = TRAIN_TYPE_SENSOR_PREDICTION;
				tsr.data.spd.trnum = (int)rcv_buff.data.track_request_data.data2;
				if (rcv_buff.data.track_request_data.data3) {
					//Send(train_server_id, &tsr, sizeof(train_server_request), &reply_buff, sizeof(char));
					ret = Queue_push(&train_serverQ, &tsr);
					Warning(ret == 0, "TRACKSERVER: Queue_push failed");
				}
				break;
			case TRACK_TYPE_LOC_NAME:
				Reply(sender_tid, (char*)track[(int)rcv_buff.data.track_data.data1].name, 6 * sizeof(char));
				break;
			case TRACK_TYPE_SENSOR_REVERSE:
				reply_index = get_reverse_sensor((int)rcv_buff.data.track_request_data.data1, track, sw_infos, broken_sensors, &tsr.data.spd.spd_val);
				Reply(sender_tid, &reply_index, sizeof(int));
				tsr.data.spd.trnum = (int)rcv_buff.data.track_request_data.data2;
				if (rcv_buff.data.track_request_data.data3) {
					//Send(train_server_id, &tsr, sizeof(train_server_request), &reply_buff, sizeof(char));
					ret = Queue_push(&train_serverQ, &tsr);
					Warning(ret == 0, "TRACKSERVER: Queue_push failed");
				}
				break;

			case TRACK_TYPE_UPDATE_LOC_AND_DISTANCE:
				
				translate_sensor_loc(rcv_buff.data.track_request_data.data1, rcv_buff.data.track_request_data.data2, track, sw_infos, reply_buff_loc_dist);
				Reply(sender_tid, reply_buff_loc_dist, 2*sizeof(int));
				break;

			case TRACK_TYPE_FIND_ROUTE:
				Warning(((0 <= rcv_buff.data.track_request_data.data2 && rcv_buff.data.track_request_data.data2 < TRACK_MAX) &&
						 (0 <= rcv_buff.data.track_request_data.data3 && rcv_buff.data.track_request_data.data3 < TRACK_MAX)),
						 "TRACKSERVER: TRACK_TYPE_FIND_ROUTE - Source(%d) or destination(%d) is invalid", rcv_buff.data.track_request_data.data2, rcv_buff.data.track_request_data.data3);
				//Debug("FINDING ROUTE:trnum:%d ~ src:%s ~ dest:%s ~ offset:%d",rcv_buff.data.track_request_data.data1, track[rcv_buff.data.track_request_data.data2].name, track[rcv_buff.data.track_request_data.data3].name, rcv_buff.data.track_request_data.data4);
                shortest_dist = shortest_path((int)rcv_buff.data.track_request_data.data2, (int)rcv_buff.data.track_request_data.data3, track, path, dist, track_reservations);
                if (shortest_dist == __INFINITY)
                {
                	shortest_path((int)rcv_buff.data.track_request_data.data2, (int)rcv_buff.data.track_request_data.data3, track, path, dist, 0);
                }
                generate_commands(path, track, commands);
                print_commands(commands);
                
                pull_out_switch_orders(commands, tsr.data.path_commands.sw_commands, &switch_queues[rcv_buff.data.track_request_data.data1]);
                pull_out_reverse_orders(commands, tsr.data.path_commands.rv_commands);
                tsr.type = TRAIN_TYPE_ROUTE_SWITCH_ORDERS;
                Reply(sender_tid, &tsr, sizeof(train_server_request));
                break;

            case TRACK_TYPE_RESERVATION_INIT:
            	reserve_ret = reserve_inital_piece (track_reservations, 
													track, 
													tr_reservation_infos, 
													sw_infos,
													&switch_queues[rcv_buff.data.track_request_data.data1],
													rcv_buff.data.track_request_data.data1, 
													rcv_buff.data.track_request_data.data2, 
													rcv_buff.data.track_request_data.data3,
													rcv_buff.data.track_request_data.data4);
            	Debug("TRACKSERVER: Received reservation initialization request for train %d", rcv_buff.data.track_request_data.data1);
            	tsr.type = TRAIN_TYPE_RESERVATION_SUCCESS;
            	Reply(sender_tid, &tsr, sizeof(train_server_request));
            	break;
            case TRACK_TYPE_RESERVATION:
            	Q = &switch_queues[rcv_buff.data.track_request_data.data1];
            	reserve_ret = reserve_track(track_reservations, track, tr_reservation_infos, sw_infos, Q, rcv_buff.data.track_request_data.data1, rcv_buff.data.track_request_data.data2);
            	ret = release_track(track_reservations, track, tr_reservation_infos, sw_infos, rcv_buff.data.track_request_data.data1, rcv_buff.data.track_request_data.data3);
            	Assert (ret != -1, "TRACKSERVER: release failed: ret:%d", ret);
            	tsr.type = (reserve_ret == -1) ? TRAIN_TYPE_RESERVATION_FAILURE : TRAIN_TYPE_RESERVATION_SUCCESS;
            	Reply(sender_tid, &tsr, sizeof(train_server_request));
            	if (/*rcv_buff.data.track_request_data.data2 < 0 ||*/ rcv_buff.data.track_request_data.data3 > 0) {
            		check_isReservableRequests(&isReservableQueue, &train_serverQ, track, sw_infos, track_reservations, tr_reservation_infos, train_server_id);
            	}
            	
            	print_total_reserved_dist(track_reservations, tr_reservation_infos, rcv_buff.data.track_request_data.data1);
             	break;
			case TRACK_TYPE_RESERVATION_REVERSE:
				reserve_ret = reverse_reservation  (track, 
													tr_reservation_infos, 
													sw_infos, 
													rcv_buff.data.track_request_data.data1);
				tsr.type = TRAIN_TYPE_RESERVATION_SUCCESS;
            	Reply(sender_tid, &tsr, sizeof(train_server_request));
				break;
			case TRACK_TYPE_RESERVATION_SENSOR_UPDATE:
				reserve_ret = reservation_sensor_update(track_reservations,
														track,
														tr_reservation_infos,
														sw_infos,
														&switch_queues[rcv_buff.data.track_request_data.data1],
														rcv_buff.data.track_request_data.data1,
														rcv_buff.data.track_request_data.data2,
														rcv_buff.data.track_request_data.data3,
														rcv_buff.data.track_request_data.data4,
														rcv_buff.data.track_request_data.data5);
				tsr.type = (reserve_ret == -1) ? TRAIN_TYPE_RESERVATION_FAILURE : TRAIN_TYPE_RESERVATION_SUCCESS;
            	Reply(sender_tid, &tsr, sizeof(train_server_request));
            	//check_isReservableRequests(&isReservableQueue, &train_serverQ, track, sw_infos, track_reservations, tr_reservation_infos, train_server_id);
				break;
			case TRACK_TYPE_RESERVATION_STOP_UPDATE:
				reserve_ret = reservation_stop_update ( track_reservations,
														track,
														tr_reservation_infos,
														sw_infos,
														&switch_queues[rcv_buff.data.track_request_data.data1],
														rcv_buff.data.track_request_data.data1,
														rcv_buff.data.track_request_data.data2,
														rcv_buff.data.track_request_data.data3,
														rcv_buff.data.track_request_data.data4,
														rcv_buff.data.track_request_data.data5);
				tsr.type = /*(reserve_ret == -1) ? TRAIN_TYPE_RESERVATION_FAILURE :*/ TRAIN_TYPE_RESERVATION_SUCCESS;
            	Reply(sender_tid, &tsr, sizeof(train_server_request));
				break;
			case TRACK_TYPE_IS_RESERVABLE:
				tsr.type = TRAIN_TYPE_REQ_IN_PROGRESS;
				Reply(sender_tid, &tsr, sizeof(train_server_request));
				irqi.trnum = rcv_buff.data.track_request_data.data1;
				irqi.mm = rcv_buff.data.track_request_data.data2;
				ret = Queue_push(&isReservableQueue, &irqi);
				Warning(ret == 0, "TRACKSERVER: Queue_push failed");
				break;
            case TRACK_TYPE_PRINT_RESERVATIONS:
            	Reply(sender_tid, &reply_buff, sizeof(char));
            	print_reservations(track_reservations, track, tr_reservation_infos);
            	break;

			default:
				Reply(sender_tid, &reply_buff, sizeof(char));
				Warning(0,"Unknown receive in track_server_code: type=%d from %d", request_type, sender_tid);
				break;
		}
		if (track_to_train_courier_ready && !Queue_pop(&train_serverQ, &tsr)){
			Reply(track_to_train_courier_tid, &tsr, sizeof(train_server_request));
			track_to_train_courier_ready = 0;
		}
	}
	Exit();
	Warning(0,"Unexpected return from Exit() at track_server_code\n\r");
}
Example #18
0
void commands(char** args, int argc) {
	printf("Available commands are: \n");
	print_commands();
}
Example #19
0
static void run_tester_help(int argc, char **argv)
{
    print_commands(tester_commands, TESTER_SUPPORTED_COMMANDS);
    exit(EXIT_SUCCESS);
}
Example #20
0
static void process_command(int *quit)
{
	char inbuf[132];
	int x = 0, y = 0;

	if (!opt_cmd) {
		fgets(inbuf, sizeof(inbuf), stdin);
		sscanf(inbuf, "%s %d %d", cmd, &x, &y);
	}

	if (!strncmp(cmd, "EXIT", 4)) {
		*quit = 1;
		unlock_all();
		return;
	}

	if (!strncmp(cmd, "CLOSE", 5)) {
		*quit = 1;
		openclose_ls = 1;
		unlock_all();
		return;
	}

	if (!strncmp(cmd, "kill", 4)) {
		printf("process exiting\n");
		exit(0);
	}

	if (!strncmp(cmd, "lock", 4) && strlen(cmd) == 4) {
		lock(x, y);
		return;
	}

	if (!strncmp(cmd, "unlock", 6) && strlen(cmd) == 6) {
		unlock(x);
		return;
	}

	if (!strncmp(cmd, "unlockf", 7) && strlen(cmd) == 7) {
		unlockf(x);
		return;
	}

	if (!strncmp(cmd, "cancel", 6) && strlen(cmd) == 6) {
		cancel(x);
		return;
	}

	if (!strncmp(cmd, "canceld", 7) && strlen(cmd) == 7) {
		canceld(x, y);
		return;
	}

	if (!strncmp(cmd, "lock_sync", 9) && strlen(cmd) == 9) {
		lock_sync(x, y);
		return;
	}

	if (!strncmp(cmd, "unlock_sync", 11) && strlen(cmd) == 11) {
		unlock_sync(x);
		return;
	}

	if (!strncmp(cmd, "lock-kill", 9) && strlen(cmd) == 9) {
		lock(x, y);
		printf("process exiting\n");
		exit(0);
	}

	if (!strncmp(cmd, "unlock-kill", 11) && strlen(cmd) == 11) {
		unlock(x);
		printf("process exiting\n");
		exit(0);
	}

	if (!strncmp(cmd, "lock-cancel", 11) && strlen(cmd) == 11) {
		lock(x, y);
		/* usleep(1000 * z); */
		cancel(x);
		return;
	}

	if (!strncmp(cmd, "lock-unlockf", 12) && strlen(cmd) == 12) {
		lock(x, y);
		/* usleep(1000 * z); */
		unlockf(x);
		return;
	}

	if (!strncmp(cmd, "ex", 2)) {
		lock(x, LKM_EXMODE);
		return;
	}

	if (!strncmp(cmd, "pr", 2)) {
		lock(x, LKM_PRMODE);
		return;
	}

	if (!strncmp(cmd, "hold", 4) && strlen(cmd) == 4) {
		lock_all(LKM_PRMODE);
		return;
	}

	if (!strncmp(cmd, "hold-kill", 9) && strlen(cmd) == 9) {
		lock_all(LKM_PRMODE);
		exit(0);
	}

	if (!strncmp(cmd, "release", 7) && strlen(cmd) == 7) {
		unlock_all();
		return;
	}

	if (!strncmp(cmd, "release-kill", 12) && strlen(cmd) == 12) {
		unlock_all();
		exit(0);
	}

	if (!strncmp(cmd, "dump", 4) && strlen(cmd) == 4) {
		dump();
		return;
	}

	if (!strncmp(cmd, "stress", 6) && strlen(cmd) == 6) {
		if (iterations && !x)
			x = iterations;
		stress(x);
		return;
	}

	if (!strncmp(cmd, "tstress", 7) && strlen(cmd) == 7) {
		tstress(x);
		return;
	}

	if (!strncmp(cmd, "dstress", 7) && strlen(cmd) == 7) {
		dstress(x);
		return;
	}

	if (!strncmp(cmd, "stress_delay", 12) && strlen(cmd) == 12) {
		stress_delay = x;
		return;
	}

	if (!strncmp(cmd, "stress_lock_only", 16) && strlen(cmd) == 16) {
		stress_lock_only = !stress_lock_only;
		printf("stress_lock_only is %s\n", stress_lock_only ? "on" : "off");
		return;
	}

	if (!strncmp(cmd, "stress_stop", 11) && strlen(cmd) == 11) {
		stress_stop = !stress_stop;
		printf("stress_stop is %d\n", stress_stop);
		return;
	}

	if (!strncmp(cmd, "ignore_bast", 11) && strlen(cmd) == 11) {
		ignore_bast = !ignore_bast;
		printf("ignore_bast is %s\n", ignore_bast ? "on" : "off");
		return;
	}

	if (!strncmp(cmd, "our_xid", 7) && strlen(cmd) == 7) {
		our_xid = x;
		printf("our_xid is %llx\n", (unsigned long long)our_xid);
		return;
	}


	if (!strncmp(cmd, "purge", 5) && strlen(cmd) == 5) {
		purge(x, y);
		return;
	}

	if (!strncmp(cmd, "purgetest", 9) && strlen(cmd) == 9) {
		purgetest(x, y);
		return;
	}

	if (!strncmp(cmd, "noqueue", 7)) {
		noqueue = !noqueue;
		printf("noqueue is %s\n", noqueue ? "on" : "off");
		return;
	}

	if (!strncmp(cmd, "persistent", 10)) {
		persistent = !persistent;
		printf("persistent is %s\n", persistent ? "on" : "off");
		return;
	}

	if (!strncmp(cmd, "minhold", 7)) {
		minhold = x;
		return;
	}

	if (!strncmp(cmd, "timeout", 7)) {
		timeout = (uint64_t) 100 * x; /* dlm takes it in centiseconds */
		printf("timeout is %d\n", x);
		return;
	}

	if (!strncmp(cmd, "quiet", 5)) {
		quiet = !quiet;
		printf("quiet is %d\n", quiet);
		return;
	}

	if (!strncmp(cmd, "verbose", 7)) {
		verbose = !verbose;
		printf("verbose is %d\n", verbose);
		return;
	}

	if (!strncmp(cmd, "help", 4)) {
		print_commands();
		return;
	}

	if (!strncmp(cmd, "settings", 8)) {
		print_settings();
		return;
	}

	printf("unknown command %s\n", cmd);
}
Example #21
0
int main(int argc, char **argv)
{
  program_name = argv[0];
  static char stderr_buf[BUFSIZ];
  setbuf(stderr, stderr_buf);
  assert(NCOMMANDS <= MAX_COMMANDS);
  string Pargs, Largs, Fargs;
  int vflag = 0;
  int Vflag = 0;
  int zflag = 0;
  int iflag = 0;
  int Xflag = 0;
  int oflag = 0;
  int safer_flag = 1;
  int opt;
  const char *command_prefix = getenv("GROFF_COMMAND_PREFIX");
  if (!command_prefix)
    command_prefix = PROG_PREFIX;
  commands[TROFF_INDEX].set_name(command_prefix, "troff");
  static const struct option long_options[] = {
    { "help", no_argument, 0, 'h' },
    { "version", no_argument, 0, 'v' },
    { NULL, 0, 0, 0 }
  };
  while ((opt = getopt_long(argc, argv,
			    "abcCd:eEf:F:gGhiI:lL:m:M:n:No:pP:r:RsStT:UvVw:W:XzZ",
			    long_options, NULL))
	 != EOF) {
    char buf[3];
    buf[0] = '-';
    buf[1] = opt;
    buf[2] = '\0';
    switch (opt) {
    case 'i':
      iflag = 1;
      break;
    case 'I':
      commands[SOELIM_INDEX].set_name(command_prefix, "soelim");
      commands[SOELIM_INDEX].append_arg(buf, optarg);
      // .psbb may need to search for files
      commands[TROFF_INDEX].append_arg(buf, optarg);
      // \X'ps:import' may need to search for files
      Pargs += buf;
      Pargs += optarg;
      Pargs += '\0';
      break;
    case 't':
      commands[TBL_INDEX].set_name(command_prefix, "tbl");
      break;
    case 'p':
      commands[PIC_INDEX].set_name(command_prefix, "pic");
      break;
    case 'g':
      commands[GRN_INDEX].set_name(command_prefix, "grn");
      break;
    case 'G':
      commands[GRAP_INDEX].set_name(command_prefix, "grap");
      break;
    case 'e':
      commands[EQN_INDEX].set_name(command_prefix, "eqn");
      break;
    case 's':
      commands[SOELIM_INDEX].set_name(command_prefix, "soelim");
      break;
    case 'R':
      commands[REFER_INDEX].set_name(command_prefix, "refer");
      break;
    case 'z':
    case 'a':
      commands[TROFF_INDEX].append_arg(buf);
      // fall through
    case 'Z':
      zflag++;
      break;
    case 'l':
      lflag++;
      break;
    case 'V':
      Vflag++;
      break;
    case 'v':
      vflag = 1;
      {
	printf("GNU groff version %s\n", Version_string);
	printf("Copyright (C) 2004 Free Software Foundation, Inc.\n"
	       "GNU groff comes with ABSOLUTELY NO WARRANTY.\n"
	       "You may redistribute copies of groff and its subprograms\n"
	       "under the terms of the GNU General Public License.\n"
	       "For more information about these matters, see the file named COPYING.\n");
	printf("\ncalled subprograms:\n\n");
        fflush(stdout);
      }
      commands[POST_INDEX].append_arg(buf);
      // fall through
    case 'C':
      commands[SOELIM_INDEX].append_arg(buf);
      commands[REFER_INDEX].append_arg(buf);
      commands[PIC_INDEX].append_arg(buf);
      commands[GRAP_INDEX].append_arg(buf);
      commands[TBL_INDEX].append_arg(buf);
      commands[GRN_INDEX].append_arg(buf);
      commands[EQN_INDEX].append_arg(buf);
      commands[TROFF_INDEX].append_arg(buf);
      break;
    case 'N':
      commands[EQN_INDEX].append_arg(buf);
      break;
    case 'h':
      help();
      break;
    case 'E':
    case 'b':
      commands[TROFF_INDEX].append_arg(buf);
      break;
    case 'c':
      commands[TROFF_INDEX].append_arg(buf);
      break;
    case 'S':
      safer_flag = 1;
      break;
    case 'U':
      safer_flag = 0;
      break;
    case 'T':
      if (strcmp(optarg, "html") == 0) {
	// force soelim to aid the html preprocessor
	commands[SOELIM_INDEX].set_name(command_prefix, "soelim");
      }
      if (strcmp(optarg, "Xps") == 0) {
	warning("-TXps option is obsolete: use -X -Tps instead");
	device = "ps";
	Xflag++;
      }
      else
	device = optarg;
      break;
    case 'F':
      font::command_line_font_dir(optarg);
      if (Fargs.length() > 0) {
	Fargs += PATH_SEP_CHAR;
	Fargs += optarg;
      }
      else
	Fargs = optarg;
      break;
    case 'o':
      oflag = 1;
    case 'f':
    case 'm':
    case 'r':
    case 'd':
    case 'n':
    case 'w':
    case 'W':
      commands[TROFF_INDEX].append_arg(buf, optarg);
      break;
    case 'M':
      commands[EQN_INDEX].append_arg(buf, optarg);
      commands[GRAP_INDEX].append_arg(buf, optarg);
      commands[GRN_INDEX].append_arg(buf, optarg);
      commands[TROFF_INDEX].append_arg(buf, optarg);
      break;
    case 'P':
      Pargs += optarg;
      Pargs += '\0';
      break;
    case 'L':
      append_arg_to_string(optarg, Largs);
      break;
    case 'X':
      Xflag++;
      break;
    case '?':
      usage(stderr);
      exit(1);
      break;
    default:
      assert(0);
      break;
    }
  }
  if (safer_flag)
    commands[PIC_INDEX].append_arg("-S");
  else
    commands[TROFF_INDEX].insert_arg("-U");
  font::set_unknown_desc_command_handler(handle_unknown_desc_command);
  if (!font::load_desc())
    fatal("invalid device `%1'", device);
  if (!postdriver)
    fatal("no `postpro' command in DESC file for device `%1'", device);
  if (predriver && !zflag) {
    commands[TROFF_INDEX].insert_arg(commands[TROFF_INDEX].get_name());
    commands[TROFF_INDEX].set_name(predriver);
    // pass the device arguments to the predrivers as well
    commands[TROFF_INDEX].insert_args(Pargs);
    if (vflag)
      commands[TROFF_INDEX].insert_arg("-v");
  }
  const char *real_driver = 0;
  if (Xflag) {
    real_driver = postdriver;
    postdriver = (char *)GXDITVIEW;
    commands[TROFF_INDEX].append_arg("-r" XREG "=", "1");
  }
  if (postdriver)
    commands[POST_INDEX].set_name(postdriver);
  int gxditview_flag = postdriver && strcmp(xbasename(postdriver), GXDITVIEW) == 0;
  if (gxditview_flag && argc - optind == 1) {
    commands[POST_INDEX].append_arg("-title");
    commands[POST_INDEX].append_arg(argv[optind]);
    commands[POST_INDEX].append_arg("-xrm");
    commands[POST_INDEX].append_arg("*iconName:", argv[optind]);
    string filename_string("|");
    append_arg_to_string(argv[0], filename_string);
    append_arg_to_string("-Z", filename_string);
    for (int i = 1; i < argc; i++)
      append_arg_to_string(argv[i], filename_string);
    filename_string += '\0';
    commands[POST_INDEX].append_arg("-filename");
    commands[POST_INDEX].append_arg(filename_string.contents());
  }
  if (gxditview_flag && Xflag) {
    string print_string(real_driver);
    if (spooler) {
      print_string += " | ";
      print_string += spooler;
      print_string += Largs;
    }
    print_string += '\0';
    commands[POST_INDEX].append_arg("-printCommand");
    commands[POST_INDEX].append_arg(print_string.contents());
  }
  const char *p = Pargs.contents();
  const char *end = p + Pargs.length();
  while (p < end) {
    commands[POST_INDEX].append_arg(p);
    p = strchr(p, '\0') + 1;
  }
  if (gxditview_flag)
    commands[POST_INDEX].append_arg("-");
  if (lflag && !vflag && !Xflag && spooler) {
    commands[SPOOL_INDEX].set_name(BSHELL);
    commands[SPOOL_INDEX].append_arg(BSHELL_DASH_C);
    Largs += '\0';
    Largs = spooler + Largs;
    commands[SPOOL_INDEX].append_arg(Largs.contents());
  }
  if (zflag) {
    commands[POST_INDEX].set_name(0);
    commands[SPOOL_INDEX].set_name(0);
  }
  commands[TROFF_INDEX].append_arg("-T", device);
  // html renders equations as images via ps
  if (strcmp(device, "html") == 0) {
    if (oflag)
      fatal("`-o' option is invalid with device `html'");
    commands[EQN_INDEX].append_arg("-Tps:html");
  }
  else
    commands[EQN_INDEX].append_arg("-T", device);

  commands[GRN_INDEX].append_arg("-T", device);

  int first_index;
  for (first_index = 0; first_index < TROFF_INDEX; first_index++)
    if (commands[first_index].get_name() != 0)
      break;
  if (optind < argc) {
    if (argv[optind][0] == '-' && argv[optind][1] != '\0')
      commands[first_index].append_arg("--");
    for (int i = optind; i < argc; i++)
      commands[first_index].append_arg(argv[i]);
    if (iflag)
      commands[first_index].append_arg("-");
  }
  if (Fargs.length() > 0) {
    string e = "GROFF_FONT_PATH";
    e += '=';
    e += Fargs;
    char *fontpath = getenv("GROFF_FONT_PATH");
    if (fontpath && *fontpath) {
      e += PATH_SEP_CHAR;
      e += fontpath;
    }
    e += '\0';
    if (putenv(strsave(e.contents())))
      fatal("putenv failed");
  }
  {
    // we save the original path in GROFF_PATH__ and put it into the
    // environment -- troff will pick it up later.
    char *path = getenv("PATH");
    string e = "GROFF_PATH__";
    e += '=';
    if (path && *path)
      e += path;
    e += '\0';
    if (putenv(strsave(e.contents())))
      fatal("putenv failed");
    char *binpath = getenv("GROFF_BIN_PATH");
    string f = "PATH";
    f += '=';
    if (binpath && *binpath)
      f += binpath;
    else
      f += BINPATH;
    if (path && *path) {
      f += PATH_SEP_CHAR;
      f += path;
    }
    f += '\0';
    if (putenv(strsave(f.contents())))
      fatal("putenv failed");
  }
  if (Vflag)
    print_commands(Vflag == 1 ? stdout : stderr);
  if (Vflag == 1)
    exit(0);
  return run_commands(vflag);
}
Example #22
0
/**
* Handler to check user input, and see if it matches any avaible commands.
* Will call the right methods for executing commands
*/
void handle_keyboard(sp_session *session, struct play_queue* node)
{
    char buffer[1024];

    fgets(buffer, sizeof(buffer), stdin);
    strtok(buffer, "\n");

    if (strcmp(buffer, "search") == 0) {
        player_reset();
        run_search(session);

    } else if ((strcmp(buffer, "list") == 0) || (strcmp(buffer, "ls") == 0 )) {
        print_playlists(session, pc);

    } else if(strcmp(buffer, "qshuffle") == 0) {
        queue_shuffle();

    } else if (strcmp(buffer, "queueadd") == 0) {
        sp_playlist* pl = parse_play_command(session, buffer, node);
        printf("done finding playlist \n");

        if(pl != NULL) printf("queueadd: %s\n", sp_playlist_name(pl));
        else {
            printf("no playlist\n");
            return;
        }

        int index;
        char input[10];
        fputs("Song number: ", stdout);
        fgets(input, sizeof(input) - 1, stdin);
        sscanf(input, "%d", &index);
        if(sp_playlist_num_tracks(pl) < index) {
            printf("index too high!\n");
            return;
        }

        sp_track* track = pl_find_song_by_id(pl, index);
        if(track != NULL) queue_add_first(track);

    } else if (strcmp(buffer, "list songs") == 0 ) {
        //release all threads
        sp_playlist* pl = playlist_find_by_num(session, pc);
        print_tracks_in_playlist(session, pl);

    } else if (strcmp(buffer, "help") == 0) {
        print_commands();

    } else if (strcmp(buffer, "queue") == 0) {
        queue_print(node);

    } else if (strcmp(buffer, "shuffle mode") == 0) {
        print_commands();

    } else if(strncmp(buffer, "play", strlen("play")) == 0) {
        player_reset();
        sp_playlist* pl = parse_play_command(session, buffer, node);
        if(pl!=NULL) queue_add_playlist(pl);
        else {
            printf("ERROR playlist is null\n");
            return;
        }
        queue_go_next(session);


    } else if(strncmp(buffer, "shuffle", strlen("shuffle")) == 0) {
        player_reset();
        shuffle_mode = TRUE;
        sp_playlist* pl = parse_play_command(session, buffer, node);
        if(pl!=NULL) queue_add_playlist(pl);
        else {
            printf("ERROR playlist is null\n");
            return;
        }
        queue_shuffle();
        queue_go_next(session);

    } else if(strcmp(buffer, "pause") == 0 || strcmp(buffer, "p") == 0) {
        player_pause(session);
        play_info();

    } else if (strcmp(buffer, "next") == 0 || strcmp(buffer, "n") == 0) {
        end_track(session);

    } else if (strcmp(buffer, "stop") == 0) {

    } else if (strcmp(buffer, "info") == 0) {
        play_info();
    } else if (strcmp(buffer, "quit") == 0) {
        queue_free();
        quit_program(session);
    } else {
        printf("Unkown command!\n");
    }
    printf("> ");
    fflush(stdout);

    return;
}
Example #23
0
void Parser_qhelp(int argc, char *argv[]) {

    printf("Available commands are:\n");
	
    print_commands(NULL, top_level);
}
Example #24
0
int main(int argc, char *argv[]) {
    int opt = 0;
    int longIndex = 0;
    int rows = 5;
    int cols = 5;
    int pop = 10;
    int rand = 0;

    opt = getopt_long(argc, argv, optString, build_args, &longIndex);
    while(opt != -1) {
        switch(opt) {
            case 'R':
                printf("%c\n", (char)opt);
                rows = atoi(optarg);
                break;
            case 'C':
                printf("%c\n", (char)opt);
                cols = atoi(optarg);
                break;
            case 'N':
                printf("%c\n", (char)opt);
                pop = atoi(optarg);
                break;
            case 'h':
            case '?':
                print_help();
                break;
            case 0:
                if(strcmp("rand", build_args[longIndex].name) == 0) {
                    printf("random\n");
                    rand = 1;
                }
                break;
            default:
                break;
        }

        opt = getopt_long(argc, argv, optString, build_args, &longIndex);
    }

    char *command = malloc(sizeof(char) * 256);
    int a1 = 0;
    int a2 = 0;
    int a3 = 0;

    GW world = malloc(sizeof(GW));
    world =  gw_build(rows, cols, pop, rand);

    print_commands();

    while(1) {
        printf("Enter a command: ");
        scanf("%s %d %d %d", command, &a1, &a2, &a3);

        if(strcmp("q", command) == 0) {
            printf("\n\nExiting...\n");
            return 0;
        }
        else if(strcmp("kill", command) == 0) {
            printf("hey\n");
            printf("%d\n", a1);
        }
    }
}
Example #25
0
void main()
{
	RBTree *t = new RBTree();
	int n;
	RBNode *node;
	char c;

	do
	{
		print_commands();
		c = getch();
		if (c == 0)
			c = getch();
		if (c != 27)
			printf("%c\n\n", c);
		switch (c)
		{
			case 'i':
				printf("Node to insert: ");
				scanf("%d", &n);
				t->addNode(new RBNode(n));
				printf("Node inserted.");
				break;
			case 's':
				printf("Node to search for: ");
				scanf("%d", &n);
				if (t->findNode(n, t->getRoot()) == NULL)
					printf("Can't find node with key %d.", n);
				else
					printf("Found a node with key %d.", n);
				break;
			case 'd':
				printf("Node to delete: ");
				scanf("%d", &n);
				node = t->findNode(n, t->getRoot());
				if (node == NULL)
					printf("Can't find node with key %d.", n);
				else
				{
					t->deleteNode(node);
					printf("Node %d deleted.", n);
				}
				break;
			case 'p':
				clrscr();
				printf("Tree is: \n\n");
				t->prettyPrint(t->getRoot());
				break;
			case 27:
				break;
			default:
				printf("Unknown command.");
				break;
		}
		if (c != 27)
		{
			printf("\n\nPress any key to continue.");
			if (getch() == 0)
				getch();
		}
	}
	while (c != 27);

	delete t;
}
Example #26
0
void human_game() {
    printf("Welcome to 2048!\n");
    print_commands();


    //char buf[MAXLINE];
    Game g = init_game(squaresum_heuristic);
    print_game(g);

    char in;
    int playing = 1;
    while (playing) {
        in = getc(stdin);
        if (in == '\033') {
            getc(stdin);
            switch (getc(stdin)) {
                case 'A':
                    in = 'u';
                    break;
                case 'B':
                    in = 'd';
                    break;
                case 'C':
                    in = 'r';
                    break;
                case 'D':
                    in = 'l';
                    break;
                default:
                    break;
            }
        }
        switch (in) {
            case 'q':
                playing = 0;
                break;
            case 'u':
                make_move(g, Up);
                print_game(g);
                break;
            case 'd':
                make_move(g, Down);
                print_game(g);
                break;
            case 'l':
                make_move(g, Left);
                print_game(g);
                break;
            case 'r':
                make_move(g, Right);
                print_game(g);
                break;
            case 'h':
                print_commands();
                break;
            default:
                break;
        }
        PointList pl = open_spaces(g->board);
        if (pl_empty(pl)) {
            playing = 0;
        }
        pl_free(pl);
    }
    print_game(g);
    printf("Game Over! Final Score: %d\n", g->score);
}
Example #27
0
static int handle_help_cmd(CONN_TYPE * conn, const char *arg, cmd_params_st *params)
{
	print_commands(1);
	return 0;
}
Example #28
0
void PaintApp::ProcessInput()
{
   SDL_Event event;

   if (!SDL_PollEvent(&event)) {
      return;
   }

   if((SDL_QUIT == event.type) || (SDLK_ESCAPE == event.key.keysym.sym)) {
      // The user closed the window or pressed ESC.
      mQuitRequested = true;
      return;
   }

   switch (event.type)
   {
      case SDL_VIDEORESIZE:
         {
            // FIXME: SDL_VIDEORESIZE is buggy in SDL 1.2.15, see:
            //  http://bugzilla.libsdl.org/show_bug.cgi?id=1430
            mCurrentResolution = {event.resize.w, event.resize.h};
            InitVideo();
         }
         break;
      case SDL_KEYDOWN:
         {
            if (SDLK_h == event.key.keysym.sym) {
               print_commands();
            }
            else if (SDLK_s == event.key.keysym.sym) {
               mCurrentVideoMode = VideoMode::Software;
               InitVideo();
               SelectRenderer();
            }
            else if (SDLK_o == event.key.keysym.sym) {
               mCurrentVideoMode = VideoMode::OpenGL;
               InitVideo();
               SelectRenderer();
            }
            else if (SDLK_b == event.key.keysym.sym) {
               mKinectBg->SwitchMode();
            }
         }
         break;
      case SDL_MOUSEBUTTONDOWN:
         {
            if (event.button.button == SDL_BUTTON_LEFT) {
               mState->drawing = true;
               mState->active_line.push_back({event.button.x, event.button.y});
            }
            else if (event.button.button == SDL_BUTTON_RIGHT) {
               mState->lines.clear();
            }
         }
         break;
      case SDL_MOUSEBUTTONUP:
         mState->lines.push_back(mState->active_line);
         mState->active_line.clear();
         mState->drawing = false;
         break;
      case SDL_MOUSEMOTION:
         {
            if (mState->drawing) {
               mState->active_line.push_back({event.motion.x, event.motion.y});
            }
         }
         break;
      default:
         break;
   }
}
Example #29
0
/* returns:
 *  <0 for error
 *     -1 out of memory
 *     -2 other
 *   0 for async dispatched
 *   1 for command completed (connection can be closed)
 */
int execute_or_dispatch_command(client_conn_t *conn, enum commands cmd, const char *argument)
{
    int desc = conn->sd;
    char term = conn->term;
    const struct cl_engine *engine = conn->engine;
    /* execute commands that can be executed quickly on the recvloop thread,
     * these must:
     *  - not involve any operation that can block for a long time, such as disk
     *  I/O
     *  - send of atomic message is allowed.
     * Dispatch other commands */
    if (conn->group) {
	switch (cmd) {
	    case COMMAND_FILDES:
	    case COMMAND_SCAN:
	    case COMMAND_END:
	    case COMMAND_INSTREAM:
	    case COMMAND_INSTREAMSCAN:
	    case COMMAND_VERSION:
	    case COMMAND_PING:
	    case COMMAND_STATS:
	    case COMMAND_COMMANDS:
		/* These commands are accepted inside IDSESSION */
		break;
	    default:
		/* these commands are not recognized inside an IDSESSION */
		conn_reply_error(conn, "Command invalid inside IDSESSION.");
		logg("$SESSION: command is not valid inside IDSESSION: %d\n", cmd);
		conn->group = NULL;
		return 1;
	}
    }

    switch (cmd) {
	case COMMAND_SHUTDOWN:
	    pthread_mutex_lock(&exit_mutex);
	    progexit = 1;
	    pthread_mutex_unlock(&exit_mutex);
	    return 1;
	case COMMAND_RELOAD:
	    pthread_mutex_lock(&reload_mutex);
	    reload = 1;
	    pthread_mutex_unlock(&reload_mutex);
	    mdprintf(desc, "RELOADING%c", term);
	    /* we set reload flag, and we'll reload before closing the
	     * connection */
	    return 1;
	case COMMAND_PING:
	    if (conn->group)
		mdprintf(desc, "%u: PONG%c", conn->id, term);
	    else
		mdprintf(desc, "PONG%c", term);
	    return conn->group ? 0 : 1;
	case COMMAND_VERSION:
	    {
		if (conn->group)
		    mdprintf(desc, "%u: ", conn->id);
		print_ver(desc, conn->term, engine);
		return conn->group ? 0 : 1;
	    }
	case COMMAND_COMMANDS:
	    {
		if (conn->group)
		    mdprintf(desc, "%u: ", conn->id);
		print_commands(desc, conn->term, engine);
		return conn->group ? 0 : 1;
	    }
	case COMMAND_DETSTATSCLEAR:
	    {
		detstats_clear();
		return 1;
	    }
	case COMMAND_DETSTATS:
	    {
		detstats_print(desc, conn->term);
		return 1;
	    }
	case COMMAND_INSTREAM:
	    {
		int rc = cli_gentempfd(optget(conn->opts, "TemporaryDirectory")->strarg, &conn->filename, &conn->scanfd);
		if (rc != CL_SUCCESS)
		    return rc;
		conn->quota = optget(conn->opts, "StreamMaxLength")->numarg;
		conn->mode = MODE_STREAM;
		return 0;
	    }
	case COMMAND_STREAM:
	case COMMAND_MULTISCAN:
	case COMMAND_CONTSCAN:
	case COMMAND_STATS:
	case COMMAND_FILDES:
	case COMMAND_SCAN:
	case COMMAND_INSTREAMSCAN:
	    return dispatch_command(conn, cmd, argument);
	case COMMAND_IDSESSION:
	    conn->group = thrmgr_group_new();
	    if (!conn->group)
		return CL_EMEM;
	    return 0;
	case COMMAND_END:
	    if (!conn->group) {
		/* end without idsession? */
		conn_reply_single(conn, NULL, "UNKNOWN COMMAND");
		return 1;
	    }
	    /* need to close connection  if we were last in group */
	    return 1;
	/*case COMMAND_UNKNOWN:*/
	default:
	    conn_reply_single(conn, NULL, "UNKNOWN COMMAND");
	    return 1;
    }
}
Example #30
0
/**
 * Main function
 * @return int
 */
int main(int argc, char **argv)
{
	size_t size;
	char *input;

	comm_plugin = communication_plugin();

	if (argc == 2) {

		if (strcmp(argv[1], "--help") == 0) {
			print_help();
			exit(0);
		} else if (strcmp(argv[1], "--dbus") == 0) {
			dbus_mode();
		} else if (strcmp(argv[1], "--tcp") == 0) {
			tcp_mode();
		} else {
			fprintf(stderr, "ERROR: %s invalid option\n", argv[1]);
			fprintf(stderr,
				"Try `ieee_manager_console --help' for more information.\n");
			exit(1);
		}

	} else if (argc > 2) {
		fprintf(stderr, "ERROR: Invalid number of options\n");
		fprintf(stderr, "Try `ieee_manager_console --help' for more information.\n");
		exit(1);
	} else {
		// TCP is default mode
		tcp_mode();
	}

	fprintf(stderr, "\nIEEE 11073 Test application\n");

	size = 100;
	input = (char *)malloc(size);



	plugin_pthread_setup(&comm_plugin);

	CommunicationPlugin *plugins[] = {&comm_plugin, 0};
	manager_init(plugins);

	ManagerListener listener = MANAGER_LISTENER_EMPTY;
	listener.measurement_data_updated = &new_data_received;
	listener.device_available = &device_associated;

	manager_add_listener(listener);

	plugin_pthread_manager_start();

	while (1) {
		fprintf(stderr, "--> ");
		unsigned int read_bytes = getline(&input, &size, stdin);

		input[read_bytes-1] = '\0';

		if (strcmp(input, "exit") == 0) {
			break;
		} else if (strcmp(input, "start") == 0) {
			plugin_pthread_manager_start();
		} else if (strcmp(input, "stop") == 0) {
			plugin_pthread_manager_stop();
		} else if (strcmp(input, "print_mds") == 0) {
			print_device_attributes();
		}
		/*
		 * Remote Operation Invokes
		 */
		else if (strcmp(input, "req_data") == 0) {
			manager_request_measurement_data_transmission(DEFAULT_CONTEXT_ID, NULL);
		} else if (strcmp(input, "get_all_mds") == 0) {
			manager_request_get_all_mds_attributes(DEFAULT_CONTEXT_ID, NULL);
		} else if (strcmp(input, "get_segment_info") == 0) {
			manager_request_get_segment_info(DEFAULT_CONTEXT_ID, -1, NULL);
		} else if (strcmp(input, "data_xfer") == 0) {
			manager_request_get_segment_data(DEFAULT_CONTEXT_ID, -1, -1, NULL);
		} else if (strcmp(input, "clear_segments") == 0) {
			manager_request_clear_segments(DEFAULT_CONTEXT_ID, -1, NULL);
		} else if (strcmp(input, "release") == 0) {
			manager_request_association_release(DEFAULT_CONTEXT_ID);
		} else if (strcmp(input, "start_scan") == 0) {
			manager_set_operational_state_of_the_scanner(DEFAULT_CONTEXT_ID, 0X0037,
					os_enabled, NULL); // TODO Change Handle
		} else if (strcmp(input, "stop_scan") == 0) {
			manager_set_operational_state_of_the_scanner(DEFAULT_CONTEXT_ID, 0X0037,
					os_disabled, NULL); // TODO Change Handle
		} else if (strcmp(input, "help") == 0) {
			print_commands();
		} else {
			fprintf(stderr, "Command not recognized\n");
		}
	}

	plugin_pthread_manager_stop();
	manager_finalize();

	free(input);
	return 0;
}