Example #1
0
int main(int argc,char** argv,char** envp) {
	char cmd[size];
	char* ret;
	int sys_ret;
	show_prompt();
	ret=fgets(cmd,size,stdin);
	if(ret==NULL) {
		perror("problem with fgets");
		return EXIT_FAILURE;
	}
	while(!feof(stdin)) {
		sys_ret=system(cmd);
		if(sys_ret==-1) {
			perror("problem with system(3)");
			return EXIT_FAILURE;
		}
		show_prompt();
		ret=fgets(cmd,size,stdin);
		if(ret==NULL) {
			perror("problem with fgets");
			return EXIT_FAILURE;
		}
	}
	return EXIT_SUCCESS;
}
/*
 * Function: main
 * Returns: exit status of the program
 * Description: The main controller of the whole program,
 * connects with other functions and accomplishes the given task.
 */
int main() {
	sig_t signal_return = signal(SIGINT, interrupt_handler);
	assert(signal_return != SIG_ERR);
	signal_return = signal(SIGTSTP, interrupt_handler);
	assert(signal_return != SIG_ERR);

	show_prompt();
	char buffer[BUFFER_SIZE], *shell_args[ARGS_SUPPORTED + 1];
	while (fgets(buffer, BUFFER_SIZE, stdin)) {
		// If read input contains only newline/ is empty, do nothing and show prompt
		// else if the last character is newline, replace it with null terminator. Doing so
		// will help while splitting the read line.
		if (buffer[0] == '\n' || is_empty(buffer)) {
			show_prompt();
			continue;
		} else if (buffer[strlen(buffer) - 1] == '\n') {
			buffer[strlen(buffer) - 1] = 0;
		}
		split_string(buffer, shell_args);
		if (!strcmp(shell_args[0], EXIT_COMMAND[0])
				|| !strcmp(shell_args[0], EXIT_COMMAND[1])) {
			exit(EXIT_SUCCESS);
		}
		execute_command(shell_args);
		show_prompt();
	}
	return EXIT_SUCCESS;
}
Example #3
0
int					main(int ac, char **av, char **env)
{
	char	*line2;
	t_e		e;

	(void)ac;
	(void)av;
	e.list = ft_env_cpy(env);
	signal(SIGQUIT, ft_signal);
	show_prompt(e.list);
	while (get_next_line(0, &(e.line)) == 1)
	{
		line2 = exange_tab_or_space(e.line);
		e.args = ft_strsplit(line2, ' ');
		if (e.args && e.args[0])
		{
			if (ft_strchr(e.args[0], '/'))
				exec_absolu(e.line, e.list);
			else
				do_command(&(e.list), e.line);
		}
		free(e.line);
		show_prompt(e.list);
		free_char_array(e.args);
	}
	ft_putchar('\n');
	return (0);
}
Example #4
0
int			main(void)
{
	char	*line;
	char	*line2;
	t_list	*list;
	char	**args;

	list = ft_env_cpy();
	signal(SIGINT, ft_signal);
	show_prompt(list);
	while (get_next_line(0, &line) == 1)
	{
		line2 = exchange_tab_for_space(line);
		args = ft_strsplit(line2, ' ');
		if (args && args[0])
		{
			if (ft_strchr(args[0], '/'))
				exec_absolu(line, list);
			else
				do_command(&list, line);
		}
		free(line);
		show_prompt(list);
		free_char_array(args);
	}
	ft_putchar('\n');
	return (0);
}
Example #5
0
void run (callback_t h)
{
	show_prompt ();
	running = true;
	handler = h;
	while (running) _process_byte ();
}
Example #6
0
	/**
	 * Perform the user interface function of editing a program buffer.
	 * @param program The base pointer to the buffer text to edit.
	 * Never returns.
	 */
	void CVue::interpret()
	{
	    if ( !m_running )
	    {
	        reset();
            do_new();
            for(;;)
            {
            	CARIBOU::CString output;
                show_prompt();
                read_line();
                if ( compile(output) )
				{
					m_command = output;
					if (m_command.toInt())
					{
						inherited::reset();
						place();
					}
					else
					{
						m_running = true;
						inherited::reset();
						do_line();
						m_running=false;
					}
				}
            }
	    }
	    inherited::interpret();
	}
