openafs/src/fsint/afsaux.c
Derrick Brashear 872bc94f8c reindent-20030715
FIXES 1774

thanks to nneul@umr.edu for providing a script to do this.
gnu indent 2.2.9 options:
-npro -nbad -bap -nbc -bbo -br -ce -cdw -brs -ncdb -cp1 -ncs -di2 -ndj -nfc1
-nfca -i4 -lp -npcs -nprs -psl -sc -nsob -ts8

====================
This delta was composed from multiple commits as part of the CVS->Git migration.
The checkin message with each commit was inconsistent.
The following are the additional commit messages.
====================
FIXES 1774

fix subst mistake
2003-07-16 00:28:24 +00:00

234 lines
5.2 KiB
C

/*
* Copyright 2000, International Business Machines Corporation and others.
* All Rights Reserved.
*
* This software has been released under the terms of the IBM Public
* License. For details, see the LICENSE file in the top-level source
* directory or online at http://www.openafs.org/dl/license10.html
*/
#include <afsconfig.h>
#ifdef KERNEL
#include "afs/param.h"
#else
#include <afs/param.h>
#endif
RCSID
("$Header$");
#ifdef KERNEL
#if defined(UKERNEL)
#include "afs/sysincludes.h"
#include "afsincludes.h"
#include "rx/xdr.h"
#else /* defined(UKERNEL) */
#if defined(AFS_ALPHA_ENV) || defined(AFS_LINUX20_ENV) || defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV)
#include "afs/sysincludes.h"
#include "afsincludes.h"
#else
#include "h/types.h"
#include "rpc/types.h"
#include "rx/xdr.h"
#endif
#if !defined(AFS_ALPHA_ENV)
#ifndef XDR_GETINT32
#define XDR_GETINT32 XDR_GETLONG
#endif
#ifndef XDR_PUTINT32
#define XDR_PUTINT32 XDR_PUTLONG
#endif
#endif
#endif /* defined(UKERNEL) */
#include "afsint.h"
#else /* KERNEL */
# include <rx/xdr.h>
# include "afsint.h"
#endif /* KERNEL */
#ifdef KERNEL
#define NVALLOC(a) osi_Alloc(a)
#define NVFREE(a,b) osi_Free(a,b)
#else /* KERNEL */
#define MAXBS 2048 /* try to avoid horrible allocs */
static afs_int32 bslosers = 0;
#define NVALLOC(a) malloc(a)
#define NVFREE(a,b) free(a)
#endif /* KERNEL */
/* these things are defined in R (but not RX's) library. For now, we add them
only for the kernel system. Later, when R is expunged, we'll remove the ifdef */
#ifdef KERNEL
#ifndef AFS_USR_DARWIN_ENV
#ifdef AFS_AIXNFS11
#define AUTH_DES 1
#endif
#if (defined(AFS_AIX_ENV) && !defined(AUTH_DES)) || (!defined(AFS_SUN_ENV)) && !defined(AFS_SGI_ENV) && !defined(AFS_ALPHA_ENV) && !defined(AFS_SUN5_ENV)
#ifndef AFS_AIX32_ENV
#if !defined(AFS_HPUX110_ENV) && !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV)
/*
* XDR chars; from user mode xdr package.
*/
bool_t
xdr_char(register XDR * xdrs, char *sp)
{
afs_int32 l;
switch (xdrs->x_op) {
case XDR_ENCODE:
l = (afs_int32) * sp;
return (XDR_PUTINT32(xdrs, &l));
case XDR_DECODE:
if (!XDR_GETINT32(xdrs, &l)) {
return (FALSE);
}
*sp = (char)l;
return (TRUE);
case XDR_FREE:
return (TRUE);
}
return (FALSE);
}
#endif /* AFS_HPUX110_ENV && AFS_LINUX20_ENV */
#endif
#endif /* defined(AFS_AIX_ENV) && !defined(AUTH_DES) */
/*
* Wrapper for xdr_string that can be called directly from
* routines like clnt_call; from user-mode xdr package.
*/
#ifndef AFS_SUN5_ENV
#ifndef AFS_HPUX110_ENV
bool_t
xdr_wrapstring(XDR * xdrs, char **cpp)
{
if (xdr_string(xdrs, cpp, 1024)) {
return (TRUE);
}
return (FALSE);
}
#endif /* AFS_HPUX110_ENV */
#endif /* AFS_SUN5_ENV */
/*
* xdr_vector():
*
* XDR a fixed length array. Unlike variable-length arrays,
* the storage of fixed length arrays is static and unfreeable.
* > basep: base of the array
* > size: size of the array
* > elemsize: size of each element
* > xdr_elem: routine to XDR each element
*/
bool_t
xdr_vector(register XDR * xdrs, register char *basep, register u_int nelem,
register u_int elemsize, register xdrproc_t xdr_elem)
{
register u_int i;
register char *elptr;
elptr = basep;
for (i = 0; i < nelem; i++) {
if (!(*xdr_elem) (xdrs, elptr, (u_int) (~0))) {
return (FALSE);
}
elptr += elemsize;
}
return (TRUE);
}
#endif
#endif /* KERNEL */
#ifndef KERNEL
bool_t
xdr_CBS(XDR * x, struct CBS * abbs)
{
afs_int32 len;
if (x->x_op == XDR_FREE) {
NVFREE(abbs->SeqBody, abbs->SeqLen);
return TRUE;
}
if (x->x_op == XDR_ENCODE) {
xdr_afs_int32(x, &abbs->SeqLen);
xdr_opaque(x, abbs->SeqBody, abbs->SeqLen);
return TRUE;
} else {
xdr_afs_int32(x, &len);
if (len < 0 || len > MAXBS) {
bslosers++;
return FALSE;
}
if (!abbs->SeqBody)
abbs->SeqBody = (char *)NVALLOC(len);
abbs->SeqLen = len;
xdr_opaque(x, abbs->SeqBody, len);
return TRUE;
}
}
bool_t
xdr_BBS(XDR * x, struct BBS * abbs)
{
afs_int32 maxLen, len;
if (x->x_op == XDR_FREE) {
NVFREE(abbs->SeqBody, abbs->MaxSeqLen);
return TRUE;
}
if (x->x_op == XDR_ENCODE) {
xdr_afs_int32(x, &abbs->MaxSeqLen);
xdr_afs_int32(x, &abbs->SeqLen);
xdr_opaque(x, abbs->SeqBody, abbs->SeqLen);
return TRUE;
} else {
xdr_afs_int32(x, &maxLen);
xdr_afs_int32(x, &len);
if (len < 0 || len > MAXBS || len > maxLen) {
bslosers++;
return FALSE;
}
if (!abbs->SeqBody)
abbs->SeqBody = (char *)NVALLOC(maxLen);
abbs->MaxSeqLen = maxLen;
abbs->SeqLen = len;
xdr_opaque(x, abbs->SeqBody, len);
return TRUE;
}
}
bool_t
xdr_AFSAccessList(XDR * x, AFSAccessList * abbs)
{
afs_int32 maxLen, len;
if (x->x_op == XDR_FREE) {
NVFREE(abbs->SeqBody, abbs->MaxSeqLen);
return TRUE;
}
if (x->x_op == XDR_ENCODE) {
xdr_afs_int32(x, &abbs->MaxSeqLen);
xdr_afs_int32(x, &abbs->SeqLen);
xdr_opaque(x, abbs->SeqBody, abbs->SeqLen);
return TRUE;
} else {
xdr_afs_int32(x, &maxLen);
xdr_afs_int32(x, &len);
if (len < 0 || len > MAXBS || len > maxLen) {
bslosers++;
return FALSE;
}
if (!abbs->SeqBody)
abbs->SeqBody = (char *)NVALLOC(maxLen);
abbs->MaxSeqLen = maxLen;
abbs->SeqLen = len;
xdr_opaque(x, abbs->SeqBody, len);
return TRUE;
}
}
#endif /* KERNEL */