Browse Source

Merged revisions 2134,2136 via svnmerge from
http://svn.freepascal.org/svn/fpc/trunk

r2134 (florian)
* proper error if a directory is passed as configuration file


r2136 (florian)
* fixed broken DirectoryExists

git-svn-id: branches/fixes_2_0@2138 -

florian 20 năm trước cách đây
mục cha
commit
edcef083e3
5 tập tin đã thay đổi với 94 bổ sung77 xóa
  1. 9 1
      compiler/globals.pas
  2. 2 0
      compiler/msg/errore.msg
  3. 3 2
      compiler/msgidx.inc
  4. 74 74
      compiler/msgtxt.inc
  5. 6 0
      compiler/options.pas

+ 9 - 1
compiler/globals.pas

@@ -39,8 +39,9 @@ interface
       Baseunix,unix,
   {$endif}
 {$endif}
-{$IFDEF USE_SYSUTILS}
+      { comphook pulls in sysutils anyways }
       SysUtils,
+{$IFDEF USE_SYSUTILS}
 {$ELSE USE_SYSUTILS}
       strings,
       dos,
@@ -309,6 +310,7 @@ interface
     function  path_absolute(const s : string) : boolean;
     Function  PathExists ( F : String) : Boolean;
     Function  FileExists ( Const F : String) : Boolean;
+    Function  DirectoryExists ( Const F : String) : Boolean;
     function  FileExistsNonCase(const path,fn:string;var foundfile:string):boolean;
     Function  RemoveFile(const f:string):boolean;
     Function  RemoveDir(d:string):boolean;
@@ -620,6 +622,12 @@ implementation
       end;
 
 
+    Function DirectoryExists ( Const F : String) : Boolean;
+      begin
+        Result:=SysUtils.DirectoryExists(f);
+      end;
+
+
     function FileExistsNonCase(const path,fn:string;var foundfile:string):boolean;
       var
         fn2 : string;

+ 2 - 0
compiler/msg/errore.msg

@@ -2121,6 +2121,8 @@ option_found_file=11035_D_found source file name "$1"
 % Additional infos about options, displayed
 % when you have debug option turned on.
 option_code_page_not_available=11039_E_Unknown code page
+option_config_is_dir=11040_F_Config file $1 is a directory
+% Directories can not be used as configuration files.
 %\end{description}
 # EndOfTeX
 

+ 3 - 2
compiler/msgidx.inc

@@ -658,13 +658,14 @@ const
   option_read_config_file=11034;
   option_found_file=11035;
   option_code_page_not_available=11039;
+  option_config_is_dir=11040;
   option_logo=11023;
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 39156;
+  MsgTxtSize = 39194;
 
   MsgIdxMax : array[1..20] of longint=(
     19,74,216,59,59,47,100,20,135,60,
-    40,1,1,1,1,1,1,1,1,1
+    41,1,1,1,1,1,1,1,1,1
   );

+ 74 - 74
compiler/msgtxt.inc

