Lines Matching defs:new
107 // If !new return DIRTREE_ABORTVAL
109 struct dirtree *dirtree_handle_callback(struct dirtree *new,
114 if (!new) return DIRTREE_ABORTVAL;
115 if (!callback) return new;
116 flags = callback(new);
118 if (S_ISDIR(new->st.st_mode) && (flags & (DIRTREE_RECURSE|DIRTREE_COMEAGAIN)))
119 flags = dirtree_recurse(new, callback,
120 openat(dirtree_parentfd(new), new->name, O_CLOEXEC), flags);
124 free(new);
125 new = 0;
128 return (flags & DIRTREE_ABORT)==DIRTREE_ABORT ? DIRTREE_ABORTVAL : new;
137 struct dirtree *new, **ddt = &(node->child);
159 if (!(new = dirtree_add_node(node, entry->d_name, flags))) continue;
160 if (!new->st.st_blksize && !new->st.st_mode)
161 new->st.st_mode = entry->d_type<<12;
162 new = dirtree_handle_callback(new, callback);
163 if (new == DIRTREE_ABORTVAL) break;
164 if (new) {
165 *ddt = new;