IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 7, 2005, 12:47:40 PM (21 years ago)
Author:
jhoblitt
Message:

add nebSetErr()
add nebSetServerErr()
remove nebServerErr()
change nebErr() to return char *
change nebErr() params to be only server
add nebErr() src
rework nebServer struct

Location:
trunk/Nebulous/nebclient/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Nebulous/nebclient/src/nebclient.c

    r4504 r4506  
    44 * Copyright (C) 2005  Joshua Hoblitt
    55 *
    6  * $Id: nebclient.c,v 1.11 2005-07-07 21:41:15 jhoblitt Exp $
     6 * $Id: nebclient.c,v 1.12 2005-07-07 22:47:40 jhoblitt Exp $
    77 */
    88
     
    1717#include <unistd.h>
    1818#include <stdbool.h>
     19#include <stdarg.h>
    1920#include "xmalloc.h"
    2021#include "soapH.h"
     
    2425#define ERRBUF_SIZE 2048
    2526
     27static bool nebSetErr(nebServer *server, const char *format, ...);
     28static bool nebSetServerErr(nebServer *server);
    2629static off_t nebCopyFile(char *source, char *dest);
    2730static off_t nebCopyFilehandle(int sourceFH, int destFH);
     
    3538    server          = xmalloc(sizeof(nebServer));
    3639    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;
    3842
    3943    soap_init(server->soap);
    4044
    4145    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;
    5746}
    5847
     
    6352
    6453    nebFree(server->soap);
    65     nebFree(server->err_msg);
     54    nebFree(server->err_buf);
    6655    nebFree(server);
    6756}
     
    9483
    9584    // server error
     85    nebSetServerErr(server);
     86
    9687    return -1;
    9788}
     
    339330}
    340331
    341 int nebErr(nebServer *server, char *errString )
    342 {
    343 
    344     return 0;
     332char *nebErr(nebServer *server)
     333{
     334    return server->err_buf;
     335}
     336
     337static 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
     367static 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);
    345376}
    346377
  • trunk/Nebulous/nebclient/src/nebclient.h

    r4504 r4506  
    44 * Copyright (C) 2005  Joshua Hoblitt
    55 *
    6  * $Id: nebclient.h,v 1.13 2005-07-07 21:41:15 jhoblitt Exp $
     6 * $Id: nebclient.h,v 1.14 2005-07-07 22:47:40 jhoblitt Exp $
    77 */
    88
     
    1616typedef struct {
    1717    struct soap     *soap;
    18     char            *err_msg;
     18    char            *err_buf;
     19    size_t          err_buf_size;
    1920}nebServer;
    2021
    2122//void nebServerInit(nebServer *server);
    2223nebServer *nebServerAlloc(void);
    23 
    24 char *nebServerErr(nebServer *server);
    2524
    2625void nebServerCleanup(nebServer *server);
     
    5251int nebStat(nebServer *server, char *key);
    5352
    54 int nebErr(nebServer *server, char *errString);
     53char *nebErr(nebServer *server);
    5554
    5655void nebFree(void *ptr);
  • trunk/Nebulous/nebclient/src/test.c

    r4504 r4506  
    2525        printf( "local error\n" );
    2626    } else {
    27         printf( "server error: %s\n", nebServerErr(server) );
     27        printf( "server error: %s\n", nebErr(server) );
    2828    }
    2929
Note: See TracChangeset for help on using the changeset viewer.