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

Reply via email to