📄 userinp.c
字号:
default_prompt = "EXE file[%s]: ";
EndIf ;
EndIf;
EndIf;
copy_string(default_filename, string((*(obj_file_list.first)).filename));
change_extension(default_filename, default_extension);
prompting_for = 2;
process_user_output_file(Addr(exe_file_list),
False);
/*+-------------------------------------------------------------------------+
| |
| Process CV output file |
| |
+-------------------------------------------------------------------------+*/
copy_string(token, string((*(exe_file_list.first)).filename));
change_extension(token, cv_extension_string);
file_entry = (file_info_ptr)
allocate_memory(Bit_32(sizeof(file_info_type)) +
Bit_32(Length(token)));
far_move(File_entry.filename, String(token), Length(token)+1);
Insert file_entry AtEnd InList cv_file_list EndInsert;
/*+-------------------------------------------------------------------------+
| |
| Process MAP file |
| |
+-------------------------------------------------------------------------+*/
default_extension = lst_extension_string;
copy_string(default_filename, null_string);
default_prompt = "MAP file:%s ";
prompting_for = 3;
process_user_output_file(Addr(lst_file_list),
False);
If (First(lst_file_list) IsNull) AndIf
((map.set IsTrue) OrIf (detail_level.val Exceeds 0))
Then
copy_string(token, string((*(exe_file_list.first)).filename));
change_extension(token, lst_extension_string);
file_entry = (file_info_ptr)
allocate_memory(Bit_32(sizeof(file_info_type)) +
Bit_32(Length(token)));
far_move(File_entry.filename, String(token), Length(token)+1);
Insert file_entry AtEnd InList lst_file_list EndInsert;
EndIf;
/*+-------------------------------------------------------------------------+
| |
| Process LIB file list |
| |
+-------------------------------------------------------------------------+*/
default_extension = lib_extension_string;
copy_string(default_filename, null_string);
default_prompt = "LIB file(s):%s ";
prompting_for = 4;
process_user_input_files(Addr(lib_file_list),
False);
/*+-------------------------------------------------------------------------+
| |
| Process RESOURCE file list |
| |
+-------------------------------------------------------------------------+*/
If lxfile.val IsTrue OrIf lefile.val IsTrue
Then
pefile.val = False ;
build_DLL.val = False ;
win_subsystem.val = False ;
use32.val = True ;
EndIf ;
If pefile.val IsTrue
Then
use32.val = True ; /* Default PE files to 32-bit */
default_extension = resource_extension_string;
copy_string(default_filename, null_string);
default_prompt = "RES file(s):%s ";
prompting_for = 5;
process_user_input_files(Addr(resource_file_list),
False);
EndIf
If build_DLL.val IsTrue
Then
use32.val = True ;
/* win_subsystem.val = PE_SUBSYS_WINDOWS ; */
EndIf ;
/*+-------------------------------------------------------------------------+
| |
| Process stub file |
| |
+-------------------------------------------------------------------------+*/
If stub_filename.val IsNotNull
Then
If lib_directory.val IsNotNull
Then
strcpy(buf,String(stub_filename.val)) ;
fil = SearchPath(buf, String(lib_directory.val),"r") ;
If fil IsNotNull
Then
fclose(fil) ;
strcpy(String(stub_filename.val),buf) ;
Length(stub_filename.val) = strlen(buf) ;
EndIf
EndIf
process_filename(stub_filename.val) ;
If index_string(stub_filename.val, 0, colon_string) IsNot 1
Then
linker_error(4, "\"%s\" is an illegal stub file name.\n",
String(stub_filename.val));
Else
add_extension_to_file(stub_filename.val,exe_extension_string);
add_files_to_list(&stub_file_list, stub_filename.val);
EndIf;
EndIf
/*+-------------------------------------------------------------------------+
| |
| Process sym file |
| |
+-------------------------------------------------------------------------+*/
If symbol_table.val IsTrue
Then
copy_string(sym_filename_string, string((*(exe_file_list.first)).filename));
change_extension(sym_filename_string, sym_extension_string);
file_entry = (file_info_ptr)
allocate_memory(Bit_32(sizeof(file_info_type)) +
Bit_32(Length(sym_filename_string)));
far_move(File_entry.filename, String(sym_filename_string), Length(sym_filename_string)+1);
Insert file_entry AtEnd InList sym_file_list EndInsert;
EndIf
return;
EndCode
#undef File_entry
#undef Source_element
/*+-------------------------------------------------------------------------+
| |
| process_user_input_files |
| |
+-------------------------------------------------------------------------+*/
void process_user_input_files(file_info_list *list,
bit_16 required)
BeginDeclarations
#define List (*list)
byte buf[256] ;
FILE *fil ;
EndDeclarations
BeginCode
scan_out_token();
Repeat
BeginRepeat
get_filename_token(required, list);
If Length(token) Exceeds 0
Then
If index_string(token,0,dot_string) Is 0xFFFF
Then
concat_string(token,default_extension);
EndIf;
// add_extension_to_file(token,default_extension);
If lib_directory.val IsNotNull
Then
strcpy(buf,String(token)) ;
fil = SearchPath(buf, String(lib_directory.val),"r") ;
If fil IsNotNull
Then
fclose(fil) ;
strcpy(String(token),buf) ;
Length(token) = strlen(buf) ;
EndIf
EndIf
process_filename(token);
If index_string(token, 0, colon_string) IsNot 1
Then
linker_error(4, "\"%s\" is an illegal input file name.\n",
String(token));
Else
add_files_to_list(list, token);
EndIf;
EndIf;
RepeatIf more_tokens
EndRepeat;
return;
EndCode
#undef List
/*+-------------------------------------------------------------------------+
| |
| process_user_output_file |
| |
+-------------------------------------------------------------------------+*/
void process_user_output_file(file_info_list *list,
bit_16 required)
BeginDeclarations
file_info_ptr file_entry;
#define File_entry (*file_entry)
#define List (*list)
EndDeclarations
BeginCode
scan_out_token();
Repeat
BeginRepeat
get_filename_token(required, list);
If Length(token) Exceeds 0
Then
process_filename(token);
add_extension_to_file(token,default_extension);
If List.first IsNull
Then
file_entry = (file_info_ptr)
allocate_memory(Bit_32(sizeof(file_info_type)) +
Bit_32(Length(token)));
far_move(File_entry.filename, String(token), Length(token)+1);
Insert file_entry AtEnd InList List EndInsert;
EndIf;
EndIf;
RepeatIf more_tokens
EndRepeat;
return;
EndCode
#undef File_entry
#undef List
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -