You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2019/06/04 03:55:17 UTC
[royale-compiler] branch release_practice updated: filter out CRLF
when building release artifacts
This is an automated email from the ASF dual-hosted git repository.
aharui pushed a commit to branch release_practice
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/release_practice by this push:
new d50436b filter out CRLF when building release artifacts
d50436b is described below
commit d50436b36bd7502e261d1457fca6bfdbfb07c32c
Author: Alex Harui <ah...@apache.org>
AuthorDate: Mon Jun 3 20:55:00 2019 -0700
filter out CRLF when building release artifacts
---
.../compiler/filespecs/FileSpecification.java | 104 ++++++++++++++++++++-
.../projects/RoyaleProjectConfigurator.java | 4 +-
2 files changed, 106 insertions(+), 2 deletions(-)
diff --git a/compiler-common/src/main/java/org/apache/royale/compiler/filespecs/FileSpecification.java b/compiler-common/src/main/java/org/apache/royale/compiler/filespecs/FileSpecification.java
index ba553f0..b77a2ff 100644
--- a/compiler-common/src/main/java/org/apache/royale/compiler/filespecs/FileSpecification.java
+++ b/compiler-common/src/main/java/org/apache/royale/compiler/filespecs/FileSpecification.java
@@ -26,6 +26,7 @@ import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
+import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -47,6 +48,8 @@ public class FileSpecification extends BaseFileSpecification implements IBinaryF
super(path);
}
+ public static boolean useCRLFFilter = false;
+
@Override
public int hashCode() {
final int prime = 31;
@@ -116,9 +119,12 @@ public class FileSpecification extends BaseFileSpecification implements IBinaryF
final BufferedInputStream strm = new BufferedInputStream(new FileInputStream(file));
final BOM bom = getBOM(strm);
strm.skip(bom.pattern.length);
+
+ final NoCRLFInputStream input = new NoCRLFInputStream(strm);
final Reader reader = new BufferedReader(
- new InputStreamReader(strm, bom.charset));
+ new InputStreamReader(useCRLFFilter ? input : strm, bom.charset));
+ input.close();
return reader;
}
@@ -133,4 +139,100 @@ public class FileSpecification extends BaseFileSpecification implements IBinaryF
File fileHandle = getFileHandle();
fileHandle.setLastModified(fileDate);
}
+
+ class NoCRLFInputStream extends FilterInputStream
+ {
+ public NoCRLFInputStream(BufferedInputStream strm)
+ {
+ super(strm);
+ }
+
+ /**
+ * if we read a CR, just skip it, assuming it will
+ * be followed by an LF
+ */
+ @Override
+ public int read() throws IOException
+ {
+ int retval = super.read();
+ if (retval == '\r')
+ retval = super.read();
+ return retval;
+ }
+
+ /**
+ * if we read a CR, just skip it, assuming it will
+ * be followed by an LF
+ * @throws IOException
+ */
+ @Override
+ public int read(byte[] b) throws IOException
+ {
+ int n = b.length;
+ byte[] temp = new byte[b.length];
+ int retval = super.read(temp);
+ if (retval == -1)
+ return -1;
+
+ int j = 0;
+ for (int i = 0; i < n; i++)
+ {
+ byte c = temp[i];
+ if (c == '\r')
+ continue;
+ else
+ b[j++] = c;
+ }
+ while (j < n)
+ {
+ int extra = super.read(b, j, 1);
+ if (extra == -1)
+ break;
+ byte c = b[j];
+ if (c == '\r')
+ continue;
+ else
+ j++;
+ }
+ return j;
+ }
+
+ /**
+ * if we read a CR, just skip it, assuming it will
+ * be followed by an LF
+ * @throws IOException
+ */
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException
+ {
+ byte[] temp = new byte[len];
+ int retval = super.read(temp, off, len);
+ if (retval == -1)
+ return -1;
+ if (retval == 0)
+ return 0;
+
+ int j = 0;
+ for (int i = off; i < retval; i++)
+ {
+ byte c = temp[i];
+ if (c == '\r')
+ continue;
+ else
+ b[off + j++] = c;
+ }
+// System.out.println(new String(b));
+ while (j < retval)
+ {
+ int extra = super.read(b, off + j, 1);
+ if (extra == -1)
+ break;
+ byte c = b[off + j];
+ if (c == '\r')
+ continue;
+ j++;
+ }
+ return j;
+ }
+ }
}
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProjectConfigurator.java b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProjectConfigurator.java
index 2ad763a..c68f757 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProjectConfigurator.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/RoyaleProjectConfigurator.java
@@ -30,6 +30,7 @@ import org.apache.royale.abc.semantics.Namespace;
import org.apache.royale.abc.semantics.Nsset;
import org.apache.royale.compiler.config.Configuration;
import org.apache.royale.compiler.config.Configurator;
+import org.apache.royale.compiler.filespecs.FileSpecification;
import org.apache.royale.compiler.fxg.flex.FlexFXG2SWFTranscoder;
import org.apache.royale.compiler.internal.as.codegen.BindableHelper;
import org.apache.royale.compiler.internal.config.RoyaleTargetSettings;
@@ -267,7 +268,8 @@ public class RoyaleProjectConfigurator extends Configurator
project.setAllowAbstractClasses(configuration.getCompilerAllowAbstractClasses());
project.setSwfDebugfileAlias(configuration.getSwfDebugfileAlias());
-
+ if (configuration.getSwfDebugfileAlias() != null)
+ FileSpecification.useCRLFFilter = true;
DataTranscoder.embedClassName = configuration.getByteArrayEmbedClass();
}
}