コード例 #1
0
ファイル: bonus_util.c プロジェクト: brd6/EPITECH-minishell1
void		prompt_bonus(t_mysh *mysh)
{
  char		*env_user;
  char		*env_host;
  char		*env_pwd;
  char		*shortpwd;

  if (((env_key_exist(mysh->my_env, "USER") &&
       (env_user = key_to_value(mysh->my_env, "USER"))) &&
      (env_key_exist(mysh->my_env, "HOST") &&
       (env_host = key_to_value(mysh->my_env, "HOST"))) &&
      (env_key_exist(mysh->my_env, "PWD") &&
       (env_pwd = key_to_value(mysh->my_env, "PWD")))))
    {
      shortpwd = shorten_pwd(mysh, env_pwd);
      set_prompt_bonus(env_user, env_host, shortpwd);
      my_putstr(prompt);
      free(shortpwd);
      free(env_user);
      free(env_host);
      free(env_pwd);
    }
  else
    {
      prompt = my_strdup("$> ");
      my_putstr(prompt);
    }
}
コード例 #2
0
ファイル: bonus_util.c プロジェクト: brd6/EPITECH-minishell1
char		*shorten_pwd(t_mysh *mysh, char *env_pwd)
{
  char		*home;

  home = key_to_value(mysh->my_env, "HOME");
  if (home != NULL && my_strstr(env_pwd, home) != NULL)
    {
      return (my_str_replace(home, "~", env_pwd, -1));
    }
  return (my_strdup(env_pwd));
}
コード例 #3
0
ファイル: builtin_cd.c プロジェクト: brd6/EPITECH-minishell1
void		builtin_cd_replacing_oldpwd(t_mysh *mysh, char *cwd)
{
  char		*pwd_value;
  t_list	*tmp;

  if (!env_key_exist(mysh->my_env, "OLDPWD"))
    return;
  tmp = my_find_node_eq_in_list(mysh->my_env, "OLDPWD", find_key);
  pwd_value = key_to_value(mysh->my_env, "OLDPWD");
  if (cwd != NULL)
    tmp->data = my_str_replace(pwd_value, cwd, tmp->data, 1);
  free(pwd_value);
}
コード例 #4
0
ファイル: builtin_cd.c プロジェクト: brd6/EPITECH-minishell1
char		*get_goto_dir(t_mysh *mysh, char **args)
{
  char		*home_val;

  if ((args[1] == NULL || args[1][0] == 0) &&
      !env_key_exist_v(mysh->my_env, "HOME"))
    return (NULL);
  if (!env_key_exist(mysh->my_env, "HOME"))
    return (my_strdup(args[1]));
  home_val = key_to_value(mysh->my_env, "HOME");
  if (args[1] != NULL && my_strstr(args[1], "~") != NULL)
    return (my_str_replace("~", home_val, args[1], -1));
  if (args[1] == NULL || args[1][0] == 0)
    return (home_val);
  return (my_strdup(args[1]));
}
コード例 #5
0
ファイル: prompt.c プロジェクト: Oblomov/tig
enum input_status
prompt_default_handler(struct input *input, struct key *key)
{
	switch (key_to_value(key)) {
	case KEY_RETURN:
	case KEY_ENTER:
	case '\n':
		return *input->buf || input->allow_empty ? INPUT_STOP : INPUT_CANCEL;

	case KEY_BACKSPACE:
		return *input->buf ? INPUT_DELETE : INPUT_CANCEL;

	case KEY_ESC:
		return INPUT_CANCEL;

	default:
		return INPUT_SKIP;
	}
}
コード例 #6
0
ファイル: bonus_util.c プロジェクト: brd6/EPITECH-minishell1
char		*alias_var_replacing(t_mysh *mysh, char *alias)
{
  char		*var;
  char		*key;
  char		*first_value;
  char		*tmp;

  tmp = my_strdup(alias);
  if (tmp == NULL)
    return (alias);
  var = my_strstr(tmp, "$");
  if (var == NULL)
    return (alias);
  first_value = get_first_value_arg(var);
  key = key_to_value(mysh->my_env, first_value + 1);
  if (env_key_exist(mysh->my_env, first_value + 1))
    alias = my_str_replace(var, key, alias, -1);
  free(first_value);
  free(key);
  return (alias);
}