aboutsummaryrefslogtreecommitdiffhomepage
path: root/path.cpp
diff options
context:
space:
mode:
authorGravatar Łukasz Niemier <lukasz@niemier.pl>2012-11-18 11:23:22 +0100
committerGravatar Łukasz Niemier <lukasz@niemier.pl>2012-11-18 11:23:22 +0100
commit47df1ae40adecd0a02fc7dd06ab0745cb18c3fe0 (patch)
tree13bf3e8fdcae60fdfb5fa5e26c95818dc7a49790 /path.cpp
parentb79854ad1aa814d9d35d76a1929b4726fa4bffa5 (diff)
Remove trailing whitespaces and change tabs to spaces
Diffstat (limited to 'path.cpp')
-rw-r--r--path.cpp392
1 files changed, 196 insertions, 196 deletions
diff --git a/path.cpp b/path.cpp
index 2ba524ef..df7a9596 100644
--- a/path.cpp
+++ b/path.cpp
@@ -25,110 +25,110 @@
static bool path_get_path_core(const wcstring &cmd, wcstring *out_path, const env_var_t &bin_path_var)
{
- int err = ENOENT;
-
- debug( 3, L"path_get_path( '%ls' )", cmd.c_str() );
-
+ int err = ENOENT;
+
+ debug( 3, L"path_get_path( '%ls' )", cmd.c_str() );
+
/* If the command has a slash, it must be a full path */
- if (cmd.find(L'/') != wcstring::npos)
- {
- if( waccess( cmd, X_OK )==0 )
- {
- struct stat buff;
- if(wstat( cmd, &buff ))
- {
- return false;
- }
-
- if( S_ISREG(buff.st_mode) )
+ if (cmd.find(L'/') != wcstring::npos)
+ {
+ if( waccess( cmd, X_OK )==0 )
+ {
+ struct stat buff;
+ if(wstat( cmd, &buff ))
+ {
+ return false;
+ }
+
+ if( S_ISREG(buff.st_mode) )
{
- if (out_path)
+ if (out_path)
out_path->assign(cmd);
return true;
}
- else
- {
- errno = EACCES;
- return false;
- }
- }
- else
- {
- struct stat buff;
- wstat( cmd, &buff );
- return false;
- }
-
- }
- else
- {
+ else
+ {
+ errno = EACCES;
+ return false;
+ }
+ }
+ else
+ {
+ struct stat buff;
+ wstat( cmd, &buff );
+ return false;
+ }
+
+ }
+ else
+ {
wcstring bin_path;
- if (! bin_path_var.missing())
+ if (! bin_path_var.missing())
{
bin_path = bin_path_var;
}
else
- {
- if (contains( PREFIX L"/bin", L"/bin", L"/usr/bin" ))
- {
- bin_path = L"/bin" ARRAY_SEP_STR L"/usr/bin";
- }
- else
- {
- bin_path = L"/bin" ARRAY_SEP_STR L"/usr/bin" ARRAY_SEP_STR PREFIX L"/bin";
- }
- }
-
+ {
+ if (contains( PREFIX L"/bin", L"/bin", L"/usr/bin" ))
+ {
+ bin_path = L"/bin" ARRAY_SEP_STR L"/usr/bin";
+ }
+ else
+ {
+ bin_path = L"/bin" ARRAY_SEP_STR L"/usr/bin" ARRAY_SEP_STR PREFIX L"/bin";
+ }
+ }
+
wcstring nxt_path;
wcstokenizer tokenizer(bin_path, ARRAY_SEP_STR);
- while (tokenizer.next(nxt_path))
- {
+ while (tokenizer.next(nxt_path))
+ {
if (nxt_path.empty())
continue;
append_path_component(nxt_path, cmd);
- if( waccess( nxt_path, X_OK )==0 )
- {
- struct stat buff;
- if( wstat( nxt_path, &buff )==-1 )
- {
- if( errno != EACCES )
- {
- wperror( L"stat" );
- }
- continue;
- }
- if( S_ISREG(buff.st_mode) )
- {
+ if( waccess( nxt_path, X_OK )==0 )
+ {
+ struct stat buff;
+ if( wstat( nxt_path, &buff )==-1 )
+ {
+ if( errno != EACCES )
+ {
+ wperror( L"stat" );
+ }
+ continue;
+ }
+ if( S_ISREG(buff.st_mode) )
+ {
if (out_path)
out_path->swap(nxt_path);
- return true;
- }
- err = EACCES;
-
- }
- else
- {
- switch( errno )
- {
- case ENOENT:
- case ENAMETOOLONG:
- case EACCES:
- case ENOTDIR:
- break;
- default:
- {
- debug( 1,
+ return true;
+ }
+ err = EACCES;
+
+ }
+ else
+ {
+ switch( errno )
+ {
+ case ENOENT:
+ case ENAMETOOLONG:
+ case EACCES:
+ case ENOTDIR:
+ break;
+ default:
+ {
+ debug( 1,
MISSING_COMMAND_ERR_MSG,
nxt_path.c_str() );
- wperror( L"access" );
- }
- }
- }
- }
- }
-
- errno = err;
- return false;
+ wperror( L"access" );
+ }
+ }
+ }
+ }
+ }
+
+ errno = err;
+ return false;
}
bool path_get_path(const wcstring &cmd, wcstring *out_path, const env_vars_snapshot_t &vars)
@@ -143,94 +143,94 @@ bool path_get_path(const wcstring &cmd, wcstring *out_path)
bool path_get_cdpath_string(const wcstring &dir_str, wcstring &result, const env_var_t &cdpath)
{
- wchar_t *res = 0;
- int err = ENOENT;
+ wchar_t *res = 0;
+ int err = ENOENT;
bool success = false;
-
+
const wchar_t *const dir = dir_str.c_str();
- if( dir[0] == L'/'|| (wcsncmp( dir, L"./", 2 )==0) )
- {
- struct stat buf;
- if( wstat( dir, &buf ) == 0 )
- {
- if( S_ISDIR(buf.st_mode) )
- {
- result = dir_str;
+ if( dir[0] == L'/'|| (wcsncmp( dir, L"./", 2 )==0) )
+ {
+ struct stat buf;
+ if( wstat( dir, &buf ) == 0 )
+ {
+ if( S_ISDIR(buf.st_mode) )
+ {
+ result = dir_str;
success = true;
- }
- else
- {
- err = ENOTDIR;
- }
-
- }
- }
- else
- {
-
+ }
+ else
+ {
+ err = ENOTDIR;
+ }
+
+ }
+ }
+ else
+ {
+
wcstring path = L".";
-
+
// Respect CDPATH
env_var_t cdpath = env_get_string(L"CDPATH");
if (! cdpath.missing_or_empty()) {
path = cdpath.c_str();
}
-
+
wcstokenizer tokenizer(path, ARRAY_SEP_STR);
wcstring next_path;
while (tokenizer.next(next_path))
{
expand_tilde(next_path);
if (next_path.size() == 0) continue;
-
+
wcstring whole_path = next_path;
append_path_component(whole_path, dir);
-
- struct stat buf;
- if( wstat( whole_path, &buf ) == 0 )
- {
- if( S_ISDIR(buf.st_mode) )
- {
+
+ struct stat buf;
+ if( wstat( whole_path, &buf ) == 0 )
+ {
+ if( S_ISDIR(buf.st_mode) )
+ {
result = whole_path;
success = true;
- break;
- }
- else
- {
- err = ENOTDIR;
- }
- }
- else
- {
- if( lwstat( whole_path, &buf ) == 0 )
- {
- err = EROTTEN;
- }
- }
+ break;
+ }
+ else
+ {
+ err = ENOTDIR;
+ }
+ }
+ else
+ {
+ if( lwstat( whole_path, &buf ) == 0 )
+ {
+ err = EROTTEN;
+ }
+ }
}
}
-
-
- if( !success )
- {
- errno = err;
- }
-
- return res;
+
+
+ if( !success )
+ {
+ errno = err;
+ }
+
+ return res;
}
bool path_get_cdpath(const wcstring &dir, wcstring *out, const wchar_t *wd, const env_vars_snapshot_t &env_vars)
{
- int err = ENOENT;
- if (dir.empty())
- return false;
-
+ int err = ENOENT;
+ if (dir.empty())
+ return false;
+
if (wd)
{
size_t len = wcslen(wd);
assert(wd[len - 1] == L'/');
}
-
+
wcstring_list_t paths;
if (dir.at(0) == L'/') {
/* Absolute path */
@@ -254,7 +254,7 @@ bool path_get_cdpath(const wcstring &dir, wcstring *out, const wchar_t *wd, cons
wcstokenizer tokenizer(path, ARRAY_SEP_STR);
while (tokenizer.next(nxt_path))
{
-
+
if (nxt_path == L"." && wd != NULL) {
// nxt_path is just '.', and we have a working directory, so use the wd instead
// TODO: if nxt_path starts with ./ we need to replace the . with the wd
@@ -262,39 +262,39 @@ bool path_get_cdpath(const wcstring &dir, wcstring *out, const wchar_t *wd, cons
}
expand_tilde(nxt_path);
-// debug( 2, L"woot %ls\n", expanded_path.c_str() );
+// debug( 2, L"woot %ls\n", expanded_path.c_str() );
if (nxt_path.empty())
continue;
-
+
wcstring whole_path = nxt_path;
append_path_component(whole_path, dir);
paths.push_back(whole_path);
}
}
-
+
bool success = false;
for (wcstring_list_t::const_iterator iter = paths.begin(); iter != paths.end(); ++iter) {
- struct stat buf;
+ struct stat buf;
const wcstring &dir = *iter;
- if( wstat( dir, &buf ) == 0 )
- {
- if( S_ISDIR(buf.st_mode) )
- {
+ if( wstat( dir, &buf ) == 0 )
+ {
+ if( S_ISDIR(buf.st_mode) )
+ {
success = true;
if (out)
out->assign(dir);
break;
- }
- else
- {
- err = ENOTDIR;
- }
- }
+ }
+ else
+ {
+ err = ENOTDIR;
+ }
}
-
+ }
+
if (! success)
- errno = err;
+ errno = err;
return success;
}
@@ -302,7 +302,7 @@ bool path_can_be_implicit_cd(const wcstring &path, wcstring *out_path, const wch
{
wcstring exp_path = path;
expand_tilde(exp_path);
-
+
bool result = false;
if (string_prefixes_string(L"/", exp_path) ||
string_prefixes_string(L"./", exp_path) ||
@@ -317,41 +317,41 @@ bool path_can_be_implicit_cd(const wcstring &path, wcstring *out_path, const wch
bool path_get_config(wcstring &path)
{
- int done = 0;
- wcstring res;
-
- const env_var_t xdg_dir = env_get_string( L"XDG_CONFIG_HOME" );
- if( ! xdg_dir.missing() )
- {
- res = xdg_dir + L"/fish";
- if( !create_directory( res ) )
- {
- done = 1;
- }
- }
- else
- {
- const env_var_t home = env_get_string( L"HOME" );
- if( ! home.missing() )
- {
- res = home + L"/.config/fish";
- if( !create_directory( res ) )
- {
- done = 1;
- }
- }
- }
-
- if( done )
- {
+ int done = 0;
+ wcstring res;
+
+ const env_var_t xdg_dir = env_get_string( L"XDG_CONFIG_HOME" );
+ if( ! xdg_dir.missing() )
+ {
+ res = xdg_dir + L"/fish";
+ if( !create_directory( res ) )
+ {
+ done = 1;
+ }
+ }
+ else
+ {
+ const env_var_t home = env_get_string( L"HOME" );
+ if( ! home.missing() )
+ {
+ res = home + L"/.config/fish";
+ if( !create_directory( res ) )
+ {
+ done = 1;
+ }
+ }
+ }
+
+ if( done )
+ {
path = res;
return true;
- }
- else
- {
- debug( 0, _(L"Unable to create a configuration directory for fish. Your personal settings will not be saved. Please set the $XDG_CONFIG_HOME variable to a directory where the current user has write access." ));
- return false;
- }
+ }
+ else
+ {
+ debug( 0, _(L"Unable to create a configuration directory for fish. Your personal settings will not be saved. Please set the $XDG_CONFIG_HOME variable to a directory where the current user has write access." ));
+ return false;
+ }
}
@@ -375,7 +375,7 @@ void path_make_canonical( wcstring &path )
size = path.size();
replace_all(path, L"//", L"/");
} while (path.size() != size);
-
+
/* Remove trailing slashes, except don't remove the first one */
while (size-- > 1) {
if (path.at(size) != L'/')
@@ -410,7 +410,7 @@ bool path_is_valid(const wcstring &path, const wcstring &working_directory)
bool paths_are_same_file(const wcstring &path1, const wcstring &path2) {
if (path1 == path2)
return true;
-
+
struct stat s1, s2;
if (wstat(path1, &s1) == 0 && wstat(path2, &s2) == 0) {
return s1.st_ino == s2.st_ino && s1.st_dev == s2.st_dev;