Example #7
0
void _process_byte ()
{
	uint16_t data = CONSOLE_UART::receive ();
	if (data & 0xff00) return;
	uint8_t byte = data & 0xff;
	switch (byte)
	{
		case KEY_ENTER:
			if (_command_len)
			{
				_command [_command_len] = 0;
				eol ();
				if (handler) handler (_command);
			}
			show_prompt ();
			return;
		case KEY_DEL:
		case KEY_BS:
			if (!_command_len) return;
			_command_len --;
			CONSOLE_UART::send_string_p (PSTR ("\x08 \x08"));
			return;
		default:
			if (byte < 0x20 || _command_len == CONSOLE_MAX_CMD_LENGTH - 1)
			{
				CONSOLE_UART::send (0x07);
				return;
			}
			_command [_command_len ++] = byte;
			CONSOLE_UART::send (byte);
	}
	return;
}
Example #8
0
SchObj interact()
{
    SchPort* port;
    show_prompt();
    port = (SchPort*)make_input_port_stream(stdin);
    return read_obj( port );
}
Example #9
0
static void render_ui(ui_t *ui) {
  chat_tab = COLS-12;
  log_tab = COLS-6;
  render_tab_bar(ACTIVE_CHAT);

  ui->screen = newwin(LINES - 6, COLS - 1, 1, 1);
  scrollok(ui->screen, TRUE);
  box(ui->screen, 0, 0);
  ui->next_line = 1;
  CHAT = new_panel(ui->screen);
  chat_history = ui_history_create();

  ui->log = newwin(LINES - 6, COLS - 1, 1, 1);
  scrollok(ui->log, TRUE);
  box(ui->log, 0, 0);
  ui->next_log_line = 1;
  LOG = new_panel(ui->log);
  log_history = ui_history_create();

  ui->alert = newwin(3, COLS, 1, 0);
  ALERT = new_panel(ui->alert);

  set_panel_userptr(CHAT, LOG);
  set_panel_userptr(LOG, ALERT);
  set_panel_userptr(ALERT, CHAT);

  top_panel(CHAT);
  hide_panel(LOG);
  hide_panel(ALERT);
  update_panels();
  doupdate();

  ui->prompt = newwin(4, COLS - 1, LINES - 5, 1);
  show_prompt(ui, NULL);
}
Example #10
0
/* PROTO */
void
buddy_unaway(void *c, const char *who)
{
	struct BuddyList *trav;
	char           *sn = simplify_sn(who);

	trav = buddylist;

	while (trav != NULL) {
		if (strcmp(sn, trav->sn) == 0) {
			trav->away = 0;
			break;
		}
		trav = trav->next;
	}

	free(sn);

	if (conn->squelchaway)
		return;

	eraseline();
	b_echostr();

	if (conn->timestamps) {
		putchar(' ');
		addts();
	}
	set_color(COLOR_BUDDY_AWAY);
	printf(" %s ", who);
	set_color(0);
	printf("is no longer away.\n");
	show_prompt();
	return;
}
Example #11
0
void parser_imp::sync_command() {
    // Keep consuming tokens until we find a Command or End-of-file
    show_prompt();
    while (curr() != scanner::token::CommandId && curr() != scanner::token::Eof && curr() != scanner::token::Period)
        next();
    if (curr_is_period())
        next();
}
void sj_prompt_init(struct v7 *v7) {
  memset(&s_sjp, 0, sizeof(s_sjp));

  /* TODO(alashkin): load cfg from flash */
  s_sjp.v7 = v7;

  retarget_putc('\n');
  show_prompt();
}
Example #13
0
/* PROTO */
void
buddy_idle(void *c, const char *who, long idletime)
{
	struct BuddyList *trav;
	int             changed = 1;
	char           *sn = simplify_sn(who);

	trav = buddylist;

	while (trav != NULL) {
		if (strcmp(trav->sn, sn) == 0) {
			trav->idletime = idletime;

			if (idletime >= 10) {
				if (trav->idle)
					changed = 0;
				trav->idle = 1;
			} else {
				if (trav->idle == 0)
					changed = 0;
				trav->idle = 0;
			}
			break;
		}
		trav = trav->next;
	}

	free(sn);

	/*
         * in case for whatever reason the buddy isn't in the list (shouldn't
         * happen)
         */
	if (trav == NULL) {
		return;
	}
	if (!changed) {
		return;
	}
	if (conn->squelchidle)
		return;

	eraseline();
	b_echostr();

	if (conn->timestamps) {
		putchar(' ');
		addts();
	}
	set_color(COLOR_BUDDY_IDLE);
	printf(" %s ", who);
	set_color(0);

	printf("is %s idle.\n", (trav->idle ? "now" : "no longer"));
	show_prompt();
	return;
}
Example #14
0
static void	ft_signal(int sig)
{
	t_list	*list;

	(void)sig;
	list = ft(NULL);
	ft_putchar('\n');
	show_prompt(list);
}
Example #15
0
void sj_prompt_init(struct v7 *v7) {
  memset(&s_sjp, 0, sizeof(s_sjp));

  /* TODO(alashkin): load cfg from flash */
  s_sjp.v7 = v7;

  printf("\n");
  show_prompt();
}
Example #16
0
void sj_prompt_process_char(char ch) {
  if (s_sjp.pos >= RX_BUFSIZE - 1) {
    printf("\nCommand buffer overflow.\n");
    s_sjp.pos = 0;
    show_prompt();
  }
  s_sjp.buf[s_sjp.pos++] = ch;
  s_sjp.buf[s_sjp.pos] = '\0';
  s_sjp.char_processor(ch);
}
Example #17
0
void kernel_shell_start()
{
    printk("Starting LevOS debug shell...\n");
    shell_tty = get_tty(0);
    while (1) {
        show_prompt();
        char *in = grab_input();
        parse_input(in);
    }
}
Example #18
0
static void			ft_signal(int sig)
{
	t_list	*list;

	if (sig == 3)
		exit(0);
	list = ft(NULL);
	ft_putchar('\n');
	show_prompt(list);
}
Example #19
0
static void process_command(char *cmd) {
  if (*cmd == ':') {
    int i;
    for (i = 0; i < sizeof(cmds) / sizeof(cmds[0]); i++) {
      if (strncmp(cmd + 1, cmds[i].command, strlen(cmds[i].command)) == 0) {
        cmds[i].proc(0, 0, cmds[i].param);
        break;
      }
    }
    if (i == sizeof(cmds) / sizeof(cmds[0])) {
      printf("Unknown command, type :help for the list of commands\n");
    }
    if (s_sjp.char_processor == process_prompt_char) show_prompt();
  } else {
    /* skip empty commands */
    if (*cmd) process_js(cmd);
    show_prompt();
  }
}
Example #20
0
static void process_here_char(char ch) {
  printf("%c", ch);

  if (s_sjp.pos >= 7 &&
      strncmp(&s_sjp.buf[s_sjp.pos - 7], "\r\nEOF\r\n", 7) == 0 ||
      s_sjp.pos >= 5 &&
      (strncmp(&s_sjp.buf[s_sjp.pos - 5], "\nEOF\n", 5) == 0 ||
       strncmp(&s_sjp.buf[s_sjp.pos - 5], "\rEOF\r", 5) == 0)) {
    int end_pos = s_sjp.pos - (s_sjp.buf[s_sjp.pos - 2] == '\r' ? 7 : 5);
    s_sjp.buf[end_pos] = '\0';
    printf("\n");
    process_js(s_sjp.buf);
    show_prompt();
  } else {
    if (s_sjp.pos >= RX_BUFSIZE) {
      printf("Input too long\n");
      show_prompt();
    }
  }
}
Example #21
0
/**
 * void main_loop(FILE *stream, int interactive)
 *
 * Reads, tokenises, parses ane executes input from the given stream. If
 * interactive mode is on, outputs a welcome message and a prompt.
 */
