Merge branch 'master' of ssh://sblim.git.sourceforge.net/gitroot/sblim/sfcc

Conflicts:
	ChangeLog
	NEWS
diff --git a/ChangeLog b/ChangeLog
index 49f2981..3d55979 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,12 @@
 	[ 3286489 ] getInstance does not return key/value through XML
 	(patch originated by Josef Moellers)
 
+2011-04-25  Narasimha Sharoff  <nsharoff@us.ibm.com>
+
+	* frontend/sfcc/sfcclient.c:
+	[ 2967265 ] code cleanup in sfcclient
+	(patch by Klaus Kaempf)
+
 2011-04-07  Chris Buccella  <buccella@linux.vnet.ibm.com>
 
 	* backend/cimxml/grammar.c:
@@ -55,6 +61,7 @@
 
 	* cimc/cimcclient.c
 	[ 3101151 ] SfcbLocal failed to connect due to hardcoded library path
+	(based on the patch by: Chris Poblete <Chris_Poblete@Dell.com>)
 
 2011-02-22  Narasimha Sharoff  <nsharoff@us.ibm.com>
 
diff --git a/NEWS b/NEWS
index 7b4d810..f2be3ed 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@
 ================
 
 Bugs:
+- 2967265: Code cleanup in frontend/sfcc/sfcclient.c
 - 3286489: getInstance does not return key/value through XML
 
 Changes in 2.2.2
diff --git a/cimc/cimcclient.c b/cimc/cimcclient.c
index d520fc4..7ed10a3 100644
--- a/cimc/cimcclient.c
+++ b/cimc/cimcclient.c
@@ -25,6 +25,8 @@
 #include <stdlib.h>
 #include <dlfcn.h>
 #include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 
 /*
  * Canonical CIM C API entry points
@@ -42,6 +44,7 @@
    void        *library; 
    InitCimcEnv  init=NULL;
    CIMCEnv     *rv=NULL;
+   struct      stat sbuf;
    
     libName[LIBLEN]=0;
     entry[ENTLEN]=0;
@@ -52,7 +55,7 @@
         snprintf(*msg,ERRLEN,"Invalid connection type '%s'. Must be 'XML' or 'SfcbLocal'.",id);
     } else {
         if ((strcmp(id, "SfcbLocal") == 0) && 
-	    ((SFCB_LIBDIR != NULL) && (strlen(SFCB_LIBDIR) > 0))) {
+	    (stat(SFCB_LIBDIR, &sbuf) == 0)) {
             snprintf(libName, LIBLEN, "%s/libcimcClient%s.so",SFCB_LIBDIR,id);
         } else {
             snprintf(libName, LIBLEN, "libcimcClient%s.so",id);
diff --git a/frontend/sfcc/sfcclient.c b/frontend/sfcc/sfcclient.c
index 89736ad..2eed047 100644
--- a/frontend/sfcc/sfcclient.c
+++ b/frontend/sfcc/sfcclient.c
@@ -215,12 +215,14 @@
 
 char * value2Chars (CMPIType type, CMPIValue *value)
 {
-   char str[2048], *p;
+#define SBUFLEN 32
+   char str[SBUFLEN], *p;
    unsigned int size;
    CMPIString *cStr;
 
    str[0]=0;
    if (type & CMPI_ARRAY) {
+	fprintf(stderr, "*** value2Chars not implemented for Array *** ");
    }
    else if (type & CMPI_ENC) {
 
@@ -283,29 +285,29 @@
 
       switch (type) {
       case CMPI_uint8:
-         sprintf(str, "%u", value->uint8);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%u", value->uint8);
+         break;
       case CMPI_sint8:
-         sprintf(str, "%d", value->sint8);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%d", value->sint8);
+         break;
       case CMPI_uint16:
-         sprintf(str, "%u", value->uint16);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%u", value->uint16);
+         break;
       case CMPI_sint16:
-         sprintf(str, "%d", value->sint16);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%d", value->sint16);
+         break;
       case CMPI_uint32:
-         sprintf(str, "%lu", value->uint32);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%lu", value->uint32);
+         break;
       case CMPI_sint32:
-         sprintf(str, "%ld", value->sint32);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%ld", value->sint32);
+         break;
       case CMPI_uint64:
-         sprintf(str, "%llu", value->uint64);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%llu", value->uint64);
+         break;
       case CMPI_sint64:
-         sprintf(str, "%lld", value->sint64);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%lld", value->sint64);
+         break;
       }
 
    }
@@ -313,13 +315,14 @@
 
       switch (type) {
       case CMPI_real32:
-         sprintf(str, "%g", value->real32);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%g", value->real32);
+         break;
       case CMPI_real64:
-         sprintf(str, "%g", value->real64);
-         return strdup(str);
+         snprintf(str, SBUFLEN, "%g", value->real64);
+         break;
       }
 
    }
+#undef SBUFLEN
    return strdup(str);
 }