Lines Matching defs:dir

6 #include "dir.h"
28 static status_t findfile(nspace *vol, vnode *dir, const char *file,
45 //! Scans dir for the next entry, using the state stored in a struct diri.
197 get_next_dirent(nspace *vol, vnode *dir, struct diri *iter, ino_t *vnid,
208 } while ((info.mode & FAT_VOLUME) && (dir->vnid == vol->root_vnode.vnid));
212 if (vnid) *vnid = dir->vnid;
215 if (vnid) *vnid = dir->dir_vnid;
219 ? GENERATE_DIR_CLUSTER_VNID(dir->vnid, info.cluster)
220 : GENERATE_DIR_INDEX_VNID(dir->vnid, info.sindex);
265 check_dir_empty(nspace *vol, vnode *dir)
271 if (diri_init(vol, dir->cluster, 0, &iter) == NULL) {
276 i = (dir->vnid == vol->root_vnode.vnid) ? 2 : 0;
304 findfile_case(nspace *vol, vnode *dir, const char *file, ino_t *vnid,
307 return findfile(vol, dir, file, vnid, node, true, false, NULL);
312 findfile_nocase(nspace *vol, vnode *dir, const char *file, ino_t *vnid,
315 return findfile(vol, dir, file, vnid, node, false, false, NULL);
320 findfile_nocase_duplicates(nspace *vol, vnode *dir, const char *file,
323 return findfile(vol, dir, file, vnid, node, false, true, dups_exist);
328 findfile_case_duplicates(nspace *vol, vnode *dir, const char *file,
331 return findfile(vol, dir, file, vnid, node, true, true, dups_exist);
336 findfile(nspace *vol, vnode *dir, const char *file, ino_t *vnid,
353 // dprintf("findfile: %s in %Lx, case %d dups %d\n", file, dir->vnid, check_case, check_dups);
355 DPRINTF(1, ("findfile: %s in %" B_PRIdINO "\n", file, dir->vnid));
362 if (strcmp(file,".") == 0 && dir->vnid == vol->root_vnode.vnid) {
364 found_vnid = dir->vnid;
365 } else if (strcmp(file, "..") == 0 && dir->vnid == vol->root_vnode.vnid) {
367 found_vnid = dir->dir_vnid;
372 if (diri_init(vol, dir->cluster, 0, &diri) == NULL) {
381 result = get_next_dirent(vol, dir, &diri, &_vnid, filename, 512);
475 compact_directory(nspace *vol, vnode *dir)
482 dir->vnid));
485 if (IS_FIXED_ROOT(dir->cluster))
488 if (diri_init(vol, dir->cluster, 0, &diri) == NULL) {
489 dprintf("compact_directory: cannot open dir at cluster (%" B_PRIu32
490 ")\n", dir->cluster);
500 // don't compact away volume labels in the root dir
501 if (!(info.mode & FAT_VOLUME) || (dir->vnid != vol->root_vnode.vnid))
515 < dir->st_size) {
518 error = set_fat_chain_length(vol, dir, clusters, true);
519 dir->st_size = clusters * vol->bytes_per_sector
521 dir->iteration++;
537 find_short_name(nspace *vol, vnode *dir, const uchar *name)
543 buffer = diri_init(vol, dir->cluster, 0, &diri);
572 _create_dir_entry_(nspace *vol, vnode *dir, struct _entry_info_ *info,
619 if (diri_init(vol, dir->cluster, 0, &diri) == NULL) {
620 dprintf("_create_dir_entry_: cannot open dir at cluster (%" B_PRIu32
621 ")\n", dir->cluster);
654 GENERATE_DIR_INDEX_VNID(dir->cluster, i)) == ENOENT);
659 dir->st_size, last_entry ? "" : "n't"));
662 if (*ne * 0x20 >= dir->st_size) {
666 if (IS_FIXED_ROOT(dir->cluster)) {
677 " clusters\n", dir->st_size / vol->bytes_per_sector
679 if ((error = set_fat_chain_length(vol, dir, clusters_needed, false))
684 dir->st_size = vol->bytes_per_sector*vol->sectors_per_cluster*clusters_needed;
685 dir->iteration++;
689 buffer = diri_init(vol,dir->cluster, *ns, &diri);
691 dprintf("_create_dir_entry_: cannot open dir at (%" B_PRIu32 ", %"
692 B_PRIu32 ")\n", dir->cluster, *ns);
814 create_dir_entry(nspace *vol, vnode *dir, vnode *node, const char *name,
828 error = findfile_nocase(vol, dir, name, NULL, NULL);
831 dir->vnid));
868 error = find_short_name(vol, dir, nshort);
875 } while ((error = find_short_name(vol, dir, nshort)) == B_OK && ++iter < 10);
887 } while ((error = find_short_name(vol, dir, nshort)) == B_OK);
906 return _create_dir_entry_(vol, dir, &info, (char *)nshort,
1039 vnode *dir = (vnode *)_dir->private_node;
1045 DPRINTF(0, ("dosfs_walk: find %" B_PRIdINO "/%s\n", dir->vnid, file));
1047 result = findfile_case(vol, dir, file, _vnid, &vnode);
1126 vnode *dir = (vnode *)_dir->private_node;
1133 dir->vnid, cookie->current_index));
1136 if (dir->vnid == vol->root_vnode.vnid) {
1154 if (diri_init(vol, dir->cluster, cookie->current_index, &diri) == NULL) {
1162 result = get_next_dirent(vol, dir, &diri, &entry->d_ino, entry->d_name,
1167 if (dir->vnid == vol->root_vnode.vnid)