void ZOSConsoleManager::_issueSyntaxError(const char* command) { PEG_METHOD_ENTER(TRC_SERVER, "ZOSConsoleManager::_issueSyntaxError"); Logger::put_l( Logger::ERROR_LOG, System::CIMSERVER, Logger::SEVERE, MessageLoaderParms( "Server.ConsoleManager_zOS.CON_SYNTAX_ERR.PEGASUS_OS_ZOS", "CIM MODIFY COMMAND REJECTED DUE TO SYNTAX ERROR")); if (!strncmp(command,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_CONFIG))) { Logger::put_l( Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, MessageLoaderParms( "Server.ConsoleManager_zOS.CON_MODIFY_SYNTAX.PEGASUS_OS_ZOS", "Syntax is: " "MODIFY CFZCIM,APPL=CONFIG,<name>=<value>[,PLANNED]")); } else if (!strncmp(command,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_ENV))) { Logger::put_l( Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, MessageLoaderParms( "Server.ConsoleManager_zOS." "CON_MODIFY_ENV_SYNTAX.PEGASUS_OS_ZOS", "Syntax is:" " MODIFY CFZCIM,APPL=ENV[,<varname>][=<value>]")); } PEG_METHOD_EXIT(); }
void ZOSConsoleManager::_displayServiceLevel() { PEG_METHOD_ENTER(TRC_SERVER, "ZOSConsoleManager::_displayServiceLevel"); // PEGASUS_ZOS_SERVICE_STRING is defined in the z/OS platform make file String serviceString(STRLIT_ARGS(PEGASUS_ZOS_SERVICE_STRING)); Logger::put_l( Logger::STANDARD_LOG, System::CIMSERVER, Logger::INFORMATION, MessageLoaderParms( "Server.ConsoleManager_zOS.VERSION.PEGASUS_OS_ZOS", "CIM Server Service Level: $0", serviceString)); PEG_METHOD_EXIT(); }
// Note: we cannot use StrLit here since it has a constructor (forbids // structure initialization). struct SpecialChar { const char* str; Uint32 size; }; // Defines encodings of special characters. Just use a 7-bit ASCII character // as an index into this array to retrieve its string encoding and encoding // length in bytes. static const SpecialChar _specialChars[] = { {STRLIT_ARGS("�")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("	")}, {STRLIT_ARGS(" ")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")}, {STRLIT_ARGS(" ")}, {STRLIT_ARGS("")}, {STRLIT_ARGS("")},
/****************************************************************************** Syntax for Modify command is: MODIFY <jobname>,APPL=CONFIG,<properyname>=['<value>'|<value>][,PLANNED] VERSION ENV[,<varname>][=<value>] Parameter <command> represents the string following the "APPL=" token. ******************************************************************************/ void ZOSConsoleManager::processModifyCommand( char* command ) { PEG_METHOD_ENTER(TRC_SERVER, "ZOSConsoleManager::processModifyCommand"); char* currentPtr = command; char* cmdPtr = NULL; char* cfgProperty = NULL; char* cfgValue = NULL; char* planned = NULL; Boolean currentValueIsNull = false; Boolean valueIsQuoted = false; CommandType consCmd=consoleCmdInvalid; currentPtr = _skipBlanks(currentPtr); if (!memcmp(currentPtr,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_CONFIG))) { currentPtr += strlen(ZOSCONSOLEMANAGER_TOKEN_CONFIG); consCmd = consoleCmdConfig; } else if (!memcmp(currentPtr,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_VERSION))) { consCmd = consoleCmdVersion; _displayServiceLevel(); PEG_METHOD_EXIT(); return; } else if (!memcmp(currentPtr,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_ENV))) { consCmd = consoleCmdEnv; currentPtr += strlen(ZOSCONSOLEMANAGER_TOKEN_ENV); if (*currentPtr == ',') { currentPtr++; } } else { _issueSyntaxError(command); PEG_METHOD_EXIT(); return; } // Here currentPtr points after the [CONFIG,|VERSION|ENV] token. // Following is either the name of a variable or nothing currentPtr = _skipBlanks(currentPtr); cfgProperty = currentPtr; currentPtr = strchr(currentPtr,'='); if (currentPtr==NULL) { if (consCmd == consoleCmdEnv) { _showEnvironment(cfgProperty); PEG_METHOD_EXIT(); return; } else { _issueSyntaxError(command); PEG_METHOD_EXIT(); return; } } else { // skip the "=" *currentPtr = '\0'; currentPtr++; currentPtr = _skipBlanks(currentPtr); if (*currentPtr == '\0' || *currentPtr ==',') { currentValueIsNull=true; } else if (*currentPtr == '\'') { // Check if value is enclosed in quotes char* temp = strchr(currentPtr+1,'\''); if (temp!=NULL) { // skip the starting "'" *currentPtr = '\0'; currentPtr++; cfgValue = currentPtr; currentPtr = temp; // skip the ending "'" *currentPtr = '\0'; currentPtr++; valueIsQuoted = true; } else { _issueSyntaxError(command); PEG_METHOD_EXIT(); return; } } else { cfgValue = currentPtr; } } currentPtr = _skipBlanks(currentPtr); planned = strchr(currentPtr,','); if (planned!=NULL) { *planned = '\0'; planned++; planned = _skipBlanks(planned); if (memcmp(planned,STRLIT_ARGS(ZOSCONSOLEMANAGER_TOKEN_PLANNED))) { _issueSyntaxError(command); PEG_METHOD_EXIT(); return; } } _stripTrailingBlanks( cfgProperty ); PEG_TRACE((TRC_SERVER, Tracer::LEVEL4,"Update property: %s", cfgProperty)); if (currentValueIsNull) { PEG_TRACE_CSTRING(TRC_SERVER, Tracer::LEVEL4, "Set property with null value"); } else { _stripTrailingBlanks( cfgValue ); PEG_TRACE((TRC_SERVER, Tracer::LEVEL4, "Update property value to: %s", cfgValue)); } if (planned != NULL) { PEG_TRACE_CSTRING(TRC_SERVER, Tracer::LEVEL4, "Updating planned value"); } if (consCmd == consoleCmdEnv) { _updateEnvironment(cfgProperty, cfgValue); PEG_METHOD_EXIT(); return; } String propertyString(cfgProperty); String propertyValue; if (!currentValueIsNull) { propertyValue.assign(cfgValue); if (!valueIsQuoted) { // All values that were not enclosed in quotes are // converted to lowercase propertyValue.toLower(); } } _updateConfiguration(propertyString, propertyValue, currentValueIsNull, planned); PEG_METHOD_EXIT(); }