예제 #1
0
파일: search.c 프로젝트: hughbarney/femto
void search()
{
	int cpos = 0;
	int c;
	point_t o_point = curbp->b_point;
	point_t found;

	searchtext[0] = '\0';
	display_prompt_and_response(m_sprompt, searchtext);
	cpos = strlen(searchtext);

	for (;;) {
		c = getch();
		/* ignore control keys other than C-g, backspace, CR,  C-s, C-R, ESC */
		if (c < 32 && c != 07 && c != 0x08 && c != 0x13 && c != 0x12 && c != 0x1b)
			continue;

		switch(c) {
		case 0x1b: /* esc */
			searchtext[cpos] = '\0';
			flushinp(); /* discard any escape sequence without writing in buffer */
			return;

		case 0x07: /* ctrl-g */
			curbp->b_point = o_point;
			return;

		case 0x13: /* ctrl-s, do the search */
			found = search_forward(searchtext);
			display_search_result(found, FWD_SEARCH, m_sprompt, searchtext);
			break;

		case 0x12: /* ctrl-r, do the search */
			found = search_backwards(searchtext);
			display_search_result(found, REV_SEARCH, m_sprompt, searchtext);
			break;

		case 0x7f: /* del, erase */
		case 0x08: /* backspace */
			if (cpos == 0)
				continue;
			searchtext[--cpos] = '\0';
			display_prompt_and_response(m_sprompt, searchtext);
			break;

		default:
			if (cpos < STRBUF_M - 1) {
				searchtext[cpos++] = c;
				searchtext[cpos] = '\0';
				display_prompt_and_response(m_sprompt, searchtext);
			}
			break;
		}
	}
}
예제 #2
0
void display_search_result(const SEARCH_RESULT_T *result)
{
	if(!result)
		return;

	if(result->next_result)
	{
		display_search_result(result->next_result);
	}

	printf("========search result start=========\n");
	printf("mac: \t%s\n", result->mac);
	printf("version: \t%s\n",result->version);
	printf("dest_ip: \t%s\n", result->dest_ip);
	printf("local_ip: \t%s\n", result->local_ip);
	printf("gateway: \t%s\n", result->gateway);
	printf("mask_ip: \t%s\n", result->mask_ip);
	printf("local port: \t%d\n", result->local_port);
	printf("dest port: \t%d\n", result->dest_port);
	printf("work mode: \t%d\n", result->work_mode);
	printf("bit rate: \t%d\n", result->bit_rate);
	printf("com flag: \t%d\n", result->com_flag);
	printf("id: \t%d\n", result->id);
	printf("next_result_pointer: \t0x%016llX\n", (unsigned long long)(result->next_result->mac));
	printf("========search result end =========\n");

}
예제 #3
0
/************************************
*	usage
*
*	1. usage of search mrr device
*	2. usage of configure mrr device
*
************************************/	
int usage_search()
{
	int ret = 0;

	//you must declare a pointer to SEARCH_RESULT_T firstly
	SEARCH_RESULT_T *presult = NULL;

	//call search_mrr_device() to search, the result will be saved in struct presult
	ret = search_mrr_device(&presult);


	/////////////////////////////////////////////////////////////////
	//模拟搜索出多个设备
	/*
	SEARCH_RESULT_T result2 = {0};
	memcpy(&result2, presult, sizeof(SEARCH_RESULT_T));
	sprintf(result2.mac, "%s", "12-23-34-45-56-67");
	result2.com_flag = 5;
	result2.bit_rate = 11200;
	add_result_to_list(&presult, &result2);

	SEARCH_RESULT_T result3 = {0};
	memcpy(&result3, &result2, sizeof(SEARCH_RESULT_T));
	result3.com_flag = 6;
	result3.bit_rate = 9760;
	add_result_to_list(&presult, &result3);
	add_result_to_list(&presult, &result3);
	*/
	/////////////////////////////////////////////////////////////////

	//output the search result on screen
	display_search_result(presult);

	//you must call safe_delete_search_result() to delete the pointer lastly
	safe_delete_search_result(presult);

	return ret;
}