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); } }
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)); }
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); }
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])); }
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; } }
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); }