Lines Matching refs:str

46 	stream_t *str = safe_realloc(NULL, sizeof (stream_t));
48 stream_clear(str);
49 stream_set(str, src);
51 return (str);
55 stream_set(stream_t *str, flag_t flags)
63 str->s_status &= ~STREAM_SOURCE_MASK;
64 str->s_status |= flags & STREAM_SOURCE_MASK;
68 str->s_element_size = 0;
69 str->s_ops = invalid_ops;
75 str->s_ops = stream_array_ops;
78 str->s_element_size = sizeof (char);
79 str->s_ops = stream_mmap_ops;
82 str->s_element_size = sizeof (char);
83 str->s_ops = stream_stdio_ops;
86 str->s_element_size = sizeof (wchar_t);
87 str->s_ops = stream_wide_ops;
90 die(EMSG_UNKN_STREAM, str->s_status);
94 str->s_status |= (flags & ~STREAM_SOURCE_MASK);
96 if (str->s_status & STREAM_UNIQUE)
97 switch (str->s_status & STREAM_SOURCE_MASK) {
99 str->s_ops.sop_put_line =
103 str->s_ops.sop_put_line =
110 if (str->s_status & STREAM_INSTANT)
111 switch (str->s_status & STREAM_SOURCE_MASK) {
113 str->s_ops.sop_fetch =
117 str->s_ops.sop_fetch =
140 stream_clear(stream_t *str)
142 (void) memset(str, 0, sizeof (stream_t));
176 stream_count_chain(stream_t *str)
180 while (str != NULL) {
182 str = str->s_next;
189 stream_open_for_read(sort_t *S, stream_t *str)
193 ASSERT(!(str->s_status & STREAM_OUTPUT));
198 if ((str->s_status & STREAM_SOURCE_MASK) == STREAM_ARRAY) {
199 stream_set(str, STREAM_ARRAY | STREAM_OPEN);
206 if (str->s_status & STREAM_NOTFILE) {
207 str->s_type.BF.s_fp = stdin;
208 stream_set(str, STREAM_OPEN | (S->m_single_byte_locale ?
213 ASSERT(str->s_filename);
217 str->s_filesize > 0 &&
218 str->s_filesize < SSIZE_MAX) {
222 fd = open(str->s_filename, O_RDONLY);
227 die(EMSG_OPEN, str->s_filename);
229 str->s_buffer = mmap(0, str->s_filesize, PROT_READ,
232 if (str->s_buffer != MAP_FAILED) {
233 str->s_buffer_size = str->s_filesize;
234 str->s_type.SF.s_fd = fd;
236 stream_set(str, STREAM_MMAP | STREAM_OPEN);
237 stream_unset(str, STREAM_PRIMED);
247 str->s_buffer = NULL;
251 if ((str->s_type.BF.s_fp = fopen(str->s_filename, "r")) == NULL) {
255 die(EMSG_OPEN, str->s_filename);
258 str->s_type.BF.s_vbuf = safe_realloc(NULL, STDIO_VBUF_SIZE);
259 if (setvbuf(str->s_type.BF.s_fp, str->s_type.BF.s_vbuf, _IOFBF,
261 safe_free(str->s_type.BF.s_vbuf);
262 str->s_type.BF.s_vbuf = NULL;
265 stream_set(str, STREAM_OPEN | (S->m_single_byte_locale ? STREAM_SINGLE :
267 stream_unset(str, STREAM_PRIMED);
273 stream_set_size(stream_t *str, size_t new_size)
283 if (str->s_buffer_size == p_new_size)
286 if (str->s_buffer != NULL)
287 (void) munmap(str->s_buffer, str->s_buffer_size);
290 str->s_buffer = NULL;
291 str->s_buffer_size = 0;
295 str->s_buffer = xzmap(0, p_new_size, PROT_READ | PROT_WRITE,
298 if (str->s_buffer == MAP_FAILED)
301 str->s_buffer_size = p_new_size;
307 stream_t *str;
309 str = stream_new(STREAM_NO_SOURCE);
311 str->s_filename = filename;
312 str->s_type.SF.s_fd = -1;
314 stream_push_to_chain(str_chain, str);
582 stream_swap_buffer(stream_t *str, char **buf, size_t *size)
587 *buf = str->s_buffer;
588 *size = str->s_buffer_size;
590 str->s_buffer = tb;
591 str->s_buffer_size = ts;