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