Beispiel #1
0
void stream()
{
	unsigned char msg_id;
	unsigned long count;
	unsigned char interface_id;

	drawInput();
	wmove(w_in,1,1);
	waddstr(w_in,"Interface id: ");
	echo();
	wscanw(w_in,"%hhd",&interface_id);
	noecho();
	wmove(w_in,2,1);
	waddstr(w_in,"Message id: ");
	echo();
	wscanw(w_in,"%hhd",&msg_id);
	noecho();
	wmove(w_in,3,1);
	waddstr(w_in,"Message count: ");
	echo();
	wscanw(w_in,"%ld",&count);
	noecho();
	wmove(w_in,4,1);
	if(sensor.ReqStream(interface_id,msg_id,count))
	{
		wprintw(w_in,"Data Requested (%hhd)",msg_id);
	}
	else
	{
		waddstr(w_in,"Stream Request Failed");
	}
	wrefresh(w_in);
}
Beispiel #2
0
void data()
{
	unsigned char msg_id;
	unsigned char interface_id;
	
	drawInput();
	wmove(w_in,1,1);
	waddstr(w_in,"Interface id: ");
	echo();
	wscanw(w_in,"%hhd",&interface_id);
	noecho();
	wmove(w_in,2,1);
	waddstr(w_in,"Message id: ");
	echo();
	wscanw(w_in,"%hhd",&msg_id);
	noecho();
	wmove(w_in,3,1);
	if(sensor.ReqData(interface_id,msg_id))
	{
		wprintw(w_in,"Data Requested (%hhd)",msg_id);
	}
	else
	{
		waddstr(w_in,"Data Request Failed");
	}
	wrefresh(w_in);
	
}
Beispiel #3
0
void timeattone()
{
	long sec,usec;

	drawInput();
	wmove(w_in,1,1);
	waddstr(w_in,"seconds: ");
	echo();
	wscanw(w_in,"%ld",&sec);
	noecho();
	wmove(w_in,2,1);
	waddstr(w_in,"microsecons: ");
	echo();
	wscanw(w_in,"%ld",&usec);
	noecho();
	wmove(w_in,3,1);
	wprintw(w_in,"Time at Tone:");
	wmove(w_in,4,1);
	wprintw(w_in,"%ld s %ld us",sec,usec);	
	wmove(w_in,5,1);
	if(sensor.TimeAtTone(sec,usec))
	{
		waddstr(w_in,"Time at Tone Sent");
	}
	else
	{
		waddstr(w_in,"Time at Tone Failed");
	}
	wrefresh(w_in);	
}
Beispiel #4
0
void cancel()
{
	unsigned char msg_id;
unsigned char interface_id;

	drawInput();
	wmove(w_in,1,1);
	waddstr(w_in,"Interface id: ");
	echo();
	wscanw(w_in,"%hhd",&interface_id);
	noecho();
	wmove(w_in,2,1);
	waddstr(w_in,"Message id: ");
	echo();
	wscanw(w_in,"%hhd",&msg_id);
	noecho();
	wmove(w_in,3,1);
	wprintw(w_in,"Data Canceled (%hhd)",msg_id);
	wmove(w_in,4,1);
	if(sensor.Cancel(interface_id,msg_id))
	{		
		waddstr(w_in,"Cancel Sent");
	}
	else
	{
		waddstr(w_in,"Cancel Failed");
	}
	wrefresh(w_in);
}
Beispiel #5
0
/* Schreibt den Speicher in eine Datei */
int coreDump()
{
  FILE *file;
  int r=0;
  char str[256];

  echo();     /* Echo an  */
  curs_set(1); /* Cursor an*/
  mvwprintw(cmdWin, 1, 1, "Dateiname");
  mvwprintw(cmdWin, 2, 1, ":");
  wrefresh(cmdWin);

  wscanw(cmdWin, "%s", &str);
  
  file = fopen(str, "wb");
  if (file==NULL)
    return i8086_ERR_FILENF;
  
  r = fwrite(core->mem, sizeof(char), i8086_MEM_SIZE, file);

  if (r==0)
    return i8086_ERR_FILEREAD;
        
  fclose(file);
  
  clearCmd();
  return i8086_SUC_FILELOAD; 
}
Beispiel #6
0
void asim_command()
{
	unsigned char cmd_id;
	short length;
	unsigned char* data;
	int i;
	unsigned char interface_id;

	drawInput();
	wmove(w_in,1,1);
	waddstr(w_in,"Interface id: ");
	echo();
	wscanw(w_in,"%hhd",&interface_id);
	noecho();
	wmove(w_in,2,1);
	waddstr(w_in,"Command id: ");
	echo();
	wscanw(w_in,"%hhd",&cmd_id);
	noecho();
	wmove(w_in,3,1);
	waddstr(w_in,"Command length: ");
	echo();
	wscanw(w_in,"%hd",&length);
	noecho();
	data = (unsigned char*)malloc(sizeof(unsigned char)*length);
	for(i=0;i<length;i++)
	{
		wmove(w_in,4+i,1);
		waddstr(w_in,"Command byte: ");
		echo();
		wscanw(w_in,"%hhd",&(data[i]));
		noecho();
	}
	wmove(w_in,5+i,1);
	if(sensor.Command(interface_id,cmd_id,length,data))
	{
		wprintw(w_in,"Command %hhd Sent",cmd_id);
	}
	else
	{
		wprintw(w_in,"Command %hhd Failed",cmd_id);
	}
	free(data);
	wrefresh(w_in);
}
Beispiel #7
0
void printHelp()
{
  char c;

  mvwprintw(cmdWin, 1, 1, "m - Print StrAdr. q - Quit. r - Set Reg. w - Set Mem");
  wrefresh(cmdWin);
  wscanw(cmdWin, "%c", &c);
  clearCmd();
}
Beispiel #8
0
	void getNextMove(figure * gBoard[8][8]) {
	int startM, endM, startX, startY, endX, endY;
	werase(in);
	ChessBoard.print();
	
	waddstr(in, "StartXY:");
	wscanw(in, "%d", &startM);
	
	startX = startM / 10 - 1;
	startY = startM % 10 - 1;
	
	waddstr(in, "EndXY:");	
	wscanw(in, "%d", &endM);
	
	endX = endM / 10 - 1;
	endY = endM % 10 - 1;

	gBoard[7-endY][endX]= gBoard[7-startY][startX];
	gBoard[startY][startX] = 0;
	}
