Lines Matching refs:source

190 	inputsource *source;
193 source = isc_mem_get(lex->mctx, sizeof(*source));
194 if (source == NULL)
196 source->result = ISC_R_SUCCESS;
197 source->is_file = is_file;
198 source->need_close = need_close;
199 source->at_eof = ISC_FALSE;
200 source->last_was_eol = lex->last_was_eol;
201 source->input = input;
202 source->name = isc_mem_strdup(lex->mctx, name);
203 if (source->name == NULL) {
204 isc_mem_put(lex->mctx, source, sizeof(*source));
207 source->pushback = NULL;
208 result = isc_buffer_allocate(lex->mctx, &source->pushback,
211 isc_mem_free(lex->mctx, source->name);
212 isc_mem_put(lex->mctx, source, sizeof(*source));
215 source->ignored = 0;
216 source->line = 1;
217 ISC_LIST_INITANDPREPEND(lex->sources, source, link);
228 * Open 'filename' and make it the current input source for 'lex'.
248 * Make 'stream' the current input source for 'lex'.
263 * Make 'buffer' the current input source for 'lex'.
275 inputsource *source;
283 source = HEAD(lex->sources);
284 if (source == NULL)
287 ISC_LIST_UNLINK(lex->sources, source, link);
288 lex->last_was_eol = source->last_was_eol;
289 if (source->is_file) {
290 if (source->need_close)
291 (void)fclose((FILE *)(source->input));
293 isc_mem_free(lex->mctx, source->name);
294 isc_buffer_free(&source->pushback);
295 isc_mem_put(lex->mctx, source, sizeof(*source));
316 pushback(inputsource *source, int c) {
317 REQUIRE(source->pushback->current > 0);
319 source->at_eof = ISC_FALSE;
322 source->pushback->current--;
324 source->line--;
328 pushandgrow(isc_lex_t *lex, inputsource *source, int c) {
329 if (isc_buffer_availablelength(source->pushback) == 0) {
335 oldlen = isc_buffer_length(source->pushback);
339 isc_buffer_usedregion(source->pushback, &used);
342 tbuf->current = source->pushback->current;
343 isc_buffer_free(&source->pushback);
344 source->pushback = tbuf;
346 isc_buffer_putuint8(source->pushback, (isc_uint8_t)c);
352 inputsource *source;
372 source = HEAD(lex->sources);
375 if (source == NULL) {
383 if (source->result != ISC_R_SUCCESS)
384 return (source->result);
387 source->saved_line = source->line;
389 if (isc_buffer_remaininglength(source->pushback) == 0 &&
390 source->at_eof)
411 isc_buffer_compact(source->pushback);
424 if (source->is_file)
425 flockfile(source->input);
429 if (isc_buffer_remaininglength(source->pushback) == 0) {
430 if (source->is_file) {
431 stream = source->input;
440 source->result = ISC_R_IOERROR;
441 result = source->result;
444 source->at_eof = ISC_TRUE;
447 buffer = source->input;
451 source->at_eof = ISC_TRUE;
459 source->result = pushandgrow(lex, source, c);
460 if (source->result != ISC_R_SUCCESS) {
461 result = source->result;
467 if (!source->at_eof) {
470 source->ignored =
471 isc_buffer_consumedlength(source->pushback);
472 c = isc_buffer_getuint8(source->pushback);
478 source->line++;
606 pushback(source, c);
623 pushback(source, c);
679 pushback(source, c);
680 if (source->result != ISC_R_SUCCESS) {
681 result = source->result;
716 pushback(source, c);
781 pushback(source, c);
865 if (source->is_file)
866 funlockfile(source->input);
936 inputsource *source;
942 source = HEAD(lex->sources);
943 REQUIRE(source != NULL);
945 REQUIRE(isc_buffer_consumedlength(source->pushback) != 0 ||
950 isc_buffer_first(source->pushback);
952 source->line = source->saved_line;
953 source->at_eof = ISC_FALSE;
959 inputsource *source;
962 source = HEAD(lex->sources);
963 REQUIRE(source != NULL);
965 REQUIRE(isc_buffer_consumedlength(source->pushback) != 0 ||
970 INSIST(source->ignored <= isc_buffer_consumedlength(source->pushback));
971 r->base = (unsigned char *)isc_buffer_base(source->pushback) +
972 source->ignored;
973 r->length = isc_buffer_consumedlength(source->pushback) -
974 source->ignored;
979 inputsource *source;
982 source = HEAD(lex->sources);
984 if (source == NULL)
987 return (source->name);
992 inputsource *source;
995 source = HEAD(lex->sources);
997 if (source == NULL)
1000 return (source->line);
1005 inputsource *source;
1009 source = HEAD(lex->sources);
1011 if (source == NULL)
1016 isc_mem_free(lex->mctx, source->name);
1017 source->name = newname;
1023 inputsource *source;
1026 source = HEAD(lex->sources);
1028 if (source == NULL)
1031 source->line = line;
1037 inputsource *source;
1041 source = HEAD(lex->sources);
1043 if (source == NULL)
1046 return (source->is_file);