Przeglądaj źródła

* 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 lat temu
rodzic
commit
b3cf95faf6
1 zmienionych plików z 21 dodań i 9 usunięć
  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;