コード例 #1
0
ファイル: fileio.c プロジェクト: syntheticpp/cpptex
void tex::start_input_prepare(const std::string& fname)
	{
	if(fname!="stdin") {
		if(fname.size()==0) {
			scan_file_name();
			if (cur_ext == null_str)
				cur_ext = str_tex;
			pack_file_name(cur_name, cur_area, cur_ext);
			}
		else {
			begin_name();
			strcpy(name_of_file, fname.c_str());
			name_str=name_of_file+strlen(fname.c_str());
			ext_str=null_str;
			area_str=null_str;
			end_name();
			pack_file_name(cur_name, cur_area, cur_ext);
			}
		loop {
			begin_file_reading();
			if((cur_file = a_open_in()))
				break;
			end_file_reading();
			if (cur_ext == str_tex) { // remove .tex and try again
				cur_ext = null_str;
				pack_file_name(cur_name, cur_area, cur_ext);
				begin_file_reading();
				if((cur_file = a_open_in()))
					break;
				end_file_reading();
				}
			std::cerr << "cannot open " << name_of_file << std::endl;
			throw std::logic_error("file not found");
			}
		}
	else {
コード例 #2
0
ファイル: extensions.c プロジェクト: clerkma/texlive-mobile
void do_extension(int immediate)
{
halfword p;
if(cur_cmd==extension_cmd){

switch(cur_chr){
case open_code:
p= tail;
new_write_whatsit(open_node_size,1);
scan_optional_equals();
scan_file_name();
open_name(tail)= cur_name;
open_area(tail)= cur_area;
open_ext(tail)= cur_ext;
if(immediate){
out_what(static_pdf,tail);
flush_node_list(tail);
tail= p;
vlink(p)= null;
}
break;
case write_code:





p= tail;
new_write_whatsit(write_node_size,0);
cur_cs= write_stream(tail);
scan_toks(false,false);
write_tokens(tail)= def_ref;
if(immediate){
out_what(static_pdf,tail);
flush_node_list(tail);
tail= p;
vlink(p)= null;
}
break;
case close_code:
p= tail;
new_write_whatsit(close_node_size,1);
write_tokens(tail)= null;
if(immediate){
out_what(static_pdf,tail);
flush_node_list(tail);
tail= p;
vlink(p)= null;
}
break;
case special_code:




new_whatsit(special_node);
write_stream(tail)= null;
p= scan_toks(false,true);
write_tokens(tail)= def_ref;
break;
case immediate_code:
get_x_token();
do_extension(1);
break;
case use_box_resource_code:
case use_image_resource_code:
case save_box_resource_code:
case save_image_resource_code:
switch(get_o_mode()){
case OMODE_DVI:
do_resource_dvi(immediate,cur_chr);
break;
case OMODE_PDF:
do_resource_pdf(immediate,cur_chr);
break;
default:
break;
}
break;

case dvi_extension_code:
if(get_o_mode()==OMODE_DVI)
do_extension_dvi(immediate);
break;
case pdf_extension_code:
if(get_o_mode()==OMODE_PDF)
do_extension_pdf(immediate);
break;

default:
if(immediate){
back_input();
}else{
confusion("invalid extension");
}
break;
}
}else{

back_input();
}
}