3
* $Id: cimXmlRequest.c,v 1.48 2008/01/30 22:20:26 buccella Exp $
3
* $Id: cimXmlRequest.c,v 1.52 2008/12/18 21:34:33 mchasal Exp $
5
5
* © Copyright IBM Corp. 2005, 2007
274
static char* xsnprintf(const char* fmt, ...)
279
len = vsnprintf(NULL, 0, fmt, ap);
285
char* str = (char*)malloc(len+1);
291
vsnprintf(str, len+1, fmt, ap);
269
297
static char *getErrSegment(int rc, char *m)
272
300
char *escapedMsg;
275
303
escapedMsg = XMLEscape(m, NULL);
276
snprintf(msg, sizeof(msg), "<ERROR CODE=\"%d\" DESCRIPTION=\"%s\"/>\n",
304
msg = xsnprintf("<ERROR CODE=\"%d\" DESCRIPTION=\"%s\"/>\n",
278
306
free(escapedMsg);
280
308
else if (rc > 0 && rc < 18) {
281
snprintf(msg, sizeof(msg), "<ERROR CODE=\"%d\" DESCRIPTION=\"%s\"/>\n",
309
msg = xsnprintf("<ERROR CODE=\"%d\" DESCRIPTION=\"%s\"/>\n",
285
snprintf(msg, sizeof(msg), "<ERROR CODE=\"%d\"/>\n", rc);
313
msg = xsnprintf("<ERROR CODE=\"%d\"/>\n", rc);
290
318
static char *getErrorSegment(CMPIStatus rc)
298
326
char *getErrTrailer(int id, int rc, char *m)
302
if (m && *m) snprintf(msg, sizeof(msg), "CIMStatusCodeDescription: %s\r\n",m);
330
if (m && *m) msg = xsnprintf("CIMStatusCodeDescription: %s\r\n",m);
303
331
else if (rc > 0 && rc < 18)
304
snprintf(msg, sizeof(msg), "CIMStatusCodeDescription: %s\r\n",cimMsg[rc]);
305
else snprintf(msg, sizeof(msg), "CIMStatusCodeDescription: *Unknown*\r\n");
332
msg = xsnprintf("CIMStatusCodeDescription: %s\r\n",cimMsg[rc]);
333
else msg = strdup("CIMStatusCodeDescription: *Unknown*\r\n");
348
376
MsgXctl *xd = ctx->ctlXdata;
351
380
switch (ctx->rc) {
352
381
case MSG_X_NOT_SUPPORTED:
353
382
hdr->errMsg = strdup("Operation not supported yy");
383
err = CMPI_RC_ERR_NOT_SUPPORTED;
355
385
case MSG_X_INVALID_CLASS:
356
386
hdr->errMsg = strdup("Class not found");
387
err = CMPI_RC_ERR_INVALID_CLASS;
358
389
case MSG_X_INVALID_NAMESPACE:
359
390
hdr->errMsg = strdup("Invalid namespace");
391
err = CMPI_RC_ERR_INVALID_NAMESPACE;
361
393
case MSG_X_PROVIDER_NOT_FOUND:
362
394
hdr->errMsg = strdup("Provider not found or not loadable");
395
err = CMPI_RC_ERR_NOT_FOUND;
364
397
case MSG_X_FAILED:
365
398
hdr->errMsg = strdup(xd->data);
399
err = CMPI_RC_ERR_FAILED;
368
402
sprintf(msg, "Internal error - %d\n", ctx->rc);
369
403
hdr->errMsg = strdup(msg);
404
err = CMPI_RC_ERR_FAILED;
372
methodErrResponse(hdr,getErrSegment(CMPI_RC_ERR_INVALID_CLASS,hdr->errMsg));
407
methodErrResponse(hdr,getErrSegment(err,hdr->errMsg));
374
iMethodErrResponse(hdr,getErrSegment(CMPI_RC_ERR_INVALID_CLASS,hdr->errMsg));
409
iMethodErrResponse(hdr,getErrSegment(err,hdr->errMsg));