/*
- * $Id: afs.c,v 1.5 2001-12-03 05:03:38 jmarcus Exp $
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
*/
#include <string.h>
#include <sys/types.h>
-#include <sys/syslog.h>
+#include <atalk/logger.h>
#include <netatalk/endian.h>
#include <netinet/in.h>
#include <afs/venus.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif /* HAVE_UNISTD_H */
+#include <sys/stat.h>
#include "globals.h"
#include "directory.h"
#include "volume.h"
#include "misc.h"
+#include "unix.h"
-afs_getvolspace( vol, bfree, btotal, bsize )
-struct vol *vol;
-VolSpace *bfree, *btotal;
-u_int32_t *bsize;
+int afs_getvolspace(struct vol *vol, VolSpace *bfree, VolSpace *btotal, uint32_t *bsize)
{
struct ViceIoctl vi;
struct VolumeStatus *vs;
if ( vs->PartBlocksAvail > 0 ) {
if ( vs->MaxQuota != 0 ) {
+#ifdef min
+#undef min
+#endif
#define min(x,y) (((x)<(y))?(x):(y))
free = min( vs->MaxQuota - vs->BlocksInUse, vs->PartBlocksAvail );
} else {
return( AFP_OK );
}
-afp_getdiracl(obj, ibuf, ibuflen, rbuf, rbuflen )
-AFPObj *obj;
-char *ibuf, *rbuf;
-int ibuflen, *rbuflen;
+int afp_getdiracl(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
{
struct ViceIoctl vi;
struct vol *vol;
struct dir *dir;
- char *path;
- u_int32_t did;
- u_int16_t vid;
+ struct path *path;
+ uint32_t did;
+ uint16_t vid;
ibuf += 2;
memcpy( &vid, ibuf, sizeof( vid ));
memcpy( &did, ibuf, sizeof( did ));
ibuf += sizeof( int );
- if (( dir = dirsearch( vol, did )) == NULL ) {
+ if (( dir = dirlookup( vol, did )) == NULL ) {
*rbuflen = 0;
- return( AFPERR_NOOBJ );
+ return afp_errno;
}
if (( path = cname( vol, dir, &ibuf )) == NULL ) {
*rbuflen = 0;
- return( AFPERR_NOOBJ );
+ return get_afp_errno(AFPERR_PARAM);
}
- if ( *path != '\0' ) {
+ if ( *path->m_name != '\0' ) {
*rbuflen = 0;
- return( AFPERR_BITMAP );
+ return (path_isadir( path))? afp_errno: AFPERR_BITMAP;
}
vi.in_size = 0;
* VIOCGETAL. If the directory is on AFS, use access() calls to
* estimate permission, a la mdw.
*/
-afsmode( path, ma, dir )
-char *path;
-struct maccess *ma;
-struct dir *dir;
+#ifdef accessmode
+ #undef accessmode
+#endif
+
+void afsmode(const struct volume *vol, char *path, struct maccess *ma, struct dir *dir, struct stat *st)
{
struct ViceIoctl vi;
char buf[ 1024 ];
return;
}
- accessmode( upath, &ma, dir );
+ accessmode(vol, path, ma, dir, st );
return;
}
/*
* cmd | 0 | vid | did | pathtype | pathname | 0 | acl
*/
-afp_setdiracl(obj, ibuf, ibuflen, rbuf, rbuflen )
-AFPObj *obj;
-char *ibuf, *rbuf;
-int ibuflen, *rbuflen;
+int afp_setdiracl(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
{
struct ViceIoctl vi;
struct vol *vol;
struct dir *dir;
- char *path, *iend;
- u_int32_t did;
- u_int16_t vid;
+ char *iend;
+ struct path *path;
+ uint32_t did;
+ uint16_t vid;
*rbuflen = 0;
iend = ibuf + ibuflen;
memcpy( &did, ibuf, sizeof( did ));
ibuf += sizeof( int );
- if (( dir = dirsearch( vol, did )) == NULL ) {
+ if (( dir = dirlookup( vol, did )) == NULL ) {
*rbuflen = 0;
- return( AFPERR_NOOBJ );
+ return afp_errno;
}
if (( path = cname( vol, dir, &ibuf )) == NULL ) {
*rbuflen = 0;
- return( AFPERR_NOOBJ );
+ return get_afp_errno(AFPERR_PARAM);
}
- if ( *path != '\0' ) {
+ if ( *path->m_name != '\0' ) {
*rbuflen = 0;
- return( AFPERR_BITMAP );
+ return (path_isadir( path))? afp_errno: AFPERR_BITMAP;
}
if ((int)ibuf & 1 ) {
extern C_Block seskey;
extern Key_schedule seskeysched;
-afp_afschangepw(obj, ibuf, ibuflen, rbuf, rbuflen )
-AFPObj *obj;
-char *ibuf, *rbuf;
-int ibuflen, *rbuflen;
+int afp_afschangepw(AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
{
char name[ MAXKTCNAMELEN ], instance[ MAXKTCNAMELEN ];
char realm[ MAXKTCREALMLEN ];
char oldpw[ 9 ], newpw[ 9 ];
int len, rc;
- u_int16_t clen;
+ uint16_t clen;
struct ktc_encryptionKey oldkey, newkey;
struct ktc_token adtok;
struct ubik_client *conn;
ucase( realm );
if ( *realm == '\0' ) {
if ( krb_get_lrealm( realm, 1 ) != KSUCCESS ) {
- syslog( LOG_ERR, "krb_get_lrealm failed" );
+ LOG(log_error, logtype_afpd, "krb_get_lrealm failed" );
return( AFPERR_BADUAM );
}
}
ibuf += len;
newpw[ len ] = '\0';
- syslog( LOG_INFO,
- "changing password for <%s>.<%s>@<%s>", name, instance, realm );
+ LOG(log_info, logtype_afpd,
+ "changing password for <%s>.<%s>@<%s>", name, instance, realm );
ka_StringToKey( oldpw, realm, &oldkey );
memset( oldpw, 0, sizeof( oldpw ));
return( AFPERR_BADUAM );
}
- syslog( LOG_DEBUG, "password changed succeeded" );
+ LOG(log_debug, logtype_afpd, "password changed succeeded" );
return( AFP_OK );
}