mirror of
https://github.com/kennethreitz-archive/pyinstaller.git
synced 2026-06-05 23:50:17 +00:00
82ab43bb1e
https://svn.pyinstaller.python-hosting.com/branches/python2.5 ........ r342 | naufraghi | 2007-12-03 20:02:47 +0100 (Lun, 03 Dic 2007) | 5 lines r238@rosen: naufraghi | 2007-12-03 19:59:24 +0100 r200@rosen: naufraghi | 2007-11-23 15:54:13 +0100 Cleanup, remove some warning ........ r343 | naufraghi | 2007-12-03 20:02:56 +0100 (Lun, 03 Dic 2007) | 5 lines r239@rosen: naufraghi | 2007-12-03 19:59:24 +0100 r201@rosen: naufraghi | 2007-11-23 17:23:15 +0100 Allow starting runtests from any path ........ r344 | naufraghi | 2007-12-03 20:03:04 +0100 (Lun, 03 Dic 2007) | 5 lines r240@rosen: naufraghi | 2007-12-03 20:00:51 +0100 r202@rosen: naufraghi | 2007-11-23 17:24:17 +0100 Add natural sort for tests ........ r345 | naufraghi | 2007-12-03 20:03:12 +0100 (Lun, 03 Dic 2007) | 5 lines r241@rosen: naufraghi | 2007-12-03 20:00:51 +0100 r203@rosen: naufraghi | 2007-11-23 17:32:46 +0100 Fix some fragile import? ........ r346 | naufraghi | 2007-12-03 20:03:21 +0100 (Lun, 03 Dic 2007) | 5 lines r242@rosen: naufraghi | 2007-12-03 20:01:01 +0100 r204@rosen: naufraghi | 2007-11-23 17:46:41 +0100 Adds a basic way to choose tests to run ........ r347 | naufraghi | 2007-12-03 20:03:29 +0100 (Lun, 03 Dic 2007) | 5 lines r243@rosen: naufraghi | 2007-12-03 20:01:04 +0100 r205@rosen: naufraghi | 2007-11-23 17:57:31 +0100 Adds and xml.dom test ........ r348 | naufraghi | 2007-12-03 20:03:38 +0100 (Lun, 03 Dic 2007) | 5 lines r244@rosen: naufraghi | 2007-12-03 20:01:04 +0100 r206@rosen: naufraghi | 2007-11-23 18:05:04 +0100 Remove cmd line quoting ........ r349 | naufraghi | 2007-12-03 20:03:46 +0100 (Lun, 03 Dic 2007) | 5 lines r245@rosen: naufraghi | 2007-12-03 20:01:06 +0100 r207@rosen: naufraghi | 2007-11-23 19:47:13 +0100 Adds 'import os' in one specfile ........ r350 | naufraghi | 2007-12-03 20:03:54 +0100 (Lun, 03 Dic 2007) | 5 lines r246@rosen: naufraghi | 2007-12-03 20:01:08 +0100 r208@rosen: naufraghi | 2007-11-23 19:49:21 +0100 Add an 'encoding' hiddeimport test ........ r351 | naufraghi | 2007-12-03 20:04:05 +0100 (Lun, 03 Dic 2007) | 5 lines r248@rosen: naufraghi | 2007-12-03 20:01:08 +0100 r211@rosen: naufraghi | 2007-11-27 16:13:30 +0100 Rewrite exec in execfile ........ r352 | naufraghi | 2007-12-03 20:04:15 +0100 (Lun, 03 Dic 2007) | 5 lines r250@rosen: naufraghi | 2007-12-03 20:01:09 +0100 r214@rosen: naufraghi | 2007-11-30 11:49:23 +0100 Adds support for extended __path__ ........ r353 | naufraghi | 2007-12-03 20:04:23 +0100 (Lun, 03 Dic 2007) | 5 lines r251@rosen: naufraghi | 2007-12-03 20:01:13 +0100 r215@rosen: naufraghi | 2007-11-30 11:52:18 +0100 Simplify execfile ........ r354 | naufraghi | 2007-12-03 20:04:30 +0100 (Lun, 03 Dic 2007) | 5 lines r252@rosen: naufraghi | 2007-12-03 20:01:15 +0100 r216@rosen: naufraghi | 2007-11-30 11:52:56 +0100 Fix output path ........ r355 | naufraghi | 2007-12-03 20:04:38 +0100 (Lun, 03 Dic 2007) | 5 lines r253@rosen: naufraghi | 2007-12-03 20:01:16 +0100 r217@rosen: naufraghi | 2007-11-30 12:13:17 +0100 Add optional logging of self.moduleds ........ r356 | naufraghi | 2007-12-03 20:04:46 +0100 (Lun, 03 Dic 2007) | 5 lines r254@rosen: naufraghi | 2007-12-03 20:01:16 +0100 r218@rosen: naufraghi | 2007-11-30 12:19:13 +0100 Add __str__ at Module class (and adds a default __file__ too) ........ r357 | naufraghi | 2007-12-03 20:04:54 +0100 (Lun, 03 Dic 2007) | 5 lines r255@rosen: naufraghi | 2007-12-03 20:01:18 +0100 r219@rosen: naufraghi | 2007-11-30 12:30:19 +0100 Add version info to log filename ........ r358 | naufraghi | 2007-12-03 20:05:01 +0100 (Lun, 03 Dic 2007) | 5 lines r256@rosen: naufraghi | 2007-12-03 20:01:19 +0100 r220@rosen: naufraghi | 2007-11-30 16:11:07 +0100 Asset-ize a comment + cosmetics (align variable name to other scopes) ........ r359 | naufraghi | 2007-12-03 20:05:09 +0100 (Lun, 03 Dic 2007) | 5 lines r257@rosen: naufraghi | 2007-12-03 20:01:21 +0100 r221@rosen: naufraghi | 2007-11-30 16:46:17 +0100 Add comments and a None-iti assert ........ r360 | naufraghi | 2007-12-03 20:05:16 +0100 (Lun, 03 Dic 2007) | 5 lines r258@rosen: naufraghi | 2007-12-03 20:01:24 +0100 r222@rosen: naufraghi | 2007-12-03 16:23:17 +0100 Remove user interaction ........ r361 | naufraghi | 2007-12-03 20:05:25 +0100 (Lun, 03 Dic 2007) | 5 lines r259@rosen: naufraghi | 2007-12-03 20:01:25 +0100 r223@rosen: naufraghi | 2007-12-03 16:39:48 +0100 Activate the option to run selected tests: runtests.py --run 12 13 ........ r362 | naufraghi | 2007-12-03 20:05:32 +0100 (Lun, 03 Dic 2007) | 5 lines r260@rosen: naufraghi | 2007-12-03 20:01:28 +0100 r224@rosen: naufraghi | 2007-12-03 16:51:02 +0100 Adds a test that fails ........ r363 | naufraghi | 2007-12-03 20:05:41 +0100 (Lun, 03 Dic 2007) | 5 lines r261@rosen: naufraghi | 2007-12-03 20:01:28 +0100 r225@rosen: naufraghi | 2007-12-03 17:11:07 +0100 Expand imports ........ r364 | naufraghi | 2007-12-03 20:05:48 +0100 (Lun, 03 Dic 2007) | 5 lines r262@rosen: naufraghi | 2007-12-03 20:01:29 +0100 r226@rosen: naufraghi | 2007-12-03 17:12:21 +0100 Reorder imports ........ r365 | naufraghi | 2007-12-03 20:05:55 +0100 (Lun, 03 Dic 2007) | 5 lines r263@rosen: naufraghi | 2007-12-03 20:01:30 +0100 r227@rosen: naufraghi | 2007-12-03 17:16:11 +0100 Turns 1-0 to True-False ........ r366 | naufraghi | 2007-12-03 20:06:03 +0100 (Lun, 03 Dic 2007) | 5 lines r264@rosen: naufraghi | 2007-12-03 20:01:30 +0100 r228@rosen: naufraghi | 2007-12-03 17:32:17 +0100 Path cleanup ........ r367 | naufraghi | 2007-12-03 20:06:10 +0100 (Lun, 03 Dic 2007) | 5 lines r265@rosen: naufraghi | 2007-12-03 20:01:32 +0100 r229@rosen: naufraghi | 2007-12-03 17:35:21 +0100 Followup: Path cleanup ........ r368 | naufraghi | 2007-12-03 20:06:17 +0100 (Lun, 03 Dic 2007) | 5 lines r266@rosen: naufraghi | 2007-12-03 20:01:33 +0100 r230@rosen: naufraghi | 2007-12-03 18:42:00 +0100 Add some docs to assemble() ........ r369 | naufraghi | 2007-12-03 20:06:23 +0100 (Lun, 03 Dic 2007) | 5 lines r267@rosen: naufraghi | 2007-12-03 20:01:35 +0100 r231@rosen: naufraghi | 2007-12-03 18:55:32 +0100 Remove criptic outN.toc numbering, use class names + reformat docs ........ r370 | naufraghi | 2007-12-03 20:06:30 +0100 (Lun, 03 Dic 2007) | 5 lines r268@rosen: naufraghi | 2007-12-03 20:01:36 +0100 r232@rosen: naufraghi | 2007-12-03 18:56:26 +0100 Restore common prefix 'out' ........ r371 | naufraghi | 2007-12-03 20:06:38 +0100 (Lun, 03 Dic 2007) | 5 lines r269@rosen: naufraghi | 2007-12-03 20:01:37 +0100 r236@rosen: naufraghi | 2007-12-03 19:16:19 +0100 Cosmetic ........ r372 | naufraghi | 2007-12-03 20:06:45 +0100 (Lun, 03 Dic 2007) | 5 lines r270@rosen: naufraghi | 2007-12-03 20:01:37 +0100 r237@rosen: naufraghi | 2007-12-03 19:17:17 +0100 Factorize py[c|o] extension choice ........ r373 | naufraghi | 2007-12-04 12:01:51 +0100 (Mar, 04 Dic 2007) | 3 lines r302@rosen: naufraghi | 2007-12-04 12:00:38 +0100 Restore invcnum ........ r374 | naufraghi | 2007-12-04 12:01:58 +0100 (Mar, 04 Dic 2007) | 3 lines r303@rosen: naufraghi | 2007-12-04 12:01:41 +0100 Add warning for mod == None ........ r375 | naufraghi | 2007-12-04 12:08:04 +0100 (Mar, 04 Dic 2007) | 2 lines Add final final "done" message ........ r376 | naufraghi | 2007-12-04 12:09:30 +0100 (Mar, 04 Dic 2007) | 3 lines Ops, is "config.dat" ........ r377 | naufraghi | 2007-12-04 12:26:20 +0100 (Mar, 04 Dic 2007) | 2 lines Restored removed "break" ........ r378 | naufraghi | 2007-12-04 16:01:18 +0100 (Mar, 04 Dic 2007) | 2 lines Remove already logged warning ........ r379 | naufraghi | 2007-12-04 17:46:50 +0100 (Mar, 04 Dic 2007) | 1 line Minimize test case ........ r380 | naufraghi | 2007-12-04 17:51:07 +0100 (Mar, 04 Dic 2007) | 1 line Update PathImportDirector if __path__ changes (for example if modified by _xmlplus hook) ........ r381 | naufraghi | 2007-12-04 18:06:10 +0100 (Mar, 04 Dic 2007) | 1 line Localize hiddenimport and add hook ........ r382 | naufraghi | 2007-12-04 19:37:45 +0100 (Mar, 04 Dic 2007) | 1 line Add another elementree test ........ r383 | naufraghi | 2007-12-17 12:58:57 +0100 (Lun, 17 Dic 2007) | 1 line Fix importHook debug print, add other (commented) print debugs ........ r384 | naufraghi | 2007-12-17 13:00:32 +0100 (Lun, 17 Dic 2007) | 1 line Support more then one log per spec ........ r385 | naufraghi | 2007-12-17 13:01:10 +0100 (Lun, 17 Dic 2007) | 1 line Add hidden xml.etree.ElementTree import ........ r386 | naufraghi | 2007-12-17 13:02:35 +0100 (Lun, 17 Dic 2007) | 1 line Restore PATH before assert + comments ........ r387 | naufraghi | 2007-12-17 14:42:32 +0100 (Lun, 17 Dic 2007) | 1 line Print warnings for generic excepts in the code ........ r388 | naufraghi | 2007-12-17 14:56:12 +0100 (Lun, 17 Dic 2007) | 1 line Use a specific exception for Owners ........ r389 | naufraghi | 2007-12-17 16:44:59 +0100 (Lun, 17 Dic 2007) | 1 line Remove final comma ........ r390 | naufraghi | 2007-12-18 14:51:06 +0100 (Mar, 18 Dic 2007) | 1 line Expand debug print ........ r391 | naufraghi | 2007-12-19 18:21:05 +0100 (Mer, 19 Dic 2007) | 1 line Avoid 'import os' that causes problems in py25 ........ r392 | naufraghi | 2007-12-19 18:34:46 +0100 (Mer, 19 Dic 2007) | 1 line Represent with %r the exception ........ r393 | naufraghi | 2007-12-19 18:37:52 +0100 (Mer, 19 Dic 2007) | 1 line Add comments and commented prints ........ r401 | naufraghi | 2008-01-11 16:47:02 +0100 (Ven, 11 Gen 2008) | 1 line Use sys.executable saved at build time (unknown when frozen) ........ r402 | naufraghi | 2008-01-11 17:17:37 +0100 (Ven, 11 Gen 2008) | 1 line Restore linux compatibility ........ r403 | naufraghi | 2008-01-11 18:37:22 +0100 (Ven, 11 Gen 2008) | 1 line Add test for sys.getfilesystemencoding() ........ r404 | naufraghi | 2008-01-11 19:42:42 +0100 (Ven, 11 Gen 2008) | 1 line Accept different error under windows (FIXME: do a real isfile check) ........ r413 | naufraghi | 2008-01-25 19:47:50 +0100 (Ven, 25 Gen 2008) | 1 line Restore compatibility with python 2.4 ........ r424 | naufraghi | 2008-02-18 11:53:12 +0100 (Lun, 18 Feb 2008) | 3 lines r343@trinity: naufraghi | 2008-02-18 11:53:00 +0100 Merge dal trunk ........ r426 | naufraghi | 2008-02-18 14:49:15 +0100 (Lun, 18 Feb 2008) | 1 line Catch SyntaxError too ........ r427 | naufraghi | 2008-02-18 15:02:45 +0100 (Lun, 18 Feb 2008) | 1 line Revert: DummyZlib is a zero commpression zlib ........ r429 | naufraghi | 2008-02-23 17:05:35 +0100 (Sab, 23 Feb 2008) | 1 line Add a (failing) test on module imp ........ r430 | naufraghi | 2008-02-23 18:12:59 +0100 (Sab, 23 Feb 2008) | 1 line Modified runtest, now all tests are executed (default) but the interactive one(s), thet are executed if -i option is provided ........ r431 | naufraghi | 2008-02-23 18:18:02 +0100 (Sab, 23 Feb 2008) | 1 line Merge dal branch dl ........ r432 | danielevarrazzo | 2008-02-24 14:38:15 +0100 (Dom, 24 Feb 2008) | 2 lines Added missing file from the 'dl' branch. ........ r433 | naufraghi | 2008-02-25 13:07:44 +0100 (Lun, 25 Feb 2008) | 1 line Continue on test failure and report (...) at the end ........ r435 | naufraghi | 2008-02-25 13:28:08 +0100 (Lun, 25 Feb 2008) | 1 line Stub of a launcher rebuilder ........ r436 | danielevarrazzo | 2008-02-25 13:30:56 +0100 (Lun, 25 Feb 2008) | 2 lines The Python library is found both in onedir and onefile mode. ........ r437 | naufraghi | 2008-02-25 18:42:16 +0100 (Lun, 25 Feb 2008) | 1 line Add comments and (commented) debug prints ........ r439 | naufraghi | 2008-02-28 00:16:38 +0100 (Gio, 28 Feb 2008) | 1 line Cosmetics ........ r440 | danielevarrazzo | 2008-02-28 20:21:15 +0100 (Gio, 28 Feb 2008) | 4 lines The Python library is added to the package even if bindepend couldn't find it. This may happen when Python is statically linked, e.g. on debian-based systems. ........ r441 | naufraghi | 2008-03-01 00:46:00 +0100 (Sab, 01 Mar 2008) | 1 line Remove too restrictive assert ........ r442 | naufraghi | 2008-03-01 00:47:07 +0100 (Sab, 01 Mar 2008) | 1 line Run Configure.py after make ........ r445 | naufraghi | 2008-04-28 19:42:13 +0200 (Lun, 28 Apr 2008) | 1 line Merge follow up ........ r448 | naufraghi | 2008-04-30 15:41:51 +0200 (Mer, 30 Apr 2008) | 2 lines ops, svnmerge was not complete... ........ git-svn-id: http://svn.pyinstaller.org/trunk@449 8dd32b29-ccff-0310-8a9a-9233e24343b1
288 lines
6.2 KiB
C
288 lines
6.2 KiB
C
/***********************************************************
|
|
Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
|
|
The Netherlands.
|
|
|
|
All Rights Reserved
|
|
|
|
Permission to use, copy, modify, and distribute this software and its
|
|
documentation for any purpose and without fee is hereby granted,
|
|
provided that the above copyright notice appear in all copies and that
|
|
both that copyright notice and this permission notice appear in
|
|
supporting documentation, and that the names of Stichting Mathematisch
|
|
Centrum or CWI or Corporation for National Research Initiatives or
|
|
CNRI not be used in advertising or publicity pertaining to
|
|
distribution of the software without specific, written prior
|
|
permission.
|
|
|
|
While CWI is the initial source for this software, a modified version
|
|
is made available by the Corporation for National Research Initiatives
|
|
(CNRI) at the Internet address ftp://ftp.python.org.
|
|
|
|
STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
|
|
REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
|
|
MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
|
|
CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
|
|
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
|
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
******************************************************************/
|
|
|
|
/* A special version for minimal installs, where
|
|
the bootstrap path is the directory in which
|
|
the executable lives.
|
|
Gordon McMillan, McMillan Enterprises, Inc. */
|
|
|
|
/* Return the initial module search path. */
|
|
|
|
#include "getpath.h"
|
|
#include "osdefs.h"
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <string.h>
|
|
#include <stdlib.h> /* getenv */
|
|
|
|
#if HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
#endif /* HAVE_UNISTD_H */
|
|
|
|
#ifdef WITH_NEXT_FRAMEWORK
|
|
#include <mach-o/dyld.h>
|
|
#endif
|
|
|
|
static char prefix[MAXPATHLEN+1];
|
|
static char *exec_prefix;
|
|
static char progpath[MAXPATHLEN+1];
|
|
static char *module_search_path = NULL;
|
|
|
|
static void
|
|
reduce(char *dir)
|
|
{
|
|
int i = strlen(dir);
|
|
while (i > 0 && dir[i] != SEP)
|
|
--i;
|
|
dir[i] = '\0';
|
|
}
|
|
|
|
|
|
#ifndef S_ISREG
|
|
#define S_ISREG(x) (((x) & S_IFMT) == S_IFREG)
|
|
#endif
|
|
|
|
#ifndef S_ISDIR
|
|
#define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR)
|
|
#endif
|
|
#if 0
|
|
static int
|
|
isfile(char *filename) /* Is file, not directory */
|
|
{
|
|
struct stat buf;
|
|
if (stat(filename, &buf) != 0)
|
|
return 0;
|
|
if (!S_ISREG(buf.st_mode))
|
|
return 0;
|
|
return 1;
|
|
}
|
|
#endif
|
|
#if 0
|
|
static int
|
|
ismodule(char *filename) /* Is module -- check for .pyc/.pyo too */
|
|
{
|
|
if (isfile(filename))
|
|
return 1;
|
|
|
|
/* Check for the compiled version of prefix. */
|
|
if (strlen(filename) < MAXPATHLEN) {
|
|
strcat(filename, Py_OptimizeFlag ? "o" : "c");
|
|
if (isfile(filename))
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
static int
|
|
isxfile(char *filename) /* Is executable file */
|
|
{
|
|
struct stat buf;
|
|
if (stat(filename, &buf) != 0)
|
|
return 0;
|
|
if (!S_ISREG(buf.st_mode))
|
|
return 0;
|
|
if ((buf.st_mode & 0111) == 0)
|
|
return 0;
|
|
return 1;
|
|
}
|
|
|
|
#if 0
|
|
static int
|
|
isdir(char *filename) /* Is directory */
|
|
{
|
|
struct stat buf;
|
|
if (stat(filename, &buf) != 0)
|
|
return 0;
|
|
if (!S_ISDIR(buf.st_mode))
|
|
return 0;
|
|
return 1;
|
|
}
|
|
#endif
|
|
|
|
static void
|
|
joinpath(char *buffer, char *stuff)
|
|
{
|
|
int n, k;
|
|
if (stuff[0] == SEP)
|
|
n = 0;
|
|
else {
|
|
n = strlen(buffer);
|
|
if (n > 0 && buffer[n-1] != SEP && n < MAXPATHLEN)
|
|
buffer[n++] = SEP;
|
|
}
|
|
k = strlen(stuff);
|
|
if (n + k > MAXPATHLEN)
|
|
k = MAXPATHLEN - n;
|
|
strncpy(buffer+n, stuff, k);
|
|
buffer[n+k] = '\0';
|
|
}
|
|
|
|
static void
|
|
calculate_path(void)
|
|
{
|
|
char *prog = PI_GetProgramName(); /* use Py_SetProgramName(argv[0]) before Py_Initialize() */
|
|
char argv0_path[MAXPATHLEN+1];
|
|
char *epath;
|
|
char *path = NULL;
|
|
char *ppath = NULL;
|
|
#if HAVE_READLINK
|
|
int numchars;
|
|
#endif
|
|
|
|
if (strchr(prog, SEP))
|
|
strcpy(progpath, prog);
|
|
else {
|
|
#if HAVE_READLINK
|
|
sprintf(argv0_path, "/proc/%d/exe", getpid());
|
|
numchars = readlink(argv0_path, progpath, MAXPATHLEN);
|
|
if (numchars > 0)
|
|
progpath[numchars] = '\0';
|
|
else {
|
|
#endif
|
|
epath = getenv("PATH");
|
|
if (epath)
|
|
path = malloc(strlen(epath)+3);
|
|
if (path) {
|
|
strcpy(path, ".:");
|
|
strcat(path, epath);
|
|
ppath = path;
|
|
while (1) {
|
|
char *delim = strchr(ppath, DELIM);
|
|
|
|
if (delim) {
|
|
int len = delim - ppath;
|
|
strncpy(progpath, ppath, len);
|
|
*(progpath + len) = '\0';
|
|
}
|
|
else
|
|
strcpy(progpath, ppath);
|
|
|
|
joinpath(progpath, prog);
|
|
if (isxfile(progpath))
|
|
break;
|
|
|
|
if (!delim) {
|
|
progpath[0] = '\0';
|
|
break;
|
|
}
|
|
ppath = delim + 1;
|
|
}
|
|
free(path);
|
|
}
|
|
else
|
|
progpath[0] = '\0';
|
|
#if HAVE_READLINK
|
|
}
|
|
#endif
|
|
}
|
|
/* at this point progpath includes the executable */
|
|
strcpy(argv0_path, progpath);
|
|
|
|
#if HAVE_READLINK
|
|
{
|
|
char tmpbuffer[MAXPATHLEN+1];
|
|
int linklen = readlink(progpath, tmpbuffer, MAXPATHLEN);
|
|
while (linklen != -1) {
|
|
/* It's not null terminated! */
|
|
tmpbuffer[linklen] = '\0';
|
|
if (tmpbuffer[0] == SEP)
|
|
strcpy(argv0_path, tmpbuffer);
|
|
else {
|
|
/* Interpret relative to progpath */
|
|
reduce(argv0_path);
|
|
joinpath(argv0_path, tmpbuffer);
|
|
}
|
|
linklen = readlink(argv0_path, tmpbuffer, MAXPATHLEN);
|
|
}
|
|
strcpy(progpath, argv0_path);
|
|
}
|
|
#endif /* HAVE_READLINK */
|
|
|
|
reduce(argv0_path);
|
|
/* now argv0_path is the directory of the executable */
|
|
|
|
strcpy(prefix, argv0_path);
|
|
exec_prefix = prefix;
|
|
module_search_path = malloc(strlen(prefix)+1);
|
|
strcpy(module_search_path, prefix);
|
|
|
|
}
|
|
/* External interface */
|
|
|
|
static char *progname = "python";
|
|
|
|
void
|
|
PI_SetProgramName(char *pn)
|
|
{
|
|
if (pn && *pn)
|
|
progname = pn;
|
|
}
|
|
|
|
char *
|
|
PI_GetProgramName(void)
|
|
{
|
|
return progname;
|
|
}
|
|
|
|
char *
|
|
PI_GetPath(void)
|
|
{
|
|
if (!module_search_path)
|
|
calculate_path();
|
|
return module_search_path;
|
|
}
|
|
|
|
char *
|
|
PI_GetPrefix(void)
|
|
{
|
|
if (!module_search_path)
|
|
calculate_path();
|
|
return prefix;
|
|
}
|
|
|
|
char *
|
|
PI_GetExecPrefix(void)
|
|
{
|
|
if (!module_search_path)
|
|
calculate_path();
|
|
return exec_prefix;
|
|
}
|
|
|
|
char *
|
|
PI_GetProgramFullPath(void)
|
|
{
|
|
if (!module_search_path)
|
|
calculate_path();
|
|
return progpath;
|
|
}
|