소스 검색

* use ' rather than " as quote character in generated shell scripts
on unix platforms, so that $ is not interpreted as the start of a
variable name (several jvm assembler file names include $ signs)

-- note: the behaviour of that code depended and still depends on
on the platform for which the compiler was compiled, instead
on the platform for which the script is generated. That still
needs to be fixed

git-svn-id: branches/jvmbackend@19749 -

Jonas Maebe 13 년 전
부모
커밋
b3cf95faf6
1개의 변경된 파일21개의 추가작업 그리고 9개의 파일을 삭제
  1. 21 9
      compiler/cutils.pas

+ 21 - 9
compiler/cutils.pas

@@ -915,9 +915,15 @@ implementation
         {$IFDEF MSWINDOWS}
           FORBIDDEN_CHARS = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')',
                              '{', '}', '''', '`', '~'];
+          QUOTE_CHAR = '"';
         {$ELSE}
           FORBIDDEN_CHARS = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')',
                              '{', '}', '''', ':', '\', '`', '~'];
+          {$ifdef unix}
+          QUOTE_CHAR = '''';
+          {$else}
+          QUOTE_CHAR = '"';
+          {$endif}
         {$ENDIF}
       var
         s1 : ansistring;
@@ -925,14 +931,14 @@ implementation
         quoted : boolean;
       begin
         quoted:=false;
-        s1:='"';
+        s1:=QUOTE_CHAR;
         for i:=1 to length(s) do
          begin
            case s[i] of
-             '"' :
+             QUOTE_CHAR :
                begin
                  quoted:=true;
-                 s1:=s1+'\"';
+                 s1:=s1+('\'+QUOTE_CHAR);
                end;
              ' ',
              #128..#255 :
@@ -948,7 +954,7 @@ implementation
            end;
          end;
         if quoted then
-          maybequoted:=s1+'"'
+          maybequoted:=s1+QUOTE_CHAR
         else
           maybequoted:=s;
       end;
@@ -959,9 +965,15 @@ implementation
         {$IFDEF MSWINDOWS}
           FORBIDDEN_CHARS = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')',
                              '{', '}', '''', '`', '~'];
+          QUOTE_CHAR = '"';
         {$ELSE}
           FORBIDDEN_CHARS = ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')',
-                             '{', '}', '''', ':', '\', '`', '~'];
+                             '{', '}', '"', ':', '\', '`', '~'];
+          {$ifdef unix}
+          QUOTE_CHAR = '''';
+          {$else}
+          QUOTE_CHAR = '"';
+          {$endif}
         {$ENDIF}
       var
         s1 : string;
@@ -969,14 +981,14 @@ implementation
         quoted : boolean;
       begin
         quoted:=false;
-        s1:='"';
+        s1:=QUOTE_CHAR;
         for i:=1 to length(s) do
          begin
            case s[i] of
-             '"' :
+             QUOTE_CHAR :
                begin
                  quoted:=true;
-                 s1:=s1+'\"';
+                 s1:=s1+('\'+QUOTE_CHAR);
                end;
              ' ',
              #128..#255 :
@@ -992,7 +1004,7 @@ implementation
            end;
          end;
         if quoted then
-          maybequoted:=s1+'"'
+          maybequoted:=s1+QUOTE_CHAR
         else
           maybequoted:=s;
       end;