Lines Matching full:source
156 inputsource *source; in new_source() local
159 source = malloc(sizeof(*source)); in new_source()
160 if (source == NULL) in new_source()
162 source->result = ISC_R_SUCCESS; in new_source()
163 source->is_file = is_file; in new_source()
164 source->need_close = need_close; in new_source()
165 source->at_eof = 0; in new_source()
166 source->last_was_eol = lex->last_was_eol; in new_source()
167 source->input = input; in new_source()
168 source->name = strdup(name); in new_source()
169 if (source->name == NULL) { in new_source()
170 free(source); in new_source()
173 source->pushback = NULL; in new_source()
174 result = isc_buffer_allocate(&source->pushback, in new_source()
177 free(source->name); in new_source()
178 free(source); in new_source()
181 source->ignored = 0; in new_source()
182 source->line = 1; in new_source()
183 ISC_LIST_INITANDPREPEND(lex->sources, source, link); in new_source()
194 * Open 'filename' and make it the current input source for 'lex'. in isc_lex_openfile()
208 inputsource *source; in isc_lex_close() local
214 source = HEAD(lex->sources); in isc_lex_close()
215 if (source == NULL) in isc_lex_close()
218 ISC_LIST_UNLINK(lex->sources, source, link); in isc_lex_close()
219 lex->last_was_eol = source->last_was_eol; in isc_lex_close()
220 if (source->is_file) { in isc_lex_close()
221 if (source->need_close) in isc_lex_close()
222 (void)fclose((FILE *)(source->input)); in isc_lex_close()
224 free(source->name); in isc_lex_close()
225 isc_buffer_free(&source->pushback); in isc_lex_close()
226 free(source); in isc_lex_close()
242 pushback(inputsource *source, int c) { in pushback() argument
243 REQUIRE(source->pushback->current > 0); in pushback()
245 source->at_eof = 0; in pushback()
248 source->pushback->current--; in pushback()
250 source->line--; in pushback()
254 pushandgrow(inputsource *source, int c) { in pushandgrow() argument
255 if (isc_buffer_availablelength(source->pushback) == 0) { in pushandgrow()
261 oldlen = isc_buffer_length(source->pushback); in pushandgrow()
265 isc_buffer_usedregion(source->pushback, &used); in pushandgrow()
268 tbuf->current = source->pushback->current; in pushandgrow()
269 isc_buffer_free(&source->pushback); in pushandgrow()
270 source->pushback = tbuf; in pushandgrow()
272 isc_buffer_putuint8(source->pushback, (uint8_t)c); in pushandgrow()
278 inputsource *source; in isc_lex_gettoken() local
295 source = HEAD(lex->sources); in isc_lex_gettoken()
298 if (source == NULL) { in isc_lex_gettoken()
306 if (source->result != ISC_R_SUCCESS) in isc_lex_gettoken()
307 return (source->result); in isc_lex_gettoken()
310 source->saved_line = source->line; in isc_lex_gettoken()
312 if (isc_buffer_remaininglength(source->pushback) == 0 && in isc_lex_gettoken()
313 source->at_eof) in isc_lex_gettoken()
322 isc_buffer_compact(source->pushback); in isc_lex_gettoken()
330 if (source->is_file) in isc_lex_gettoken()
331 flockfile(source->input); in isc_lex_gettoken()
334 if (isc_buffer_remaininglength(source->pushback) == 0) { in isc_lex_gettoken()
335 if (source->is_file) { in isc_lex_gettoken()
336 stream = source->input; in isc_lex_gettoken()
341 source->result = ISC_R_IOERROR; in isc_lex_gettoken()
342 result = source->result; in isc_lex_gettoken()
345 source->at_eof = 1; in isc_lex_gettoken()
348 buffer = source->input; in isc_lex_gettoken()
352 source->at_eof = 1; in isc_lex_gettoken()
360 source->result = pushandgrow(source, c); in isc_lex_gettoken()
361 if (source->result != ISC_R_SUCCESS) { in isc_lex_gettoken()
362 result = source->result; in isc_lex_gettoken()
368 if (!source->at_eof) { in isc_lex_gettoken()
371 source->ignored = in isc_lex_gettoken()
372 isc_buffer_consumedlength(source->pushback); in isc_lex_gettoken()
373 c = isc_buffer_getuint8(source->pushback); in isc_lex_gettoken()
379 source->line++; in isc_lex_gettoken()
442 pushback(source, c); in isc_lex_gettoken()
443 if (source->result != ISC_R_SUCCESS) { in isc_lex_gettoken()
444 result = source->result; in isc_lex_gettoken()
476 pushback(source, c); in isc_lex_gettoken()
541 pushback(source, c); in isc_lex_gettoken()
572 if (source->is_file) in isc_lex_gettoken()
573 funlockfile(source->input); in isc_lex_gettoken()
579 inputsource *source; in isc_lex_ungettoken() local
584 source = HEAD(lex->sources); in isc_lex_ungettoken()
585 REQUIRE(source != NULL); in isc_lex_ungettoken()
587 REQUIRE(isc_buffer_consumedlength(source->pushback) != 0 || in isc_lex_ungettoken()
592 isc_buffer_first(source->pushback); in isc_lex_ungettoken()
594 source->line = source->saved_line; in isc_lex_ungettoken()
595 source->at_eof = 0; in isc_lex_ungettoken()
601 inputsource *source; in isc_lex_getlasttokentext() local
603 source = HEAD(lex->sources); in isc_lex_getlasttokentext()
604 REQUIRE(source != NULL); in isc_lex_getlasttokentext()
606 REQUIRE(isc_buffer_consumedlength(source->pushback) != 0 || in isc_lex_getlasttokentext()
611 INSIST(source->ignored <= isc_buffer_consumedlength(source->pushback)); in isc_lex_getlasttokentext()
612 r->base = (unsigned char *)isc_buffer_base(source->pushback) + in isc_lex_getlasttokentext()
613 source->ignored; in isc_lex_getlasttokentext()
614 r->length = isc_buffer_consumedlength(source->pushback) - in isc_lex_getlasttokentext()
615 source->ignored; in isc_lex_getlasttokentext()
620 inputsource *source; in isc_lex_getsourcename() local
622 source = HEAD(lex->sources); in isc_lex_getsourcename()
624 if (source == NULL) in isc_lex_getsourcename()
627 return (source->name); in isc_lex_getsourcename()
632 inputsource *source; in isc_lex_getsourceline() local
634 source = HEAD(lex->sources); in isc_lex_getsourceline()
636 if (source == NULL) in isc_lex_getsourceline()
639 return (source->line); in isc_lex_getsourceline()