version 1.62, 2003/08/06 14:46:10
|
version 1.63, 2003/08/12 17:44:35
|
|
|
# include <unistd.cleinc> | # include <unistd.cleinc> |
# include "qycmmsgclsMessage.H" // ycmMessage class | # include "qycmmsgclsMessage.H" // ycmMessage class |
# include "OS400SystemState.h" // OS400LoadDynamicLibrary, etc | # include "OS400SystemState.h" // OS400LoadDynamicLibrary, etc |
|
#include "OS400ConvertChar.h" |
#else | #else |
# include <dlfcn.h> | # include <dlfcn.h> |
#endif | #endif |
|
|
Boolean System::bindVerbose = false; | Boolean System::bindVerbose = false; |
#endif | #endif |
| |
|
#ifdef PEGASUS_OS_OS400 |
|
typedef struct os400_pnstruct |
|
{ |
|
Qlg_Path_Name_T qlg_struct; |
|
char * pn; |
|
} OS400_PNSTRUCT; |
|
#endif |
|
|
inline void sleep_wrapper(Uint32 seconds) | inline void sleep_wrapper(Uint32 seconds) |
{ | { |
sleep(seconds); | sleep(seconds); |
|
|
| |
Boolean System::exists(const char* path) | Boolean System::exists(const char* path) |
{ | { |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
return QlgAccess((Qlg_Path_Name_T *)&pathname, F_OK) == 0; |
|
#else |
return access(path, F_OK) == 0; | return access(path, F_OK) == 0; |
|
#endif |
} | } |
| |
Boolean System::canRead(const char* path) | Boolean System::canRead(const char* path) |
{ | { |
|
|
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
return QlgAccess((Qlg_Path_Name_T *)&pathname, R_OK) == 0; |
|
#else |
return access(path, R_OK) == 0; | return access(path, R_OK) == 0; |
|
#endif |
} | } |
| |
Boolean System::canWrite(const char* path) | Boolean System::canWrite(const char* path) |
{ | { |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
return QlgAccess((Qlg_Path_Name_T *)&pathname, W_OK) == 0; |
|
#else |
return access(path, W_OK) == 0; | return access(path, W_OK) == 0; |
|
#endif |
} | } |
| |
Boolean System::getCurrentDirectory(char* path, Uint32 size) | Boolean System::getCurrentDirectory(char* path, Uint32 size) |
{ | { |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
return QlgGetcwd((Qlg_Path_Name_T *)&pathname, size) == 0; |
|
#else |
return getcwd(path, size) != NULL; | return getcwd(path, size) != NULL; |
|
#endif |
} | } |
| |
Boolean System::isDirectory(const char* path) | Boolean System::isDirectory(const char* path) |
{ | { |
struct stat st; | struct stat st; |
| |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
if (QlgStat((Qlg_Path_Name_T *)&pathname, &st) != 0) |
|
return false; |
|
#else |
if (stat(path, &st) != 0) | if (stat(path, &st) != 0) |
return false; | return false; |
|
#endif |
return S_ISDIR(st.st_mode); | return S_ISDIR(st.st_mode); |
} | } |
| |
Boolean System::changeDirectory(const char* path) | Boolean System::changeDirectory(const char* path) |
{ | { |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
return QlgChdir((Qlg_Path_Name_T *)&pathname) == 0; |
|
#else |
return chdir(path) == 0; | return chdir(path) == 0; |
|
#endif |
} | } |
| |
Boolean System::makeDirectory(const char* path) | Boolean System::makeDirectory(const char* path) |
{ | { |
|
|
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
return QlgMkdir((Qlg_Path_Name_T *)&pathname, 0777) == 0; |
|
#else |
return mkdir(path, 0777) == 0; | return mkdir(path, 0777) == 0; |
|
#endif |
|
|
} | } |
| |
Boolean System::getFileSize(const char* path, Uint32& size) | Boolean System::getFileSize(const char* path, Uint32& size) |
{ | { |
struct stat st; | struct stat st; |
| |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
if (QlgStat((Qlg_Path_Name_T *)&pathname, &st) != 0) |
|
return false; |
|
#else |
if (stat(path, &st) != 0) | if (stat(path, &st) != 0) |
return false; | return false; |
|
#endif |
| |
size = st.st_size; | size = st.st_size; |
return true; | return true; |
|
|
| |
Boolean System::removeDirectory(const char* path) | Boolean System::removeDirectory(const char* path) |
{ | { |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
return QlgRmdir((Qlg_Path_Name_T *)&pathname) == 0; |
|
#else |
return rmdir(path) == 0; | return rmdir(path) == 0; |
|
#endif |
} | } |
| |
Boolean System::removeFile(const char* path) | Boolean System::removeFile(const char* path) |
{ | { |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT pathname; |
|
memset((void*)&pathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
pathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(pathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(pathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
pathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
pathname.qlg_struct.Path_Length = strlen(path); |
|
pathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
pathname.pn = (char *)path; |
|
|
|
return QlgUnlink((Qlg_Path_Name_T *)&pathname) == 0; |
|
#else |
return unlink(path) == 0; | return unlink(path) == 0; |
|
#endif |
} | } |
| |
Boolean System::renameFile(const char* oldPath, const char* newPath) | Boolean System::renameFile(const char* oldPath, const char* newPath) |
{ | { |
|
#if defined(PEGASUS_OS_OS400) |
|
OS400_PNSTRUCT oldpathname; |
|
memset((void*)&oldpathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
oldpathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(oldpathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(oldpathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
oldpathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
oldpathname.qlg_struct.Path_Length = strlen(oldPath); |
|
oldpathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
oldpathname.pn = (char *)oldPath; |
|
|
|
OS400_PNSTRUCT newpathname; |
|
memset((void*)&newpathname, 0x00, sizeof(OS400_PNSTRUCT)); |
|
newpathname.qlg_struct.CCSID = 1208; |
|
#pragma convert(37) |
|
memcpy(newpathname.qlg_struct.Country_ID,"US",2); |
|
memcpy(newpathname.qlg_struct.Language_ID,"ENU",3); |
|
#pragma convert(0) |
|
newpathname.qlg_struct.Path_Type = QLG_PTR_SINGLE; |
|
newpathname.qlg_struct.Path_Length = strlen(newPath); |
|
newpathname.qlg_struct.Path_Name_Delimiter[0] = '/'; |
|
newpathname.pn = (char *)newPath; |
|
|
|
if (QlgLink((Qlg_Path_Name_T *)&oldpathname, |
|
(Qlg_Path_Name_T *)&newpathname) != 0) |
|
{ |
|
return false; |
|
} |
|
|
|
return QlgUnlink((Qlg_Path_Name_T *)&oldpathname) == 0; |
|
#else |
|
|
if (link(oldPath, newPath) != 0) | if (link(oldPath, newPath) != 0) |
return false; | return false; |
| |
return unlink(oldPath) == 0; | return unlink(oldPath) == 0; |
|
#endif |
} | } |
| |
DynamicLibraryHandle System::loadDynamicLibrary(const char* fileName) | DynamicLibraryHandle System::loadDynamicLibrary(const char* fileName) |
|
|
return DynamicLibraryHandle(OS400_LoadDynamicLibrary(fileName)); | return DynamicLibraryHandle(OS400_LoadDynamicLibrary(fileName)); |
#else | #else |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
return DynamicLibraryHandle(dlopen(fileName, RTLD_NOW )); |
return DynamicLibraryHandle(dlopen(fileName, RTLD_NOW | RTLD_GLOBAL)); |
#endif | #endif |
| |
} | } |
|
|
static char hostname[64]; | static char hostname[64]; |
| |
if (!*hostname) | if (!*hostname) |
|
{ |
gethostname(hostname, sizeof(hostname)); | gethostname(hostname, sizeof(hostname)); |
|
#if defined(PEGASUS_OS_OS400) |
|
EtoA(hostname); |
|
#endif |
|
} |
| |
return hostname; | return hostname; |
} | } |