Lines Matching defs:dir

6 #include "dir.h"
39 static status_t findfile(nspace *vol, vnode *dir, const char *file,
55 //! Scans dir for the next entry, using the state stored in a struct diri.
205 get_next_dirent(nspace *vol, vnode *dir, struct diri *iter, ino_t *vnid,
216 } while ((info.mode & FAT_VOLUME) && (dir->vnid == vol->root_vnode.vnid));
220 if (vnid) *vnid = dir->vnid;
223 if (vnid) *vnid = dir->dir_vnid;
227 ? GENERATE_DIR_CLUSTER_VNID(dir->vnid, info.cluster)
228 : GENERATE_DIR_INDEX_VNID(dir->vnid, info.sindex);
271 check_dir_empty(nspace *vol, vnode *dir)
277 if (diri_init(vol, dir->cluster, 0, &iter) == NULL) {
282 i = (dir->vnid == vol->root_vnode.vnid) ? 2 : 0;
312 findfile_case(nspace *vol, vnode *dir, const char *file, ino_t *vnid,
315 return findfile(vol, dir, file, vnid, node, true, false, NULL);
320 findfile_nocase(nspace *vol, vnode *dir, const char *file, ino_t *vnid,
323 return findfile(vol, dir, file, vnid, node, false, false, NULL);
328 findfile_nocase_duplicates(nspace *vol, vnode *dir, const char *file,
331 return findfile(vol, dir, file, vnid, node, false, true, dups_exist);
336 findfile_case_duplicates(nspace *vol, vnode *dir, const char *file,
339 return findfile(vol, dir, file, vnid, node, true, true, dups_exist);
344 findfile(nspace *vol, vnode *dir, const char *file, ino_t *vnid,
361 // dprintf("findfile: %s in %Lx, case %d dups %d\n", file, dir->vnid, check_case, check_dups);
363 DPRINTF(1, ("findfile: %s in %Lx\n", file, dir->vnid));
370 if (strcmp(file,".") == 0 && dir->vnid == vol->root_vnode.vnid) {
372 found_vnid = dir->vnid;
373 } else if (strcmp(file, "..") == 0 && dir->vnid == vol->root_vnode.vnid) {
375 found_vnid = dir->dir_vnid;
380 if (diri_init(vol, dir->cluster, 0, &diri) == NULL) {
389 result = get_next_dirent(vol, dir, &diri, &_vnid, filename, 512);
486 compact_directory(nspace *vol, vnode *dir)
492 DPRINTF(0, ("compacting directory with vnode id %Lx\n", dir->vnid));
495 if (IS_FIXED_ROOT(dir->cluster))
498 if (diri_init(vol, dir->cluster, 0, &diri) == NULL) {
499 dprintf("compact_directory: cannot open dir at cluster (%lx)\n",
500 dir->cluster);
510 // don't compact away volume labels in the root dir
511 if (!(info.mode & FAT_VOLUME) || (dir->vnid != vol->root_vnode.vnid))
524 if (clusters * vol->bytes_per_sector * vol->sectors_per_cluster < dir->st_size) {
526 error = set_fat_chain_length(vol, dir, clusters);
527 dir->st_size = clusters*vol->bytes_per_sector*vol->sectors_per_cluster;
528 dir->iteration++;
545 find_short_name(nspace *vol, vnode *dir, const uchar *name)
551 buffer = diri_init(vol, dir->cluster, 0, &diri);
581 _create_dir_entry_(nspace *vol, vnode *dir, struct _entry_info_ *info,
627 if (diri_init(vol, dir->cluster, 0, &diri) == NULL) {
628 dprintf("_create_dir_entry_: cannot open dir at cluster (%lx)\n", dir->cluster);
663 GENERATE_DIR_INDEX_VNID(dir->cluster, i)) == ENOENT);
666 DPRINTF(0, ("directory entry runs from %lx to %lx (dirsize = %Lx) (is%s last entry)\n", *ns, *ne, dir->st_size, last_entry ? "" : "n't"));
669 if (*ne * 0x20 >= dir->st_size) {
673 if (IS_FIXED_ROOT(dir->cluster)) {
684 dir->st_size/vol->bytes_per_sector/vol->sectors_per_cluster, clusters_needed));
685 if ((error = set_fat_chain_length(vol, dir, clusters_needed)) < 0)
687 dir->st_size = vol->bytes_per_sector*vol->sectors_per_cluster*clusters_needed;
688 dir->iteration++;
692 buffer = diri_init(vol,dir->cluster, *ns, &diri);
694 dprintf("_create_dir_entry_: cannot open dir at (%lx, %lu)\n",
695 dir->cluster, *ns);
815 create_dir_entry(nspace *vol, vnode *dir, vnode *node, const char *name,
829 error = findfile_nocase(vol, dir, name, NULL, NULL);
831 DPRINTF(0, ("%s already found in directory %Lx\n", name, 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);
903 return _create_dir_entry_(vol, dir, &info, (char *)nshort,
1047 vnode *dir = (vnode*)_dir->private_node;
1053 DPRINTF(0, ("dosfs_walk: find %Lx/%s\n", dir->vnid, file));
1055 result = findfile_case(vol, dir, file, _vnid, &vnode);
1162 vnode *dir = (vnode *)_dir->private_node;
1169 dir->vnid, cookie->current_index));
1172 if (dir->vnid == vol->root_vnode.vnid) {
1191 if (diri_init(vol, dir->cluster, cookie->current_index, &diri) == NULL) {
1200 result = get_next_dirent(vol, dir, &diri, &entry->d_ino, entry->d_name,
1206 if (dir->vnid == vol->root_vnode.vnid)