コード例 #1
0
ファイル: csv.cpp プロジェクト: nsan-jp/libcsv
void csv::init_fields() {
  _lines = -1;
  eod = false;
  data_buffer = (char*)malloc(BUF_SIZE);
  data_buffer_size = BUF_SIZE;
  init_data_buffer();
}
コード例 #2
0
ファイル: csv.cpp プロジェクト: nsan-jp/libcsv
void csv::to_csv(vector<string>& row, string& ret, bool crlf, bool empty_field_to_null) {
  unsigned i,j;
  init_data_buffer();
  for(i = 0; i < row.size(); i++) {
    if (i > 0) {
      add_char_to_data_buffer(',');
    }
    if (empty_field_to_null && row[i].size() == 0) {
      continue;
    }
    add_char_to_data_buffer('\"');
    for(j = 0; j < row[i].size(); j++) {
      char v = row[i].at(j);
      if (v == '\"') {
        add_char_to_data_buffer(v);
      }
      add_char_to_data_buffer(v);
    }
    add_char_to_data_buffer('\"');
  }
  if (crlf) {
    add_char_to_data_buffer('\r');
  }
  add_char_to_data_buffer('\n');
  ret.append(data_buffer);
}
コード例 #3
0
ファイル: client.c プロジェクト: Alibaba-boonya/mile
struct data_buffer* gen_stat_packet(char* cmd,uint8_t* type,MEM_POOL* mem_pool)
{
	char* table_name = NULL;
	char* token = NULL;
	uint32_t tblen;
	
	if((table_name = strtok(NULL," ")) == NULL) 
		return NULL;
	tblen = strlen(table_name);

	if((token = strtok(NULL," ")) == NULL)
		return NULL;
	*type = atoi(token);

	struct data_buffer *dbuf = init_data_buffer();
	size_t data_len = tblen +  5 * sizeof(uint8_t) + MESSAGE_HEAD_LEN + 2*sizeof(uint32_t);
	databuf_resize(dbuf, data_len);
	
	//写入数据长度
	write_int32(data_len,dbuf);

	write_int8(1, dbuf);
	write_int8(1, dbuf);
	write_int16(MT_CD_STAT, dbuf);
	write_int32(0, dbuf);
	//timeout
	write_int32(0, dbuf);

	//拼接协议包
	write_int32(tblen,dbuf);
	write_bytes((uint8_t*)table_name,tblen,dbuf);

	write_int8(*type,dbuf);
	return dbuf;
}
コード例 #4
0
ファイル: client.c プロジェクト: Alibaba-boonya/mile
struct data_buffer* gen_set_load_threshold_packet(char* cmd,MEM_POOL* mem_pool)
{
	struct data_buffer *dbuf = init_data_buffer();
	size_t data_len = MESSAGE_HEAD_LEN + 2*sizeof(uint32_t) + sizeof(double);
	databuf_resize(dbuf, data_len);
	
	//写入数据长度
	write_int32(data_len,dbuf);

	write_int8(1, dbuf);
	write_int8(1, dbuf);
	write_int16(MT_CD_EXE_SET_LOAD_THRESHOLD, dbuf);
	write_int32(0, dbuf);
	//timeout
	write_int32(0, dbuf);

	char *value_str = strtok(NULL, " ");
	if (!value_str)
		return NULL;

	double value = atof(value_str);
	write_bytes((uint8_t *)&value, sizeof(value), dbuf);

	return dbuf;
}
コード例 #5
0
ファイル: convert_font.c プロジェクト: C0DEHERO/swc
int main(int argc, char *argv[])
{
	if (argc != 3) {
		fprintf(stderr, "Usage: %s input.pcf output.h\n", argv[0]);
		return EXIT_FAILURE;
	}

	int fd = open(argv[1], O_RDONLY);
	struct stat filestat;

	fstat(fd, &filestat);

	void *fontbuf = mmap(NULL, filestat.st_size, PROT_READ,
			     MAP_PRIVATE, fd, 0);

	handle_pcf(fontbuf);

	init_data_buffer();

	FILE *file = fopen(argv[2], "w");
	output_interesting_cursors(file);
	fclose(file);

	return EXIT_SUCCESS;
}
コード例 #6
0
ファイル: client.c プロジェクト: Alibaba-boonya/mile
struct data_buffer* gen_ensure_index_packet(char* cmd,MEM_POOL* mem_pool)
{
	char* table_name = NULL;
	char* field_name = NULL;
	uint32_t tblen;
	uint32_t fdlen;
	char* token;
	enum index_key_alg index_type;
	enum field_types data_type;
	
