From 7ce4b36d517ac5fade36240d293ff784ef6a9305 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Fri, 5 May 2023 01:25:43 +0200 Subject: Internalize fstree_mknode, consolidate fstree functionality The fstree_mknode function is only used internally, remove the declaration from the header and internalize it. The code using it is consolidated into fstree.c. Signed-off-by: David Oberhollenzer --- lib/fstree/src/get_by_path.c | 84 -------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 lib/fstree/src/get_by_path.c (limited to 'lib/fstree/src/get_by_path.c') diff --git a/lib/fstree/src/get_by_path.c b/lib/fstree/src/get_by_path.c deleted file mode 100644 index 133f412..0000000 --- a/lib/fstree/src/get_by_path.c +++ /dev/null @@ -1,84 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -/* - * get_by_path.c - * - * Copyright (C) 2019 David Oberhollenzer - */ -#include "config.h" - -#include "fstree.h" - -#include -#include - -static tree_node_t *child_by_name(tree_node_t *root, const char *name, - size_t len) -{ - tree_node_t *n = root->data.children; - - while (n != NULL) { - if (strncmp(n->name, name, len) == 0 && n->name[len] == '\0') - break; - - n = n->next; - } - - return n; -} - -tree_node_t *fstree_get_node_by_path(fstree_t *fs, tree_node_t *root, - const char *path, bool create_implicitly, - bool stop_at_parent) -{ - const char *end; - tree_node_t *n; - size_t len; - - while (*path != '\0') { - while (*path == '/') - ++path; - - if (!S_ISDIR(root->mode)) { - errno = ENOTDIR; - return NULL; - } - - end = strchr(path, '/'); - if (end == NULL) { - if (stop_at_parent) - break; - - len = strlen(path); - } else { - len = end - path; - } - - n = child_by_name(root, path, len); - - if (n == NULL) { - struct stat sb; - - if (!create_implicitly) { - errno = ENOENT; - return NULL; - } - - memset(&sb, 0, sizeof(sb)); - sb.st_mode = S_IFDIR | (fs->defaults.mode & 07777); - sb.st_uid = fs->defaults.uid; - sb.st_gid = fs->defaults.gid; - sb.st_mtime = fs->defaults.mtime; - - n = fstree_mknode(root, path, len, NULL, &sb); - if (n == NULL) - return NULL; - - n->flags |= FLAG_DIR_CREATED_IMPLICITLY; - } - - root = n; - path = path + len; - } - - return root; -} -- cgit v1.2.3