Lines Matching refs:tp
68 mkdirs(virtdir_t *tp, const char *path, size_t size) in mkdirs() argument
77 if ((ep = virtdir_find(tp, name, strlen(name))) == NULL) { in mkdirs()
78 virtdir_add(tp, name, strlen(name), 'd', NULL, 0); in mkdirs()
115 virtdir_init(virtdir_t *tp, const char *rootdir, struct stat *d, struct stat *f, struct stat *l) in virtdir_init() argument
117 (void) memcpy(&tp->dir, d, sizeof(tp->dir)); in virtdir_init()
118 tp->dir.st_mode = S_IFDIR | 0755; in virtdir_init()
119 tp->dir.st_nlink = 2; in virtdir_init()
120 (void) memcpy(&tp->file, f, sizeof(tp->file)); in virtdir_init()
121 tp->file.st_mode = S_IFREG | 0644; in virtdir_init()
122 tp->file.st_nlink = 1; in virtdir_init()
123 (void) memcpy(&tp->lnk, l, sizeof(tp->lnk)); in virtdir_init()
124 tp->lnk.st_mode = S_IFLNK | 0644; in virtdir_init()
125 tp->lnk.st_nlink = 1; in virtdir_init()
127 tp->rootdir = strdup(rootdir); in virtdir_init()
134 virtdir_add(virtdir_t *tp, const char *name, size_t size, uint8_t type, const char *tgt, size_t tgt… in virtdir_add() argument
140 if (tp->v == NULL) { in virtdir_add()
142 virtdir_init(tp, NULL, &st, &st, &st); in virtdir_add()
145 if (virtdir_find(tp, path, pathlen) != NULL) { in virtdir_add()
149 ALLOC(virt_dirent_t, tp->v, tp->size, tp->c, 10, 10, "virtdir_add", in virtdir_add()
151 tp->v[tp->c].namelen = pathlen; in virtdir_add()
152 if ((tp->v[tp->c].name = strnsave(path, pathlen)) == NULL) { in virtdir_add()
155 tp->v[tp->c].d_name = strrchr(tp->v[tp->c].name, '/') + 1; in virtdir_add()
156 tp->v[tp->c].type = type; in virtdir_add()
157 tp->v[tp->c].ino = (ino_t) random() & 0xfffff; in virtdir_add()
159 tp->v[tp->c].tgtlen = tgtlen; in virtdir_add()
160 tp->v[tp->c].tgt = strnsave(tgt, tgtlen); in virtdir_add()
162 tp->c += 1; in virtdir_add()
163 qsort(tp->v, tp->c, sizeof(tp->v[0]), compare); in virtdir_add()
164 mkdirs(tp, path, pathlen); in virtdir_add()
170 virtdir_del(virtdir_t *tp, const char *name, size_t size) in virtdir_del() argument
175 if ((ep = virtdir_find(tp, name, size)) == NULL) { in virtdir_del()
178 i = (int)(ep - tp->v); in virtdir_del()
179 for (tp->c -= 1 ; i < tp->c ; i++) { in virtdir_del()
180 tp->v[i] = tp->v[i + 1]; in virtdir_del()
187 virtdir_find(virtdir_t *tp, const char *name, size_t namelen) in virtdir_find() argument
195 return bsearch(&e, tp->v, tp->c, sizeof(tp->v[0]), compare); in virtdir_find()
200 virtdir_offset(virtdir_t *tp, virt_dirent_t *dp) in virtdir_offset() argument
202 return (int)(dp - tp->v); in virtdir_offset()
208 openvirtdir(virtdir_t *tp, const char *d) in openvirtdir() argument
215 dirp->tp = tp; in openvirtdir()
227 for ( ; dirp->i < dirp->tp->c ; dirp->i++) { in readvirtdir()
229 &dirp->tp->v[dirp->i].name[1] : in readvirtdir()
230 &dirp->tp->v[dirp->i].name[dirp->dirnamelen + 1]; in readvirtdir()
231 if (strncmp(dirp->tp->v[dirp->i].name, dirp->dirname, in readvirtdir()
235 return &dirp->tp->v[dirp->i++]; in readvirtdir()
251 virtdir_find_tgt(virtdir_t *tp, const char *tgt, size_t tgtlen) in virtdir_find_tgt() argument
258 for (i = 0 ; i < tp->c ; i++) { in virtdir_find_tgt()
259 if (tp->v[i].tgt && strcmp(tp->v[i].tgt, path) == 0) { in virtdir_find_tgt()
260 return &tp->v[i]; in virtdir_find_tgt()
268 virtdir_drop(virtdir_t *tp) in virtdir_drop() argument
272 for (i = 0 ; i < tp->c ; i++) { in virtdir_drop()
273 FREE(tp->v[i].name); in virtdir_drop()
274 if (tp->v[i].tgt) { in virtdir_drop()
275 FREE(tp->v[i].tgt); in virtdir_drop()
278 FREE(tp->v); in virtdir_drop()
283 virtdir_rootdir(virtdir_t *tp) in virtdir_rootdir() argument
285 return tp->rootdir; in virtdir_rootdir()
290 ptree(virtdir_t * tp) in ptree() argument
294 for (i = 0 ; i < tp->c ; i++) { in ptree()
295 printf("%s, tgt %s\n", tp->v[i].name, tp->v[i].tgt); in ptree()
304 virt_dirent_t *tp; in main() local
322 if ((tp = virtdir_find(&t, "a", 1)) == NULL) { in main()