Lines Matching +full:1 +full:f
66 * exacct_error and return -1.
73 static int stack_check(ea_file_impl_t *f) in stack_check() argument
75 if (f->ef_depth == NULL) { in stack_check()
76 if ((f->ef_depth = in stack_check()
80 return (-1); in stack_check()
82 bzero(f->ef_depth, DEFAULT_ENTRIES * sizeof (ea_file_depth_t)); in stack_check()
83 f->ef_mxdeep = DEFAULT_ENTRIES; in stack_check()
84 f->ef_ndeep = -1; in stack_check()
85 } else if (f->ef_ndeep + 1 >= f->ef_mxdeep) { in stack_check()
89 ea_alloc(f->ef_mxdeep * 2 * sizeof (ea_file_depth_t))) in stack_check()
92 return (-1); in stack_check()
94 bcopy(f->ef_depth, newstack, in stack_check()
95 f->ef_mxdeep * sizeof (ea_file_depth_t)); in stack_check()
96 bzero(newstack + f->ef_mxdeep, in stack_check()
97 f->ef_mxdeep * sizeof (ea_file_depth_t)); in stack_check()
98 ea_free(f->ef_depth, f->ef_mxdeep * sizeof (ea_file_depth_t)); in stack_check()
99 f->ef_mxdeep *= 2; in stack_check()
100 f->ef_depth = newstack; in stack_check()
108 static void stack_free(ea_file_impl_t *f) in stack_free() argument
110 if (f->ef_depth != NULL) { in stack_free()
111 ea_free(f->ef_depth, f->ef_mxdeep * sizeof (ea_file_depth_t)); in stack_free()
112 f->ef_depth = NULL; in stack_free()
114 f->ef_mxdeep = 0; in stack_free()
115 f->ef_ndeep = -1; in stack_free()
124 static int stack_new_group(ea_file_impl_t *f, int nobjs) in stack_new_group() argument
126 if (stack_check(f) != 0) { in stack_new_group()
127 stack_free(f); in stack_new_group()
129 return (-1); in stack_new_group()
131 f->ef_ndeep++; in stack_new_group()
132 f->ef_depth[f->ef_ndeep].efd_obj = 0; in stack_new_group()
133 f->ef_depth[f->ef_ndeep].efd_nobjs = nobjs; in stack_new_group()
139 * within a group, return 1. If we have reached the end of the current group,
142 * accordingly and return -1. xread() is required so that this function can
147 ea_file_impl_t *f, in stack_next_object() argument
156 if (f->ef_ndeep < 0) { in stack_next_object()
164 if (++f->ef_depth[f->ef_ndeep].efd_obj < in stack_next_object()
165 f->ef_depth[f->ef_ndeep].efd_nobjs) { in stack_next_object()
166 return (1); in stack_next_object()
175 while (f->ef_ndeep >= 0 && in stack_next_object()
176 ++f->ef_depth[f->ef_ndeep].efd_obj >= in stack_next_object()
177 f->ef_depth[f->ef_ndeep].efd_nobjs) { in stack_next_object()
179 f->ef_ndeep--; in stack_next_object()
180 if (xread(f, &scratch32, sizeof (scratch32)) != in stack_next_object()
183 return (-1); in stack_next_object()
192 * within a group, return 1. If we have reached the end of the current group,
195 static int stack_previous_object(ea_file_impl_t *f) in stack_previous_object() argument
201 if (f->ef_ndeep < 0) { in stack_previous_object()
209 if (--f->ef_depth[f->ef_ndeep].efd_obj >= 0) { in stack_previous_object()
210 return (1); in stack_previous_object()
214 f->ef_ndeep--; in stack_previous_object()
226 fread_wrapper(ea_file_impl_t *f, void *buf, size_t sz) in fread_wrapper() argument
230 retval = fread(buf, 1, sz, f->ef_fp); in fread_wrapper()
231 if (retval == 0 && ferror(f->ef_fp)) { in fread_wrapper()
232 retval = (size_t)-1; in fread_wrapper()
238 bufread_wrapper(ea_file_impl_t *f, void *buf, size_t sz) in bufread_wrapper() argument
240 if (f->ef_bufsize == 0 && sz != 0) in bufread_wrapper()
243 if (f->ef_bufsize < sz) in bufread_wrapper()
244 sz = f->ef_bufsize; in bufread_wrapper()
246 bcopy(f->ef_buf, buf, sz); in bufread_wrapper()
247 f->ef_buf += sz; in bufread_wrapper()
248 f->ef_bufsize -= sz; in bufread_wrapper()
254 fseek_wrapper(ea_file_impl_t *f, off_t adv) in fseek_wrapper() argument
256 return (fseeko(f->ef_fp, adv, SEEK_CUR)); in fseek_wrapper()
260 bufseek_wrapper(ea_file_impl_t *f, off_t adv) in bufseek_wrapper() argument
262 if (f->ef_bufsize == 0 && adv != 0) in bufseek_wrapper()
263 return (-1); in bufseek_wrapper()
265 if (f->ef_bufsize < adv) in bufseek_wrapper()
266 adv = f->ef_bufsize; in bufseek_wrapper()
268 f->ef_buf += adv; in bufseek_wrapper()
269 f->ef_bufsize -= adv; in bufseek_wrapper()
276 fpos_wrapper(ea_file_impl_t *f) in fpos_wrapper() argument
282 bufpos_wrapper(ea_file_impl_t *f) in bufpos_wrapper() argument
284 return (f->ef_buf); in bufpos_wrapper()
319 ea_file_impl_t *f = (ea_file_impl_t *)ef; in ea_next_object() local
331 if (f->ef_advance != 0) { in ea_next_object()
332 if (fseeko(f->ef_fp, (off_t)f->ef_advance, SEEK_CUR) == -1) { in ea_next_object()
336 if (stack_next_object(f, fread_wrapper) == -1) { in ea_next_object()
341 f->ef_advance = 0; in ea_next_object()
344 ret = fread(&obj->eo_catalog, 1, sizeof (ea_catalog_t), f->ef_fp); in ea_next_object()
361 f->ef_advance = sizeof (uint32_t); in ea_next_object()
366 if (fread(&len, 1, sizeof (ea_size_t), f->ef_fp) in ea_next_object()
374 f->ef_advance += sizeof (ea_catalog_t) + in ea_next_object()
379 f->ef_advance = sizeof (ea_catalog_t) + sizeof (uint8_t) + in ea_next_object()
383 f->ef_advance = sizeof (ea_catalog_t) + sizeof (uint16_t) + in ea_next_object()
387 f->ef_advance = sizeof (ea_catalog_t) + sizeof (uint32_t) + in ea_next_object()
391 f->ef_advance = sizeof (ea_catalog_t) + sizeof (uint64_t) + in ea_next_object()
395 f->ef_advance = sizeof (ea_catalog_t) + sizeof (double) + in ea_next_object()
405 if (fseeko(f->ef_fp, -backup, SEEK_CUR) == -1) { in ea_next_object()
407 f->ef_advance = 0; in ea_next_object()
419 ea_file_impl_t *f = (ea_file_impl_t *)ef; in ea_previous_object() local
423 if (fseeko(f->ef_fp, -((off_t)sizeof (uint32_t)), SEEK_CUR) == -1) { in ea_previous_object()
432 if ((r = fread(&bkskip, 1, sizeof (uint32_t), f->ef_fp)) != in ea_previous_object()
452 (void) stack_previous_object(f); in ea_previous_object()
454 if (fseeko(f->ef_fp, -((off_t)bkskip), SEEK_CUR) == -1) { in ea_previous_object()
467 f->ef_advance = 0; in ea_previous_object()
483 ea_file_impl_t *f, in xget_object() argument
496 if ((r = xread(f, &obj->eo_catalog, sizeof (ea_catalog_t))) == 0) { in xget_object()
513 if (xread(f, &sz, sizeof (ea_size_t)) != sizeof (ea_size_t)) { in xget_object()
518 if (xread(f, &obj->eo_group.eg_nobjs, sizeof (uint32_t)) != in xget_object()
526 if (xread(f, &gp_backskip, sizeof (uint32_t)) != in xget_object()
533 if (stack_new_group(f, obj->eo_group.eg_nobjs) != 0) { in xget_object()
544 if (stack_next_object(f, xread) == -1) { in xget_object()
550 f->ef_advance = 0; in xget_object()
563 if (xread(f, &sz, sizeof (ea_size_t)) != sizeof (ea_size_t)) { in xget_object()
573 buf = xpos(f); in xget_object()
574 if (xseek(f, sz) == -1) { in xget_object()
582 if (xread(f, buf, sz) != sz) { in xget_object()
596 if (xread(f, &obj->eo_item.ei_uint8, sizeof (uint8_t)) != in xget_object()
604 if (xread(f, &obj->eo_item.ei_uint16, sizeof (uint16_t)) != in xget_object()
613 if (xread(f, &obj->eo_item.ei_uint32, sizeof (uint32_t)) != in xget_object()
622 if (xread(f, &obj->eo_item.ei_uint64, sizeof (uint64_t)) != in xget_object()
631 if (xread(f, &obj->eo_item.ei_double, sizeof (double)) != in xget_object()
652 if (xread(f, &scratch32, sizeof (scratch32)) != sizeof (scratch32)) { in xget_object()
656 if (stack_next_object(f, xread) == -1) { in xget_object()
661 f->ef_advance = 0; in xget_object()
679 unpack_group(ea_file_impl_t *f, ea_object_t *grp, int flag) in unpack_group() argument
695 return (-1); in unpack_group()
698 if (xget_object(f, obj, bufread_wrapper, bufseek_wrapper, in unpack_group()
699 bufpos_wrapper, flag) == -1) { in unpack_group()
702 return (-1); in unpack_group()
708 unpack_group(f, obj, flag) == -1) { in unpack_group()
710 return (-1); in unpack_group()
716 return (-1); in unpack_group()
743 if (stack_check(&fake) == -1) { in ea_unpack_object()
758 bufseek_wrapper, bufpos_wrapper, flag)) == -1) { in ea_unpack_object()
765 if (obj->eo_type == EO_GROUP && unpack_group(&fake, obj, flag) == -1) { in ea_unpack_object()
776 * xget_object() returns -1 with exacct_error set to EXR_EOF. in ea_unpack_object()
788 bufpos_wrapper, flag) == -1) { in ea_unpack_object()
805 unpack_group(&fake, obj, flag) == -1) { in ea_unpack_object()
821 ea_file_impl_t *f = (ea_file_impl_t *)ef; in ea_write_object() local
826 if ((f->ef_oflags & O_RDWR) == 0 && in ea_write_object()
827 (f->ef_oflags & O_WRONLY) == 0) { in ea_write_object()
829 return (-1); in ea_write_object()
834 if (sz == -1 || (buf = ea_alloc(sz)) == NULL) { in ea_write_object()
836 return (-1); in ea_write_object()
838 if (ea_pack_object(obj, buf, sz) == (size_t)-1) { in ea_write_object()
841 return (-1); in ea_write_object()
843 if (fwrite(buf, sizeof (char), sz, f->ef_fp) != sz) { in ea_write_object()
846 return (-1); in ea_write_object()
868 ea_file_impl_t *f = (ea_file_impl_t *)ef; in validate_header() local
885 if (ea_get_object(ef, &scratch_obj) == -1) { in validate_header()
907 f->ef_creator = in validate_header()
909 if (f->ef_creator == NULL) { in validate_header()
917 f->ef_hostname = in validate_header()
919 if (f->ef_hostname == NULL) { in validate_header()
933 if (creator && strcmp(f->ef_creator, creator) != 0) { in validate_header()
944 ea_strfree(f->ef_hostname); in validate_header()
946 ea_strfree(f->ef_creator); in validate_header()
948 return (-1); in validate_header()
961 ea_file_impl_t *f = (ea_file_impl_t *)ef; in write_header() local
977 (void *)&version, 0) == -1 || in write_header()
979 f->ef_creator, strlen(f->ef_creator)) == -1 || in write_header()
981 EXACCT_HDR_STR, strlen(EXACCT_HDR_STR)) == -1 || in write_header()
983 hostbuf, strlen(hostbuf)) == -1) { in write_header()
1002 if (ea_pack_object(&hdr_grp, buf, bufsize) == (size_t)-1) { in write_header()
1016 if (fwrite(buf, sizeof (char), bufsize, f->ef_fp) != bufsize || in write_header()
1017 fflush(f->ef_fp) == EOF) { in write_header()
1030 return (error == EXR_OK ? 0 : -1); in write_header()
1048 ea_file_impl_t *f = (ea_file_impl_t *)ef; in ea_fdopen() local
1050 bzero(f, sizeof (*f)); in ea_fdopen()
1051 f->ef_oflags = oflags; in ea_fdopen()
1052 f->ef_fd = fd; in ea_fdopen()
1055 if (stack_check(f) == -1) { in ea_fdopen()
1061 * 1. If we are O_CREAT, then we will need to write a header in ea_fdopen()
1069 if ((f->ef_creator = ea_strdup(creator)) == NULL) { in ea_fdopen()
1073 if ((f->ef_fp = fdopen(f->ef_fd, "w")) == NULL) { in ea_fdopen()
1077 if (write_header(ef) == -1) { in ea_fdopen()
1087 if ((f->ef_fp = fdopen(f->ef_fd, "r+")) == NULL) { in ea_fdopen()
1099 if (fseeko(f->ef_fp, 0, SEEK_END) == -1) { in ea_fdopen()
1117 if ((f->ef_fp = fdopen(f->ef_fd, "r")) == NULL) { in ea_fdopen()
1123 if (validate_header(ef, creator) == -1) { in ea_fdopen()
1134 if (fseeko(f->ef_fp, 0, SEEK_END) < 0) { in ea_fdopen()
1146 ea_strfree(f->ef_creator); in ea_fdopen()
1148 stack_free(f); in ea_fdopen()
1150 bzero(f, sizeof (*f)); in ea_fdopen()
1151 return (-1); in ea_fdopen()
1167 if ((fd = open(name, oflags, mode)) == -1) { in ea_open()
1169 return (-1); in ea_open()
1172 if (ea_fdopen(ef, fd, creator, aflags, oflags) == -1) { in ea_open()
1174 return (-1); in ea_open()
1187 ea_file_impl_t *f = (ea_file_impl_t *)ef; in ea_close() local
1189 if (f->ef_creator != NULL) in ea_close()
1190 ea_strfree(f->ef_creator); in ea_close()
1191 if (f->ef_hostname != NULL) in ea_close()
1192 ea_strfree(f->ef_hostname); in ea_close()
1194 ea_free(f->ef_depth, f->ef_mxdeep * sizeof (ea_file_depth_t)); in ea_close()
1196 if (fclose(f->ef_fp)) { in ea_close()
1198 return (-1); in ea_close()
1213 ea_file_impl_t *f = (ea_file_impl_t *)ef; in ea_clear() local
1215 (void) fflush(f->ef_fp); in ea_clear()
1216 clearerr(f->ef_fp); in ea_clear()
1351 if (ea_get_object(ef, obj) == -1) { in ea_get_object_tree()