Changeset 4506 for trunk/Nebulous/nebclient/src/nebclient.c
- Timestamp:
- Jul 7, 2005, 12:47:40 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/Nebulous/nebclient/src/nebclient.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous/nebclient/src/nebclient.c
r4504 r4506 4 4 * Copyright (C) 2005 Joshua Hoblitt 5 5 * 6 * $Id: nebclient.c,v 1.1 1 2005-07-07 21:41:15jhoblitt Exp $6 * $Id: nebclient.c,v 1.12 2005-07-07 22:47:40 jhoblitt Exp $ 7 7 */ 8 8 … … 17 17 #include <unistd.h> 18 18 #include <stdbool.h> 19 #include <stdarg.h> 19 20 #include "xmalloc.h" 20 21 #include "soapH.h" … … 24 25 #define ERRBUF_SIZE 2048 25 26 27 static bool nebSetErr(nebServer *server, const char *format, ...); 28 static bool nebSetServerErr(nebServer *server); 26 29 static off_t nebCopyFile(char *source, char *dest); 27 30 static off_t nebCopyFilehandle(int sourceFH, int destFH); … … 35 38 server = xmalloc(sizeof(nebServer)); 36 39 server->soap = xmalloc(sizeof(struct soap)); 37 server->err_msg = xmalloc(ERRBUF_SIZE); 40 server->err_buf = xmalloc(ERRBUF_SIZE); 41 server->err_buf_size = ERRBUF_SIZE; 38 42 39 43 soap_init(server->soap); 40 44 41 45 return server; 42 }43 44 char *nebServerErr(nebServer *server)45 {46 char *fault;47 const char **code;48 const char **string;49 50 code = soap_faultcode(server->soap);51 string = soap_faultstring(server->soap);52 53 fault = xmalloc(strlen(*code) + 3 + strlen(*string) + 1);54 sprintf(fault, "%s - %s", *code, *string);55 56 return fault;57 46 } 58 47 … … 63 52 64 53 nebFree(server->soap); 65 nebFree(server->err_ msg);54 nebFree(server->err_buf); 66 55 nebFree(server); 67 56 } … … 94 83 95 84 // server error 85 nebSetServerErr(server); 86 96 87 return -1; 97 88 } … … 339 330 } 340 331 341 int nebErr(nebServer *server, char *errString ) 342 { 343 344 return 0; 332 char *nebErr(nebServer *server) 333 { 334 return server->err_buf; 335 } 336 337 static bool nebSetErr(nebServer *server, const char *format, ...) 338 { 339 va_list args; 340 size_t err_size; 341 342 while (1) { 343 va_start(args, format); 344 err_size = vsnprintf(server->err_buf, server->err_buf_size, format, args); 345 va_end(args); 346 347 if (err_size < 0) { 348 fprintf(stderr, "failed to set error message\n"); 349 350 return false; 351 } 352 353 if (err_size < server->err_buf_size) { 354 return true; 355 } 356 357 // else: expand err_buf 358 fprintf(stderr, "error buffer is too small, expanding\n"); 359 360 // account for '\0' 361 server->err_buf_size = err_size + 1; 362 xrealloc(server->err_buf, server->err_buf_size); 363 } 364 365 } 366 367 static bool nebSetServerErr(nebServer *server) 368 { 369 const char **code; 370 const char **string; 371 372 code = soap_faultcode(server->soap); 373 string = soap_faultstring(server->soap); 374 375 return nebSetErr(server, "%s - %s", *code, *string); 345 376 } 346 377
Note:
See TracChangeset
for help on using the changeset viewer.
