/*
- * $Id: directory.c,v 1.12 2001-06-20 18:33:04 rufustfirefly Exp $
+ * $Id: directory.c,v 1.13 2001-06-27 14:53:16 rufustfirefly Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
u_int32_t aint;
u_int16_t ashort;
#ifdef FORCE_UIDGID
- uidgidset *uidgid;
+ uidgidset *uidgid;
+ memset(&uidgid, 0, sizeof(uidgid));
#endif /* FORCE_UIDGID */
memset(&ad, 0, sizeof(ad));
#ifdef FORCE_UIDGID
- save_uidgid ( uidgid );
- set_uidgid ( vol );
+ save_uidgid ( &uidgid );
+ set_uidgid ( vol );
#endif /* FORCE_UIDGID */
if ( ad_open( upath, ADFLAGS_HF|ADFLAGS_DIR, O_RDONLY,
ad_close( &ad, ADFLAGS_HF );
}
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_BITMAP );
}
u_int16_t ashort, bshort;
int err = AFP_OK;
#ifdef FORCE_UIDGID
- uidgidset *uidgid;
+ uidgidset *uidgid;
+
+ memset(&uidgid, 0, sizeof(uidgid));
#endif /* FORCE_UIDGID */
upath = mtoupath(vol, path);
memset(&ad, 0, sizeof(ad));
#ifdef FORCE_UIDGID
- save_uidgid ( uidgid );
+ save_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
if (ad_open( upath, vol_noadouble(vol)|ADFLAGS_HF|ADFLAGS_DIR,
O_RDWR|O_CREAT, 0666, &ad) < 0) {
~((1<<DIRPBIT_ACCESS)|(1<<DIRPBIT_UID)|(1<<DIRPBIT_GID)|
(1<<DIRPBIT_MDATE)|(1<<DIRPBIT_PDINFO)))) {
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_ACCESS;
}
}
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return err;
}
u_int32_t did;
u_int16_t vid;
#ifdef FORCE_UIDGID
- uidgidset *uidgid;
+ uidgidset *uidgid;
- /* allocate memory */
- uidgidset = malloc(sizeof(uidgidset));
+ memset(&uidgid, 0, sizeof(uidgid));
#endif /* FORCE_UIDGID */
*rbuflen = 0;
return AFPERR_EXIST;
#ifdef FORCE_UIDGID
- save_uidgid ( uidgid );
- set_uidgid ( vol );
+ save_uidgid ( &uidgid );
+ set_uidgid ( vol );
#endif /* FORCE_UIDGID */
if ( ad_mkdir( upath, DIRBITS | 0777 ) < 0 ) {
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
switch ( errno ) {
case ENOENT :
if (stat(upath, &st) < 0) {
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_MISC;
}
if ((dir = adddir( vol, curdir, path, strlen( path ), upath,
strlen(upath), &st)) == NULL) {
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_MISC;
}
if ( movecwd( vol, dir ) < 0 ) {
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_PARAM );
}
if (vol_noadouble(vol))
goto createdir_done;
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_ACCESS );
}
*rbuflen = sizeof( u_int32_t );
setvoltime(obj, vol );
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFP_OK );
}
struct dir *fdir;
DIR *dp;
#ifdef FORCE_UIDGID
- uidgidset *uidgid;
+ uidgidset *uidgid;
- uidgid = malloc(sizeof(uidgidset));
+ memset(&uidgid, 0, sizeof(uidgid));
#endif /* FORCE_UIDGID */
if ( curdir->d_parent == NULL ) {
fdir = curdir;
#ifdef FORCE_UIDGID
- save_uidgid ( uidgid );
- set_uidgid ( vol );
+ save_uidgid ( &uidgid );
+ set_uidgid ( vol );
#endif /* FORCE_UIDGID */
/* delete stray .AppleDouble files. this happens to get .Parent files
if (stat(de->d_name, &st) == 0) {
closedir(dp);
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_DIRNEMPT;
}
case EPERM:
case EACCES :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_ACCESS );
case EROFS:
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_VLOCK;
case ENOENT :
continue;
default :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_PARAM );
}
break;
case ENOTEMPTY :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_DIRNEMPT );
case EROFS:
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_VLOCK;
case EPERM:
case EACCES :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_ACCESS );
default :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_PARAM );
}
/* bail if it's not a symlink */
if ((lstat(de->d_name, &st) == 0) && !S_ISLNK(st.st_mode)) {
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_DIRNEMPT;
}
case EPERM:
case EACCES :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_ACCESS );
case EROFS:
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_VLOCK;
case ENOENT :
continue;
default :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_PARAM );
}
if ( movecwd( vol, curdir->d_parent ) < 0 ) {
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_NOOBJ );
}
switch ( errno ) {
case ENOENT :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_NOOBJ );
case ENOTEMPTY :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_DIRNEMPT );
case EPERM:
case EACCES :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_ACCESS );
case EROFS:
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_VLOCK;
default :
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFPERR_PARAM );
}
dir_remove( vol, fdir );
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return( AFP_OK );
}
u_int32_t did;
u_int16_t vid;
#ifdef FORCE_UIDGID
- uidgidset *uidgid;
+ uidgidset *uidgid;
- uidgid = malloc(sizeof(uidgidset));
+ memset(&uidgid, 0, sizeof(uidgid));
#endif /* FORCE_UIDGID */
*rbuflen = 0;
}
#ifdef FORCE_UIDGID
- save_uidgid ( uidgid );
- set_uidgid ( vol );
+ save_uidgid ( &uidgid );
+ set_uidgid ( vol );
#endif /* FORCE_UIDGID */
/* we don't already have a did. add one in. */
if ((dir = adddir(vol, parentdir, path, strlen(path),
upath, strlen(upath), &st)) == NULL) {
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFPERR_MISC;
}
memcpy(rbuf, &dir->d_did, sizeof(dir->d_did));
*rbuflen = sizeof(dir->d_did);
#ifdef FORCE_UIDGID
- restore_uidgid ( uidgid );
+ restore_uidgid ( &uidgid );
#endif /* FORCE_UIDGID */
return AFP_OK;
}