Beispiel #9
0
/* Nur ein BP möglich				 	*/
void setBreakpoint()
{
  unsigned short adr=0;
  mvwprintw(cmdWin, 1, 1, "Breakpoint (Hex max 4 Stellen)");
  mvwprintw(cmdWin, 2, 1, ":");
  wrefresh(cmdWin);
  echo();     /* Echo an  */
  curs_set(1); /* Cursor an*/
  wscanw(cmdWin, "%4hx", &adr);
  breakpoint = adr;
  clearCmd();
}
Beispiel #10
0
/* Setzt den angezeigten Speicheraschnitt  */
unsigned short readMem()
{
  unsigned short v=0;
  mvwprintw(cmdWin, 1, 1, "Adr(Hex max 4 Stellen):");
  wrefresh(cmdWin);

  echo();     /* Echo an  */
  curs_set(1); /* Cursor an*/
  wscanw(cmdWin, "%4hx", &v);

  clearCmd();
  return (v/16)*16;
}
Beispiel #11
0
/* Setzt den Wert in einer Speicheradresse */
void setMem()
{
  unsigned short adr=0, v=0;
  mvwprintw(cmdWin, 1, 1, "Adr(Hex max 4 Stellen) Vl(Hex max 2 Stellen)");
  mvwprintw(cmdWin, 2, 1, ":");
  wrefresh(cmdWin);

  echo();     /* Echo an  */
  curs_set(1); /* Cursor an*/
  wscanw(cmdWin, "%4hx %2hx", &adr, &v);

  core->mem[adr] = v;

  clearCmd();
}
Beispiel #12
0
int get_sno(int stat,infostruct user, char *sno,char *header,char *ask){
	WINDOW *send_reply;
	char conf;
	int retval = 2;
	int x,y;
	char *screen_name;
	double message_id;
	char *message;
	screen_name = (char *)malloc(25 * sizeof(char));
	if(screen_name == NULL){
		return 1;
	}

	message = (char *)malloc(200 * sizeof(char));
	if(message == NULL){
		return 1;
	}

	echo();
	send_reply = newwin(10,80,user.row/2, (user.col - 80)/2);
	keypad(send_reply,TRUE);
	box(send_reply,0,0);
	wattron(send_reply,A_BOLD);
	mvwprintw(send_reply,2,(getmaxx(send_reply) -strlen(header))/2,"%s",header);
	wattroff(send_reply,A_BOLD);
	mvwprintw(send_reply,4,5,"%s",ask);
	wrefresh(send_reply);
	wscanw(send_reply,"%s",sno);

	if((message_id = get_message_id(stat,sno,&screen_name,&message)) == 1)
		return 1;

	getyx(send_reply,y,x);
	mvwprintw(send_reply,getmaxy(send_reply)- 2,5,"%s","Confirm? [y/N]");
	wrefresh(send_reply);
	do {
		conf = wgetch(send_reply);
		if(conf == 'Y' || conf == 'y')
			retval = 0;
		else if (conf == 'N' || conf == 'n')
			retval = 1;
	}while(conf != 'y' && conf != 'Y' && conf != 'N' && conf != 'n');
	
	noecho();
	refresh();
	delwin(send_reply);
	return retval;
}
Beispiel #13
0
void group_chat(int new_fd)
{
    char str[100];

    Node msg;

    char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
    time_t timep;
    struct tm *p;
    time(&timep);
    p = localtime(&timep);
    
    memset(str, 0, sizeof(str[100]));

    memset(&msg, 0, sizeof(Node));
    msg.action = GROUP_CHAT;
    msg.online_sfd = msg1.online_sfd;
    msg.state = msg1.state;
    my_strcpy(msg.id, msg1.id);
    my_strcpy(msg.name, msg1.name);
    my_strcpy(msg.password, msg1.password);

    curs_set(1);

    mvwaddstr(ch_window3, 1, 4, "TO ALL USERS");
    mvwaddstr(ch_window3, 3, 4, "MESSAGE :");
    wmove(ch_window3, 3, 14);
    wrefresh(ch_window3);

    echo();
    wscanw(ch_window3, "%s", str);

    sprintf(msg.message, "(%d/%d/%d %s %d:%d:%d): %s", (1900+p->tm_year), (1+p->tm_mon), p->tm_mday, wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec, str);

    wprintw(ch_window2, "我 对 所有人 %s\n", msg.message);
    wrefresh(ch_window2);

    write(new_fd, &msg, sizeof(Node));

    mvwaddstr(ch_window3, 1, 4, "                                             ");
    mvwaddstr(ch_window3, 3, 4, "                                             ");
    mvwaddstr(ch_window3, 4, 1, "                                             ");
    wrefresh(ch_window3);
}
Beispiel #14
0
/* Setzt den Wert eines Registers */
void setReg()
{
  unsigned short reg=0, v=0;
  //wmove(cmdWin, 1, 1);
  echo();     /* Echo an  */
  curs_set(1); /* Cursor an*/
  mvwprintw(cmdWin, 1, 1, "Reg(AX=0 BX=3 CX=1 DX=2 SP-DI=4-7 DS 8) Value(Dec):");
  mvwprintw(cmdWin, 2, 1, ":");
  wrefresh(cmdWin);

  wscanw(cmdWin, "%1hi %hi", &reg, &v);
  if (reg==8)
  	i8086SetSegRegister(core, i8086_REG_DS, v);
  else
  	i8086SetRegister(core, reg, 1, v);

  clearCmd();
  printReg();
}
Beispiel #15
0
char *input_name(void)
{
	char *name = malloc(sizeof(char) * 36);
	int height = 3;
	int width = 40;
	int startx = (COLS - width) / 2;
	int starty = (LINES - height) / 2;

	WINDOW *win = newwin(height, width, starty, startx);
	clear();
	box(win, 0, 0);
	mvwprintw(win, 0, 1, "Enter your name");
	wrefresh(win);
	wmove(win, 1, 1);
	noraw();
	echo();
	wscanw(win, "%[a-zA-z_0-9]", name);
	raw();
	noecho();


	return name;
}
Beispiel #16
0
void outputTest(WINDOW *win)
{
    WINDOW *win1;
    char Buffer[80];
    chtype ch;
    int by, bx;

    nl();
    wclear(win);
    mvwaddstr(win, 1, 1, "You should now have a screen in the upper "
                         "left corner, and this text should have wrapped");
    waddstr(win,"\nThis text should be down\n");
    waddstr(win,  "and broken into two here ^");
    Continue(win);

    wclear(win);
    wattron(win, A_BOLD);
    mvwaddstr(win, 1, 1, "A new window will appear with this text in it");
    mvwaddstr(win, 8, 1, "Press any key to continue");
    wrefresh(win);
    wgetch(win);

    getbegyx(win, by, bx);

    if (LINES < 24 || COLS < 75)
    {
        mvwaddstr(win, 5, 1, "Some tests have been skipped as they require a");
        mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
        Continue(win);
    }
    else
    {
        win1 = newwin(10, 50, 14, 25);

        if (win1 == NULL)
        {
            endwin();
            return;
        }

#ifdef A_COLOR
        if (has_colors())
        {
            init_pair(3, COLOR_BLUE, COLOR_WHITE);
            wbkgd(win1, COLOR_PAIR(3));
        }
        else
#endif
            wbkgd(win1, A_NORMAL);

        wclear(win1);
        mvwaddstr(win1, 5, 1, "This text should appear; using overlay option");
        copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE);
        box(win1, ACS_VLINE, ACS_HLINE);
        wmove(win1, 8, 26);
        wrefresh(win1);
        wgetch(win1);

        wclear(win1);

        wattron(win1, A_BLINK);
        mvwaddstr(win1, 4, 1,
                  "This blinking text should appear in only the second window");
        wattroff(win1, A_BLINK);

        mvwin(win1, by, bx);
        overlay(win, win1);
        mvwin(win1, 14, 25);
        wmove(win1, 8, 26);
        wrefresh(win1);
        wgetch(win1);

        delwin(win1);
    }

    clear();
    wclear(win);
    wrefresh(win);
    mvwaddstr(win, 6, 2, "This line shouldn't appear");
    mvwaddstr(win, 4, 2, "Only half of the next line is visible");
    mvwaddstr(win, 5, 2, "Only half of the next line is visible");
    wmove(win, 6, 1);
    wclrtobot(win);
    wmove(win, 5, 20);
    wclrtoeol(win);
    mvwaddstr(win, 8, 2, "This line also shouldn't appear");
    wmove(win, 8, 1);
    winsdelln(win, -1);
    Continue(win);

    wmove(win, 5, 9);
    ch = winch(win);

    wclear(win);
    wmove(win, 6, 2);
    waddstr(win, "The next char should be l:  ");
    winsch(win, ch);
    Continue(win);

    mvwinsstr(win, 6, 2, "A1B2C3D4E5");
    Continue(win);

    wmove(win, 5, 1);
    winsdelln(win, 1);
    mvwaddstr(win, 5, 2, "The lines below should have moved down");
    Continue(win);

    wclear(win);
    wmove(win, 2, 2);
    wprintw(win, "This is a formatted string in a window: %d %s\n",
            42, "is it");
    mvwaddstr(win, 10, 1, "Enter a string: ");
    wrefresh(win);
    echo();
    wscanw(win, "%s", Buffer);

    printw("This is a formatted string in stdscr: %d %s\n", 42, "is it");
    mvaddstr(10, 1, "Enter a string: ");
    scanw("%s", Buffer);

    wclear(win);
    curs_set(2);
    mvwaddstr(win, 1, 1, "The cursor should be in high-visibility mode");
    Continue(win);

    wclear(win);
    curs_set(0);
    mvwaddstr(win, 1, 1, "The cursor should have disappeared");
    Continue(win);

    wclear(win);
    curs_set(1);
    mvwaddstr(win, 1, 1, "The cursor should be normal");
    Continue(win);