	if((table_name = strtok(NULL," ")) == NULL) 
		return NULL;
	
	if((field_name = strtok(NULL," ")) == NULL) 
		return NULL;

	if((token = strtok(NULL," ")) == NULL)
		return NULL;
	index_type = (index_key_alg)atoi(token);
	if(index_type > 0xff)
		return NULL;

	if((token = strtok(NULL," ")) == NULL)
		return NULL;
	data_type = (enum field_types)atoi(token);
	if(data_type > 0xff)
		return NULL;

	tblen = strlen(table_name);
	fdlen = strlen(field_name);

	struct data_buffer *dbuf = init_data_buffer();
	size_t data_len = tblen + fdlen + 10 * sizeof(uint8_t) + MESSAGE_HEAD_LEN + 2*sizeof(uint32_t);
	databuf_resize(dbuf, data_len);

	//写入数据长度
	write_int32(data_len,dbuf);

	write_int8(1, dbuf);
	write_int8(1, dbuf);
	write_int16(MT_CD_EXE_INDEX, dbuf);
	write_int32(0, dbuf);
	//timeout
	write_int32(0, dbuf);

	//拼接协议包
	write_int32(tblen,dbuf);
	write_bytes((uint8_t*)table_name,tblen,dbuf);
	
	write_int32(fdlen,dbuf);
	write_bytes((uint8_t*)field_name,fdlen,dbuf);

	write_int8(index_type,dbuf);
	write_int8(data_type,dbuf);

	return dbuf;
}
コード例 #7
0
ファイル: csv.cpp プロジェクト: nsan-jp/libcsv
bool csv::next_row(vector<string>& row) {
  if (!ds->open()) {
    return false;
  }
  if (!has_more_row()) {
    return true;
  }
  init_data_buffer();
  int state = CONTROL;
  int column_mode = NO_QUOTED_COLUMN;
  for(;;) {
    int c = ds->getc(false);
    if (c == '\"') {
      if ((column_mode == NO_QUOTED_COLUMN && state != CONTROL) || state == QUOTED) {
        add_char_to_data_buffer(c);
        state = COLUMN;
      } else if (state == COLUMN) {
        state = QUOTED;
      } else if (state == CONTROL) {
        state = COLUMN;
        column_mode = QUOTED_COLUMN;
      }
    } else if (c == ',') {
      if (column_mode == NO_QUOTED_COLUMN || state == QUOTED) {
        flush_field(row);
        state = CONTROL;
        column_mode = NO_QUOTED_COLUMN;
      } else {
        add_char_to_data_buffer(c);
      }
    } else if (c == '\n' || c == EOF) {
      if (column_mode == NO_QUOTED_COLUMN || state == QUOTED) {
        if (c == '\n' && data_buffer[data_buffer_pos] == '\r') {
          data_buffer[data_buffer_pos] = 0;
        }
        flush_field(row);
        return true;
      } else if (state == COLUMN && c != EOF) {
        add_char_to_data_buffer(c);
      } else if (c == EOF) {
        eod = true;
        return true;
      }
    } else {
      if (state == CONTROL) {
        column_mode = NO_QUOTED_COLUMN;
        state = COLUMN;
      }
      add_char_to_data_buffer(c);
    }
  }
}
コード例 #8
0
ファイル: protocol.cpp プロジェクト: Alibaba-boonya/mile
struct mile_packet* init_mile_packet(int32_t socket_fd, struct event* event) {
	struct mile_packet* packet = (struct mile_packet*) malloc(
			sizeof(struct mile_packet));

	if (packet == NULL) {
		log_error("初始化mile packet时申请内存失败!");
		return NULL;
	}

	packet->socket_fd = socket_fd;
	packet->event = event;
	packet->launch_time = get_time_usec();
	packet->start_process_time = 0;
	packet->in_send_queue_time = 0;
	packet->out_send_queue_time = 0;
	packet->rbuf = init_data_buffer();
	packet->sbuf = init_data_buffer();
	packet->flags = -1;
	INIT_LIST_HEAD(&packet->packet_list);

