- if (found)
- return found;
- node = node->Previous();
- }
- return NULL;
-}
-
-#endif // wxUSE_GUI
-
-/*
-On Fri, 21 Jul 1995, Paul Craven wrote:
-
-> Is there a way to find the path of running program's executable? I can get
-> my home directory, and the current directory, but I don't know how to get the
-> executable directory.
->
-
-The code below (warty as it is), does what you want on most Unix,
-DOS, and Mac platforms (it's from the ALS Prolog main).
-
-|| Ken Bowen Applied Logic Systems, Inc. PO Box 180,
-||==== Voice: +1 (617)965-9191 Newton Centre,
-|| FAX: +1 (617)965-1636 MA 02159 USA
- Email: ken@als.com WWW: http://www.als.com
-------------------------------------------------------------------------
-*/
-
-// This code is commented out but it may be integrated with wxWin at
-// a later date, after testing. Thanks Ken!
-#if 0
-
-/*--------------------------------------------------------------------*
- | whereami is given a filename f in the form: whereami(argv[0])
- | It returns the directory in which the executable file (containing
- | this code [main.c] ) may be found. A dot will be returned to indicate
- | the current directory.
- *--------------------------------------------------------------------*/
-
-static void
-whereami(name)
- char *name;
-{
- register char *cutoff = NULL; /* stifle -Wall */
- register char *s;
- register char *t;
- int cc;
- char ebuf[4096];
-
- /*
- * See if the file is accessible either through the current directory
- * or through an absolute path.
- */
-
- if (access(name, R_OK) == 0) {
-
- /*-------------------------------------------------------------*
- * The file was accessible without any other work. But the current
- * working directory might change on us, so if it was accessible
- * through the cwd, then we should get it for later accesses.
- *-------------------------------------------------------------*/
-
- t = imagedir;
- if (!absolute_pathname(name)) {
-#if defined(__DOS__) || defined(__WIN32__)
- int drive;
- char *newrbuf;
-
- newrbuf = imagedir;
-#ifndef __DJGPP__
- if (*(name + 1) == ':') {
- if (*name >= 'a' && *name <= 'z')
- drive = (int) (*name - 'a' + 1);
- else
- drive = (int) (*name - 'A' + 1);
- *newrbuf++ = *name;
- *newrbuf++ = *(name + 1);
- *newrbuf++ = DIR_SEPARATOR;
- }
- else {
- drive = 0;
- *newrbuf++ = DIR_SEPARATOR;
- }
- if (getcwd(newrbuf, drive) == 0) { /* } */
-#else
- if (getcwd(newrbuf, 1024) == 0) { /* } */
-#endif
-#else /* DOS */
-#ifdef HAVE_GETWD
- if (getwd(imagedir) == 0) { /* } */
-#else /* !HAVE_GETWD */
- if (getcwd(imagedir, 1024) == 0) {
-#endif /* !HAVE_GETWD */
-#endif /* DOS */
- fatal_error(FE_GETCWD, 0);
- }
- for (; *t; t++) /* Set t to end of buffer */
- ;
- if (*(t - 1) == DIR_SEPARATOR) /* leave slash if already
- * last char
- */
- cutoff = t - 1;
- else {
- cutoff = t; /* otherwise put one in */
- *t++ = DIR_SEPARATOR;
- }
- }
-#if (!defined(__MAC__) && !defined(__DJGPP__) && !defined(__GO32__) && !defined(__WIN32__))
- else
- (*t++ = DIR_SEPARATOR);
-#endif
-
- /*-------------------------------------------------------------*
- * Copy the rest of the string and set the cutoff if it was not
- * already set. If the first character of name is a slash, cutoff
- * is not presently set but will be on the first iteration of the
- * loop below.
- *-------------------------------------------------------------*/
-
- for ((*name == DIR_SEPARATOR ? (s = name+1) : (s = name));;) {
- if (*s == DIR_SEPARATOR)
- cutoff = t;
- if (!(*t++ = *s++))
- break;
- }
-
- }
- else {
-
- /*-------------------------------------------------------------*
- * Get the path list from the environment. If the path list is
- * inaccessible for any reason, leave with fatal error.
- *-------------------------------------------------------------*/
-
-#ifdef __MAC__
- if ((s = getenv("Commands")) == (char *) 0)
-#else
- if ((s = getenv("PATH")) == (char *) 0)
-#endif
- fatal_error(FE_PATH, 0);
-
- /*
- * Copy path list into ebuf and set the source pointer to the
- * beginning of this buffer.
- */
-
- strcpy(ebuf, s);
- s = ebuf;
-
- for (;;) {
- t = imagedir;
- while (*s && *s != PATH_SEPARATOR)
- *t++ = *s++;
- if (t > imagedir && *(t - 1) == DIR_SEPARATOR)
- ; /* do nothing -- slash already is in place */
- else
- *t++ = DIR_SEPARATOR; /* put in the slash */
- cutoff = t - 1; /* set cutoff */
- strcpy(t, name);
- if (access(imagedir, R_OK) == 0)
- break;
-
- if (*s)
- s++; /* advance source pointer */
- else
- fatal_error(FE_INFND, 0);
- }
-
- }
-
- /*-------------------------------------------------------------*
- | At this point the full pathname should exist in imagedir and
- | cutoff should be set to the final slash. We must now determine
- | whether the file name is a symbolic link or not and chase it down
- | if it is. Note that we reuse ebuf for getting the link.
- *-------------------------------------------------------------*/
-
-#ifdef HAVE_SYMLINK
- while ((cc = readlink(imagedir, ebuf, 512)) != -1) {
- ebuf[cc] = 0;
- s = ebuf;
- if (*s == DIR_SEPARATOR) {
- t = imagedir;
- }
- else {
- t = cutoff + 1;
- }
- for (;;) {
- if (*s == DIR_SEPARATOR)
- cutoff = t; /* mark the last slash seen */
- if (!(*t++ = *s++)) /* copy the character */
- break;
- }