⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userinp.c

📁 CC386 is a general-purpose 32-bit C compiler. It is not an optimizing compiler but given that the co
💻 C
📖 第 1 页 / 共 2 页
字号:
          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 + -