@@ -710,18 +710,18 @@ const msgtxt : array[0..000163,1..240] of char=(
   '11034_D_Reading config file "$1"'#000+
   '11035_D_found source file name "$1"'#000+
   '11039_E_Unknown code page'#000+
-  '11023_Free Pascal Compiler ver','sion $FPCVERSION [$FPCDATE] for $FPCCP'+
-  'U'#010+
+  '11040_F_Config file $1 is a di','rectory'#000+
+  '11023_Free Pascal Compiler version $FPCVERSION [$FPCDATE] for $FPCCPU'#010+
   'Copyright (c) 1993-2005 by Florian Klaempfl'#000+
   '11024_Free Pascal Compiler version $FPCVERSION'#010+
   #010+
   'Compiler Date      : $FPCDATE'#010+
   'Compiler CPU Target: $FPCCPU'#010+
   #010+
-  'Supported targets:'#010+
+  'Supported ','targets:'#010+
   '  $OSTARGETS'#010+
   #010+
-  'Supported CPU i','nstruction sets:'#010+
+  'Supported CPU instruction sets:'#010+
   '  $INSTRUCTIONSETS'#010+
   #010+
   'Supported FPU instruction sets:'#010+
@@ -730,169 +730,169 @@ const msgtxt : array[0..000163,1..240] of char=(
   'This program comes under the GNU General Public Licence'#010+
   'For more information read COPYING.FPC'#010+
   #010+
-  'Report bugs,suggestions etc to:'#010+
-  '                 bugr','[email protected]'#000+
+  'Report bugs,sug','gestions etc to:'#010+
+  '                 [email protected]'#000+
   '11025_**0*_put + after a boolean switch option to enable it, - to disa'+
   'ble it'#010+
   '**1a_the compiler doesn'#039't delete the generated assembler file'#010+
-  '**2al_list sourcecode lines in assembler file'#010+
-  '**2an_list node info in assembler fil','e'#010+
+  '**2al_list sourcecode lines in assembler file',#010+
+  '**2an_list node info in assembler file'#010+
   '*L2ap_use pipes instead of creating temporary assembler files'#010+
   '**2ar_list register allocation/release info in assembler file'#010+
   '**2at_list temp allocation/release info in assembler file'#010+
-  '**1A<x>_output format:'#010+
-  '**2Adefault_use default assembler',#010+
+  '**1A<x>_output for','mat:'#010+
+  '**2Adefault_use default assembler'#010+
   '3*2Aas_assemble using GNU AS'#010+
   '3*2Anasmcoff_coff (Go32v2) file using Nasm'#010+
   '3*2Anasmelf_elf32 (Linux) file using Nasm'#010+
   '3*2Anasmwin32_Win32 object file using Nasm'#010+
-  '3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+
-  '3*2Awasm_obj file using Wasm (Wat','com)'#010+
+  '3*2Anasmwdosx_Win32/WDOSX object file using ','Nasm'#010+
+  '3*2Awasm_obj file using Wasm (Watcom)'#010+
   '3*2Anasmobj_obj file using Nasm'#010+
   '3*2Amasm_obj file using Masm (Microsoft)'#010+
   '3*2Atasm_obj file using Tasm (Borland)'#010+
   '3*2Aelf_elf32 (Linux) using internal writer'#010+
-  '3*2Acoff_coff (Go32v2) using internal writer'#010+
-  '3*2Apecoff_pecoff (Win32) using in','ternal writer'#010+
+  '3*2Acoff_coff (Go32v2) using internal wri','ter'#010+
+  '3*2Apecoff_pecoff (Win32) using internal writer'#010+
   '4*2Aas_assemble using GNU AS'#010+
   '6*2Aas_Unix o-file using GNU AS'#010+
   '6*2Agas_GNU Motorola assembler'#010+
   '6*2Amit_MIT Syntax (old GAS)'#010+
   '6*2Amot_Standard Motorola assembler'#010+
   'A*2Aas_assemble using GNU AS'#010+
-  'P*2Aas_assemble using GNU AS'#010+
-  'S*2Aas_asse','mble using GNU AS'#010+
+  'P*','2Aas_assemble using GNU AS'#010+
+  'S*2Aas_assemble using GNU AS'#010+
   '**1b_generate browser info'#010+
   '**2bl_generate local symbol info'#010+
   '**1B_build all modules'#010+
   '**1C<x>_code generation options:'#010+
   '**2Cc<x>_set default calling convention to <x>'#010+
-  '**2CD_create also dynamic library (not supported)'#010+
-  '**2Ce_Com','pilation with emulated floating point opcodes'#010+
+  '**2CD_create also dyn','amic library (not supported)'#010+
+  '**2Ce_Compilation with emulated floating point opcodes'#010+
   '**2Cf<x>_Select fpu instruction set to use, see fpc -i for possible va'+
   'lues'#010+
   '**2Cg_Generate PIC code'#010+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
-  '**2Ci_IO-checking'#010+
-  '**2Cn_omit linking stage'#010,
+  '**2Ci','_IO-checking'#010+
+  '**2Cn_omit linking stage'#010+
   '**2Co_check overflow of integer operations'#010+
   '**2Cp<x>_select instruction set, see fpc -i for possible values'#010+
   '**2Cr_range checking'#010+
   '**2CR_verify object method call validity'#010+
   '**2Cs<n>_set stack size to <n>'#010+
-  '**2Ct_stack checking'#010+
-  '**2CX_create also s','martlinked library'#010+
+  '**','2Ct_stack checking'#010+
+  '**2CX_create also smartlinked library'#010+
   '**1d<x>_defines the symbol <x>'#010+
   '**1D_generate a DEF file'#010+
   '**2Dd<x>_set description to <x>'#010+
   '**2Dv<x>_set DLL version to <x>'#010+
   '*O2Dw_PM application'#010+
   '**1e<x>_set path to executable'#010+
-  '**1E_same as -Cn'#010+
-  '**1F<x>_set file names and paths',':'#010+
+  '**1E_same a','s -Cn'#010+
+  '**1F<x>_set file names and paths:'#010+
   '**2Fa<x>[,y]_for a program load first units <x> and [y] before uses is'+
   ' parsed'#010+
   '**2Fc<x>_sets input codepage to <x>'#010+
   '**2FD<x>_sets the directory where to search for compiler utilities'#010+
-  '**2Fe<x>_redirect error output to <x>'#010+
-  '**2FE<x>_set exe/un','it output path to <x>'#010+
+  '**2Fe<x>_redirect e','rror output to <x>'#010+
+  '**2FE<x>_set exe/unit output path to <x>'#010+
   '**2Fi<x>_adds <x> to include path'#010+
   '**2Fl<x>_adds <x> to library path'#010+
   '**2FL<x>_uses <x> as dynamic linker'#010+
   '**2Fo<x>_adds <x> to object path'#010+
   '**2Fr<x>_load error message file <x>'#010+
-  '**2Fu<x>_adds <x> to unit path'#010+
-  '**2FU<x>_set ','unit output path to <x>, overrides -FE'#010+
+  '**2Fu<','x>_adds <x> to unit path'#010+
+  '**2FU<x>_set unit output path to <x>, overrides -FE'#010+
   '*g1g_generate debugger information:'#010+
   '*g2gc_generate checks for pointers'#010+
   '*g2gd_use dbx'#010+
   '*g2gg_use gsym'#010+
   '*g2gh_use heap trace unit (for memory leak debugging)'#010+
-  '*g2gl_use line info unit to show more info for ','backtraces'#010+
+  '*g2gl_use',' line info unit to show more info for backtraces'#010+
   '*g2gv_generates programs traceable with valgrind'#010+
   '*g2gw_generate dwarf debugging info'#010+
   '**1i_information'#010+
   '**2iD_return compiler date'#010+
   '**2iV_return compiler version'#010+
   '**2iSO_return compiler OS'#010+
-  '**2iSP_return compiler processor'#010+
-  '**2iTO_retu','rn target OS'#010+
+  '**2iSP','_return compiler processor'#010+
+  '**2iTO_return target OS'#010+
   '**2iTP_return target processor'#010+
   '**1I<x>_adds <x> to include path'#010+
   '**1k<x>_Pass <x> to the linker'#010+
   '**1l_write logo'#010+
   '**1M<x>_set language mode to <x>'#010+
   '**2Mfpc_free pascal dialect (default)'#010+
-  '**2Mobjfpc_switch some Delphi 2 extensions on',#010+
+  '**2Mobj','fpc_switch some Delphi 2 extensions on'#010+
   '**2Mdelphi_tries to be Delphi compatible'#010+
   '**2Mtp_tries to be TP/BP 7.0 compatible'#010+
   '**2Mgpc_tries to be gpc compatible'#010+
   '**2Mmacpas_tries to be compatible to the macintosh pascal dialects'#010+
-  '**1n_don'#039't read the default config file'#010+
-  '**1o<x>_change t','he name of the executable produced to <x>'#010+
+  '**1n_don'#039't read th','e default config file'#010+
+  '**1o<x>_change the name of the executable produced to <x>'#010+
   '**1O<x>_optimizations:'#010+
   '3*2Oa_<type>=<values> set alignment'#010+
   '3*2Og_generate smaller code'#010+
   '3*2OG_generate faster code (default)'#010+
-  '**2Or_keep certain variables in registers'#010+
-  '3*2Ou_enable uncertain optimizat','ions (see docs)'#010+
+  '**2Or_keep certain variables in regi','sters'#010+
+  '3*2Ou_enable uncertain optimizations (see docs)'#010+
   '3*2O1_level 1 optimizations (quick optimizations)'#010+
   '3*2O2_level 2 optimizations (-O1 + slower optimizations)'#010+
   '3*2O3_level 3 optimizations (-O2 repeatedly, max 5 times)'#010+
-  '3*2Op<x>_target processor:'#010+
-  '3*3Op1_set target processor to 3','86/486'#010+
+  '3*2Op<x>_target proce','ssor:'#010+
+  '3*3Op1_set target processor to 386/486'#010+
   '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
   '3*3Op3_set target processor to PPro/PII/c6x86/K6 (tm)'#010+
   '6*2Og_generate smaller code'#010+
   '6*2OG_generate faster code (default)'#010+
-  '6*2Ox_optimize maximum (still BUGGY!!!)'#010+
-  '6*2O0_set target pr','ocessor to a MC68000'#010+
+  '6*2Ox_optimize maximu','m (still BUGGY!!!)'#010+
+  '6*2O0_set target processor to a MC68000'#010+
   '6*2O2_set target processor to a MC68020+ (default)'#010+
   '**1pg_generate profile code for gprof (defines FPC_PROFILE)'#010+
   '**1R<x>_assembler reading style:'#010+
   '**2Rdefault_use default assembler'#010+
-  '3*2Ratt_read AT&T style assembler'#010+
-  '3*2Rint','el_read Intel style assembler'#010+
+  '3*2','Ratt_read AT&T style assembler'#010+
+  '3*2Rintel_read Intel style assembler'#010+
   '6*2RMOT_read motorola style assembler'#010+
   '**1S<x>_syntax options:'#010+
   '**2S2_same as -Mobjfpc'#010+
   '**2Sc_supports operators like C (*=,+=,/= and -=)'#010+
   '**2Sa_include assertion code.'#010+
-  '**2Sd_same as -Mdelphi'#010+
-  '**2Se<x>_error options','. <x> is a combination of the following:'#010+
+  '**2Sd_s','ame as -Mdelphi'#010+
+  '**2Se<x>_error options. <x> is a combination of the following:'#010+
   '**3*_<n> : compiler stops after the <n> errors (default is 1)'#010+
   '**3*_w : compiler stops also after warnings'#010+
   '**3*_n : compiler stops also after notes'#010+
-  '**3*_h : compiler stops also after hints'#010+
-  '**2Sg_allow',' LABEL and GOTO'#010+
+  '**3*_h : compi','ler stops also after hints'#010+
+  '**2Sg_allow LABEL and GOTO'#010+
   '**2Sh_Use ansistrings'#010+
   '**2Si_support C++ styled INLINE'#010+
   '**2Sk_load fpcylix unit'#010+
   '**2SI<x>_set interface style to <x>'#010+
   '**3SIcom_COM compatible interface (default)'#010+
-  '**3SIcorba_CORBA compatible interface'#010+
-  '**2Sm_support macros like C ','(global)'#010+
+  '**3SIcorba_CORBA compatible ','interface'#010+
+  '**2Sm_support macros like C (global)'#010+
   '**2So_same as -Mtp'#010+
   '**2Sp_same as -Mgpc'#010+
   '**2Ss_constructor name must be init (destructor must be done)'#010+
   '**2St_allow static keyword in objects'#010+
   '**1s_don'#039't call assembler and linker'#010+
-  '**2sh_Generate script to link on host'#010+
-  '**2st_Generate sc','ript to link on target'#010+
+  '**2sh_Generate sc','ript to link on host'#010+
+  '**2st_Generate script to link on target'#010+
   '**2sr_Skip register allocation phase (use with -alr)'#010+
   '**1T<x>_Target operating system:'#010+
   '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
   '3*2Tfreebsd_FreeBSD'#010+
-  '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+
-  '3*2Tlinux_Lin','ux'#010+
+  '3*2Tgo32v2_Version 2 of',' DJ Delorie DOS extender'#010+
+  '3*2Tlinux_Linux'#010+
   '3*2Tnetbsd_NetBSD'#010+
   '3*2Tnetware_Novell Netware Module (clib)'#010+
   '3*2Tnetwlibc_Novell Netware Module (libc)'#010+
   '3*2Topenbsd_OpenBSD'#010+
   '3*2Tos2_OS/2 / eComStation'#010+
   '3*2Tsunos_SunOS/Solaris'#010+
-  '3*2Twatcom_Watcom compatible DOS extender'#010+
-  '3*2Twdosx_WDOSX DOS ext','ender'#010+
+  '3*2Twatcom_Watcom compatibl','e DOS extender'#010+
+  '3*2Twdosx_WDOSX DOS extender'#010+
   '3*2Twin32_Windows 32 Bit'#010+
   '4*2Tlinux_Linux'#010+
   '6*2Tamiga_Commodore Amiga'#010+
@@ -901,56 +901,56 @@ const msgtxt : array[0..000163,1..240] of char=(
   '6*2Tmacos_Macintosh m68k (not supported)'#010+
   '6*2Tpalmos_PalmOS'#010+
   'A*2Tlinux_Linux'#010+
-  'P*2Tdarwin_Darwin and MacOS X on PowerPC'#010+
-  'P*2Tl','inux_Linux on PowerPC'#010+
+  'P*2Tdarw','in_Darwin and MacOS X on PowerPC'#010+
+  'P*2Tlinux_Linux on PowerPC'#010+
   'P*2Tmacos_MacOS (classic) on PowerPC'#010+
   'P*2Tmorphos_MorphOS'#010+
   'S*2Tlinux_Linux'#010+
   '**1u<x>_undefines the symbol <x>'#010+
   '**1U_unit options:'#010+
   '**2Un_don'#039't check the unit name'#010+
-  '**2Ur_generate release unit files'#010+
-  '**2Us_compile a system unit',#010+
+  '**2Ur_generate release ','unit files'#010+
+  '**2Us_compile a system unit'#010+
   '**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+
   '**2*_e : Show errors (default)       0 : Show nothing (except errors)'#010+
   '**2*_w : Show warnings               u : Show unit info'#010+
-  '**2*_n : Show notes                  t : Show ','tried/used files'#010+
+  '**2*_n :',' Show notes                  t : Show tried/used files'#010+
   '**2*_h : Show hints                  c : Show conditionals'#010+
   '**2*_i : Show general info           d : Show debug info'#010+
-  '**2*_l : Show linenumbers            r : Rhide/GCC compatibility mode'#010+
-  '**2*_a : Show everything             ','x : Executable info (Win32 only'+
-  ')'#010+
+  '**2*_l : Show linenumbers            r : Rhide/GCC compatibility mode',
+  #010+
+  '**2*_a : Show everything             x : Executable info (Win32 only)'#010+
   '**2*_b : Write file names messages with full path'#010+
   '**2*_v : write fpcdebug.txt with     p : Write tree.log with parse tre'+
   'e'#010+
   '**2*_    lots of debugging info'#010+
-  '3*1W<x>_Win32-like target options'#010+
-  '3*2WB_Create a relo','catable image'#010+
+  '3*1W<x>_Win32-l','ike target options'#010+
+  '3*2WB_Create a relocatable image'#010+
   '3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+
   '3*2WC_Specify console type application'#010+
   '3*2WD_Use DEFFILE to export functions of DLL or EXE'#010+
-  '3*2WF_Specify full-screen type application (OS/2 only)'#010+
-  '3*2WG_Specify graphic type appl','ication'#010+
+  '3*2WF_Specify full-screen type application (OS/2',' only)'#010+
+  '3*2WG_Specify graphic type application'#010+
   '3*2WN_Do not generate relocation code (necessary for debugging)'#010+
   '3*2WR_Generate relocation code'#010+
   'P*2WC_Specify console type application (MacOS only)'#010+
-  'P*2WG_Specify graphic type application (MacOS only)'#010+
-  'P*2WT_Specify tool type applicati','on (MPW tool, MacOS only)'#010+
+  'P*2WG_Specify graphic type application (MacOS o','nly)'#010+
+  'P*2WT_Specify tool type application (MPW tool, MacOS only)'#010+
   '**1X_executable options:'#010+
   '**2Xc_pass --shared to the linker (Unix only)'#010+
   '**2Xd_don'#039't use standard library search path (needed for cross com'+
   'pile)'#010+
-  '**2XD_try to link units dynamic          (defines FPC_LINK_DYNAMIC)'#010+
-  '**2','Xm_generate link map'#010+
+  '**2XD_try to link units dynamic  ','        (defines FPC_LINK_DYNAMIC)'#010+
+  '**2Xm_generate link map'#010+
   '**2XM<x>_set the name of the '#039'main'#039' program routine (default i'+
   's '#039'main'#039')'#010+
   '**2XP<x>_prepend the binutils names with the prefix <x>'#010+
-  '**2Xr<x>_set library search path to <x> (needed for cross compile)'#010+
-  '**2Xs_strip all symbols ','from executable'#010+
+  '**2Xr<x>_set library search path to <x> (needed for c','ross compile)'#010+
+  '**2Xs_strip all symbols from executable'#010+
   '**2XS_try to link units static (default) (defines FPC_LINK_STATIC)'#010+
   '**2Xt_link with static libraries (-static is passed to linker)'#010+
-  '**2XX_try to link units smart            (defines FPC_LINK_SMART)'#010+
+  '**2XX_try to link units smart            (defines FPC_LI','NK_SMART)'#010+
   '**1*_'#010+
   '**1?_shows this help'#010+
-  '*','*1h_shows this help without waiting'#000
+  '**1h_shows this help without waiting'#000
 );

+ 6 - 0
compiler/options.pas

@@ -1302,6 +1302,12 @@ begin
   Option_read:=false;
   If FileLevel>MaxLevel then
    Message(option_too_many_cfg_files);
+{ Maybe It's Directory ?}   //Jaro Change:
+  if DirectoryExists(filename) then
+    begin
+       Message1(option_config_is_dir,filename);
+       exit;
+    end;
 { open file }
   Message1(option_using_file,filename);
 {$ifdef USE_SYSUTILS}