version 1.10, 2001/07/04 14:08:19
|
version 1.37, 2003/12/10 00:05:23
|
|
|
//%///////////////////////////////////////////////////////////////////////////// |
//%2003//////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM |
// Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Development |
|
// Company, L. P., IBM Corp., The Open Group, Tivoli Systems. |
|
// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.; |
|
// IBM Corp.; EMC Corporation, The Open Group. |
// | // |
// Permission is hereby granted, free of charge, to any person obtaining a copy | // Permission is hereby granted, free of charge, to any person obtaining a copy |
// of this software and associated documentation files (the "Software"), to | // of this software and associated documentation files (the "Software"), to |
|
|
// Author: Mike Brasher (mbrasher@bmc.com) | // Author: Mike Brasher (mbrasher@bmc.com) |
// | // |
// Modified By: | // Modified By: |
|
// Nag Boranna, Hewlett-Packard Company (nagaraja_boranna@hp.com) |
|
// |
|
// Modified By: Dave Rosckes (rosckes@us.ibm.com) |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
|
|
| |
#include <Pegasus/Common/Config.h> | #include <Pegasus/Common/Config.h> |
#include <Pegasus/Common/String.h> | #include <Pegasus/Common/String.h> |
|
#include <Pegasus/Common/Linkage.h> |
|
#include <Pegasus/Common/Logger.h> |
|
#include <sys/stat.h> |
|
|
|
|
|
#if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC) |
|
#ifndef mode_t |
|
#define mode_t unsigned long |
|
#endif |
|
#endif |
|
|
|
// |
|
// Protocal Type |
|
// |
|
#define TCP "tcp" |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
/** This is an opaque type which is used to represent dynamic library | /** This is an opaque type which is used to represent dynamic library |
handles returned by the System::loadDynamicLibrary() method and | handles returned by the System::loadDynamicLibrary() method and |
accepted by the System::loadDynamicProcedure() method. | accepted by the System::loadDynamicProcedure() method. |
|
|
/** This is an opaque type which is returned by System::loadDynamicSymbol(). | /** This is an opaque type which is returned by System::loadDynamicSymbol(). |
Values of this type may be casted to the appropriate target type. | Values of this type may be casted to the appropriate target type. |
*/ | */ |
|
#if !defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) && !defined(PEGASUS_PLATFORM_OS400_ISERIES_IBM) |
typedef struct DynamicSymbolHandle_* DynamicSymbolHandle; | typedef struct DynamicSymbolHandle_* DynamicSymbolHandle; |
|
#else |
|
extern "C" {typedef int (* DynamicSymbolHandle)(void);} |
|
#endif |
|
|
| |
| |
/** The System class defines wrappers for operating system related calls. | /** The System class defines wrappers for operating system related calls. |
|
|
| |
static Boolean renameFile(const char* oldPath, const char* newPath); | static Boolean renameFile(const char* oldPath, const char* newPath); |
| |
|
static Boolean copyFile(const char* fromPath, const char* toPath); |
|
|
|
/** Unix issue:<br><br><b>RTLD_<bah></b> issue. Currently Pegasus uses RTLD_NOW during |
|
loading of the library if supported by OS. Previous to 2.2, Pegasus used RTLD_GLOBAL on Linux |
|
- that behaviour is now deprecated. |
|
*/ |
static DynamicLibraryHandle loadDynamicLibrary(const char* fileName); | static DynamicLibraryHandle loadDynamicLibrary(const char* fileName); |
| |
static String DynamicLoadError(void); |
static void unloadDynamicLibrary(DynamicLibraryHandle libraryHandle); |
|
|
|
static String dynamicLoadError(void); |
| |
static DynamicSymbolHandle loadDynamicSymbol( | static DynamicSymbolHandle loadDynamicSymbol( |
DynamicLibraryHandle libraryHandle, | DynamicLibraryHandle libraryHandle, |
const char* symbolName); | const char* symbolName); |
| |
static String getHostName(); | static String getHostName(); |
|
static String getFullyQualifiedHostName (); |
|
static String getSystemCreationClassName (); |
|
|
|
static Uint32 lookupPort( |
|
const char * serviceName, |
|
Uint32 defaultPort); |
|
|
|
static String getEffectiveUserName(); |
|
|
|
/** |
|
This function is used to input a password with echo disabled. |
|
The function reads up to a newline and returns a password of at most |
|
8 characters. |
|
|
|
@param prompt String containing the message prompt to be displayed |
|
@return password obtained from the user |
|
*/ |
|
static String getPassword(const char* prompt); |
|
|
|
/** |
|
This function is used to encrypt the user's password. |
|
The encryption is compatible with Apache's password file (generated using |
|
the htpasswd command ) |
|
|
|
@param password Password to be encrypted. |
|
@param salt Two character string chosen from the set [a-zA-Z0-9./]. |
|
|
|
@return Encrypted password. |
|
*/ |
|
static String encryptPassword(const char* password, const char* salt); |
|
|
|
/** |
|
This function is used to verify whether specified user is a user |
|
on the local system. |
|
|
|
@param userName User name to be verified. |
|
|
|
@return true if the username is valid, else false |
|
*/ |
|
static Boolean isSystemUser(const char* userName); |
|
|
|
/** |
|
Checks whether the given user is a privileged user. |
|
|
|
@param userName User name to be checked. |
|
@return true if the user is a privileged user, else false |
|
*/ |
|
static Boolean isPrivilegedUser(const String userName); |
|
|
|
/** |
|
This function returns the privileged user name on the system. |
|
|
|
@return the privileged user name |
|
*/ |
|
static String getPrivilegedUserName(); |
|
|
|
/** |
|
This function is used to get the process ID of the calling process. |
|
|
|
@return Process ID |
|
*/ |
|
static Uint32 getPID(); |
|
|
|
static Boolean truncateFile(const char* path, size_t newSize); |
|
|
|
/** Compare two strings but ignore any case differences. |
|
This method is provided only because some platforms lack a strcasecmp |
|
function in the standard library. |
|
*/ |
|
static Sint32 strcasecmp(const char* s1, const char* s2); |
|
|
|
/** Return just the file or directory name from the path into basename. |
|
This method returns a file or directory name at the end of a path. |
|
The path can be relative or absolute. If the path is the root, |
|
then empty string is returned. |
|
*/ |
|
static char *extract_file_name(const char *fullpath, char *basename); |
|
|
|
/** Return just the pathname into dirname. The fullpath can be relative |
|
or absolute. This method returns a path minus the file or |
|
directory name at the end of a supplied path (fullpath). |
|
If the fullpath is the root, then fullpath is returned. |
|
The resulting path will contain a trailing slash unless fullpath is |
|
a file or directory name, in which case, just the file or directory |
|
name is returned. |
|
*/ |
|
static char *extract_file_path(const char *fullpath, char *dirname); |
|
|
|
// Is absolute path? |
|
static Boolean is_absolute_path(const char *path); |
|
|
|
/** Changes file permissions on the given file. |
|
@param path path of the file. |
|
@param mode the bit-wise inclusive OR of the values for the desired |
|
permissions. |
|
@return true on success, false on error and errno is set appropriately. |
|
*/ |
|
static Boolean changeFilePermissions(const char* path, mode_t mode); |
|
|
|
#if defined(PEGASUS_OS_HPUX) |
|
static Boolean bindVerbose; |
|
#endif |
|
|
|
/** This function is an abstraction for the openlog interface used in the Logger |
|
class. Each platform intending to use system logs should support this interface |
|
*/ |
|
static void openlog(const String); |
|
|
|
/** This function is an abstraction for the syslog interface used in the Logger |
|
class. Each platform intending to use system logs should support this interface |
|
*/ |
|
static void syslog(Uint32, const char *); |
|
|
|
/** This function is an abstraction for the closelog interface used in the Logger |
|
class. Each platform intending to use system logs should support this interface |
|
*/ |
|
static void closelog(); |
|
|
|
// System ID constants for Logger::put and Logger::trace |
|
static const String CIMSERVER; |
|
|
|
// System ID constants for Logger::put and Logger::trace |
|
static const String CIMLISTENER; |
}; | }; |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |