X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Fdirectory.c;h=488f900a0a553e7ee278962e8a2f786087557d72;hb=6d60f95c388da5f8f901d67e0018cf4896e6c6dc;hp=b981af66c03fb6c4b94cff562402dcc78dbcd13d;hpb=ce40a87753e2529265da0f37808d7d41a9a7efdc;p=netatalk.git diff --git a/etc/afpd/directory.c b/etc/afpd/directory.c index b981af66..488f900a 100644 --- a/etc/afpd/directory.c +++ b/etc/afpd/directory.c @@ -892,7 +892,7 @@ struct dir *dir_add(struct vol *vol, const struct dir *dir, struct path *path, i /* get_id needs adp for reading CNID from adouble file */ ad_init(&ad, vol->v_adouble, vol->v_ad_options); - if ((ad_open_metadata(path->u_name, ADFLAGS_DIR, 0, &ad)) == 0) /* 1 */ + if ((ad_open(&ad, path->u_name, ADFLAGS_HF | ADFLAGS_DIR)) == 0) /* 1 */ adp = &ad; /* Get CNID */ @@ -1474,20 +1474,8 @@ int getdirparams(const struct vol *vol, (1 << DIRPBIT_FINFO)))) { ad_init(&ad, vol->v_adouble, vol->v_ad_options); - if ( !ad_metadata( upath, ADFLAGS_CREATE|ADFLAGS_DIR, &ad) ) { + if ( !ad_metadata( upath, ADFLAGS_DIR, &ad) ) isad = 1; - if (ad.ad_md->adf_flags & O_CREAT) { - /* We just created it */ - ad_setname(&ad, s_path->m_name); - ad_setid( &ad, - s_path->st.st_dev, - s_path->st.st_ino, - dir->d_did, - dir->d_pdid, - vol->v_stamp); - ad_flush( &ad); - } - } } pdid = dir->d_pdid; @@ -1891,7 +1879,7 @@ int setdirparams(struct vol *vol, struct path *path, u_int16_t d_bitmap, char *b } ad_init(&ad, vol->v_adouble, vol->v_ad_options); - if (ad_open_metadata( upath, ADFLAGS_DIR, O_CREAT, &ad) < 0) { + if (ad_open(&ad, upath, ADFLAGS_HF | ADFLAGS_DIR, O_CREAT, 0777) != 0) { /* * Check to see what we're trying to set. If it's anything * but ACCESS, UID, or GID, give an error. If it's any of those @@ -1913,7 +1901,7 @@ int setdirparams(struct vol *vol, struct path *path, u_int16_t d_bitmap, char *b * Check to see if a create was necessary. If it was, we'll want * to set our name, etc. */ - if ( (ad_get_HF_flags( &ad ) & O_CREAT)) { + if ( (ad_get_MD_flags( &ad ) & O_CREAT)) { ad_setname(&ad, cfrombstr(curdir->d_m_name)); } } @@ -2244,7 +2232,7 @@ int afp_createdir(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_ } ad_init(&ad, vol->v_adouble, vol->v_ad_options); - if (ad_open_metadata( ".", ADFLAGS_DIR, O_CREAT, &ad ) < 0) { + if (ad_open(&ad, ".", ADFLAGS_HF | ADFLAGS_DIR, O_CREAT, 0777) < 0) { if (vol_noadouble(vol)) goto createdir_done; return( AFPERR_ACCESS ); @@ -2310,7 +2298,7 @@ int renamedir(const struct vol *vol, ad_init(&ad, vol->v_adouble, vol->v_ad_options); - if (!ad_open_metadata( dst, ADFLAGS_DIR, 0, &ad)) { + if (ad_open(&ad, dst, ADFLAGS_HF | ADFLAGS_DIR) == 0) { ad_setname(&ad, newname); ad_flush( &ad); ad_close_metadata( &ad);