	return packet;
}
コード例 #9
0
ファイル: ping6.c プロジェクト: DanielMSchmidt/it-sec
int
main (int argc, char **argv)
{
  int index;
  int status = 0;

  set_program_name (argv[0]);
  
  if (getuid () == 0)
    is_root = true;

  /* Parse command line */
  iu_argp_init ("ping6", program_authors);
  argp_parse (&argp, argc, argv, 0, &index, NULL);

  ping = ping_init (0, getpid ());
  if (ping == NULL)
    /* ping_init() prints our error message.  */
    exit (1);

  setsockopt (ping->ping_fd, SOL_SOCKET, SO_BROADCAST, (char *) &one, sizeof (one));

  /* Reset root privileges */
  setuid (getuid ());

  argc -= index;
  argv += index;

  if (count != 0)
    ping_set_count (ping, count);

  if (socket_type != 0)
    ping_set_sockopt (ping, socket_type, &one, sizeof (one));

  if (options & OPT_INTERVAL)
    ping_set_interval (ping, interval);

  init_data_buffer (patptr, pattern_len);

  while (argc--)
    {
      status |= ping_echo (*argv++);
      ping_reset (ping);
    }

  return status;
}
コード例 #10
0
ファイル: client.c プロジェクト: Alibaba-boonya/mile
struct data_buffer* gen_load_packet(char* cmd,MEM_POOL* mem_pool)
{
	char* table_name = NULL;
	char* segment_dir = NULL;
	char* token = NULL;
	uint32_t tblen;
	uint32_t dirlen;
	uint16_t sid;
	
	if((table_name = strtok(NULL," ")) == NULL) 
		return NULL;
	tblen = strlen(table_name);

	if((token = strtok(NULL," ")) == NULL)
		return NULL;
	sid = atoi(token);

	if((segment_dir = strtok(NULL," ")) == NULL) 
		return NULL;

	dirlen = strlen(segment_dir);

	struct data_buffer *dbuf = init_data_buffer();
	size_t data_len = tblen + dirlen + 10 * sizeof(uint8_t) + MESSAGE_HEAD_LEN + 2*sizeof(uint32_t);
	databuf_resize(dbuf, data_len);
	
	//写入数据长度
	write_int32(data_len,dbuf);

	write_int8(1, dbuf);
	write_int8(1, dbuf);
	write_int16(MT_CD_EXE_LOAD, dbuf);
	write_int32(0, dbuf);
	//timeout
	write_int32(0, dbuf);

	//拼接协议包
	write_int32(tblen,dbuf);
	write_bytes((uint8_t*)table_name,tblen,dbuf);
	
	write_int16(sid,dbuf);
	write_int32(dirlen,dbuf);
	write_bytes((uint8_t*)segment_dir,dirlen,dbuf);

	return dbuf;
}
コード例 #11
0
ファイル: ping.c プロジェクト: millken/zhuxianB30
int
ping_main (struct Ping_Options *Ping_Opt)
{
  int one = 1;
  int ret = 0;

  if (getuid () == 0)
    is_root = true;

  /* Parse command line */
  parse_opt(Ping_Opt);
  
  ping = ping_init (ICMP_ECHO, getpid ());
  if (ping == NULL)
    /* ping_init() prints our error message.  */
    exit (1);

  ping_set_sockopt (ping, SO_BROADCAST, (char *) &one, sizeof (one));

  /* Reset root privileges */
  setuid (getuid ());

  if (count != 0)
    ping_set_count (ping, count);

  if (socket_type != 0)
    ping_set_sockopt (ping, socket_type, &one, sizeof (one));

  if (options & OPT_INTERVAL)
    ping_set_interval (ping, interval);

  init_data_buffer (patptr, pattern_len);
  ret = ping_echo (Ping_Opt->Host);

  Ping_Opt->SuccessCount = ping->ping_num_recv;
  Ping_Opt->FailureCount = ping->ping_num_xmit - ping->ping_num_recv;
  Ping_Opt->AverageResponseTime = ping->avg_time;
  Ping_Opt->MaximumResponseTime = ping->max_time;
  Ping_Opt->MinimumResponseTime = ping->min_time;

  free (ping);
  free (data_buffer);
  
  return ret;
}
コード例 #12
0
ファイル: client.c プロジェクト: Alibaba-boonya/mile
struct data_buffer* gen_checkpoint_packet(char* cmd,MEM_POOL* mem_pool)
{
	struct data_buffer *dbuf = init_data_buffer();
	size_t data_len = MESSAGE_HEAD_LEN + 2*sizeof(uint32_t);
	databuf_resize(dbuf, data_len);
	
