Diff for /libaitrpc/src/lists.c between versions 1.4.2.1 and 1.4.2.2

version 1.4.2.1, 2011/08/29 23:26:56 version 1.4.2.2, 2011/08/31 17:11:58
Line 53  SUCH DAMAGE. Line 53  SUCH DAMAGE.
  * @varnum = Number of return variables   * @varnum = Number of return variables
  * return: NULL error, !=NULL array with return values for RPC call with varnum items   * return: NULL error, !=NULL array with return values for RPC call with varnum items
  */   */
inline ait_val_t *inline array_t *
 rpc_srv_returnVars(rpc_func_t * __restrict call, int varnum)  rpc_srv_returnVars(rpc_func_t * __restrict call, int varnum)
 {  {
        ait_val_t *v = NULL;        array_t *v = NULL;
   
         if (rpc_srv_allocVars(call, varnum) == -1)          if (rpc_srv_allocVars(call, varnum) == -1)
                 return NULL;                  return NULL;
         else  
                 rpc_srv_zeroVars(call);  
         if (rpc_srv_getVars(call, &v) == -1)          if (rpc_srv_getVars(call, &v) == -1)
                 return NULL;                  return NULL;
   
Line 78  rpc_srv_returnVars(rpc_func_t * __restrict call, int v Line 76  rpc_srv_returnVars(rpc_func_t * __restrict call, int v
 inline int  inline int
 rpc_srv_allocVars(rpc_func_t * __restrict call, int varnum)  rpc_srv_allocVars(rpc_func_t * __restrict call, int varnum)
 {  {
        void *ptr;        register int i;
         ait_val_t *v;
   
         if (!call || varnum < 0) {          if (!call || varnum < 0) {
                 rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t allocate variables for RPC call...\n");                  rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t allocate variables for RPC call...\n");
                 return -1;                  return -1;
        } else        }
                call->func_args = varnum; 
   
        if (!varnum) {        if (call->func_vars)
                if (call->func_vars) {                for (i = 0; i < io_arraySize(call->func_vars); i++)
                        free(call->func_vars);                        if (io_arrayGet(call->func_vars, i))
                        call->func_vars = NULL;                                AIT_FREE_VAL(io_array(call->func_vars, i, ait_val_t*));
                }        io_arrayFree(call->func_vars);
        } else {        io_arrayDestroy(&call->func_vars);
                ptr = realloc(call->func_vars, varnum * sizeof(ait_val_t));
                if (!ptr) {        if (varnum) {
                        LOGERR;                if (!(call->func_vars = io_arrayInit(varnum)))
                        call->func_args = 0; 
                         return -1;                          return -1;
                } else
                        call->func_vars = ptr;                for (i = 0; i < io_arraySize(call->func_vars); i++) {
                         v = malloc(sizeof(ait_val_t));
                         if (!v) {
                                 LOGERR;
                                 rpc_srv_freeVars(call);
                                 return -1;
                         } else {
                                 memset(v, 0, sizeof(ait_val_t));
                                 io_arraySet(call->func_vars, i, v);
                         }
                 }
 
                 varnum = io_arraySize(call->func_vars);
         }          }
   
         return varnum;          return varnum;
Line 117  rpc_srv_zeroVars(rpc_func_t * __restrict call) Line 126  rpc_srv_zeroVars(rpc_func_t * __restrict call)
                 return -1;                  return -1;
         }          }
   
        memset(call->func_vars, 0, call->func_args * sizeof(ait_val_t));        io_arrayFree(call->func_vars);
        return call->func_args;        io_arrayZero(call->func_vars);
         return io_arraySize(call->func_vars);
 }  }
   
 /*  /*
Line 128  rpc_srv_zeroVars(rpc_func_t * __restrict call) Line 138  rpc_srv_zeroVars(rpc_func_t * __restrict call)
  * return: -1 error, !=-1 Returned number of copied RPC variables   * return: -1 error, !=-1 Returned number of copied RPC variables
  */   */
 inline int  inline int
rpc_srv_copyVars(rpc_func_t * __restrict call, ait_val_t ** __restrict newvars)rpc_srv_copyVars(rpc_func_t * __restrict call, array_t ** __restrict newvars)
 {  {
         if (!call || !newvars) {          if (!call || !newvars) {
                 rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t copy variables to new array\n");                  rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t copy variables to new array\n");
                 return -1;                  return -1;
         }          }
   
        *newvars = calloc(call->func_args, sizeof(ait_val_t));        if (io_arrayCopy(newvars, call->func_vars) == -1)
        if (!*newvars) { 
                LOGERR; 
                 return -1;                  return -1;
         } else  
                 memcpy(*newvars, call->func_vars, call->func_args * sizeof(ait_val_t));  
   
        return call->func_args;        return io_arraySize(*newvars);
 }  }
   
 /*  /*
Line 152  rpc_srv_copyVars(rpc_func_t * __restrict call, ait_val Line 158  rpc_srv_copyVars(rpc_func_t * __restrict call, ait_val
  * return: -1 error, !=-1 Number of returned variables   * return: -1 error, !=-1 Number of returned variables
  */   */
 inline int  inline int
rpc_srv_getVars(rpc_func_t * __restrict call, ait_val_t ** __restrict vars)rpc_srv_getVars(rpc_func_t * __restrict call, array_t ** __restrict vars)
 {  {
         if (!call) {          if (!call) {
                 rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t get variables ...\n");                  rpc_SetErr(EINVAL, "Error:: Invalid parameter can`t get variables ...\n");
Line 161  rpc_srv_getVars(rpc_func_t * __restrict call, ait_val_ Line 167  rpc_srv_getVars(rpc_func_t * __restrict call, ait_val_
   
         if (vars)          if (vars)
                 *vars = call->func_vars;                  *vars = call->func_vars;
        return call->func_args;        return (call->func_vars ? io_arraySize(call->func_vars) : 0);
 }  }
   
 // ---------------------------------------------------------  // ---------------------------------------------------------
Line 175  rpc_srv_getVars(rpc_func_t * __restrict call, ait_val_ Line 181  rpc_srv_getVars(rpc_func_t * __restrict call, ait_val_
  * return: -1 error or 0 register ok   * return: -1 error or 0 register ok
  */   */
 int  int
rpc_srv_registerCall(rpc_srv_t * __restrict srv, const char *csModule, const char *csFunc, u_char args)rpc_srv_registerCall(rpc_srv_t * __restrict srv, const char *csModule, const char *csFunc, u_short args)
 {  {
         rpc_func_t *func;          rpc_func_t *func;
         u_char str[MAXPATHLEN + UCHAR_MAX + 1];          u_char str[MAXPATHLEN + UCHAR_MAX + 1];

Removed from v.1.4.2.1  
changed lines
  Added in v.1.4.2.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>