/*
- * $Id: desktop.c,v 1.49 2010-01-21 14:14:49 didg Exp $
- *
* See COPYRIGHT.
*
* bug:
u_int16_t flags;
if ( *mpath == '\0' ) {
- return( "." );
+ strcpy(upath, ".");
+ return upath;
}
/* set conversion flags */
clen = min( clen, 199 );
upath = path->u_name;
- if (!vol_unix_priv(vol) && check_access(upath, OPENACC_WR ) < 0) {
+ if (check_access(upath, OPENACC_WR ) < 0) {
return AFPERR_ACCESS;
}
} else
adp = of->of_ad;
- if (ad_open_metadata( upath , ( (isadir) ? ADFLAGS_DIR : 0), O_CREAT, adp) < 0 ) {
+ if (ad_open(adp, upath,
+ ADFLAGS_HF | ( (isadir) ? ADFLAGS_DIR : 0),
+ O_CREAT | O_RDWR,
+ 0666) < 0 ) {
return( AFPERR_ACCESS );
}
if (ad_getentryoff(adp, ADEID_COMMENT)) {
if ( (ad_get_MD_flags( adp ) & O_CREAT) ) {
if ( *path->m_name == '\0' ) {
- name = curdir->d_m_name;
+ name = (char *)curdir->d_m_name->data;
} else {
name = path->m_name;
}
memcpy( ad_entry( adp, ADEID_COMMENT ), ibuf, clen );
ad_flush( adp );
}
- ad_close_metadata( adp);
+ if (adp == &ad)
+ ad_close_metadata( adp);
return( AFP_OK );
}
char *upath;
upath = path->u_name;
- if (!vol_unix_priv(vol) && check_access(upath, OPENACC_WR ) < 0) {
+ if (check_access(upath, OPENACC_WR ) < 0) {
return AFPERR_ACCESS;
}
} else
adp = of->of_ad;
- if ( ad_open_metadata( upath, (isadir) ? ADFLAGS_DIR : 0, 0, adp) < 0 ) {
+ if ( ad_open(adp, upath, ADFLAGS_HF | (isadir) ? ADFLAGS_DIR : 0, 0) < 0 ) {
switch ( errno ) {
case ENOENT :
return( AFPERR_NOITEM );