Skip to content

Commit

Permalink
Upgrade to jansi 1.16-SNAPSHOT
Browse files Browse the repository at this point in the history
  • Loading branch information
gnodet committed Apr 27, 2017
1 parent 474e6c1 commit 7dedd74
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 38 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
<maven.compiler.target>1.8</maven.compiler.target>

<jna.version>4.2.2</jna.version>
<jansi.version>1.15</jansi.version>
<jansi.version>1.16-SNAPSHOT</jansi.version>
<juniversalchardet.version>1.0.3</juniversalchardet.version>
<sshd.version>1.4.0</sshd.version>
<easymock.version>3.3.1</easymock.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,10 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static org.fusesource.jansi.internal.CLibrary.TCSANOW;
import static org.jline.terminal.impl.jansi.JansiSupportImpl.JANSI_MAJOR_VERSION;
import static org.jline.terminal.impl.jansi.JansiSupportImpl.JANSI_MINOR_VERSION;
import static org.jline.utils.ExecHelper.exec;

public abstract class JansiNativePty implements Pty {
Expand All @@ -44,34 +42,8 @@ public JansiNativePty(int master, FileDescriptor masterFD, int slave, FileDescri
this.slaveFD = slaveFD;
}

static final boolean useTtyName;
static {
boolean doUseTtyName = false;
try {
URL url = CLibrary.class.getClassLoader().getResource("META-INF/maven/org.fusesource.jansi/jansi-native/pom.properties");
if (url != null) {
Properties props = new Properties();
try (InputStream is = url.openStream()) {
props.load(is);
}
String v = props.getProperty("version");
if (v != null) {
Matcher m = Pattern.compile("([0-9]+)\\.([0-9]+)([\\.-]\\S+)?").matcher(v);
if (m.matches()) {
int major = Integer.parseInt(m.group(1));
int minor = Integer.parseInt(m.group(2));
doUseTtyName = major > 1 || major == 1 && minor > 6;
}
}
}
} catch (Exception e) {
// Ignore
}
useTtyName = doUseTtyName;
}

protected static String ttyname() throws IOException {
if (useTtyName) {
if (JANSI_MAJOR_VERSION > 1 || JANSI_MAJOR_VERSION == 1 && JANSI_MINOR_VERSION >= 16) {
String name = CLibrary.ttyname(0);
if (name != null) {
name = name.trim();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
*/
package org.jline.terminal.impl.jansi;

import org.fusesource.jansi.internal.CLibrary;
import org.jline.terminal.Terminal;
import org.jline.terminal.impl.jansi.freebsd.FreeBsdNativePty;
import org.jline.terminal.impl.jansi.linux.LinuxNativePty;
Expand All @@ -18,16 +19,38 @@
import org.jline.terminal.spi.Pty;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JansiSupportImpl implements JansiSupport {

static final int JANSI_MAJOR_VERSION;
static final int JANSI_MINOR_VERSION;
static {
int major = 0, minor = 0;
try {
String v = CLibrary.class.getPackage().getImplementationVersion();
if (v != null) {
Matcher m = Pattern.compile("([0-9]+)\\.([0-9]+)([\\.-]\\S+)?").matcher(v);
if (m.matches()) {
major = Integer.parseInt(m.group(1));
minor = Integer.parseInt(m.group(2));
}
}
} catch (Throwable t) {
// Ignore
}
JANSI_MAJOR_VERSION = major;
JANSI_MINOR_VERSION = minor;
}

@Override
public Pty current() throws IOException {
String osName = System.getProperty("os.name");
if (osName.startsWith("Linux")) {
// This leads to java.lang.UnsatisfiedLinkError: org.fusesource.jansi.internal.CLibrary.ioctl(IJLorg/fusesource/jansi/internal/CLibrary$WinSize;)I
// so disable it until jansi is fixed, see #112
// return LinuxNativePty.current();
if (JANSI_MAJOR_VERSION > 1 || JANSI_MAJOR_VERSION == 1 && JANSI_MINOR_VERSION >= 16) {
return LinuxNativePty.current();
}
}
else if (osName.startsWith("Mac") || osName.startsWith("Darwin")) {
return OsXNativePty.current();
Expand All @@ -37,15 +60,16 @@ else if (osName.startsWith("Solaris") || osName.startsWith("SunOS")) {
// return SolarisNativePty.current();
}
else if (osName.startsWith("FreeBSD")) {
// FreeBSD is not supported by jansi
// return FreeBsdNativePty.current();
if (JANSI_MAJOR_VERSION > 1 || JANSI_MAJOR_VERSION == 1 && JANSI_MINOR_VERSION >= 16) {
return FreeBsdNativePty.current();
}
}
throw new UnsupportedOperationException();
}

@Override
public Terminal winSysTerminal(String name, boolean nativeSignals, Terminal.SignalHandler signalHandler) throws IOException {
return new JansiWinSysTerminal(name, nativeSignals, signalHandler);
return new JansiWinSysTerminal(name, nativeSignals, signalHandler);
}

}

0 comments on commit 7dedd74

Please sign in to comment.