* lily/main.cc (setup_paths): Bugfix for argv0 logic.
(setup_paths)[__CYGWIN__ || __MINGW32__ || ]: Normalize argv0.
(setup_paths)[__MINGW32__]: Also look for argv0 + .exe.
2005-11-03 Jan Nieuwenhuizen <janneke@gnu.org>
+ * flower/file-path.cc (find): Bugfix: Return name of file found.
+
* lily/main.cc (setup_paths): Bugfix for argv0 logic.
+ (setup_paths)[__CYGWIN__ || __MINGW32__ || ]: Normalize argv0.
+ (setup_paths)[__MINGW32__]: Also look for argv0 + .exe.
2005-11-03 Han-Wen Nienhuys <hanwen@xs4all.nl>
#include <sys/cygwin.h>
#endif
-/* We don't have multiple roots, set this to '\0'? */
#ifndef ROOTSEP
#define ROOTSEP ':'
#endif
String
File_path::find (String name, char const *extensions[])
{
- File_name file_name (name);
if (name.is_empty () || name == "-")
- file_name.base_ = "-";
- else
+ return name;
+
+ File_name file_name (name);
+ String orig_ext = file_name.ext_;
+ for (int i = 0; extensions[i]; i++)
{
- String orig_ext = file_name.ext_;
- for (int i = 0; extensions[i]; i++)
- {
- file_name.ext_ = orig_ext;
- if (*extensions[i] && !file_name.ext_.is_empty ())
- file_name.ext_ += ".";
- file_name.ext_ += extensions[i];
- if (!find (file_name.to_string ()).is_empty ())
- break;
- }
-
- /* Reshuffle extension */
- file_name = File_name (file_name.to_string ());
+ file_name.ext_ = orig_ext;
+ if (*extensions[i] && !file_name.ext_.is_empty ())
+ file_name.ext_ += ".";
+ file_name.ext_ += extensions[i];
+ String found = find (file_name.to_string ());
+ if (!found.is_empty ())
+ return found;
}
- return file_name.to_string ();
+
+ return "";
}
/** Append a directory, return false if failed. */
be_verbose_global = true;
/* Find absolute ARGV0 name, using PATH. */
- File_path p;
- p.parse_path (getenv ("PATH"));
- String argv0_abs = p.find (argv0);
+ File_path path;
+ path.parse_path (getenv ("PATH"));
+
+#if defined (__CYGWIN__) || defined (__MINGW32__)
+ String s = argv0;
+ s.substitute ('\\', '/');
+ argv0 = s.to_str0 ();
+#endif /* __CYGWIN__ || __MINGW32__ */
+
+#ifndef __MINGW32__
+ String argv0_abs = path.find (argv0);
+#else /* __MINGW32__ */
+ char const *ext[] = {"exe", "", 0 };
+ String argv0_abs = path.find (argv0, ext);
+#endif /* __MINGW32__ */
+
if (argv0_abs.is_empty ())
{
File_name name (argv0);
/* If NAME contains slashes and its DIR is not absolute, it can
only be referenced from CWD. */
- if (name.to_string ().index ('/') >= 0 && name.dir_[0] != DIRSEP)
+ if (name.to_string ().index ('/') >= 0 && name.dir_[0] != '/')
{
char cwd[PATH_MAX];
getcwd (cwd, PATH_MAX);