osaf/tools/safimm/src/immutil.c | 57 ++++++++++++++++++---------------------- osaf/tools/saflog/src/saflog.c | 10 +++++- 2 files changed, 34 insertions(+), 33 deletions(-)
This patch is not part of #873, it's made to solve the dependency since NTF is using immutil.c and saflog.c. NOTE that it will not be pushed together with #873 diff --git a/osaf/tools/safimm/src/immutil.c b/osaf/tools/safimm/src/immutil.c --- a/osaf/tools/safimm/src/immutil.c +++ b/osaf/tools/safimm/src/immutil.c @@ -15,11 +15,13 @@ * */ +#define _GNU_SOURCE +#ifndef SA_EXTENDED_NAME_SOURCE +#define SA_EXTENDED_NAME_SOURCE +#endif +#include "immutil.h" #include <stdio.h> #include <unistd.h> -#ifndef __USE_ISOC99 -#define __USE_ISOC99 // strtof and LLONG_MAX in older gcc versions like 4.3.2 -#endif #include <stdlib.h> #include <string.h> #include <limits.h> @@ -28,12 +30,10 @@ #include <syslog.h> #include <errno.h> -#include <immutil.h> - -#include <logtrace.h> +#include "saAis.h" +#include "logtrace.h" static const SaVersionT immVersion = { 'A', 2, 11 }; -size_t strnlen(const char *s, size_t maxlen); /* Memory handling functions */ #define CHUNK 4000 @@ -152,7 +152,7 @@ CcbUtilOperationData_t *ccbutil_ccbAddCr operation->param.create.className = dupSaImmClassNameT(clist, className); operation->param.create.parentName = dupSaNameT(clist, parentName); operation->param.create.attrValues = dupSaImmAttrValuesT_array(clist, attrValues); - operation->objectName.length = 0; + saAisNameLend("", &operation->objectName); return operation; } @@ -212,8 +212,7 @@ CcbUtilOperationData_t *ccbutil_getCcbOp CcbUtilOperationData_t *opData = ccbutil_getNextCcbOp(ccbId, NULL); while (opData != NULL) { - if ((dn->length == opData->objectName.length) && - (memcmp(dn->value, opData->objectName.value, dn->length) == 0)) + if (strcmp(saAisNameBorrow(dn), saAisNameBorrow(&opData->objectName)) == 0) break; opData = ccbutil_getNextCcbOp(ccbId, opData); @@ -267,13 +266,10 @@ char const *immutil_getClassName(struct char const *immutil_getStringValue(char const *key, SaNameT const *name) { - static char buffer[SA_MAX_NAME_LENGTH + 1]; + const char* buffer = saAisNameBorrow(name); unsigned int klen; char *cp; - assert(name->length <= SA_MAX_NAME_LENGTH); - memcpy(buffer, name->value, name->length); - buffer[name->length] = 0; assert(key != NULL); klen = strlen(key); assert(klen > 1 || key[klen - 1] == '='); @@ -297,14 +293,13 @@ char const *immutil_getStringValue(char char const *immutil_getDnItem(SaNameT const *name, unsigned int index) { - static char buffer[SA_MAX_NAME_LENGTH + 1]; + static char* buffer = NULL; char *cp; char *value; + size_t size = strlen(saAisNameBorrow(name)) + 1; - assert(name->length <= SA_MAX_NAME_LENGTH); - memcpy(buffer, name->value, name->length); - buffer[name->length] = 0; - + buffer = realloc(buffer, size); + memcpy(buffer, saAisNameBorrow(name), size); value = buffer; cp = strchr(value, ','); while (index > 0) { @@ -494,10 +489,9 @@ const SaUint32T *immutil_getUint32Attr(c int immutil_matchName(SaNameT const *name, regex_t const *preg) { - char buffer[SA_MAX_NAME_LENGTH + 1]; + const char* buffer; assert(name != NULL && preg != NULL); - memcpy(buffer, name->value, name->length); - buffer[name->length] = 0; + buffer = saAisNameBorrow(name); return regexec(preg, buffer, 0, NULL, 0); } @@ -510,8 +504,7 @@ SaAisErrorT immutil_update_one_rattr(SaI SaImmAttrValueT attrValues[] = { value }; SaNameT objectName; - strncpy((char *)objectName.value, dn, SA_MAX_NAME_LENGTH); - objectName.length = strlen((char *)objectName.value); + saAisNameLend(dn, &objectName); attrMod.modType = SA_IMM_ATTR_VALUES_REPLACE; attrMod.modAttr.attrName = attributeName; @@ -665,13 +658,8 @@ void *immutil_new_attrValue(SaImmValueTy case SA_IMM_ATTR_SANAMET: { SaNameT *mynamet; len = strlen(str); - if (len > SA_MAX_NAME_LENGTH) { - fprintf(stderr, "too long SaNameT\n"); - return NULL; - } attrValue = mynamet = malloc(sizeof(SaNameT)); - mynamet->length = len; - strncpy((char *)mynamet->value, str, SA_MAX_NAME_LENGTH); + saAisNameLend(len < SA_MAX_UNEXTENDED_NAME_LENGTH ? str : strdup(str), mynamet); break; } case SA_IMM_ATTR_SASTRINGT: { @@ -741,8 +729,9 @@ static const SaNameT *dupSaNameT(struct SaNameT *copy; if (original == NULL) return NULL; + const char* value = saAisNameBorrow(original); copy = (SaNameT *)clistMalloc(clist, sizeof(SaNameT)); - memcpy(copy, original, sizeof(SaNameT)); + saAisNameLend(strlen(value) < SA_MAX_UNEXTENDED_NAME_LENGTH ? value : dupStr(clist, value), copy); return copy; } @@ -823,6 +812,12 @@ static void copySaImmAttrValuesT(struct char *cporig = *((char **)original->attrValues[i]); char **cpp = (char **)databuffer; *cpp = dupStr(clist, cporig); + } else if(original->attrValueType == SA_IMM_ATTR_SANAMET) { + SaNameT* cporig = (SaNameT*) original->attrValues[i]; + SaNameT* cpdest = (SaNameT*) copy->attrValues[i]; + const char* value = saAisNameBorrow(cporig); + saAisNameLend(strlen(value) < SA_MAX_UNEXTENDED_NAME_LENGTH ? value : + dupStr(clist, value), cpdest); } else if(original->attrValueType == SA_IMM_ATTR_SAANYT) { SaAnyT* cporig = (SaAnyT *) original->attrValues[i]; SaAnyT* cpdest = (SaAnyT *) copy->attrValues[i]; diff --git a/osaf/tools/saflog/src/saflog.c b/osaf/tools/saflog/src/saflog.c --- a/osaf/tools/saflog/src/saflog.c +++ b/osaf/tools/saflog/src/saflog.c @@ -15,11 +15,15 @@ * */ +#ifndef SA_EXTENDED_NAME_SOURCE +#define SA_EXTENDED_NAME_SOURCE +#endif #include <stdio.h> #include <syslog.h> #include <stdarg.h> #include <unistd.h> #include <saflog.h> +#include "osaf_extended_name.h" static int initialized; static SaLogStreamHandleT logStreamHandle; @@ -31,7 +35,8 @@ void saflog_init(void) if (!initialized) { SaVersionT logVersion = { 'A', 2, 1 }; - SaNameT stream_name = {.value = SA_LOG_STREAM_SYSTEM, .length = sizeof(SA_LOG_STREAM_SYSTEM)}; + SaNameT stream_name; + osaf_extended_name_lend(SA_LOG_STREAM_SYSTEM, &stream_name); error = saLogInitialize(&logHandle, NULL, &logVersion); if (error != SA_AIS_OK) { @@ -64,7 +69,8 @@ void saflog(int priority, const SaNameT if (!initialized) { SaVersionT logVersion = { 'A', 2, 1 }; - SaNameT stream_name = {.value = SA_LOG_STREAM_SYSTEM, .length = sizeof(SA_LOG_STREAM_SYSTEM)}; + SaNameT stream_name; + osaf_extended_name_lend(SA_LOG_STREAM_SYSTEM, &stream_name); error = saLogInitialize(&logHandle, NULL, &logVersion); if (error != SA_AIS_OK) { ------------------------------------------------------------------------------ Open source business process management suite built on Java and Eclipse Turn processes into business applications with Bonita BPM Community Edition Quickly connect people, data, and systems into organized workflows Winner of BOSSIE, CODIE, OW2 and Gartner awards http://p.sf.net/sfu/Bonitasoft _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel