瀏覽代碼

* 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;