	//写入数据长度
	write_int32(data_len,dbuf);

	write_int8(1, dbuf);
	write_int8(1, dbuf);
	write_int16(MT_CD_EXE_CP, dbuf);
	write_int32(0, dbuf);
	//timeout
	write_int32(0, dbuf);

	return dbuf;
}
コード例 #13
0
ファイル: client.c プロジェクト: Alibaba-boonya/mile
struct data_buffer* gen_get_load_threshold_packet(char* cmd,MEM_POOL* mem_pool)
{
	struct data_buffer *dbuf = init_data_buffer();
	size_t data_len = MESSAGE_HEAD_LEN + 2*sizeof(uint32_t);
	databuf_resize(dbuf, data_len);
	
	//写入数据长度
	write_int32(data_len,dbuf);

	write_int8(1, dbuf);
	write_int8(1, dbuf);
	write_int16(MT_CD_EXE_GET_LOAD_THRESHOLD, dbuf);
	write_int32(0, dbuf);
	//timeout
	write_int32(0, dbuf);

	return dbuf;
}
コード例 #14
0
ファイル: convert_font.c プロジェクト: Lyude/wayland
int main()
{
	const char filename[] = "cursor.pcf";

	int fd = open(filename, O_RDONLY);
	struct stat filestat;

	fstat(fd, &filestat);

	void *fontbuf = mmap(NULL, filestat.st_size, PROT_READ,
			     MAP_PRIVATE, fd, 0);

	handle_pcf(fontbuf);

	init_data_buffer();

	//output_all_cursors();
	output_interesting_cursors();
}
コード例 #15
0
TEST(DATA_BUFFER_TEST, READ_AND_WRITE){

	MEM_POOL_PTR pMemPool = mem_pool_init(MB_SIZE);
	struct data_buffer* buffer = init_data_buffer();
	buffer->data_len = 256;
	buffer->data = (uint8*) mem_pool_malloc(pMemPool, 256);

	uint8 tmp8;
	uint16 tmp16;
	uint32 tmp32;
	uint64 tmp64;

	char* str = (char*) mem_pool_malloc(pMemPool, 100);
	char* result = (char*) mem_pool_malloc(pMemPool, 100);
	strcpy(str, "hello world!");

	
	write_int8(122, buffer);
	write_int16(1111, buffer);
	write_int32(324, buffer);
	write_int64(2321, buffer);
	write_bytes((uint8*)str, strlen(str)+1, buffer);

	

	tmp8 = read_int8(buffer);
	ASSERT_EQ(tmp8, 122);
	tmp16 = read_int16(buffer);
	ASSERT_EQ(tmp16, 1111);
	tmp32 = read_int32(buffer);
	ASSERT_EQ(tmp32, 324);
	tmp64 = read_int64(buffer);
	ASSERT_EQ(tmp64, 2321);

	read_bytes(buffer, (uint8*)result, strlen(str)+1);
	ASSERT_EQ(0, strcmp(str, result));

	destroy_data_buffer(buffer);
	mem_pool_destroy(pMemPool);
}
コード例 #16
0
ファイル: client.c プロジェクト: Alibaba-boonya/mile
struct data_buffer *gen_ldb_control_packet(char *cmd, MEM_POOL *mem_pool)
{
	// make cmd to full command
	while (strtok(NULL, " "));

	struct data_buffer *dbuf = init_data_buffer();

	// header
	write_int32(0, dbuf);
	write_int8(1, dbuf);
	write_int8(1, dbuf);
	write_int16(MT_CD_EXE_LDB_CONTROL, dbuf);
	write_int32(0, dbuf);
	//timeout
	write_int32(0, dbuf);

