コード例 #1
0
ファイル: running.c プロジェクト: ens-ds23/fuse8
void run(char *conf_file) {
  struct running rr;
  struct event *sig1_ev,*sig2_ev,*sig_hup;

  evthread_use_pthreads();
  setup_running(&rr);
  register_interface_types(&rr);
  register_source_types(&rr);
  run_config(&rr,conf_file);
  start_stats_timer(&rr);
  
  ref_release(&(rr.ic_running));

  event_add(sq_consumer(rr.sq),0);
  event_add(si_consumer(rr.si),0);
  sq_release(rr.sq);
  evsignal_add(sig1_ev=evsignal_new(rr.eb,SIGINT,user_quit,&rr),0);
  evsignal_add(sig2_ev=evsignal_new(rr.eb,SIGTERM,user_quit,&rr),0);
  evsignal_add(sig_hup=evsignal_new(rr.eb,SIGHUP,hupev,&rr),0);
  rr.sigkill_timer = event_new(rr.eb,-1,EV_PERSIST,sigkill_self,&rr);
  log_info(("Starting event loop"));
  event_base_loop(rr.eb,0);
  log_info(("Event loop finished"));
  event_del(sig1_ev);
  event_del(sig2_ev);
  event_del(sig_hup);
  event_free(sig1_ev);
  event_free(sig2_ev);
  event_free(sig_hup);
  closedown(&rr);
  log_info(("Bye!"));
  config_finished();
}
コード例 #2
0
ファイル: codedb.cpp プロジェクト: PlastecProfiles/CodeDB
int main(int argc, char** argv) {
  auto& main_prof = make_profiler("main");
  profile_start(main_prof);

  try {
    options opt = parse_cmdline(argc, argv);

    switch (opt.m_mode) {
      case options::init:
        init();
        break;
      case options::config:
        run_config(require_codedb_path(opt), opt);
        break;
      case options::build:
        build(require_codedb_path(opt), opt);
        break;
      case options::find:
        find(require_codedb_path(opt), opt);
        break;
      case options::serve:
        serve(require_codedb_path(opt), opt);
        break;
      case options::undefined:
        std::cout << "cdb: '" << opt.m_args[0]
                  << "' is not a cdb-command. See 'cdb --help'.\n";
        break;
      case options::help:
        help(opt);
        break;
      default:
        std::cout << "Not implemented '" << opt.m_args.at(0) << "'\n";
        break;
    }
  }
  catch (const regex_error& error) {
    std::string desc = error.what();
    if (!desc.empty()) desc[0] = std::toupper(desc[0]);

    std::cerr << "Error: invalid regex '" << error.m_expr << "'\n  " << desc
              << '\n';
  }
  catch (const std::exception& e) {
    std::cerr << "Error: " << e.what() << std::endl;
  }

  profile_stop(main_prof);
  profiler_report();
}
コード例 #3
0
ファイル: pwntooth.c プロジェクト: AazibSafi/pwn_plug_sources
int main(int argc, char **argv)
{
	atexit(onExit);

	int count = 0;
	addrs = (char**)calloc(sizeof(char**),100);
	char * log_file = "";
	char * script_file = "/etc/bluetooth/pwntooth.conf";
	char * addr = "";
	int scan_iterations = 0;
	int bool_single_target = 0;
	int i = 1;

	// Check arguments
	while (i < argc) {		
		if (strcmp(argv[i], "-h") == 0) {
			usage();
			return 0;
		} else if (strcmp(argv[i], "-l") == 0) {
			if (++i < argc)
				log_file = argv[i];
		} else if (strcmp(argv[i], "-n") == 0) {
			if (++i < argc) {
				scan_iterations = atoi(argv[i]);
			}
			// Input validation
			if ((scan_iterations < 1)||(scan_iterations > 1000000)) { 
				perror("incorrect number of iterations.  choose a number between 1 and 1,000,000.\n");
				return 1;
			}
		} else if (strcmp(argv[i], "-s") == 0) {
			if (++i < argc)
				script_file = argv[i];
		} else if (strcmp(argv[i], "-t") == 0) {
			if (++i < argc) {
				bool_single_target = 1;
				addr = argv[i];
				// Input validation
				if (strlen(addr) != 17) { 
					perror("incorrect addr format.\n");
					return 1;
				}
			}
		} else {
			usage();
			return 1;
		}
		i++;
	}

	if (bool_single_target) { 
		run_config(addr, log_file, script_file);
	}
	else {
		// Run for a specified number of iterations
		while(count < scan_iterations)
		{
			printf("Scanning ...\n");
			scan(log_file, script_file); 
			count++;
		}	
	}
	return 0;
}
コード例 #4
0
ファイル: pwntooth.c プロジェクト: AazibSafi/pwn_plug_sources
// Scan for available bluetooth devices
int scan(char * log_file, char * filename)
{
	inquiry_info *ii = NULL;
	int max_rsp, num_rsp;
	int dev_id, sock, len, flags;
	int i;
	int t_count;
	char addr[19] = { 0 };

	dev_id = hci_get_route(NULL);
	sock = hci_open_dev( dev_id );

	// Error with opening socket
	if (dev_id < 0 || sock < 0) {
		perror("error: opening socket\n");
		return 1;
	}
	
	len  = 8;
	max_rsp = 255;
	flags = IREQ_CACHE_FLUSH;
	ii = (inquiry_info*)malloc(max_rsp * sizeof(inquiry_info));
	num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, flags);

	// Check for any devices found
	if( num_rsp < 0 ) {
		return 1;
	}
	
	// Cycle through all the addresses found
	for (i = 0; i < num_rsp; i++) {

		char name[248] = { 0 };
		ba2str(&(ii+i)->bdaddr, addr);
		memset(name, 0, sizeof(name));

		// Check for device name
		if (hci_read_remote_name(sock, &(ii+i)->bdaddr, sizeof(name), name, 0) < 0) 
			strcpy(name, "[unknown]");

//		while (hci_read_remote_name(sock, &(ii+i)->bdaddr, sizeof(name), name, 0) < 0) {
//			// Requesting device name
//		}

		int num = 0;
		int matchfound = 0;

		// Check to see if a new device has been discovered
		while (num < numaddrs) { 
			if (strcmp (addr, addrs[num]) == 0) { 
				matchfound = 1;
			}
			num++;
		}

		// Run commands for newly found device address
		if (matchfound == 0) {

			time_stamp(addr, name, log_file);	
			run_config(addr, log_file, filename);

			// Add address to list of discovered devices			
			addrs[numaddrs] = malloc(sizeof addr + 1);
			strcpy(addrs[numaddrs], addr);
			numaddrs++;
		}	
	}
	
	free( ii );
	close( sock );
	return 0;

}
コード例 #5
0
int stw400audioloop (hats_audio_4500_loop action)
{
  int result = PASS;
	uint8_t data,data0;
	uint8_t error1,error2;
   AB8500_version version;
 
  /*********************************************************************/
  /* no loop => reset audio registers */
  /*********************************************************************/
  if(action == HATS_STW4500_LOOP_OFF)
  {
  	// Reset audio part
  	/*error1 = Read4500reg(BLOC_4500_AUDIO, 0x01, &data0);
  	data = (data0 | 0x80);
  	error2 = Write4500reg(BLOC_4500_AUDIO, 0x01, data);

  	error1 = Read4500reg(0x02, 0x00, &data0);
    data = (data0 & 0xFE);
  	error2 = Write4500reg(0x02, 0x00, data);*/
	
	if(action == HATS_STW4500_ANALOGLOOP)
	{
		run_config(AL_Stop);
	}
	else
	{
		run_config(DL_Stop);
	}
	Cur_Loop =  HATS_STW4500_LOOP_OFF; 	
	}
  else
  {
  	// ResetAudn
  	/*error1 = Read4500reg(0x02, 0x00, &data0);
  	
    data = (data0 & 0xFE);
  	error2 = Write4500reg(0x02, 0x00, data);
  	
    data = (data0 | 0x02);
  	error2 = Write4500reg(0x02, 0x00, data);
	*/
  	// Reset audio part
  	/*rror1 = Read4500reg(BLOC_4500_AUDIO, 0x01, &data0);
  	data = (data0 | 0x80);
  	error2 = Write4500reg(BLOC_4500_AUDIO, 0x01, data);
	*/
  	// AudioClk Enable
  	error1 = Read4500reg   (bloc_4500_System_Control_2, 0x0B, &data0);
  	data = (data0 | 0x18);
  	error2 = Write4500reg   (bloc_4500_System_Control_2, 0x0B, data);

  	// Dmics Clk GPIO in output 
   version = Get_AB8500_Version();
 
   if (version == AB8500_VER_V1)
   {
  	error1 = Read4500reg   (0x10, 0x13, &data0);
  	data = (data0 | 0x54);
  	error2 = Write4500reg   (0x10, 0x13, data);
 	 }
  	// Vintcore12
  	error1 = Read4500reg   (0x03, 0x80, &data0);
  	data = (data0 | 0x04);
  	error2 = Write4500reg   (0x03, 0x80, data);
 
  	// Vaudio Enable
  	error1 = Read4500reg   (bloc_4500_Supply_Control_1, 0x83, &data0);
  	data = (data0 | 0x42);
  	error2 = Write4500reg   (bloc_4500_Supply_Control_1, 0x83, data);
    /*********************************************************************/
    /* 4500 digital loop */
    /*********************************************************************/
    if(action == HATS_STW4500_ANALOGLOOP)
    {
      run_config(Analog_loop);
      Cur_Loop =  HATS_STW4500_ANALOGLOOP; 
    }
    /*********************************************************************/
    /* digital loop */
    /*********************************************************************/
    else if(action == HATS_STW4500_DIGITALLOOP)
    {

      if(  (Cur_Out_Organ <NB_OF_OUTPUT) && (Cur_In_Organ <NB_OF_INPUT)
         &&(Digital_loop_configs[Cur_Out_Organ][Cur_In_Organ] != NULL))
      {
		run_config(Digital_loop_configs[Cur_Out_Organ][Cur_In_Organ] );
 
        printf(" run config IN: %x/OUT: %x\n",Cur_In_Organ,Cur_Out_Organ);
      }
      else
      {
        /* error */
        printf(" config IN: %x/OUT: %x not supported => select another IN or/and OUT\n",Cur_In_Organ,Cur_Out_Organ);
        result = FAIL;
      }
      Cur_Loop =  HATS_STW4500_DIGITALLOOP; 
    }
    else
    {
      /* error */
      result = HATS_AUDIO_INVALID_PARAMETER;
      printf(" BAD VERSION\n");
  
    }
  }
  
  return result;

}