#include <ipproc.h>
#include <ipstdio.h>
+#define CALLFUNC0RET(x)\
+ int ret = x;\
+ if(ret < 0)\
+ err = errno;\
+ return ret;
+
extern int g_closedir(DIR *dirp);
extern DIR *g_opendir(char *filename);
extern struct direct *g_readdir(DIR *dirp);
CPerlDir() {};
virtual int Makedir(const char *dirname, int mode, int &err)
{
- return win32_mkdir(dirname, mode);
+ CALLFUNC0RET(win32_mkdir(dirname, mode));
};
virtual int Chdir(const char *dirname, int &err)
{
- return win32_chdir(dirname);
+ CALLFUNC0RET(win32_chdir(dirname));
};
virtual int Rmdir(const char *dirname, int &err)
{
- return win32_rmdir(dirname);
+ CALLFUNC0RET(win32_rmdir(dirname));
};
virtual int Close(DIR *dirp, int &err)
{
};
-extern char * g_win32_get_stdlib(char *pl);
+extern char * g_win32_get_privlib(char *pl);
extern char * g_win32_get_sitelib(char *pl);
class CPerlEnv : public IPerlEnv
{
};
virtual char* LibPath(char *pl)
{
- return g_win32_get_stdlib(pl);
+ return g_win32_get_privlib(pl);
};
virtual char* SiteLibPath(char *pl)
{
};
virtual PerlIO* Popen(const char *command, const char *mode)
{
-#ifdef __BORLANDC__
win32_fflush(stdout);
win32_fflush(stderr);
-#endif
return (PerlIO*)win32_popen(command, mode);
};
virtual int Pclose(PerlIO *stream)
};
inline int PerlParse(int argc, char** argv, char** env)
{
- char* environ = NULL;
int retVal;
try
{
- retVal = pPerl->perl_parse(xs_init, argc, argv, (env == NULL || *env == NULL ? &environ : env));
+ retVal = pPerl->perl_parse(xs_init, argc, argv, env);
}
catch(int x)
{
exit(exitstatus);
- exitstatus = host.PerlParse(argc, argv, env);
+ exitstatus = host.PerlParse(argc, argv, NULL);
if (!exitstatus)
{
#else /* PERL_OBJECT */
-/* Say NO to CPP! Hallelujah! */
#ifdef __GNUC__
/*
* GNU C does not do __declspec()