#ifdef A_COLOR
    if (has_colors())
    {
        wclear(win);
        mvwaddstr(win, 1, 1, "Colors should change after you press a key");
        Continue(win);

        init_pair(1, COLOR_RED, COLOR_WHITE);
        wrefresh(win);
    }
#endif
    werase(win);
    mvwaddstr(win, 1, 1, "Information About Your Terminal");
    mvwaddstr(win, 3, 1, termname());
    mvwaddstr(win, 4, 1, longname());

    if (termattrs() & A_BLINK)
        mvwaddstr(win, 5, 1, "This terminal claims to support blinking.");
    else
        mvwaddstr(win, 5, 1, "This terminal does NOT support blinking.");

    mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16);
    wrefresh(win);

    mvwinnstr(win, 7, 5, Buffer, 18);
    mvaddstr(LINES - 2, 10, Buffer);
    refresh();
    Continue(win);
}
Beispiel #17
0
// add a nice dialog box later
unsigned char readInput(WINDOW *win){
	unsigned char value;
	wscanw(win,"%x", &value);
	return value;
}
Beispiel #18
0
Datei: VM.c Projekt: kiendt07/ctd
int run(void) {
  Instruction* code = codeBlock->code;
  int count = 0;
  int number;
  char s[100];

  WINDOW* win = initscr();
  nonl();
  cbreak();
  noecho();
  scrollok(win,TRUE);
  
  ps = PS_ACTIVE;
  while (ps == PS_ACTIVE) {
    if (debugMode) {
      sprintInstruction(s,&(code[pc]));
      wprintw(win, "%6d-%-4d:  %s\n",count++,pc,s);
    }

    switch (code[pc].op) {
    case OP_LA: 
      t ++;
      if (checkStack())
	stack[t] = base(code[pc].p) + code[pc].q;
      break;
    case OP_LV: 
      t ++;
      if (checkStack())
	stack[t] = stack[base(code[pc].p) + code[pc].q];
      break;
    case OP_LC: 
      t ++;
      if (checkStack())
	stack[t] = code[pc].q;
      break;
    case OP_LI: 
      stack[t] = stack[stack[t]];
      break;
    case OP_INT:
      t += code[pc].q;
      checkStack();
      break;
    case OP_DCT: 
      t -= code[pc].q;
      checkStack();
      break;
    case OP_J: 
      pc = code[pc].q - 1;
      break;
    case OP_FJ: 
      if (stack[t] == FALSE) 
	pc = code[pc].q - 1;
      t --;
      checkStack();
      break;
    case OP_HL: 
      ps = PS_NORMAL_EXIT;
      break;
    case OP_ST: 
      stack[stack[t-1]] = stack[t];
      t -= 2;
      checkStack();
      break;
    case OP_CALL: 
      stack[t+2] = b;                 // Dynamic Link
      stack[t+3] = pc;                // Return Address
      stack[t+4] = base(code[pc].p);  // Static Link
      b = t + 1;                      // Base & Result
      pc = code[pc].q - 1;              
      break;
    case OP_EP: 
      t = b - 1;                      // Previous top
      pc = stack[b+2];                // Saved return address
      b = stack[b+1];                 // Saved base
      break;
    case OP_EF:
      t = b;                          // return value is on the top of the stack
      pc = stack[b+2];                // Saved return address
      b = stack[b+1];                 // saved base
      break;
    case OP_RC: 
      t ++;
      echo();
      wscanw(win,"%c",&number);
      noecho();
      stack[t] = number;
      checkStack();
      break;
    case OP_RI:
      t ++;
      echo();
      wscanw(win,"%d",&number);
      noecho();
      stack[t] = number;
      checkStack();
      break;
    case OP_WRC: 
      wprintw(win,"%c",stack[t]);
      t --;
      checkStack();
      break;     
    case OP_WRI: 
      wprintw(win,"%d",stack[t]);
      t --;
      checkStack();
      break;
    case OP_WLN:
      wprintw(win,"\n");
      break;
    case OP_AD:
      t --;
      if (checkStack()) 
	stack[t] += stack[t+1];
      break;
    case OP_SB:
      t --;
      if (checkStack()) 
	stack[t] -= stack[t+1];
      break;
    case OP_ML:
      t --;
      if (checkStack()) 
	stack[t] *= stack[t+1];
      break;

    case OP_DV: 
      t --;
      if (checkStack()) {
	if (stack[t+1] == 0)
	  ps = PS_DIVIDE_BY_ZERO;
	else stack[t] /= stack[t+1];
      }
      break;
    case OP_NEG:
      stack[t] = - stack[t];
      break;
    case OP_CV: 
      stack[t+1] = stack[t];
      t ++;
      checkStack();
      break;
    case OP_EQ:
      t --;
      if (stack[t] == stack[t+1]) 
	stack[t] = TRUE;
      else stack[t] = FALSE;
      checkStack();
      break;
    case OP_NE:
      t --;
      if (stack[t] != stack[t+1]) 
	stack[t] = TRUE;
      else stack[t] = FALSE;
      checkStack();
      break;
    case OP_GT:
      t --;
      if (stack[t] > stack[t+1]) 
	stack[t] = TRUE;
      else stack[t] = FALSE;
      checkStack();
      break;
    case OP_LT:
      t --;
      if (stack[t] < stack[t+1]) 
	stack[t] = TRUE;
      else stack[t] = FALSE;
      checkStack();
      break;
    case OP_GE:
      t --;
      if (stack[t] >= stack[t+1]) 
	stack[t] = TRUE;
      else stack[t] = FALSE;
      checkStack();
      break;
    case OP_LE:
      t --;
      if (stack[t] <= stack[t+1]) 
	stack[t] = TRUE;
      else stack[t] = FALSE;
      checkStack();
      break;
    case OP_BP:
      // Just for debugging
      debugMode = 1;
      break;
    default: break;
    }

    if (debugMode) {
      int command;
      int level, offset;
      int interactive = 1;
      
      do {
	interactive = 0;

	command = getch();
	switch (command) {
	case 'a':
	case 'A':
	  wprintw(win,"\nEnter memory location (level, offset):");
	  wscanw(win,"%d %d", &level, &offset);
	  wprintw(win,"Absolute address = %d\n", base(level) + offset);
	  interactive = 1;
	  break;
	case 'm':
	case 'M':
	  wprintw(win,"\nEnter memory location (level, offset):");
	  wscanw(win,"%d %d", &level, &offset);
	  wprintw(win,"Value = %d\n", stack[base(level) + offset]);
	  interactive = 1;
	  break;
	case 't':
	case 'T':
	  wprintw(win,"Top (%d) = %d\n", t, stack[t]);
	  interactive = 1;
	  break;
	case 'c':
	case 'C':
	  debugMode = 0;
	  break;
	case 'h':
	case 'H':
	  ps = PS_NORMAL_EXIT;
	  break;
	default: break;
	}
      } while (interactive);
    }
    pc ++;
  }
  wprintw(win,"\nPress any key to exit...");getch();
  endwin();
  return ps;
}
void* typing_func(void) {

    char message_buffer[LENGHT_MESSAGE];
    char message_buffer_2[LENGHT_MESSAGE];
    char confirm_file[LENGHT_MESSAGE];
    char filename[LENGHT_MESSAGE];
    char ch;
    int buffer_int;
    FILE *fp;

    while (state == 0) {

        //Reset string for get new message
        strcpy(message_buffer, "");
        strcpy(message_buffer_2, "");

        wscanw(global_typing, " %[^\n]s", message_buffer);
        while (strlen(message_buffer) > 200) {
            werase(global_typing);
            draw_new(global_display, "system>> Message cannot more than 200 characters.");
            wscanw(global_typing, " %[^\n]s", message_buffer);
        }

        //Draw_new line to display message
        strcpy(message_buffer_2, "you>> ");
        strcat(message_buffer_2, message_buffer);
        draw_new(global_display, message_buffer_2);


        //Check exit command
        if (strcmp(message_buffer, ":q!") == 0) {
            //set state to stop all function
            state = 1;
        }
        else if (message_buffer[0] == '/') {

            if (split_strcmp(0, 6, "/upload", 0, 6, message_buffer)){

                split_str(8, strlen(message_buffer), message_buffer, filename);
                sprintf(message_buffer, "3system>> Sending file to you: %s", filename);
                send_data(message_buffer);

                sleep(1);

                draw_new(global_display, "system>> Uploading...");

                fp = fopen(filename, "r");
                while( ( ch = fgetc(fp) ) != EOF ){

                    sprintf(message_buffer, "4%c", ch);

                    if(send_data(message_buffer) == 0)
                        draw_new(global_display, "system>> Send failed");

                }
                fclose(fp);

                sleep(1);

                strcpy(message_buffer, "5");
                send_data(message_buffer);
                draw_new(global_display, "system>> Done!");

            }
            else if (split_strcmp(0, 2, "/up", 0, 2, message_buffer)){

                split_str(4, strlen(message_buffer), message_buffer, message_buffer_2);
                buffer_int = atoi(message_buffer_2);
                draw_old_line(global_display, 1, buffer_int);

            }
            else if (split_strcmp(0, 4, "/down", 0, 4, message_buffer)){

                split_str(6, strlen(message_buffer), message_buffer, message_buffer_2);
                buffer_int = atoi(message_buffer_2);
                draw_old_line(global_display, 2, buffer_int);

            }
            else if (split_strcmp(0, 4, "/help", 0, 4, message_buffer)){

                draw_new(global_display, "system>> ### THIS IS HELP! ###");
                draw_new(global_display, "system>> \":q!\" to exit program.");
                draw_new(global_display, "system>> \"/talkto [nickname]\" to choose contact.");
                draw_new(global_display, "system>> \"/untalk\" to remove contact that we are talking.");
                draw_new(global_display, "system>> \"/upload [file]\" to upload file to client that you are talking.");
                draw_new(global_display, "system>> \"/watline\" to show number of latest line");
                draw_new(global_display, "system>> \"/up [amount of line]\" to scroll screen up n lines.");
                draw_new(global_display, "system>> \"/down [amount of line]\" to scroll screen down n lines.");
                draw_new(global_display, "system>> \"/find [word]\" to find number of line that word was display.");
                draw_new(global_display, "system>> \"/contact\" to show all user on server.");

            }
            else if (split_strcmp(0, 4, "/find", 0, 4, message_buffer)){

                split_str(6, strlen(message_buffer) - 1, message_buffer, message_buffer_2);
                search(message_buffer_2, global_display);

            }
            else if (split_strcmp(0, 7, "/watline", 0, 7, message_buffer)){

                //bottom_line come from buffer_screen.h
                sprintf(message_buffer, "system>> v This is lines number %d. v", bottom_line);
                draw_new(global_display, message_buffer);

            }
            else if (
                    split_strcmp(0, 6, "/talkto", 0, 6, message_buffer) ||
                    split_strcmp(0, 6, "/untalk", 0, 6, message_buffer) ||
                    split_strcmp(0, 7, "/contact", 0, 7, message_buffer)) {

                sprintf(message_buffer_2, "0%s", message_buffer);
                send_data(message_buffer_2);
            }
            else {

                draw_new(global_display, "system>> Command not found.");

            }
        }
        else {

            //Set protocal to send packet
            sprintf(message_buffer_2, "0%s", message_buffer);
            if(send_data(message_buffer_2) == 0)
                draw_new(global_display, "system>> Send failed");

        }

        werase(global_typing);

    }

    pthread_cancel(*global_display_thread);
    return 0;

}
static void
outputTest(WINDOW *win)
{
    WINDOW *win1;
    char Buffer[80];
    chtype ch;
    int by, bx;

#if !HAVE_TIGETSTR
#if HAVE_TGETENT
    char tc_buffer[4096];
    char tc_parsed[4096];
    char *area_pointer = tc_parsed;
    tgetent(tc_buffer, getenv("TERM"));
#else
#define tgetstr(a,b) 0
#endif
#endif /* !HAVE_TIGETSTR */

    nl();
    wclear(win);
    MvWAddStr(win, 1, 1,
	      "You should now have a screen in the upper left corner, and this text should have wrapped");
    mvwin(win, 2, 1);
    waddstr(win, "\nThis text should be down\n");
    waddstr(win, "and broken into two here ^");
    Continue(win);

    wclear(win);
    wattron(win, A_BOLD);
    MvWAddStr(win, 1, 1, "A new window will appear with this text in it");
    MvWAddStr(win, 8, 1, "Press any key to continue");
    wrefresh(win);
    wgetch(win);

    getbegyx(win, by, bx);

    if (LINES < 24 || COLS < 75) {
	MvWAddStr(win, 5, 1,
		  "Some tests have been skipped as they require a");
	MvWAddStr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
	Continue(win);
    } else {
	win1 = newwin(10, 50, 14, 25);
	if (win1 == NULL) {
	    endwin();
	    return;
	}
#ifdef A_COLOR
	if (has_colors()) {
	    init_pair(3, COLOR_BLUE, COLOR_WHITE);
	    wbkgd(win1, (chtype) COLOR_PAIR(3));
	} else
	    wbkgd(win1, A_NORMAL);
#else
	wbkgd(win1, A_NORMAL);
#endif
	wclear(win1);
	MvWAddStr(win1, 5, 1,
		  "This text should appear; using overlay option");
	copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE);

#if defined(PDCURSES) && !defined(XCURSES)
	box(win1, 0xb3, 0xc4);
#else
	box(win1, ACS_VLINE, ACS_HLINE);
#endif
	wmove(win1, 8, 26);
	wrefresh(win1);
	wgetch(win1);

	wclear(win1);
	wattron(win1, A_BLINK);
	MvWAddStr(win1, 4, 1,
		  "This blinking text should appear in only the second window");
	wattroff(win1, A_BLINK);
	mvwin(win1, by, bx);
	overlay(win, win1);
	mvwin(win1, 14, 25);
	wmove(win1, 8, 26);
	wrefresh(win1);
	wgetch(win1);
	delwin(win1);
    }

    clear();
    wclear(win);
    wrefresh(win);
    MvWAddStr(win, 6, 2, "This line shouldn't appear");
    MvWAddStr(win, 4, 2, "Only half of the next line is visible");
    MvWAddStr(win, 5, 2, "Only half of the next line is visible");
    wmove(win, 6, 1);
    wclrtobot(win);
    wmove(win, 5, 20);
    wclrtoeol(win);
    MvWAddStr(win, 8, 2, "This line also shouldn't appear");
    wmove(win, 8, 1);
    wdeleteln(win);
    Continue(win);

    wmove(win, 5, 9);
    ch = winch(win);

    wclear(win);
    wmove(win, 6, 2);
    waddstr(win, "The next char should be l:  ");
    winsch(win, ch);
    Continue(win);

