# define win32_get_privlib g_win32_get_privlib
# undef win32_get_sitelib
# define win32_get_sitelib g_win32_get_sitelib
+# undef win32_get_vendorlib
+# define win32_get_vendorlib g_win32_get_vendorlib
# undef do_spawn
# define do_spawn g_do_spawn
# undef getlogin
static void remove_dead_process(long deceased);
static long find_pid(int pid);
static char * qualified_path(const char *cmd);
+static char * win32_get_xlib(const char *pl, const char *xlib,
+ const char *libname);
+
#ifdef USE_ITHREADS
static void remove_dead_pseudo_process(long child);
static long find_pseudo_pid(int pid);
}
char *
-win32_get_privlib(char *pl)
+win32_get_privlib(const char *pl)
{
dTHXo;
char *stdlib = "lib";
return get_emd_part(&sv, stdlib, ARCHNAME, "bin", Nullch);
}
-char *
-win32_get_sitelib(char *pl)
+static char *
+win32_get_xlib(const char *pl, const char *xlib, const char *libname)
{
dTHXo;
- char *sitelib = "sitelib";
char regstr[40];
char pathstr[MAX_PATH+1];
DWORD datalen;
SV *sv1 = Nullsv;
SV *sv2 = Nullsv;
- /* $HKCU{"sitelib-$]"} || $HKLM{"sitelib-$]"} . ---; */
- sprintf(regstr, "%s-%s", sitelib, pl);
+ /* $HKCU{"$xlib-$]"} || $HKLM{"$xlib-$]"} . ---; */
+ sprintf(regstr, "%s-%s", xlib, pl);
(void)get_regstr(regstr, &sv1);
- /* $sitelib .=
- * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/site/$]/lib"; */
- sprintf(pathstr, "site/%s/lib", pl);
+ /* $xlib .=
+ * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/$libname/$]/lib"; */
+ sprintf(pathstr, "%s/%s/lib", libname, pl);
(void)get_emd_part(&sv1, pathstr, ARCHNAME, "bin", pl, Nullch);
- /* $HKCU{'sitelib'} || $HKLM{'sitelib'} . ---; */
- (void)get_regstr(sitelib, &sv2);
+ /* $HKCU{$xlib} || $HKLM{$xlib} . ---; */
+ (void)get_regstr(xlib, &sv2);
- /* $sitelib .=
- * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/site/lib"; */
- (void)get_emd_part(&sv2, "site/lib", ARCHNAME, "bin", pl, Nullch);
+ /* $xlib .=
+ * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/$libname/lib"; */
+ sprintf(pathstr, "%s/lib", libname);
+ (void)get_emd_part(&sv2, pathstr, ARCHNAME, "bin", pl, Nullch);
if (!sv1 && !sv2)
return Nullch;
return SvPVX(sv1);
}
+char *
+win32_get_sitelib(const char *pl)
+{
+ return win32_get_xlib(pl, "sitelib", "site");
+}
+
+#ifndef PERL_VENDORLIB_NAME
+# define PERL_VENDORLIB_NAME "vendor"
+#endif
+
+char *
+win32_get_vendorlib(const char *pl)
+{
+ return win32_get_xlib(pl, "vendorlib", PERL_VENDORLIB_NAME);
+}
static BOOL
has_shell_metachars(char *ptr)