Exemplo n.º 1
0
int init_sockets_library( void )
{
#ifdef _WIN32
	int res;

	res = WSAStartup( WSOCK_VERSION, &wsa_data);
	if (res < 0)
	{
		cout << "Error starting Winsock 1.1: " << res << endl;
		return -1;
	}
#endif

    if (gethostname( hostname, sizeof hostname ))
    {
        cout << "gethostname failed: " << socket_errno << endl;
    }
    search_name( hostname );

#ifdef __unix__
    uname( &my_utsname );
    search_name( my_utsname.nodename );
#endif

	return 0;
}
Exemplo n.º 2
0
char * get_nick(puser users, int sock, char buffer[]) {
	char * nickname = malloc(MAXLEN);
	char * nick_request =
			"[Server] : Please specify a nickname (/nick your_nick) \n";
	char * welcome = malloc(MAXLEN);
	memset(buffer, 0, MAXLEN);
	memset(nickname, 0, MAXLEN);

	while (1) {
		do_write(sock, nick_request);
		memset(buffer, 0, MAXLEN);
		do_read(sock, buffer);
		if (strncmp(buffer, "/nick ", 6) == 0) {
			sscanf(buffer, "/nick %s", nickname);
		}
		if (search_name(users, nickname) == -1) {
			break;
		}
		do_write(sock, "[Server] : Nickname already taken or incorrect \n");
	}

	sprintf(welcome, "[Server] : Welcome to the chat %s\n", nickname);
	do_write(sock, welcome);

	return nickname;
}
Exemplo n.º 3
0
void search()  /*查询函数*/
{
	int t,flag;
	do
	{
		printf("\n按学号查询请按1;按姓名查询请按2;进入主函数按3\n");
		scanf("%d",&t);
		if(t>=1&&t<=3)
		{
			flag=1;
			break;
		}
		else
		{
			flag=0;
			printf("您输入有误,请重新选择!");
		}
	}
	while(flag==0);
	while(flag==1);
	{
		switch(t)
		{
		case 1:printf("按学号查询\n");search_num();break;
		case 2:printf("按姓名查\n");search_name();break;
		case 3:main();break;
		default:break;
		}
	}
}
Exemplo n.º 4
0
void search()
{
  int sh;
  clrscr();
	  design();
	  gotoxy(17,6);
	  printf("\xDB\xDB\xB2  Two options available to search \xB2\xDB\xDB");
	  gotoxy(15,9);
	  printf("[ 1 ]  -  Search by ID number   .");
	  gotoxy(15,11);
	  printf("[ 2 ]  -  Search by Description .");
	  gotoxy(17,15);
	  printf("Enter your choice:: ");
	  sh=toupper(getch());

  switch(sh)
  {
    case '1':
    search_id();
    break;

    case '2':
    search_name();
    break;

    default:
    gotoxy(18,18);
    printf("\a\xDB\xDB wrong entry try again");
    getch();
   }
  getche();

}
Exemplo n.º 5
0
int main() 
{   
    setlocale(LC_ALL, "Ukr");
	char c;
 	if ((f_worker=fopen(file_name,"rb+"))==NULL)
 	{
 	if ((f_worker=fopen(file_name,"wb+"))==NULL)
 	{
 		cout<<"Неможливо створити файл запису бази даних працiвникiв !"<<endl;
 		return -1;
	}
		cout<<" Створено новий файл бази даних працiвникiв !"<<endl;
 	}
 	do
 	{
 		cout<<"Виберiть режим роботи"<<endl;
 		cout<<"1 - Ввiд працiвника"<<endl;
 	    cout<<"2 - Пошук за iменем"<<endl;
		cout<<"3 - Пошук за телефоном"<<endl;
        cout<<"4 - Показати всю базу"<<endl;
        cout<<"5 - Очистка бази баних"<<endl;
    	cout<<"0 - Вивiд"<<endl;
    	
 		c=getch();
 		switch(c)
 		{
		    case '0': cout<<"Роботу завершено"<<endl; fclose(f_worker); return 0;
 		 	case '1': input_worker(); break;
 	 		case '2': search_name(); break;
		    case '3': search_number(); break;
  		 	case '4': show_all(); break;
   			case '5': clear_file(); break;
 	 	}
 	} while (1);	
}
/* target_rtype should be either RT_A6 or RT_AAAA */
void conv_trick_list (G_List *rrsl, int target_rtype, int add) {
	const char *fn = "conv_trick_list()";
	RRset *rrsp, *rrsp_aaaa;
	u_char str[MAX_DNAME];
	G_List *gl;

	syslog (LOG_DEBUG, "%s: start", fn);

	rrsl->list_data = NULL;
	for (gl = rrsl->next; gl->list_data; gl = gl->next) {
		RRset *dup;
		char *name;
		int len;

		rrsp = (RRset *) gl->list_data;
		if (rrsp->key.info->r_type != RT_A)
			continue;

		name = rrset_owner(rrsp);
		len = rrsp->key.info->owner_len;

		dup = search_name(rrsl, name, len, target_rtype);
		if (dup) {
			if (T.debug > 3) {
				dname_decompress (str, MAX_DNAME, name, 0,0,0);
				syslog (LOG_DEBUG, "%s: duplicate %s", fn, str);
			}
			rrset_free(dup);
			continue;
		}

		/* convert A record into faked target_rtype record */
		if (T.debug > 3) {
			dname_decompress (str, MAX_DNAME, name, 0,0,0);
			syslog (LOG_DEBUG, "%s: converting: %s", fn, str);
		}
		rrsp_aaaa = conv_trick_rrset(rrsp, target_rtype,
					     T.current_prefix);
		if (!rrsp_aaaa) {
			syslog (LOG_ERR, "%s: Can't convert A to AAAA", fn);
			continue;
		}

		if (T.debug) {
			dname_decompress (str, MAX_DNAME, name, 0,0,0);
			syslog (LOG_DEBUG, "%s: %s %s", fn,
				add ? "add" : "replace by", str);
		}

		if (add) {
			list_add (rrsl, rrsp_aaaa);
		} else {
			rrset_free (rrsp);
			gl->list_data = rrsp_aaaa;
		}
	}

	return;
}
Exemplo n.º 7
0
int main(int argc, char **argv) {
	
	int entryCount = 0;
	char command[7];
	char commandArg[33];
	
	//read entries from file into dynamically allocated memory
	read_file();
	
	printf("Welcome to Nikola T's telephone book!\n");
	while (1) {
		//Provide menu of commands
		printf("\nCurrent number of entries: %i\n", entryCount);
		printf("Commands: add, search, delete, exit\n: ");
		
		//accept command
		memset(command, 0, 7);
		scanf("%s", command);
		printf("Read:%s:\n", command);
		
		//call relevant function
		if (!strcmp(command, "add")) {
			//add case
			printf("add command!\n");
			scanf("%s", commandArg);
			printf("Read:%s:\n", commandArg);
		} else if (!strcmp(command, "search")) {
			int number = 0;
			
			//search case
			printf("search command!\nName or number: ");
			scanf("%s", commandArg);
			printf("Read1:%s:\n", commandArg);
			
			//Figure if it's a name search or a number search
			if (isdigit(commandArg[0]) > 0) {
				printf("Read2:%s:\n", commandArg);
				number = atoi(commandArg);
				printf("Read3:%s:\n", commandArg);
				search_number(number);
			} else {
				search_name(commandArg);
			}
		} else if (!strcmp(command, "delete")) {
			//delete case
			printf("delete command!\n");
			scanf("%s", commandArg);
			printf("Read:%s:\n", commandArg);
		} else if (!strcmp(command, "exit")) {
			return 0;
		} else {
			printf("something broke!\n");
		}
	}
}
Exemplo n.º 8
0
void search_func(MENU_TYPE funcNum, pUSR_INFOR phead_infor)
{
	if(funcNum == 0)
		search_all(phead_infor);
	if(funcNum == 1)
		search_name(phead_infor);
	if(funcNum == 2)
		search_id(phead_infor);
	if(funcNum == 3)
		return;
}
Exemplo n.º 9
0
static int search_cb(search_t *search, search_event_t *evt, void *udata)
{
    batch_decoder_t *bd = (batch_decoder_t *) udata;
    dict_t *d = search_factory_d2p(bd->sf)->dict;
    double delta = get_time_delta(bd);
    double frate = cmd_ln_int32_r(search_config(search), "-frate");
    FILE *hypfh = NULL;
    void *val;

    if (hash_table_lookup(bd->hypfiles, search_name(search), &val) == 0)
        hypfh = val;
    else
        hypfh = stdout;
    fprintf(hypfh, "time delta %f ", delta);
    switch (evt->event) {
        case SEARCH_PARTIAL_RESULT: {
            int32 score;
            seg_iter_t *seg = search_seg_iter(search, &score);
            fprintf(hypfh, "partial: ");
            for (; seg; seg = seg_iter_next(seg)) {
                int sf, ef;
                seg_iter_times(seg, &sf, &ef);
                fprintf(hypfh, "%s:%.3f ", dict_basestr(d, seg_iter_wid(seg)),
                        (double) ef / frate);
            }
            fprintf(hypfh, "(%s)\n", search_uttid(search));
            break;
        }
        case SEARCH_START_UTT:
            fprintf(hypfh, "start %s\n", search_uttid(search));
            break;
        case SEARCH_END_UTT:
            fprintf(hypfh, "end %s\n", search_uttid(search));
            break;
        case SEARCH_FINAL_RESULT: {
            int32 score;
            seg_iter_t *seg = search_seg_iter(search, &score);
            fprintf(hypfh, "full: ");
            for (; seg; seg = seg_iter_next(seg)) {
                int sf, ef;
                seg_iter_times(seg, &sf, &ef);
                fprintf(hypfh, "%s:%.3f ", dict_basestr(d, seg_iter_wid(seg)),
                        (double) ef / frate);
            }
            fprintf(hypfh, "(%s)\n", search_uttid(search));
            break;
        }
    }
    return 0;
}
Exemplo n.º 10
0
char * search_email (char *data)
{
	char *tmp;
	char *name;
	char *domain;
	int ret,count;
	struct email_info one_email;

	tmp  = data;
	
	for ( ; *tmp !='\0';tmp++ )
	{
		if (*tmp == '@')
			break;
	}
	
	if (tmp == data)
		return NULL;
	
	name = search_name(tmp,data);

	if (name == NULL)	
		return NULL;

	count = tmp - name ;
	if (count > 32)
		return NULL;
	
	strncpy(one_email.name,name,count);	
	one_email.name[count] = 0;
	ret = check_name(one_email.name,1);
	if (!ret)
		return NULL;

	domain = search_domain(tmp);
	
	if (domain == NULL)
		return NULL;
	count = domain - tmp - 1;
	
	if (count > 64)
		return NULL;
	tmp ++;
	strncpy(one_email.domain ,tmp,count);
	one_email.domain[count] = 0;	
	ret = check_domain(one_email.domain,1);
	if (!ret)
		return NULL;
	printf("name: %s@%s\n",one_email.name,one_email.domain);	
}
Exemplo n.º 11
0
void fncDecl(void) /* 関数宣言 */
{
  SymTbl *f1;

  localAdrs = START_LocalAdrs;                /* 局所領域割付けカウンタ初期化 */
  f1 = search_name(tmpTb.name);
  if (f1!=NULL && f1->nmKind!=fncId && f1->nmKind!=protId) {
    err_ss("識別子が重複している", f1->name); f1 = NULL;
  }

  fncPt = enter(tmpTb, fncId);                                /* 記号表に登録 */
  token = nextTkn();
  localTBL_open();                                      /* 局所用記号表を用意 */

  switch (token.kind) {                                           /* 引数処理 */
  case Void: token = nextTkn(); break;                         /* 引数 (void) */
  case ')':  break;                                            /* 引数なし () */
  default:                                                        /* 引数あり */
    for (;;) {
      set_type(); set_name(); enter(tmpTb, paraId);               /* 引数登録 */
      ++(fncPt->args);                                        /* 引数個数を+1 */
      if (token.kind != ',') break;                               /* 宣言終了 */
      token = nextTkn();                                          /* 次の引数 */
    }
  }
  token = chk_nextTkn(token, ')');                               /* ')'のはず */

  if (token.kind == ';') fncPt->nmKind = protId;          /* 関数プロトタイプ */
  set_adrs(fncPt);                          /* 関数入口番地と引数アドレス設定 */
  if (f1 != NULL) fncChk(f1, fncPt);                    /* 関数の正しさを確認 */

  switch (token.kind) {
  case ';': token = nextTkn(); break;                         /* プロトタイプ */
  case '{':
    if (IS_MAIN(fncPt)) set_main();                           /* main関数処理 */
    fncDecl_begin();                                          /* 関数入口処理 */
    block(1);                                                 /* 関数本体処理 */
    fncDecl_end();                                            /* 関数出口処理 */
    break;
  default:  err_s("関数の ; または { がない"); exit(1);
  }
  localTBL_close(fncPt);                                /* 局所用記号表を解消 */
  del_fncTable(f1, fncPt);                                /* 重複登録なら解消 */
  fncPt = NULL;                                               /* 関数処理終了 */
}
static void search_abl(chain_list* abl, befig_list* befig)
{
   if (!abl) {
      fprintf(stderr,"search_abl: NULL pointer\n");
      exit(1);
   }

   if (!ABL_ATOM(abl)) {   /*operator*/
      for (abl=ABL_CDR(abl); abl; abl=ABL_CDR(abl)) {
         search_abl(ABL_CAR(abl),befig);
      }
      return;
   }
   
   if (isdelaydefined(ABL_ATOM_VALUE(abl))) return;

   search_name(ABL_ATOM_VALUE(abl),befig);
}
Exemplo n.º 13
0
void handle_whois(puser users, int socket, char * buffer) {
	char * name = malloc(MAXLEN);
	char timebuf[20];
	int k;
	memset(name, '0', MAXLEN);
	sscanf(buffer, "/whois %s", name);
	k = search_name(users, name);

	if (k != -1) {
		time_t time = users[k].timez;
		strftime(timebuf, 20, "%Y/%m/%d@%H:%M:%S", localtime(&time));
		sprintf(buffer,
				"[Server] : %s is connected since %s with IP address %s and port number %i\n",
				name, timebuf, iptoa(users[k].ip), users[k].port);
	} else {
		sprintf(buffer, "[Server] : %s appears not to be a logged on user\n",
				name);
	}

	do_write(socket, buffer);
}
Exemplo n.º 14
0
void send_user(puser users, char * buffer, int sender) {
	char * temp = malloc(MAXLEN);

	// Extracting the expected reciever's nickname from the buffer
	sscanf(buffer, "/msg %s", temp);
	// Search for the reciever's id by its name and search for the sender's id by its socket
	int r = search_name(users, temp);
	int s = search_fd(users, sender);
	if (r == -1) {
		sprintf(buffer, "[Server] : %s is not a logged on user \n", temp);
		do_write(sender, buffer);
		return;
	}
	// Extract the message from the buffer, we use a regex to have the spaces included in the message
	sscanf(buffer, "/msg %*s %250[^\n]", temp);
	// Format the message to be sent
	sprintf(buffer, "[%s] : %s\n", users[s].nick, temp);

	// Finally send the message to the user
	do_write(users[r].sock_nb, buffer);

	//
	free(temp);
}
Exemplo n.º 15
0
int main() {
    fp = fopen("log.txt", "w");
    log_time();
    fprintf(fp, "Start Programm\n");

    int target_floor, target_room;
    int view_flag = 1;
    building *building_list = (building *) malloc(sizeof(building));
    log_time();
    fprintf(fp, "init building_list\n");
    init(building_list);
    add_floor(building_list, FALSE);
    add_room(building_list, FALSE);
    add_room(building_list, FALSE);
    add_room(building_list, FALSE);

    while (1) {
        fflush(fp);
        if (view_flag)
            view_building(building_list, TRUE);
        else {
            view_room(building_list, target_floor, target_room);
        }
        switch (input_cmd()) {
            case 1: { // [1] 건물 확장
                switch (input_extend_cmd()) {
                    case 1: { // [1] 층 확장
                        add_floor(building_list, TRUE);
                        break;
                    }
                    case 2: { // [2] 방 확장
                        add_room(building_list, TRUE);
                        break;
                    }
                }
                break;
            }
            case 2: { // [2] View 변환
                if (view_flag) {
                    printf("특정 방 내부 보여주기 로 View가 변환되었습니다.\n");
                    printf("층과 호수를 입력하세요\n");
                    if (tts_flag) {
                        system("pico2wave -w test.wav \"Translated the view into the specific room viewing.\"");
                        system("aplay -q test.wav");
                        system("pico2wave -w test.wav \"Input floor number and room number\"");
                        system("aplay -q test.wav");
                    }
                    scanf("%d %d", &target_floor, &target_room);
                    view_flag = 0;
                } else {
                    printf("전체 방 보여주기 로 View가 변환되었습니다.\n");
                    if (tts_flag) {
                        system("pico2wave -w test.wav \"Translated the view into the total room viewing.\"");
                        system("aplay -q test.wav");
                    }
                    view_flag = 1;
                }
                break;
            }
            case 3: { // [3] 방 별 칸 변환
                change_space(building_list);
                break;
            }
            case 4: { // [4] 칸 별 사람 이름 변환
                change_name(building_list);
                break;
            }
            case 5: {
                search_name(building_list);
                break;
            }
            case 6: { // [6] TTS ON/OFF
                if (tts_flag) {
                    printf("TTS를 사용하지않습니다.\n");
                    tts_flag = 0;
                } else {
                    printf("TTS를 사용합니다.\n");
                    system("pico2wave -w test.wav \"From now, Use text to speach.\"");
                    system("aplay -q test.wav");
                    tts_flag = 1;
                }
                break;
            }
            case 7: { // [5] 종료
                printf("\n프로그램을 종료합니다.\n");
                if (tts_flag) {
                    system("pico2wave -w test.wav \"Exit Program.\"");
                    system("aplay -q test.wav");
                }
                return 0;
                break;
            }
        }
    }
    return 0;
}