Exemple #1
0
int		show_prompt_line(t_env *env)
{
  char          *str;
  char          *home;
  int           i;
  int		s;

  init_prompt(&str, &i, &s, env);
  if (str)
    {
      if_str(&str, &s, env, &home);
      i = 1;
      if (str != NULL && home != NULL)
	{
	  if ((i = home_pwd_cmp(str, home)))
	      write(1, "~", 1);
	  s += my_strlen(str) - i;
	}
      if (str)
	my_putstr(&str[i]);
      s += 2;
      my_putstr("$ ");
      return (s);
    }
  my_putstr(DEF_PROMPT);
  return (3);
}
Exemple #2
0
char		*deal_with_termcap(t_shell *sh)
{
	t_prompt	*prompt;
	int			ret;
	char		buff[4];
	char		*str;

	prompt = init_prompt();
	stock_prompt(prompt, 0);
	prompt_print(prompt, 1);
	str = NULL;
	while ((ret = read(0, buff, BUFF_SIZE) != -1))
	{
		prompt_shell(sh, prompt, buff);
		if (buff[0] == 4 && !prompt->cmd[0])
			exit_eof(sh, prompt);
		if (buff[0] == 10)
		{
			str = input_return(sh, prompt);
			break ;
		}
		ft_bzero(buff, 4);
	}
	free_prompt(&prompt);
	return (str);
}
Exemple #3
0
int main(){

	init_prompt();
	//print_prompt();
	//change_prompt("I Hate C");
	//print_out("Prompt Changed to I Hate C");
	//print_prompt();
	
	//going to recycle this guy
	command_t * mycmd = alloc_command_t();
	//print_prompt();
	//char buffer[40];
	//scanf("%s",buffer);
	parse("Hello world",mycmd);
    /*int i;
    for(i = 0; i < MAX_ARG_COUNT; i++)
    {
        if(mycmd -> argv[i] == NULL) break;
        print_out(mycmd -> argv[i]);
    }*/
	

	/*
	char buffer[40];
	fputs("Enter Command: ", stdout);
	fflush(stdout);
	fgets(buffer, sizeof buffer, stdin);
	printf("input text = %s\n", buffer);
	printf("About to enter parse()");
	command_t c = parse(buffer);
	printf("%s",c.path);
	*/
	return 0;
}
Exemple #4
0
void		init_shell(char **initial_env) {
  memset(&sh, 0, sizeof(sh));
  sh.environment = duplicate_env(initial_env);
  sh.args = make_sh_args_tab();
  init_pwd();

  open_config_file();
  init_prompt();
  init_signals(1);
}
Exemple #5
0
char		*my_prompt(t_glob *glob)
{
  t_prompt	*prompt;
  char		*str;

  str = NULL;
  prompt = init_prompt(glob);
  if (prompt)
    str = prompt_dispatcher(glob, prompt);
  if (str && my_strlen(str) > 0)
    add_hist_beg(glob, str);
  else
    {
      xfree(str);
      return (NULL);
    }
  free_prompt(prompt);
  return (str);
}
Exemple #6
0
//Builds a cool prompt
void print_prompt()
{
	//Initializes the prompt (does nothing if not necessary)
	init_prompt();
	
	//if we didn't get user or cwd, just use boring prompt
	if(cur_username[0] == '\0' || cur_wd_long[0] == '\0')
	{
		printf("%s[SHELL] $%s ", ex_color, end_col);
	}
	else	//if homdir or hostname failed this is still fine
	{
		//Print username
		printf("%s%s", ex_color, cur_username);
		//Print @hostname if we have it
		if(cur_hostname[0] != '\0');
			printf("@%s", cur_hostname);
		//Change colors
		printf("%s%s ", end_col, di_color);
		//Print the $ and end color change
		//cur_wd_short == cur_wd_long if no cur_homedir
		printf("%s $%s ", cur_wd_short, end_col);
	}
}
Exemple #7
0
int main(int argc, char ** argv)
{
	//get command line arguments
	int c;
    char * pvalue = NULL;
	while ((c = getopt (argc, argv, "p:")) != -1)
	{
		switch (c)
		{
			case 'p':
                pvalue = optarg;
				break;
			default:
				break;
		}
	}

	int cmd_type; //enumerated value to determine how command is executed
	int cmd_block; //whether to wait for child to exit or not
    int cmd_argc; //number of args counted while parsing
	char cmd_args[MAX_ARG_COUNT][MAX_INPUT_LENGTH]; //store command line args
    char * exec_args[MAX_ARG_COUNT]; //cmd_args incompatible type with execvp

	//ready prompt
	char prompt[MAX_INPUT_LENGTH];
	init_prompt(prompt);
	if(pvalue != NULL)
	{   
		change_prompt(prompt,pvalue);
	}

	char buffer[MAX_INPUT_LENGTH]; //general purpose string buffer
	
	int done = 0;
	do
	{
		//clear command buffer
		int i;
		for(i = 0; i < MAX_ARG_COUNT; i++)
		{
			cmd_args[i][0] = '\0';
		}
		//get input
		print_prompt(prompt);
		scanf("\n");
		scanf("%[^\n]",buffer);

		//store history
        strcpy(history[history_count],buffer);
        history_count++;

		//tokenize
		char * ptr = strtok(buffer," ");
		i = 0;
		while(ptr != NULL)
		{
			strcpy(cmd_args[i],ptr);
			ptr = strtok(NULL," ");
			i++;
		}
        argc = i;

		//set state based on input
		cmd_type = get_type(cmd_args[0]);
		cmd_block = get_block(cmd_args[argc-1]);
        int j;
        for(j = 0; j < argc; j++)
        {
            exec_args[j] = cmd_args[j];
        }
        if(!cmd_block) //want to eliminate &
        {
            exec_args[argc-1] = NULL;
        }
        else //keep all args parsed
        {
            exec_args[argc] = NULL;
        }
        
		//check if any children exited
		int status, child_pid;
		child_pid = waitpid(-1,&status,WNOHANG);
		if(child_pid > 0)
		{
			get_status_str(status,child_pid,buffer);
			print_out(buffer);
		}
        
        //execute
        done = execute(cmd_type,cmd_block,cmd_args[0],exec_args);

	}while(!done);
	return 0;
}