void main_loop(FILE *stream, int interactive) {
	char buffer[BUFFER_MAX_SIZE];
	char last_line[BUFFER_MAX_SIZE];
	int more_to_read = TRUE;
	tokarray_t *tokens;
	expression_t *expr;
	
	bzero(buffer, BUFFER_MAX_SIZE);
	bzero(last_line, BUFFER_MAX_SIZE);
	
	if (interactive == TRUE) {
		show_welcome();
	}
	
	while (more_to_read == TRUE) {
		if (interactive == TRUE) {
			show_prompt();
		}
		
		/* Read a line of input. */
		more_to_read = read_data(stream, buffer, BUFFER_MAX_SIZE);
		
		if (strlen(buffer) == 0) {
			continue;
		}
		
		strcpy(last_line, buffer);
		
		/* Tokenise the input. */
		tokens = tokenise_input(buffer);
		
		if (tokens == NULL) {
			printf("!tmnsh: Could not tokenise input: %s\n", last_line);
			continue;
		}
		
		/* Parse the tokens into an expression. */
		expr = parse_tokens(tokens);
		
		if (expr == NULL) {
			printf("!tmnsh: Could not parse input: %s\n", last_line);
			tokarray_destroy(tokens); /* Clean up. */
			continue;
		}
		
		/* Interpret the expression and execute the commands. */
		interpret_expression(expr);
		
		expression_destroy(expr); /* Clean up. */
		bzero(buffer, BUFFER_MAX_SIZE);
		bzero(last_line, BUFFER_MAX_SIZE);
	}
}
Example #22
0
/* PROTO */
void
buddy_profile(void *c, const char *who, const char *msg)
{
	char           *ptext;
	long            days, hours, minutes;
	struct BuddyList *trav;
	char           *sname;
#ifdef DUMP_PROFILE
	FILE           *profile_dump;
#endif

	sname = simplify_sn(who);
	eraseline();

	for (trav = buddylist; trav; trav = trav->next) {
		if (strcmp(trav->sn, sname) == 0) {
			if (trav->idle) {
				b_echostr_s();
				printf("[%s] Idle: ", who);
				days = trav->idletime / 1440;
				hours = (trav->idletime % 1440) / 60;
				minutes = trav->idletime % 60;
				if (days > 0)
					printf("%ld days, ", days);
				if (hours > 0)
					printf("%ld hour%s, ", hours, (hours != 1 ? "s" : ""));

				printf("%ld minute%s\n", minutes,
				       (minutes != 1 ? "s" : ""));
				break;
			}
		}
	}

	b_echostr_s();
	printf("[%s] Info:\n", who);

	free(sname);

	ptext = strip_html(msg);
	prettyprint_echostr(ptext, PROFILE_ECHOSTR);

	free(ptext);

#ifdef DUMP_PROFILE
	if ((profile_dump = fopen(PROFILE_DUMP_PATH, "w")) != NULL) {
		fprintf(profile_dump, "%s", msg);
		fclose(profile_dump);
	}
#endif

	show_prompt();
}
Example #23
0
static void print_input(char input_c, char *buf, int *cur_pos, int *cur_max)
{
	if (*cur_pos < MAX_ARG_LEN - 1)
		insert_one_key(input_c, buf, cur_pos, cur_max);
	else {
		putchar('\n');
		printf("error: command too long\nthe command must be less than %d letter", MAX_ARG_LEN);
		putchar('\n');
		show_prompt();
		printf(buf);
	}
}
Example #24
0
void	up_clear_find(t_group *grp, char *name)
{
	int	i;

	i = -1;
	name = NULL;
	tputs(tgetstr("cr", NULL), 0, ft_getchar);
	while (++i < TERM(line))
		tputs(tgetstr("up", NULL), 0, ft_getchar);
	tputs(tgetstr("cd", NULL), 0, ft_getchar);
	show_prompt(grp, "fsh-> ", 6, "\033[1;32m");
	TERM(line) = 0;
}
static int alphabet_game_start_response_focus(p_void_data_t p_void_data, const m_evt_code_t *p_m_evt_code, int sel_index)
{
	const unsigned int usec=DELAY_TIME_MAX;
	alphabet_game_t *ag=(alphabet_game_t *)p_void_data;
	const m_evt_code_t *m_evt_code=p_m_evt_code;
	int sel_ndx=sel_index;
	if((NULL==ag)||(NULL==m_evt_code)){
		return RET_FAILED;
	}

	if(FALSE==judge_cur_sort_foremost_alphabet(ag,ag->alphabet_id[sel_ndx])){
		show_prompt(&ag->scr,ALPHABET_GAME_HELP_SELECT_WRONG,strlen(ALPHABET_GAME_HELP_SELECT_WRONG),COLOR_MSG_ERROR);
		refresh_screen(ag->scr.win);
		sleep_delay_time(usec);
	}else{
		ctrl_tool_set_visible(ag->child_status_start,sel_index,FALSE);
		dec_remain_alphabet_num(ag);
	}

	if(0>=get_remain_alphabet_num(ag)){//enter next level
		set_enter_next_level(ag,TRUE);
		switch(get_cur_level(ag)){
			case LEVEL_ONE:
				set_cur_level(ag,LEVEL_TWO);				
				set_total_time(ag,ALPHABET_GAME_START_TIME_TWO);
				//set_remain_time(ag,ALPHABET_GAME_START_TIME_TWO);
				set_total_alphabet_num(ag,ALPHABET_GAME_START_LEVEL_TWO_ALPHABET_NUM);
				set_remain_alphabet_num(ag,get_total_alphabet_num(ag));	
				break;
			case LEVEL_TWO:
				set_cur_level(ag,LEVEL_THREE);
				set_total_time(ag,ALPHABET_GAME_START_TIME_THREE);
				//set_remain_time(ag,ALPHABET_GAME_START_TIME_THREE);
				set_total_alphabet_num(ag,ALPHABET_GAME_START_LEVEL_THREE_ALPHABET_NUM);
				set_remain_alphabet_num(ag,get_total_alphabet_num(ag));	
				break;
			case LEVEL_THREE:
				set_cur_level(ag,LEVEL_ONE);				
				set_total_time(ag,ALPHABET_GAME_START_TIME_ONE);
				//set_remain_time(ag,ALPHABET_GAME_START_TIME_ONE);
				set_total_alphabet_num(ag,ALPHABET_GAME_START_LEVEL_ONE_ALPHABET_NUM);
				exit_child_status_start(ag);
				break;
			default:
				set_cur_status(ag,MAIN_STATUS);
				break;
		}
	}
		
	return RET_SUCCESS;
}
Example #26
0
char *get_user_input(ui_t *ui) {
  char *msg = malloc(MAX_BUFF);
  int msg_len = 0, c, px, py;

  wmove(ui->prompt, 1, 4);
  wrefresh(ui->prompt);
  while (c = getch()) 
    switch (c) {
      case KEY_MOUSE:
        mvwinnstr(ui->prompt, 1, 4, msg, msg_len);
        process_mouse_events(ui);
        show_prompt(ui, msg);
        break;

      case KEY_BACKSPACE:
        if (msg_len > 0) {
          getyx(ui->prompt, py, px);
          if (px >= 4) {
            mvwdelch(ui->prompt, py, px-1);
            msg_len--;
            wrefresh(ui->prompt);
          }
        }
        break;

      case '\n':
        mvwinnstr(ui->prompt, 1, 4, msg, msg_len);
        show_prompt(ui, NULL);
        return msg;  

      default:
        getyx(ui->prompt, py, px);
        mvwaddch(ui->prompt, py, px, c);
        msg_len++;
        wrefresh(ui->prompt);
        break;
    }
}
Example #27
0
static void print(client_t *c, const char *format, ...)
{
    va_list ap;

    hide_prompt(c);

    va_start(ap, format);
    vfprintf(stdout, format, ap);
    fputc('\n', stdout);
    fflush(stdout);
    va_end(ap);

    show_prompt(c);
}
Example #28
0
static void
display_question (ply_boot_splash_plugin_t *plugin,
                  const char               *prompt,
                  const char               *entry_text)
{
  pause_views (plugin);
  if (plugin->state == PLY_BOOT_SPLASH_DISPLAY_NORMAL)
    stop_animation (plugin, NULL);

  plugin->state = PLY_BOOT_SPLASH_DISPLAY_QUESTION_ENTRY;
  show_prompt (plugin, prompt, entry_text);
  redraw_views (plugin);
  unpause_views (plugin);
}
Example #29
0
void	display_search(t_group *grp, char *name)
{
	size_t	i;

	i = -1;
	up_clear_find(grp, name);
	ft_putendl_fd(name, 2);
	while (++i < LEN(name))
		if ((START_POS + i) % TERM(window->width) == 0)
			TERM(line) += 1;
	TERM(line) += 1;
	show_prompt(grp, "fsh: search: ", 13, "\033[1;34m");
	ft_putstr_fd(TERM(cmd_line), 2);
}
Example #30
0
/* PROTO */
void
buddy_awaymsg(void *c, const char *who, const char *msg)
{
	char           *ptext;

	eraseline();
	b_echostr_s();
	printf("[%s] Away: ", who);
	ptext = strip_html(msg);
	prettyprint(ptext, 12 + strlen(who));

	if (ptext[0] == 0)
		printf("\n");

	free(ptext);
	show_prompt();
}