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) {

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to