	write_int32(strlen(cmd), dbuf);
	write_bytes((uint8_t *)cmd, strlen(cmd), dbuf);

	fill_int32(dbuf->data_len, dbuf, 0);

	return dbuf;
}
コード例 #17
0
ファイル: csv.cpp プロジェクト: nsan-jp/libcsv
void csv::flush_field(vector<string>& row) {
  row.push_back(string(data_buffer));
  init_data_buffer();
}
コード例 #18
0
ファイル: pwc.c プロジェクト: rfajardo/devmech
int main(int argc, char *argv[])
{
	int i, iRet = 0;
	struct pwcmech * pwcmech;

	//
	// Signal Handling
	//
	sigset_t block_no_signals;
	sigemptyset(&block_no_signals);


	struct sigaction pwc_sig_handler;
	struct sigaction standard_sig_handler;
	struct sigaction video_io_sig_handler;

	pwc_sig_handler.sa_flags = 0;
	pwc_sig_handler.sa_handler = &sig_handler;

	sigaction(SIGINT, &pwc_sig_handler, &standard_sig_handler);
	sigaction(SIGTERM, &pwc_sig_handler, &standard_sig_handler);

	video_io_sig_handler.sa_flags = 0;
	video_io_sig_handler.sa_handler = &ioctl_callback;
	sigaction(SIGIO, &video_io_sig_handler, &standard_sig_handler);


	//
	// Userspace Driver Interfaces
	//
	struct devClass * video_dev;
	struct images * p_img;


	//
	// Buffering Initialization
	//
	printf("Allocating buffers...");
	frames = alloc_buffers();
	if ( frames == NULL )
	{
		printf("failed?!\n");
		goto finish;
	}
	init_data_buffer(frames);
	printf("done!\n");


	//
	// Device Initialization
	//
	printf("Create camera device...");
	pwcmech = pwc_devmech_start();
	if ( pwcmech_register_driver(pwcmech) )
	{
		printf("failed?!\n");
		goto release_buffers;
	}
	printf("done!\n");

	printf("Initialize camera device...");
	if ( pwcmech_register_handler(pwcmech) )
	{
		perror("Failed opening camera device");
		printf("failed?!\n");
		goto stop_usb;
	}
	printf("done!\n");

	printf("Set camera's video mode...");
	//if_claim should work seamslessly somehow
	iRet = usb_if_claim(pwcmech->com, pwcmech->com->standard_descriptors.highspeed.cameraStream.cameraStreamConf);
	if ( iRet )
	{
		perror("Failed setting camera's video mode");
		printf("failed?!\n");
		goto close_camera;
	}
	iRet = setVideoMode(pwcmech, 9);	//still old way, pre-setting instead of from V4L
	if ( iRet )
	{
		perror("Failed setting camera's video mode");
		printf("failed?!\n");
		goto close_camera;
	}
	set_ctrl0_timeout(pwcmech->com, 1000);
	setLeds(pwcmech, 0,0);	//don't bother with the light
	iRet = sendVideoCommand(pwcmech, video_mode_string, VIDEO_MODE_STRING_LEN);
	if ( iRet )
	{
		perror("Failed setting camera's video mode");
		printf("failed?!\n");
		goto close_camera;
	}
	printf("done!\n");


	//
	// Decompression
	//
	printf("Initializing decompression system...");
	p_img = alloc_images();
	if ( p_img == NULL )
	{
		printf("failed?!\n");
		goto close_camera;
	}
	if ( ( iRet = init_images(p_img) ) )
	{
		printf("failed?!\n");
		goto free_p_img;
	}
	printf("done!\n");

#ifndef NO_IMG
	//
	// Open video pipe
	//
	printf("Opening the video pipe (vl4 device emulation)...");
	video_dev = alloc_devClass();
	if ( video_dev == NULL )
	{
		printf("failed?!\n");
		goto free_p_img;
	}
	p_img->img_buf = init_devClass(video_dev, argv[1], p_img);
	if ( p_img->img_buf == NULL )
	{
		perror("Initializing device class failed");
		printf("failed?!\n");
		printf("Did you input the device path, \"/dev/video0\"?\"\n\n\n");
		goto free_video_dev;
	}
	printf("done!\n");
#endif

	//
	//	ISO transfers
	//
	printf("Create USB isochronous transfers...");
	for (i = 0; i < ISO_BUFFERS_NR; i++)
	{
		iRet = assignVideoBuffer(pwcmech, frames->iso_buffer[i], ISO_BUFFER_SIZE);
		if (iRet)
		{
			perror("Failed creating image transfer");
			printf("failed?!\n");
			goto unregister_buffers;
		}
	}
	printf("done!\n");


	//
	// Threads
	//
	printf("Set-up threads...");
	int active_threads = 0;
	pthread_t threads[NUM_THREADS];

	pthread_attr_t attr;
	pthread_attr_init(&attr);
	pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);

	struct acqArg * acq_arg;
	acq_arg = malloc(sizeof(struct acqArg));
	if ( acq_arg == NULL )
	{
		printf("failed?!\n");
		goto close_threads;
	}
	acq_arg->abort = &thread_abort;
	acq_arg->pwcmech = pwcmech;

	struct imgArg * img_arg;
	img_arg = malloc(sizeof(struct imgArg));
	if ( img_arg == NULL )
	{
		printf("failed?!\n");
		goto close_threads;
	}
	img_arg->frames = frames;
	img_arg->p_img = p_img;
	img_arg->video_pipe = video_dev;
	img_arg->capture = 0;
	img_arg->abort = &thread_abort;
	printf("done!\n");


	//
	//	MAIN
	//
	printf("Registering callback function for Isochronous transfer...");
	setPower(pwcmech, 0);		//enable camera (our state machine discovered that this was missing)
	registerVideoCallback(pwcmech, acquire_frame, pwcmech);
	if ( acknowledgeVideoCallback(pwcmech) )
		goto close_threads;
	printf("done!\n");

