Some comments inline.

Thanks,
Praveen
On 09-Jul-14 10:42 AM, Minh Hon Chau wrote:
>   osaf/tools/safntf/include/ntfclient.h         |   1 +
>   osaf/tools/safntf/ntfread/Makefile.am         |   6 ++-
>   osaf/tools/safntf/ntfread/ntfread.c           |  23 ++++-------
>   osaf/tools/safntf/ntfsend/Makefile.am         |   6 ++-
>   osaf/tools/safntf/ntfsend/ntfsend.c           |  29 ++++----------
>   osaf/tools/safntf/ntfsubscribe/Makefile.am    |   6 ++-
>   osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c |   4 ++
>   osaf/tools/safntf/src/Makefile.am             |   1 +
>   osaf/tools/safntf/src/ntfclient.c             |  53 
> ++++++++++++--------------
>   9 files changed, 59 insertions(+), 70 deletions(-)
>
>
> diff --git a/osaf/tools/safntf/include/ntfclient.h 
> b/osaf/tools/safntf/include/ntfclient.h
> --- a/osaf/tools/safntf/include/ntfclient.h
> +++ b/osaf/tools/safntf/include/ntfclient.h
> @@ -23,6 +23,7 @@
>   
>   #include <saNtf.h>
>   #include "ntfsv_msg.h"
> +#include "ntfsv_mem.h"
>   
>   /* Defines */
>   #define DEFAULT_FLAG 0x0001
> diff --git a/osaf/tools/safntf/ntfread/Makefile.am 
> b/osaf/tools/safntf/ntfread/Makefile.am
> --- a/osaf/tools/safntf/ntfread/Makefile.am
> +++ b/osaf/tools/safntf/ntfread/Makefile.am
> @@ -23,6 +23,7 @@ bin_PROGRAMS = ntfread
>   
>   ntfread_CPPFLAGS = \
>       $(AM_CPPFLAGS) \
> +     -DSA_EXTENDED_NAME_SOURCE \
>       -I$(top_srcdir)/osaf/tools/safntf/include \
>       -I$(top_srcdir)/osaf/libs/common/ntfsv/include
>   
> @@ -30,6 +31,7 @@ ntfread_SOURCES = \
>       ntfread.c
>   
>   ntfread_LDADD = \
> +     $(top_builddir)/osaf/tools/safntf/src/libntfclient.la \
> +     $(top_builddir)/osaf/libs/common/ntfsv/libntfsv_common.la \
>       $(top_builddir)/osaf/libs/core/libopensaf_core.la \
> -     $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la \
> -     $(top_builddir)/osaf/tools/safntf/src/libntfclient.la
> +     $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la
> diff --git a/osaf/tools/safntf/ntfread/ntfread.c 
> b/osaf/tools/safntf/ntfread/ntfread.c
> --- a/osaf/tools/safntf/ntfread/ntfread.c
> +++ b/osaf/tools/safntf/ntfread/ntfread.c
> @@ -67,8 +67,8 @@ static SaUint16T nNyObj = 0;
>   static SaUint16T nCId = 0;
>   
>   static SaNtfEventTypeT eType = 0;
> -static SaNameT nObj = {0};
> -static SaNameT nyObj = {0};
> +static SaNameT nObj;
> +static SaNameT nyObj;
>   static SaNtfClassIdT cId;
>   
>   /* common alarm and security alarm */
> @@ -272,6 +272,10 @@ int main(int argc, char *argv[]) {
>       verbose = 0;
>       progname = argv[0];
>   
> +     if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
> +             LOG_ER("Failed to enable Extended SaNameT");
> +             exit(EXIT_FAILURE);
> +     }
>       /* Check options */
>       while (1) {
>               c = getopt_long(argc, argv, "b:c:d:hE:e:i:klN:n:op:s:v",
> @@ -314,22 +318,11 @@ int main(int argc, char *argv[]) {
>                       filterAlarm = false;
>                       break;
>               case 'N':
> -                     nyObj.length = (SaUint16T)strlen(optarg);
> -                     if (SA_MAX_NAME_LENGTH < nyObj.length) {
> -                             fprintf(stderr, "notifyingObject too long\n");
> -                             exit(EXIT_FAILURE);
> -                     }
[Praveen] Though this is highly likely that nobody will send longer DNs 
then  kMaxDnLength, but still  check for modified kMaxDnLength can still 
be kept in ntfread and ntfsend
for notifyingObject and notificationObject.
> -                     (void)memcpy(nyObj.value, optarg, nyObj.length);
> +                     saAisNameLend(optarg, &nyObj);
>                       nNyObj = 1;
>                       break;
>               case 'n':
> -                     nObj.length = (SaUint16T)strlen(optarg);
> -                     if (SA_MAX_NAME_LENGTH < nObj.length) {
> -                             fprintf(stderr,
> -                                     "notificationObject too long\n");
> -                             exit(EXIT_FAILURE);
> -                     }
> -                     (void)memcpy(nObj.value, optarg, nObj.length);
> +                     saAisNameLend(optarg, &nObj);
>                       nNnObj = 1;
>                       break;
>               case 'o':
> diff --git a/osaf/tools/safntf/ntfsend/Makefile.am 
> b/osaf/tools/safntf/ntfsend/Makefile.am
> --- a/osaf/tools/safntf/ntfsend/Makefile.am
> +++ b/osaf/tools/safntf/ntfsend/Makefile.am
> @@ -23,6 +23,7 @@ bin_PROGRAMS = ntfsend
>   
>   ntfsend_CPPFLAGS = \
>       $(AM_CPPFLAGS) \
> +     -DSA_EXTENDED_NAME_SOURCE \
>       -I$(top_srcdir)/osaf/tools/safntf/include \
>       -I$(top_srcdir)/osaf/libs/common/ntfsv/include
>   
> @@ -30,6 +31,7 @@ ntfsend_SOURCES = \
>       ntfsend.c
>   
>   ntfsend_LDADD = \
> +     $(top_builddir)/osaf/tools/safntf/src/libntfclient.la \
> +     $(top_builddir)/osaf/libs/common/ntfsv/libntfsv_common.la \
>       $(top_builddir)/osaf/libs/core/libopensaf_core.la \
> -     $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la \
> -     $(top_builddir)/osaf/tools/safntf/src/libntfclient.la
> +     $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la
> diff --git a/osaf/tools/safntf/ntfsend/ntfsend.c 
> b/osaf/tools/safntf/ntfsend/ntfsend.c
> --- a/osaf/tools/safntf/ntfsend/ntfsend.c
> +++ b/osaf/tools/safntf/ntfsend/ntfsend.c
> @@ -186,12 +186,8 @@ static void fillInDefaultValues(saNotifi
>   
>       (void)strncpy(notificationParams->additionalText,
>                     DEFAULT_ADDITIONAL_TEXT, 
> notificationAllocationParams->lengthAdditionalText);
> -     notificationParams->notificationObject.length = 
> strlen(DEFAULT_NOTIFICATION_OBJECT);
> -     (void)memcpy(notificationParams->notificationObject.value,
> -                  DEFAULT_NOTIFICATION_OBJECT, 
> notificationParams->notificationObject.length);
> -     notificationParams->notifyingObject.length = 
> strlen(DEFAULT_NOTIFYING_OBJECT);
> -     (void)memcpy(notificationParams->notifyingObject.value,
> -                  DEFAULT_NOTIFYING_OBJECT, 
> notificationParams->notifyingObject.length);
> +     saAisNameLend(DEFAULT_NOTIFICATION_OBJECT, 
> &notificationParams->notificationObject);
> +     saAisNameLend(DEFAULT_NOTIFYING_OBJECT, 
> &notificationParams->notifyingObject);
>       notificationParams->notificationClassId.vendorId = ERICSSON_VENDOR_ID;
>       notificationParams->notificationClassId.majorId = 0;
>       notificationParams->notificationClassId.minorId = 0;
> @@ -802,6 +798,11 @@ int main(int argc, char *argv[])
>               {0, 0, 0, 0}
>       };
>   
> +     if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
> +             LOG_ER("Failed to enable Extended SaNameT");
> +             exit(EXIT_FAILURE);
> +     }
> +     
>       fillInDefaultValues(&myNotificationAllocationParams,
>                           &myNotificationFilterAllocationParams, 
> &myNotificationParams);
>   
> @@ -831,22 +832,10 @@ int main(int argc, char *argv[])
>                               
> getVendorId(&myNotificationParams.notificationClassId);
>                               break;
>                       case 'n':
> -                             myNotificationParams.notificationObject.length 
> = (SaUint16T)strlen(optarg);
> -                             if (SA_MAX_NAME_LENGTH < 
> myNotificationParams.notificationObject.length) {
> -                                     fprintf(stderr, "notificationObject too 
> long\n");
> -                                     exit(EXIT_FAILURE);
> -                             }
> -                             
> (void)memcpy(myNotificationParams.notificationObject.value,
> -                                          optarg, 
> myNotificationParams.notificationObject.length);
> +                             saAisNameLend(optarg, 
> &myNotificationParams.notificationObject);
>                               break;
>                       case 'N':
> -                             myNotificationParams.notifyingObject.length = 
> (SaUint16T)strlen(optarg);
> -                             if (SA_MAX_NAME_LENGTH < 
> myNotificationParams.notifyingObject.length) {
> -                                     fprintf(stderr, "notifyingObject too 
> long\n");
> -                                     exit(EXIT_FAILURE);
> -                             }
> -                             
> (void)memcpy(myNotificationParams.notifyingObject.value,
> -                                          optarg, 
> myNotificationParams.notifyingObject.length);
> +                             saAisNameLend(optarg, 
> &myNotificationParams.notifyingObject);
>                               break;
>                       case 'e':
>                               myNotificationParams.eventType = 
> (SaNtfEventTypeT)atoi(optarg);
> diff --git a/osaf/tools/safntf/ntfsubscribe/Makefile.am 
> b/osaf/tools/safntf/ntfsubscribe/Makefile.am
> --- a/osaf/tools/safntf/ntfsubscribe/Makefile.am
> +++ b/osaf/tools/safntf/ntfsubscribe/Makefile.am
> @@ -23,6 +23,7 @@ bin_PROGRAMS = ntfsubscribe
>   
>   ntfsubscribe_CPPFLAGS = \
>       $(AM_CPPFLAGS) \
> +     -DSA_EXTENDED_NAME_SOURCE \
>       -I$(top_srcdir)/osaf/tools/safntf/include \
>       -I$(top_srcdir)/osaf/libs/common/ntfsv/include
>   
> @@ -31,6 +32,7 @@ ntfsubscribe_SOURCES = \
>   
>   
>   ntfsubscribe_LDADD = \
> +     $(top_builddir)/osaf/tools/safntf/src/libntfclient.la \
> +     $(top_builddir)/osaf/libs/common/ntfsv/libntfsv_common.la \
>       $(top_builddir)/osaf/libs/core/libopensaf_core.la \
> -     $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la \
> -     $(top_builddir)/osaf/tools/safntf/src/libntfclient.la
> +     $(top_builddir)/osaf/libs/saf/libSaNtf/libSaNtf.la
> diff --git a/osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c 
> b/osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c
> --- a/osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c
> +++ b/osaf/tools/safntf/ntfsubscribe/ntfsubscribe.c
> @@ -283,6 +283,10 @@ int main(int argc, char *argv[])
>       verbose = 0;
>       progname = argv[0];
>   
> +     if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) {
> +             LOG_ER("Failed to enable Extended SaNameT");
> +             exit(EXIT_FAILURE);
> +     }       
>       /* Check options */
>       while (1) {
>               c = getopt_long(argc, argv, "acosyht:v", long_options, NULL);
> diff --git a/osaf/tools/safntf/src/Makefile.am 
> b/osaf/tools/safntf/src/Makefile.am
> --- a/osaf/tools/safntf/src/Makefile.am
> +++ b/osaf/tools/safntf/src/Makefile.am
> @@ -22,6 +22,7 @@ noinst_LTLIBRARIES = libntfclient.la
>   
>   libntfclient_la_CPPFLAGS = \
>       $(AM_CPPFLAGS) \
> +     -DSA_EXTENDED_NAME_SOURCE \
>       -I$(top_srcdir)/osaf/libs/saf/include \
>       -I$(top_srcdir)/osaf/tools/safntf/include \
>       -I$(top_srcdir)/osaf/libs/common/ntfsv/include
> diff --git a/osaf/tools/safntf/src/ntfclient.c 
> b/osaf/tools/safntf/src/ntfclient.c
> --- a/osaf/tools/safntf/src/ntfclient.c
> +++ b/osaf/tools/safntf/src/ntfclient.c
> @@ -509,7 +509,7 @@ static void print_attribute_value(SaNtfN
>       const SaUint16T max_size = 20;
>       SaAisErrorT rc;
>       SaUint8T *bin_ptr;
> -     char tmp_str[SA_MAX_NAME_LENGTH+1];
> +     char* tmp_str;
>       int i;
>   
>       switch ((int)attributeType) {
> @@ -538,12 +538,11 @@ static void print_attribute_value(SaNtfN
>                                       (void **)&str_ptr,
>                                       &data_size);
>               if (rc == SA_AIS_OK) {
> -                     if (data_size > (SA_MAX_NAME_LENGTH+1)) {
> -                             data_size = SA_MAX_NAME_LENGTH;
> -                     }
> -                     snprintf(tmp_str,data_size+1,"%s",str_ptr);
> -                     printf(" Attribute Value: \"%s\"\n",
> -                                     tmp_str);
> +                     tmp_str = (char*) malloc(data_size + 1);
> +                     memcpy(tmp_str, str_ptr, data_size);
> +                     tmp_str[data_size] = '\0';
> +                     printf(" Attribute Value: \"%s\"\n", tmp_str);
> +                     free(tmp_str);
>               } else
>                       fprintf(stderr, "saNtfPtrValGet Error "
>                               "%d\n", rc);
> @@ -635,8 +634,7 @@ static void print_header(const SaNtfNoti
>                 SaNtfSubscriptionIdT subscriptionId,
>                 SaNtfNotificationTypeT notificationType)
>   {
> -     char tmpObj[SA_MAX_NAME_LENGTH + 1];
> -
> +     char *temp_str;
>       if (verbose) {
>               printf("notificationID = %d\n",
>                      (int)*(notificationHeader->notificationId));
> @@ -648,25 +646,20 @@ static void print_header(const SaNtfNoti
>       print_event_type(*notificationHeader->eventType, notificationType);
>   
>       if (verbose)
> -             printf("notificationObject.length = %u\n",
> -                    notificationHeader->notificationObject->length);
> +             printf("notificationObject.length = %zu\n",
> +                             
> ntfs_sanamet_length(notificationHeader->notificationObject));
[Praveen] I think saAisNameBorrow() can be used to print the length also
    printf("notificationObject.length = %ld\n",
strlen(saAisNameBorrow(notificationHeader->notificationObject)));

> +     
> +     temp_str = ntfs_sanamet_strdup(notificationHeader->notificationObject);
> +     printf("notificationObject = \"%s\"\n", temp_str);
[Praveen] I think we can use saAisNameBorrow() here also:
       printf("notificationObject = \"%s\"\n",
saAisNameBorrow(notificationHeader->notificationObject));
> +     free(temp_str);
> +     
> +     if (verbose)
> +             printf("notifyingObject.length = %zu\n",
> +                             
> ntfs_sanamet_length(notificationHeader->notifyingObject));
>   
> -     strncpy(tmpObj,
> -             (char *)notificationHeader->notificationObject->value,
> -             notificationHeader->notificationObject->length);
> -     tmpObj[notificationHeader->notificationObject->length] = '\0';
> -     printf("notificationObject = \"%s\"\n", tmpObj);
> -
> -     strncpy(tmpObj,
> -             (char *)notificationHeader->notifyingObject->value,
> -             notificationHeader->notifyingObject->length);
> -     tmpObj[notificationHeader->notifyingObject->length] = '\0';
> -
> -     if (verbose)
> -             printf("notifyingObject.length = %u\n",
> -                    notificationHeader->notifyingObject->length);
> -
> -     printf("notifyingObject = \"%s\"\n", tmpObj);
> +     temp_str = ntfs_sanamet_strdup(notificationHeader->notifyingObject);
> +     printf("notifyingObject = \"%s\"\n", temp_str);
> +     free(temp_str);
>   
>       /* Notification Class ID in compact dot notation */
>       if (notificationHeader->notificationClassId->vendorId ==
> @@ -698,6 +691,7 @@ void print_additional_info(SaNtfNotifica
>   {
>       int i;
>       SaNameT *dataPtr;
> +     char *temp_str;
>       SaStringT info_value_str;
>       SaUint16T dataSize;
>       SaAisErrorT rc;
> @@ -716,8 +710,9 @@ void print_additional_info(SaNtfNotifica
>                                                       (void **)&dataPtr,
>                                                       &dataSize);
>                               if (rc == SA_AIS_OK) {
> -                                     printf(" infoValue = \"%s\"\n",
> -                                                dataPtr->value);
> +                                     temp_str = ntfs_sanamet_strdup(dataPtr);
> +                                     printf(" infoValue = \"%s\"\n", 
> temp_str);
> +                                     free(temp_str);
>                               } else
>                                       fprintf(stderr, "saNtfPtrValGet Error "
>                                               "%d\n", rc);


------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to