#if HAVE_WINSSTR
    (void) mvwinsstr(win, 6, 2, "A1B2C3D4E5");
    Continue(win);
#endif

    wmove(win, 5, 1);
    winsertln(win);
    MvWAddStr(win, 5, 2, "The lines below should have moved down");
    Continue(win);

    wclear(win);
    wmove(win, 2, 2);
    wprintw(win, "This is a formatted string in a window: %d %s\n", 42,
	    "is it");
    MvWAddStr(win, 10, 1, "Enter a string: ");
    wrefresh(win);
    noraw();
    echo();
    *Buffer = 0;
    wscanw(win, "%s", Buffer);

    printw("This is a formatted string in stdscr: %d %s\n", 42, "is it");
    MvAddStr(10, 1, "Enter a string: ");
    *Buffer = 0;
    scanw("%s", Buffer);

    if (TIGETSTR("cvvis", "vs") != 0) {
	wclear(win);
	curs_set(2);
	MvWAddStr(win, 1, 1, "The cursor should appear as a block (visible)");
	Continue(win);
    }

    if (TIGETSTR("civis", "vi") != 0) {
	wclear(win);
	curs_set(0);
	MvWAddStr(win, 1, 1,
		  "The cursor should have disappeared (invisible)");
	Continue(win);
    }

    if (TIGETSTR("cnorm", "ve") != 0) {
	wclear(win);
	curs_set(1);
	MvWAddStr(win, 1, 1, "The cursor should be an underline (normal)");
	Continue(win);
    }