#ifndef NO_COM
	printf("Creating the data acquisition thread...");
	if ( ( iRet = pthread_create(&threads[active_threads], &attr, process_usb, (void *)acq_arg) ) )
	{
		printf("failed?!\n");
		goto stop_camera;
	}
	active_threads++;
	printf("done!\n");
#endif

#ifndef NO_IMG
	printf("Creating the image fill thread...");
	if ( ( iRet = pthread_create(&threads[active_threads], &attr, fillImageData, (void *)img_arg) ) )
	{
		printf("failed?!\n");
		goto stop_camera;
	}
	active_threads++;
	printf("done!\n");
#endif

	while (!op_abort)
	{
//		sigsuspend(&block_no_signals);
		if ( ioctl_call )
		{
			devClass_ioctl(video_dev, &img_arg->capture);
			ioctl_call = 0;
		}
	}


	//
	//	~MAIN
	//

stop_camera:
	printf("Releasing video callback...");
	releaseVideoCallback(pwcmech);
	printf("done!\n");
	printf("Unregistering buffers...");
	unassignVideoBuffers(pwcmech);
	printf("done!\n");

close_threads:
	printf("Closing all threads...");
	thread_abort = 1;
	for ( i = 0; i < active_threads; i++)
		pthread_join(threads[i], NULL);

	free(acq_arg);
	free(img_arg);

	pthread_attr_destroy(&attr);
	printf("done!\n");

unregister_buffers:
	printf("Unregistering buffers if not done before...");
	unassignVideoBuffers(pwcmech);
	printf("done!\n");

free_video_dev:
#ifndef NO_IMG
	printf("Closing video pipe...");
	close_devClass(video_dev);
	free_devClass(video_dev);
	printf("done!\n");
#endif

free_p_img:
	printf("Releasing decompression system...");
	free_images(p_img);
	printf("done!\n");
	usb_release_interface(pwcmech->com, pwcmech->com->standard_descriptors.highspeed.cameraStream.cameraStreamConf);

close_camera:
	printf("Close camera device...");
	pwcmech_deregister_handler(pwcmech);
	printf("done!\n");

stop_usb:
	printf("Stopping USB interface...");
	pwcmech_deregister_driver(pwcmech);
	printf("done!\n");

release_buffers:
	pwc_devmech_stop(pwcmech);
	//release buffers, they are linked to the camera device
	//so only release them after releasing the camera
	printf("Releasing buffers...");
	free_buffers(frames);
	printf("done!\n");

finish:
	return 0;
}