Lines Matching defs:dir

58 	} dir;
142 rootfs_check_permissions(struct rootfs_vnode* dir, int accessMode)
144 return check_access_permissions(accessMode, dir->stream.type, (gid_t)dir->gid, (uid_t)dir->uid);
197 list_init(&vnode->stream.dir.cookies);
198 mutex_init(&vnode->stream.dir.cookie_lock, "rootfs dir cookies");
210 if (!force_delete && (v->stream.dir.dir_head != NULL || v->dir_next != NULL))
217 mutex_destroy(&v->stream.dir.cookie_lock);
228 update_dir_cookies(struct rootfs_vnode* dir, struct rootfs_vnode* vnode)
233 &dir->stream.dir.cookies, cookie)) != NULL) {
242 rootfs_find_in_dir(struct rootfs_vnode* dir, const char* path)
247 return dir;
249 return dir->parent;
251 for (vnode = dir->stream.dir.dir_head; vnode; vnode = vnode->dir_next) {
260 rootfs_insert_in_dir(struct rootfs* fs, struct rootfs_vnode* dir,
265 struct rootfs_vnode* node = dir->stream.dir.dir_head;
273 vnode->dir_next = dir->stream.dir.dir_head;
274 dir->stream.dir.dir_head = vnode;
281 vnode->parent = dir;
282 dir->modification_time = current_timespec();
284 notify_stat_changed(fs->id, get_parent_id(dir), dir->id,
291 rootfs_remove_from_dir(struct rootfs* fs, struct rootfs_vnode* dir,
297 for (vnode = dir->stream.dir.dir_head, lastVnode = NULL; vnode != NULL;
301 update_dir_cookies(dir, vnode);
306 dir->stream.dir.dir_head = vnode->dir_next;
309 dir->modification_time = current_timespec();
310 notify_stat_changed(fs->id, get_parent_id(dir), dir->id,
320 rootfs_is_dir_empty(struct rootfs_vnode* dir)
322 return !dir->stream.dir.dir_head;
352 rootfs_remove(struct rootfs* fs, struct rootfs_vnode* dir, const char* name,
360 vnode = rootfs_find_in_dir(dir, name);
373 entry_cache_remove(fs->volume->id, dir->id, name);
375 return remove_node(fs, dir, vnode);
476 struct rootfs_vnode* dir = (struct rootfs_vnode*)_dir->private_node;
479 TRACE(("rootfs_lookup: entry dir %p, name '%s'\n", dir, name));
480 if (!S_ISDIR(dir->stream.type))
483 status_t status = rootfs_check_permissions(dir, X_OK);
490 vnode = rootfs_find_in_dir(dir, name);
498 entry_cache_add(fs->volume->id, dir->id, name, vnode->id);
575 // can't remove node if it's linked to the dir
577 "dir\n", vnode);
665 struct rootfs_vnode* dir = (rootfs_vnode*)_dir->private_node;
668 TRACE(("rootfs_create_dir: dir %p, name = '%s', perms = %d\n", dir, name,
671 status_t status = rootfs_check_permissions(dir, W_OK);
677 vnode = rootfs_find_in_dir(dir, name);
682 vnode = rootfs_create_vnode(fs, dir, name, S_IFDIR | (mode & S_IUMSK));
686 rootfs_insert_in_dir(fs, dir, vnode);
689 entry_cache_add(fs->volume->id, dir->id, name, vnode->id);
690 notify_entry_created(fs->id, dir->id, name, vnode->id);
700 struct rootfs_vnode* dir = (rootfs_vnode*)_dir->private_node;
702 status_t status = rootfs_check_permissions(dir, W_OK);
706 TRACE(("rootfs_remove_dir: dir %p (0x%Lx), name '%s'\n", dir, dir->id,
709 return rootfs_remove(fs, dir, name, true);
733 mutex_init(&cookie->lock, "rootfs dir cookie");
737 cookie->current = vnode->stream.dir.dir_head;
740 mutex_lock(&vnode->stream.dir.cookie_lock);
741 list_add_item(&vnode->stream.dir.cookies, cookie);
742 mutex_unlock(&vnode->stream.dir.cookie_lock);
759 mutex_lock(&vnode->stream.dir.cookie_lock);
760 list_remove_item(&vnode->stream.dir.cookies, cookie);
761 mutex_unlock(&vnode->stream.dir.cookie_lock);
795 nextChildNode = vnode->stream.dir.dir_head;
801 nextChildNode = vnode->stream.dir.dir_head;
848 cookie->current = vnode->stream.dir.dir_head;
912 struct rootfs_vnode* dir = (rootfs_vnode*)_dir->private_node;
915 TRACE(("rootfs_symlink: dir %p, name = '%s', path = %s\n", dir, name, path));
917 status_t status = rootfs_check_permissions(dir, W_OK);
923 vnode = rootfs_find_in_dir(dir, name);
928 vnode = rootfs_create_vnode(fs, dir, name, S_IFLNK | (mode & S_IUMSK));
932 rootfs_insert_in_dir(fs, dir, vnode);
942 entry_cache_add(fs->volume->id, dir->id, name, vnode->id);
944 notify_entry_created(fs->id, dir->id, name, vnode->id);
954 struct rootfs_vnode* dir = (rootfs_vnode*)_dir->private_node;
956 TRACE(("rootfs_unlink: dir %p (0x%Lx), name '%s'\n", dir, dir->id, name));
958 status_t status = rootfs_check_permissions(dir, W_OK);
962 return rootfs_remove(fs, dir, name, false);
1035 // remove it from the dir
1039 // Add it back to the dir with the new name.
1156 struct rootfs_vnode* dir = (rootfs_vnode*)_dir->private_node;
1162 vnode = rootfs_find_in_dir(dir, name);
1167 vnode = rootfs_create_vnode(fs, dir, name, mode);
1172 rootfs_insert_in_dir(fs, dir, vnode);
1189 rootfs_remove_from_dir(fs, dir, vnode);
1195 entry_cache_add(fs->volume->id, dir->id, name, vnode->id);
1196 notify_entry_created(fs->id, dir->id, name, vnode->id);