Compare commits

..

No commits in common. "b99f96cf6af73eef6bb887cd28bdb6508f2dd702" and "91df92f49a82d082c864274e0d75858876833340" have entirely different histories.

31
sdn.cpp
View File

@ -113,28 +113,6 @@ fun split (const string &s, const string &sep) -> vector<string> {
vector<string> result; split (s, sep, result); return result;
}
fun untilde (const string &path) -> string {
if (path.empty ())
return path;
string tail = path.substr (1);
if (path[0] == '\\')
return tail;
if (path[1] != '~')
return path;
// If there is something between the ~ and the first / (or the EOS)
if (size_t until_slash = tail.find ('/')) {
if (const auto *pw = getpwnam (tail.substr (0, until_slash).c_str ()))
return pw->pw_dir + tail.substr (until_slash);
} else if (const auto *home = getenv ("HOME")) {
return home + tail;
} else if (const auto *pw = getpwuid (getuid ())) {
return pw->pw_dir + tail;
}
return path;
}
fun needs_shell_quoting (const string &v) -> bool {
// IEEE Std 1003.1 sh + the exclamation mark because of csh/bash
// history expansion, implicitly also the NUL character
@ -162,7 +140,7 @@ fun parse_line (istream &is, vector<string> &out) -> bool {
enum {TAKE = 1 << 3, PUSH = 1 << 4, STOP = 1 << 5, ERROR = 1 << 6};
enum {TWOR = TAKE | WOR};
// We never transition back to the start state, so it can stay as a no-op
// We never transition back to the start state, so it can stay as a noop
static char table[STATES][7] = {
// state EOF SP, TAB ' # \ LF default
/* STA */ {ERROR, DEF, QUO, COM, ESC, STOP, TWOR},
@ -1245,7 +1223,7 @@ fun handle (wint_t c) -> bool {
case ACTION_CHDIR:
g.editor = L"chdir";
g.editor_on_confirm = [] {
change_dir (untilde (to_mb (g.editor_line)));
change_dir (to_mb (g.editor_line));
};
break;
case ACTION_PARENT:
@ -1255,7 +1233,10 @@ fun handle (wint_t c) -> bool {
change_dir (g.start_dir);
break;
case ACTION_GO_HOME:
change_dir (untilde ("~"));
if (const auto *home = getenv ("HOME"))
change_dir (home);
else if (const auto *pw = getpwuid (getuid ()))
change_dir (pw->pw_dir);
break;
case ACTION_SEARCH: