コード例 #1
0
ファイル: installer.c プロジェクト: phyrrus9/archinstall
int menu(const char *title, int size, int selected, ...)
/*args:
  name (const char *)
  return:
  ID of selected
*/
{
	char ** names = malloc(sizeof(char *) * size);
	int i, longeststr = strlen(title) + 6, tmp;
	int inchar = 0;
	va_list args;
	WCON *wc;
	WINDOW *win;
	initscr();
	noecho();
	refresh();
	keypad(stdscr, TRUE);
	curs_set(0);
	va_start(args, selected);
	for (i = 0; i < size; i++)
	{
		names[i] = va_arg(args, char*);
		tmp = strlen(names[i]);
		if (tmp > longeststr) longeststr = tmp + 4;
	}
	wc = newcon(size, longeststr, (LINES/2)-size, (COLS/2)-(longeststr/2));
	win = conwin(wc);
	titlecon(wc, title);
	while (inchar != '\n')
	{
		wclear(win);
		for (i = 0; i < size; i++)
		{
			wattroff(win, A_STANDOUT);
			if (i == selected)
				wattron(win, A_STANDOUT);
			wprintw(win, "%s\n", names[i]);
		}
		wrefresh(win);
		inchar = getch();
		switch (inchar)
		{
			case KEY_UP:
				if (selected > 0) --selected;
				break;
			case KEY_DOWN:
				if (selected < size - 1) ++selected;
				break;
			default: break;
		}
	}
	va_end(args);
	free(names);
	deletecon(wc);
	endwin();
	return selected;
}
コード例 #2
0
ファイル: accept.C プロジェクト: Sidnicious/sfslite
  void
  slave_acceptor_t::dispatch (svccb *sbp)
  {
    if (!sbp) {
      // shouldn't really happen
      warn << "acceptor shutdown on EOF\n";
    } else {
      switch (sbp->proc ()) {
      case AAPP_SERVER_NEWCON:
	{
	  RPC::aapp_server_prog_1::aapp_server_newcon_srv_t<svccb> srv (sbp);
	  aapp_status_t st = newcon (srv.getarg ());
	  srv.reply (st);
	}
	break;
      default:
	sbp->reject (PROC_UNAVAIL);
	break;
      }
    }
  }