#ifdef A_COLOR
    if (has_colors()) {
	wclear(win);
	MvWAddStr(win, 1, 1, "Colors should change after you press a key");
	Continue(win);
	init_pair(1, COLOR_RED, COLOR_WHITE);
	wrefresh(win);
    }
#endif

    werase(win);

#if HAVE_TERMNAME
    MvWAddStr(win, 1, 1, "Information About Your Terminal");
    MvWAddStr(win, 3, 1, termname());
    MvWAddStr(win, 4, 1, longname());
    if (termattrs() & A_BLINK)
	MvWAddStr(win, 5, 1, "This terminal supports blinking.");
    else
	MvWAddStr(win, 5, 1, "This terminal does NOT support blinking.");
#endif

    (void) mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16);
    wrefresh(win);

    (void) mvwinnstr(win, 7, 5, Buffer, 18);
    MvAddStr(LINES - 2, 10, Buffer);
    refresh();
    Continue(win);
}
Beispiel #21
0
int main (int argc, char **argv)
{

    logfilepath = getenv ("HOME");
    logfilepath = strcat (logfilepath, "/.ooview.log");

    load_config();


    initscr();
    raw();
    noecho();
    start_color();
    keypad(stdscr,TRUE);

    init_pair(1, COLOR_WHITE, COLOR_BLACK);
    init_pair(2, COLOR_RED, COLOR_WHITE);
    init_pair(3, COLOR_BLUE, COLOR_WHITE);
    init_pair(4, COLOR_BLACK, COLOR_WHITE);
    bkgd(COLOR_PAIR(1));
    curs_set(0);

    menu_bar = subwin(stdscr,1,COLS,0,0);
    wbkgd(menu_bar,COLOR_PAIR(2));
    waddstr(menu_bar,"File");
    wattron(menu_bar, COLOR_PAIR(3));
    waddstr(menu_bar,"<F1>");
    wattroff(menu_bar, COLOR_PAIR(3));
    wmove(menu_bar, 0, 19);
    waddstr(menu_bar,"View");
    wattron(menu_bar, COLOR_PAIR(3));
    waddstr(menu_bar,"<F2>");
    wattroff(menu_bar, COLOR_PAIR(3));
    wmove(menu_bar, 0, 34);
    waddstr(menu_bar,"Options");
    wattron(menu_bar, COLOR_PAIR(3));
    waddstr(menu_bar,"<F3>");
    wattroff(menu_bar, COLOR_PAIR(3));
    wmove(menu_bar, 0, 53);
    waddstr(menu_bar,"Help");
    wattron(menu_bar, COLOR_PAIR(3));
    waddstr(menu_bar,"<F4>");
    wattroff(menu_bar, COLOR_PAIR(3));

    status_bar = subwin(stdscr,1,COLS,LINES-1,0);
    wbkgd(status_bar,COLOR_PAIR(4));

    n_choices[0] = ARRAY_SIZE(file_choices);
    n_choices[1] = ARRAY_SIZE(view_choices);
    n_choices[2] = ARRAY_SIZE(opts_choices);
    n_choices[3] = ARRAY_SIZE(help_choices);
    file_items = (ITEM **)calloc(n_choices[0] + 1, sizeof(ITEM *));
    view_items = (ITEM **)calloc(n_choices[1] + 1, sizeof(ITEM *));
    opts_items = (ITEM **)calloc(n_choices[2] + 1, sizeof(ITEM *));
    help_items = (ITEM **)calloc(n_choices[3] + 1, sizeof(ITEM *));

    for (i=0; i<n_choices[0]; ++i)
        file_items[i] = new_item(file_choices[i], NULL);

    for (i=0; i<n_choices[1]; ++i)
        view_items[i] = new_item(view_choices[i], NULL);

    for (i=0; i<n_choices[2]; ++i)
        opts_items[i] = new_item(opts_choices[i], NULL);

    for (i=0; i<n_choices[3]; ++i)
        help_items[i] = new_item(help_choices[i], NULL);

    file_items[n_choices[0]] = (ITEM *)NULL;
    view_items[n_choices[1]] = (ITEM *)NULL;
    opts_items[n_choices[2]] = (ITEM *)NULL;
    help_items[n_choices[3]] = (ITEM *)NULL;

    file_menu = new_menu((ITEM **)file_items);
    view_menu = new_menu((ITEM **)view_items);
    opts_menu = new_menu((ITEM **)opts_items);
    help_menu = new_menu((ITEM **)help_items);

    set_menu_mark(file_menu, "");
    set_menu_mark(view_menu, "");
    set_menu_mark(opts_menu, "");
    set_menu_mark(help_menu, "");

    init_screen();
    if (argc == 2)
        open_file(argv[1]);

    while ((c = getch()) != EXIT_KEY)
    {
        action_performed = false;

        switch (c)
        {
        case KEY_F(1):
            cur_menu=1;
            break;
        case KEY_F(2):
            cur_menu=2;
            break;
        case KEY_F(3):
            cur_menu=3;
            break;
        case KEY_F(4):
            cur_menu=4;
            break;
        case KEY_UP:
            if ((file_printed) && (buffer->cur_line > 1))
            {
                int backsteps = 0;
                int steps;
                char *tmp;

                if ((*--cur_char)==NEWLINE)
                    backsteps++;

                tmp = cur_char - 1;

                if ((*--cur_char) == NEWLINE)
                {
                    cur_char = tmp;
                    print_status_bar("yeah");
                }
                else
                {
                    do {
                        cur_char--;
                        backsteps++;
                    } while (((*cur_char)!=NEWLINE) && (cur_char != buffer->content));

                    if (backsteps > COLS)
                    {
                        int test;
                        test = backsteps/COLS;
                        steps = (backsteps%COLS);
                        if (test>1)
                            steps += COLS;

                        mvwprintw(status_bar,0,0,"%d",steps);
                        touchwin(status_bar);
                        wrefresh(status_bar);
                        cur_char += backsteps;
                        cur_char -= steps;
                    }
                }
                buffer->cur_line--;
                print_site(buffer->cur_line, buffer->lines);

                if (cur_char!=buffer->content)
                    print_file(buffer,++cur_char);
                else
                    print_file(buffer,cur_char);
            }
            break;
        case KEY_DOWN:
            if ((file_printed) && (buffer->cur_line < buffer->lines))
            {
                int cols=0;


                while (((*cur_char)!=NEWLINE) && (cols < COLS-1))
                {
                    cols++;
                    cur_char++;
                }


                buffer->cur_line++;
                print_site(buffer->cur_line, buffer->lines);
                print_file(buffer,++cur_char);
            }
            break;
        default:
            if (meta_win!=NULL)
            {
                delwin(meta_win);
                touchwin(stdscr);
                refresh();
            }

        }

        if (cur_menu == 1)
        {
            file_win = newwin(8,19,1,0);
            keypad(file_win,TRUE);
            box(file_win,0,0);
            set_menu_win(file_menu, file_win);
            set_menu_sub(file_menu, derwin(file_win,6,17,1,1));
            post_menu(file_menu);
            while (c = wgetch(file_win))
            {
                if (c == KEY_DOWN)
                    menu_driver(file_menu, REQ_DOWN_ITEM);
                else if (c == KEY_UP)
                    menu_driver(file_menu, REQ_UP_ITEM);
                else if (c == KEY_RIGHT)
                {
                    cur_menu = 2;
                    break;
                }
                else if (c == KEY_LEFT)
                {
                    cur_menu = 4;
                    break;
                }
                else if (c == RETURN)
                {
                    cur_menu = 0;
                    cmd = (char *)item_name(current_item(file_menu));
                    action_performed = true;
                    break;
                }
                else
                {
                    cur_menu = 0;
                    break;
                }

            }

            unpost_menu(file_menu);
            touchwin(stdscr);
            wrefresh(stdscr);
        }
        if (cur_menu == 2)
        {
            view_win = newwin(6,15,1,19);
            keypad(view_win,TRUE);
            box(view_win,0,0);
            set_menu_win(view_menu, view_win);
            set_menu_sub(view_menu, derwin(view_win,4,13,1,1));
            post_menu(view_menu);
            while (c = wgetch(view_win))
            {
                if (c == KEY_DOWN)
                    menu_driver(view_menu, REQ_DOWN_ITEM);
                else if (c == KEY_UP)
                    menu_driver(view_menu, REQ_UP_ITEM);
                else if (c == KEY_RIGHT)
                {
                    cur_menu = 3;
                    break;
                }
                else if (c == KEY_LEFT)
                {
                    cur_menu = 1;
                    break;
                }
                else if (c == RETURN)
                {
                    cur_menu = 0;
                    cmd = (char *)item_name(current_item(view_menu));
                    action_performed = true;
                    break;
                }
                else
                {
                    cur_menu = 0;
                    break;
                }
            }

            unpost_menu(view_menu);
            touchwin(stdscr);
            refresh();
        }
        if (cur_menu == 3)
        {
            opts_win = newwin(5,19,1,34);
            keypad(opts_win,TRUE);
            box(opts_win,0,0);
            set_menu_win(opts_menu, opts_win);
            set_menu_sub(opts_menu, derwin(opts_win,3,17,1,1));
            post_menu(opts_menu);
            while (c = wgetch(opts_win))
            {
                if (c == KEY_DOWN)
                    menu_driver(opts_menu, REQ_DOWN_ITEM);
                else if (c == KEY_UP)
                    menu_driver(opts_menu, REQ_UP_ITEM);
                else if (c == KEY_RIGHT)
                {
                    cur_menu = 4;
                    break;
                }
                else if (c == KEY_LEFT)
                {
                    cur_menu = 2;
                    break;
                }
                else if (c == RETURN)
                {
                    cur_menu = 0;
                    cmd = (char *)item_name(current_item(opts_menu));
                    action_performed = true;
                    break;
                }
                else
                {
                    cur_menu = 0;
                    break;
                }
            }

            unpost_menu(opts_menu);
            touchwin(stdscr);
            refresh();
        }
        if (cur_menu == 4)
        {
            help_win = newwin(6,17,1,53);
            keypad(help_win,TRUE);
            box(help_win,0,0);
            set_menu_win(help_menu, help_win);
            set_menu_sub(help_menu, derwin(help_win,4,15,1,1));
            post_menu(help_menu);
            while (c = wgetch(help_win))
            {
                if (c == KEY_DOWN)
                    menu_driver(help_menu, REQ_DOWN_ITEM);
                else if (c == KEY_UP)
                    menu_driver(help_menu, REQ_UP_ITEM);
                else if (c == KEY_RIGHT)
                {
                    cur_menu = 1;
                    break;
                }
                else if (c == KEY_LEFT)
                {
                    cur_menu = 3;
                    break;
                }
                else if (c == RETURN)
                {
                    cur_menu = 0;
                    cmd = (char *)item_name(current_item(help_menu));
                    action_performed = true;
                    break;
                }
                else
                {
                    cur_menu = 0;
                    break;
                }
            }

            unpost_menu(help_menu);
            touchwin(stdscr);
            refresh();
        }




        if (action_performed)
        {
            char file[80];
            clear_status_bar();

            if (!strcmp(cmd,"Open"))
            {
                if (file_printed==false)
                {
                    print_status_bar("Enter a file: ");
                    curs_set(1);
                    echo();
                    wscanw(status_bar,"%s",file);			/* get filename from user */
                    curs_set(0);
                    noecho();
                    open_file(file);


                }
                else
                {
                    print_status_bar("Please close current file.");
                }

            }
            if (!strcmp(cmd,"Close"))
            {
                if (file_printed)
                {
                    free(buffer);


                    werase(main_win);
                    init_screen();
                    wrefresh(main_win);
                    file_printed = false;
                    system("rm -rf /tmp/ooview");


                }
                else
                {
                    print_status_bar("No open file!");
                }
            }
            if (!strcmp(cmd,"Reload"))
            {
                if (file_printed)
                {
                    if (strstr(file,".ovd")!=NULL)			/* ovd*/
                    {
                        ovd_file = fopen(file,"r");

                        if (ovd_file != NULL)
                        {
                            free(buffer);
                            buffer = (struct fileinfo *)malloc(sizeof(struct fileinfo));
                            main_win = subwin(stdscr,LINES-2,COLS,1,0);
                            get_file_content(ovd_file, file, buffer);
                            fclose(ovd_file);
                            cur_char = buffer->content;
                            print_site(buffer->cur_line, buffer->lines);
                            print_file(buffer,cur_char);
                            file_printed = true;
                        }
                        else
                        {
                            print_status_bar("File does not exist!");
                        }
                    }
                    else								/* else if odt */
                    {
                        free(buffer);
                        buffer = (struct fileinfo *)malloc(sizeof(struct fileinfo));
                        main_win= subwin(stdscr,LINES-2,COLS,1,0);
                        open_odt(file,buffer);
                        get_file_meta("/tmp/ooview/meta.xml",buffer);
                        cur_char = buffer->content;
                        print_site(buffer->cur_line, buffer->lines);
                        print_file(buffer,cur_char);
                        file_printed = true;
                    }


                }
                else
                {
                    print_status_bar("No open file!");
                }
            }

            if (!strcmp(cmd,"Document info"))
            {
                if (file_printed)
                {
                    if (file_type==1)
                    {

                        meta_win = newwin(9,COLS-2,(LINES/2)-5,1);
                        wbkgd(meta_win,COLOR_PAIR(4));


                        mvwprintw(meta_win,1,1,"Genarator:  %s", buffer->generator);
                        mvwprintw(meta_win,2,1,"Initial creator:\t%s", buffer->initial_creator);
                        mvwprintw(meta_win,3,1,"Creation date:\t\t%s", buffer->creation_date);
                        mvwprintw(meta_win,4,1,"Creator:\t\t%s", buffer->creator);
                        mvwprintw(meta_win,5,1,"Date:\t\t\t%s", buffer->date);
                        mvwprintw(meta_win,6,1,"Editing cycles:\t%s", buffer->editing_cycles);
                        mvwprintw(meta_win,7,1,"Editing duration:\t%s", buffer->editing_duration);

                        box(meta_win,0,0);
                        wrefresh(meta_win);
                        touchwin(meta_win);

                    }
                }
                else
                {
                    print_status_bar("No open file!");
                }
            }

            if (!strcmp(cmd,"OOView homepage"))
            {
                char *syscall;
                syscall=(char *)malloc(strlen(BROWSER)+strlen(HOMEPAGE_URL)+1);


                sprintf(syscall, "%s %s", BROWSER, HOMEPAGE_URL);
                system(syscall);
                free(syscall);
                if (file_printed)
                    free(buffer);
                end_curses();
                return(0);

            }

            if (!strcmp(cmd,"Documentation"))
            {
                char *syscall;
                syscall=(char *)malloc(strlen(BROWSER)+strlen(HOMEPAGE_URL)+1);


                sprintf(syscall, "%s %s", BROWSER, HOMEPAGE_URL);
                system(syscall);
                free(syscall);
                if (file_printed)
                    free(buffer);
                end_curses();
                return(0);

            }

            if (!strcmp(cmd, "About OOView"))
                print_status_bar("OOView. Visit Homepage for details");

            if (!strcmp(cmd, "Copying"))
                print_status_bar("OOView is under GPL/2 Visit Homepage for details");

            if (!strcmp(cmd, "Find")) {

                if (file_printed) {

                    print_status_bar("Enter string to find: ");
                    char *findit;

                    curs_set(1);
                    echo();

                    wscanw(status_bar,"%s",findit);

                    /*

                    how to find a string in a string?
                    find it -> set cursor to position

                    */

                    print_status_bar("Not implemented yet :(");
                    curs_set(0);
                    noecho();
                } else {
                    print_status_bar("No open file!");
                }
            }

            if (!strcmp(cmd, "External Programs")) {
                char *prompt;

                /*getting printer command*/
                prompt = (char *)malloc((strlen("Enter Printing Command []: ")+strlen(PRINTER)));
                sprintf(prompt,"Enter Printing Command [%s]: ",PRINTER);
                print_status_bar(prompt);
                free(prompt);

                curs_set(1);
                echo();
                char *newcmd;
                wscanw(status_bar,"%s",newcmd);
                curs_set(0);
                noecho();
                print_status_bar(newcmd);
                /* / getting printer command*/

            }

            if (!strcmp(cmd,"Exit"))
            {
                if (file_printed)
                    free(buffer);
                end_curses();
                return 0;
            }
        }

    }
    if (file_printed)
        free(buffer);

    end_curses();
    return 0;
}
Beispiel #22
0
int main(int argc,char** argv){
	// openssl support
#ifdef _SSL
	initSSL();
	ctx=SSL_CTX_new(SSLv23_client_method());
	if(ctx==NULL){
		ERR_print_errors_fp(stdout);
		exit(-2);
	}
#endif

	if(argc!=2){
		printf("Usage:client ipv6addr\n");
		exit(-1);
	}
	setlocale(LC_ALL,"");
	char name[10];
	printf("输入昵称:\n");
	scanf("%6s",name);

	int sockfd,len;
	struct sockaddr_in6	dst;
	char buf[MAXBUF+1];
	char buf1[MAXBUF+1];

	sockfd=socket(AF_INET6,PROTOCOL,0);
	GUARD(sockfd);

	bzero(&dst,sizeof(dst));
	dst.sin6_family=AF_INET6;
	dst.sin6_port=htons(SERVERPORT);
	GUARD(inet_pton(AF_INET6,argv[1],&dst.sin6_addr));
	GUARD(connect(sockfd,(struct sockaddr *)&dst,sizeof(dst)));

	// ssl support
#ifdef _SSL
	sslfd=SSL_new(ctx);
	SSL_set_fd(sslfd,sockfd);
	if(SSL_connect(sslfd)==-1)
		ERR_print_errors_fp(stderr);
	else{
		printf("connected with %s encryption\n",SSL_get_cipher(sslfd));
		//ShowCerts(sslfd);
	}
#endif
	// ssl support bind over
	
	initscr();
	WINDOW *recvBd=subwin(stdscr,HEIGHT1+2,WIDTH+2,1,1);
	WINDOW *inputBd=subwin(stdscr,HEIGHT+2,WIDTH+2,15,1);
	recvWin=subwin(stdscr,HEIGHT1,WIDTH,2,2);
	inputWin=subwin(stdscr,HEIGHT,WIDTH,16,2);
	box(recvBd,HLINE,VLINE);
	box(inputBd,HLINE,VLINE);
	wprintw(recvBd,"接收");
	wprintw(inputBd,"发送");
	cbreak();
	keypad(stdscr,TRUE);
	start_color();
	scrollok(recvWin,1);
	scrollok(inputWin,1);
	refresh();

	bzero(buf,MAXBUF+1);
#ifndef _SSL
	len=recv(sockfd,buf,MAXBUF,0);
#else
	len=SSL_read(sslfd,buf,MAXBUF);
#endif
	wprintw(recvWin,"%s\n",buf);
	touchwin(recvWin);
	wrefresh(recvWin);

	pthread_t t_recv;
	if(pthread_create(&t_recv,NULL,recvThread,(void*)sockfd)<0){
		perror("create thread");
		exit(1);
	}

	while(1){
		bzero(buf,MAXBUF+1);
		wprintw(inputWin,"%6s > ",name);
		int key=wgetch(inputWin);
		if(key==ESCAPE){
			break;
		}
		wscanw(inputWin,"%s",buf);
		touchwin(inputWin);
		wrefresh(inputWin);

		sprintf(buf1,"[%6s]: %c%s\n",name,(char)key,buf);
#ifndef _SSL
		len=send(sockfd,buf1,strlen(buf1),0);
#else
		len=SSL_write(sslfd,buf1,strlen(buf1));
#endif
		if(len<0)
			continue;
	}
	close(sockfd);
	delwin(recvWin);
	delwin(inputWin);
	delwin(recvBd);
	delwin(inputBd);
	endwin();
#ifdef _SSL
	SSL_shutdown(sslfd);
	SSL_free(sslfd);
	SSL_CTX_free(ctx);
#endif
	return 0;
}
Beispiel #23
0
int
ide::Window::read(char *format,...)
{
	curs_set(_cursorType);
	wscanw(_win,format);
}
Beispiel #24
0
int get_reply_to_post(infostruct user,char *reply, char *sno){
	WINDOW *send_reply;
	WINDOW *msgwind;
	char conf;
	int retval = 2;
	int x,y;
	char *header = "*** Send A Reply ***";
	int i = 0;
	char *screen_name;
	double message_id;
	char *message;
	screen_name = (char *)malloc(25 * sizeof(char));
	if(screen_name == NULL){
		return 1;
	}
	/* i dont need this here.. needed in the retweet */
	message = (char *)malloc(140 * sizeof(char));
	if(message == NULL){
		return 1;
	}

	echo();
	cbreak();
	send_reply = newwin(10,80,user.row/2, (user.col - 80)/2);
	keypad(send_reply,TRUE);
	msgwind = derwin(send_reply,5,50,4,5 + strlen("Enter reply: "));
	keypad(msgwind,TRUE);
	box(send_reply,0,0);
	wattron(send_reply,A_BOLD);
	mvwprintw(send_reply,2,(getmaxx(send_reply) -strlen(header))/2,"%s",header);
	wattroff(send_reply,A_BOLD);
	mvwprintw(send_reply,4,5,"%s","Reply to sno :");
	wrefresh(send_reply);
	wscanw(send_reply,"%s",sno);

	if((message_id = get_message_id(0,sno,&screen_name,&message)) == 1)
		return 1;
	mvwprintw(send_reply,4,5,"%s","Enter reply: ");
	noecho();
	wrefresh(send_reply);
	getyx(send_reply,y,x);
	touchwin(send_reply);
	mvwprintw(msgwind,0,0,"@%s " ,screen_name);
	wrefresh(msgwind);

	while (1){
		int k;

		if(i > (140 - (int)strlen(screen_name) -2))
			wattron(send_reply,COLOR_PAIR(2));
		mvwprintw(send_reply,8,76,"   ");
		mvwprintw(send_reply,8,76,"%i",140 - strlen(screen_name) - 2 -i);
		if(i > (140 - (int)strlen(screen_name) -2))
			wattroff(send_reply,COLOR_PAIR(2));

		wrefresh(send_reply);
		wrefresh(msgwind);

		k = wgetch(msgwind);
		if(k == '\n')
			break;

		if ((k == KEY_BACKSPACE) && i > 0){
			getyx(msgwind,y,x);
			/* if on 1st of line 2, please go back to the last of line 1*/
			if((i + strlen(screen_name) + 2) == 50){
				mvwaddch(msgwind,y-1,49,' ');
				wmove(msgwind,y-1,49);
			}
			else if((i + strlen(screen_name) + 2) == 100){
				mvwaddch(msgwind,y-1,49,' ');
				wmove(msgwind,y-1,49);
			}
			else if((i + strlen(screen_name) + 2 ) == 150){
				mvwaddch(msgwind,y-1,49,' ');
				wmove(msgwind,y-1,49);
			}
			else {
				mvwaddch(msgwind,y,x -1,' ');
				wmove(msgwind,y,x-1);
			}
				
			i = i-1;
			
			
		}
		else {
			/* if its at 0 and i press a bcakspace, i dont want anything to happen, without the if, it was printing ^G etc */
			if(k != KEY_BACKSPACE){
				reply[i] = k;
				waddch(msgwind,reply[i]);
				i++;
			}
		}

	}

	reply[i+1] = '\0';
	wrefresh(send_reply);
	echo();
		

	getyx(send_reply,y,x);
	mvwprintw(send_reply,getmaxy(send_reply)- 2,5,"%s","Send? [y/N]");
	wrefresh(send_reply);
	do {
		conf = wgetch(send_reply);
		if(conf == 'Y' || conf == 'y')
			retval = 0;
		else if (conf == 'N' || conf == 'n')
			retval = 1;
	}while(conf != 'y' && conf != 'Y' && conf != 'N' && conf != 'n');
	
	noecho();
	refresh();
	delwin(send_reply);
	return retval;
}
Beispiel #25
0
void file_receive(int new_fd)
{
    int flag = 3;
    int ch;
    
    echo();
    
    mvwprintw(ch_window3, 1, 4, "是否接收 %s?", file_name);
    mvwaddstr(ch_window3, 3, 4, "  是");
    mvwaddstr(ch_window3, 4, 4, "  否");
    
    mvwaddstr(ch_window3, flag, 4, "=>");
    wrefresh(ch_window3);
    
    keypad(ch_window3, true);
    cbreak();

    while(1)
    {
        curs_set(0);

	noecho();
	while((ch = wgetch(ch_window3)) != '\n')
	{
	    if(ch == KEY_UP || ch == KEY_DOWN)
	    {
	        mvwaddstr(ch_window3, flag, 4, "  ");

	        if(flag == 3)
		{
		    flag = 4;
		}
		else
		{
		    flag = 3;
		}
	        mvwaddstr(ch_window3, flag, 4, "=>");
		wrefresh(ch_window3);
	    }
	}
        
        switch(flag)
	{
	    case 3:
	    {
	        curs_set(1);
		echo();

		char filename[50];

		Node msg3;

	        mvwaddstr(ch_window3, 1, 4, "                                          ");
	        mvwaddstr(ch_window3, 3, 4, "                                          ");
	        mvwaddstr(ch_window3, 4, 4, "                                          ");
	
	        mvwaddstr(ch_window3, 2, 4, "保存目录: ");
		wmove(ch_window3, 2, 14);
		wrefresh(ch_window3);

		wscanw(ch_window3, "%s", filename);
	        
		mvwaddstr(ch_window3, 2, 4, "                                          ");
		wrefresh(ch_window3);

		sprintf(filename, "%s%s", filename, file_name);
		
		memset(&msg3, 0, sizeof(Node));
		msg3.action = FILE_SEND_START;
		my_strcpy(msg3.name, file_name);
		my_strcpy(msg3.id, msg1.id);
		my_strcpy(msg3.target_user, filename);

		write(new_fd, &msg3, sizeof(Node));
		
                curs_set(0);
	    }
	    case 4:
	    {
		goto EXIT_FILE_SEND;
	    }
	    default:
	    {
	        break;
	    }
	}
    }

    EXIT_FILE_SEND:
    mvwaddstr(ch_window3, 1, 4, "                                       ");
    mvwaddstr(ch_window3, 3, 4, "                                       "); 
    mvwaddstr(ch_window3, 4, 4, "                                       ");
    wrefresh(ch_window3);
}