/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1997--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1997--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
LilyPond is free software: you can redistribute it and/or modify
#ifdef __CYGWIN__
static string
-dos_to_posix (string file_name)
+dos_to_posix (const string &file_name)
{
char buf[PATH_MAX] = "";
char s[PATH_MAX] = {0};
much be exchanged. */
#if 0
static /* avoid warning */
-#endif
+#endif
string
slashify (string file_name)
{
}
string
-dir_name (string const file_name)
+dir_name (const string &file_name)
{
string s = file_name;
s = slashify (s);
s = s.substr (0, s.rfind ('/'));
else
s = "";
-
+
return s;
}
get_working_directory ()
{
char cwd[PATH_MAX];
- getcwd (cwd, PATH_MAX);
-
- return string (cwd);
+ // getcwd returns NULL upon a failure, contents of cwd would be undefined!
+ return string (getcwd (cwd, PATH_MAX));
}
/* Join components to full file_name. */
return s;
}
-
string
File_name::file_part () const
{
string f = file_part ();
if (!f.empty ()
- && !dir_.empty())
+ && !dir_.empty ())
{
d += ::to_string (DIRSEP);
}
File_name::is_absolute () const
{
/*
- Hmm. Is c:foo absolute?
+ Hmm. Is c:foo absolute?
*/
return (dir_.length () && dir_[0] == DIRSEP) || root_.length ();
}
-
-
File_name
File_name::canonicalized () const
{
replace_all (&c.dir_, string ("//"), string ("/"));
- vector<string> components = string_split (c.dir_, '/');
+ vector<string> components = string_split (c.dir_, '/');
vector<string> new_components;
for (vsize i = 0; i < components.size (); i++)
{
if (components[i] == "..")
- new_components.pop_back ();
+ new_components.pop_back ();
else
- new_components.push_back (components[i]);
+ new_components.push_back (components[i]);
}
- c.dir_ = string_join (new_components, "/");
- return c;
+ c.dir_ = string_join (new_components, "/");
+ return c;
}