Lines Matching refs:obj

62 static void	free_obj(struct bsdar *bsdar, struct ar_obj *obj);
63 static void insert_obj(struct bsdar *bsdar, struct ar_obj *obj,
124 struct ar_obj *obj; in create_obj_from_file() local
131 obj = malloc(sizeof(struct ar_obj)); in create_obj_from_file()
132 if (obj == NULL) in create_obj_from_file()
134 if ((obj->fd = open(name, O_RDONLY, 0)) < 0) { in create_obj_from_file()
136 free(obj); in create_obj_from_file()
143 if ((obj->name = malloc(_TRUNCATE_LEN + 1)) == NULL) in create_obj_from_file()
145 (void)strncpy(obj->name, bname, _TRUNCATE_LEN); in create_obj_from_file()
146 obj->name[_TRUNCATE_LEN] = '\0'; in create_obj_from_file()
148 if ((obj->name = strdup(bname)) == NULL) in create_obj_from_file()
151 if (fstat(obj->fd, &sb) < 0) { in create_obj_from_file()
152 bsdar_warnc(bsdar, errno, "can't fstat file: %s", obj->name); in create_obj_from_file()
156 bsdar_warnc(bsdar, 0, "%s is not an ordinary file", obj->name); in create_obj_from_file()
176 obj->uid = 0; in create_obj_from_file()
177 obj->gid = 0; in create_obj_from_file()
178 obj->mtime = 0; in create_obj_from_file()
179 obj->md = S_IFREG | 0644; in create_obj_from_file()
181 obj->uid = sb.st_uid; in create_obj_from_file()
182 obj->gid = sb.st_gid; in create_obj_from_file()
183 obj->mtime = sb.st_mtime; in create_obj_from_file()
184 obj->md = sb.st_mode; in create_obj_from_file()
186 obj->size = sb.st_size; in create_obj_from_file()
187 obj->dev = sb.st_dev; in create_obj_from_file()
188 obj->ino = sb.st_ino; in create_obj_from_file()
190 if (obj->size == 0) { in create_obj_from_file()
191 obj->maddr = NULL; in create_obj_from_file()
192 return (obj); in create_obj_from_file()
195 if ((obj->maddr = mmap(NULL, obj->size, PROT_READ, in create_obj_from_file()
196 MAP_PRIVATE, obj->fd, (off_t)0)) == MAP_FAILED) { in create_obj_from_file()
197 bsdar_warnc(bsdar, errno, "can't mmap file: %s", obj->name); in create_obj_from_file()
200 if (close(obj->fd) < 0) in create_obj_from_file()
202 obj->name); in create_obj_from_file()
204 return (obj); in create_obj_from_file()
207 if (close(obj->fd) < 0) in create_obj_from_file()
209 obj->name); in create_obj_from_file()
210 free(obj->name); in create_obj_from_file()
211 free(obj); in create_obj_from_file()
219 free_obj(struct bsdar *bsdar, struct ar_obj *obj) in free_obj() argument
221 if (obj->fd == -1) in free_obj()
222 free(obj->maddr); in free_obj()
224 if (obj->maddr != NULL && munmap(obj->maddr, obj->size)) in free_obj()
226 "can't munmap file: %s", obj->name); in free_obj()
227 free(obj->name); in free_obj()
228 free(obj); in free_obj()
235 insert_obj(struct bsdar *bsdar, struct ar_obj *obj, struct ar_obj *pos) in insert_obj() argument
237 if (obj == NULL) in insert_obj()
240 if (pos == NULL || obj == pos) in insert_obj()
248 TAILQ_INSERT_BEFORE(pos, obj, objs); in insert_obj()
252 TAILQ_INSERT_AFTER(&bsdar->v_obj, pos, obj, objs); in insert_obj()
257 TAILQ_INSERT_TAIL(&bsdar->v_obj, obj, objs); in insert_obj()
272 struct ar_obj *obj; in read_objs() local
345 obj = malloc(sizeof(struct ar_obj)); in read_objs()
346 if (obj == NULL) in read_objs()
348 obj->maddr = buff; in read_objs()
349 if ((obj->name = strdup(name)) == NULL) in read_objs()
351 obj->size = size; in read_objs()
352 obj->uid = archive_entry_uid(entry); in read_objs()
353 obj->gid = archive_entry_gid(entry); in read_objs()
354 obj->md = archive_entry_mode(entry); in read_objs()
355 obj->mtime = archive_entry_mtime(entry); in read_objs()
356 obj->dev = 0; in read_objs()
357 obj->ino = 0; in read_objs()
363 obj->fd = -1; in read_objs()
364 TAILQ_INSERT_TAIL(&bsdar->v_obj, obj, objs); in read_objs()
376 struct ar_obj *nobj, *obj, *obj_temp, *pos; in write_archive() local
450 TAILQ_FOREACH(obj, &bsdar->v_obj, objs) { in write_archive()
451 if (strcmp(obj->name, bsdar->posarg) == 0) { in write_archive()
452 pos = obj; in write_archive()
468 TAILQ_FOREACH_SAFE(obj, &bsdar->v_obj, objs, obj_temp) { in write_archive()
473 if (strncmp(bname, obj->name, _TRUNCATE_LEN)) in write_archive()
476 if (strcmp(bname, obj->name) != 0) in write_archive()
485 obj->mtime); in write_archive()
494 TAILQ_REMOVE(&bsdar->v_obj, obj, objs); in write_archive()
496 free_obj(bsdar, obj); in write_archive()
499 insert_obj(bsdar, obj, pos); in write_archive()
540 struct ar_obj *obj, *obj_temp; in write_cleanup() local
542 TAILQ_FOREACH_SAFE(obj, &bsdar->v_obj, objs, obj_temp) { in write_cleanup()
543 TAILQ_REMOVE(&bsdar->v_obj, obj, objs); in write_cleanup()
544 free_obj(bsdar, obj); in write_cleanup()
596 struct ar_obj *obj; in write_objs() local
610 TAILQ_FOREACH(obj, &bsdar->v_obj, objs) { in write_objs()
611 if (!(bsdar->options & AR_SS) && obj->maddr != NULL) in write_objs()
612 create_symtab_entry(bsdar, obj->maddr, obj->size); in write_objs()
613 if (strlen(obj->name) > _MAXNAMELEN_SVR4) in write_objs()
614 add_to_ar_str_table(bsdar, obj->name); in write_objs()
615 bsdar->rela_off += _ARHDR_LEN + obj->size + obj->size % 2; in write_objs()
698 TAILQ_FOREACH(obj, &bsdar->v_obj, objs) { in write_objs()
703 archive_entry_copy_pathname(entry, obj->name); in write_objs()
704 archive_entry_set_uid(entry, obj->uid); in write_objs()
705 archive_entry_set_gid(entry, obj->gid); in write_objs()
706 archive_entry_set_mode(entry, obj->md); in write_objs()
707 archive_entry_set_size(entry, obj->size); in write_objs()
708 archive_entry_set_mtime(entry, obj->mtime, 0); in write_objs()
709 archive_entry_set_dev(entry, obj->dev); in write_objs()
710 archive_entry_set_ino(entry, obj->ino); in write_objs()
713 write_data(bsdar, a, obj->maddr, obj->size); in write_objs()