/*
* Copyright (c) 2002-2016, the original author or authors.
*
* This software is distributable under the BSD license. See the terms of the
* BSD license in the documentation provided with this software.
*
* http://www.opensource.org/licenses/bsd-license.php
*/
package jline;
import jline.internal.
Log;
/**
* Terminal that is used for OSv. This is seperate to unix terminal
* implementation because exec cannot be used as currently used by UnixTerminal.
*
* This implimentation is derrived from the implementation at
* https://github.com/cloudius-systems/mgmt/blob/master/crash/src/main/java/com/cloudius/cli/OSvTerminal.java
* authored by Or Cohen.
*
* @author <a href-"mailto:orc@fewbytes.com">Or Cohen</a>
* @author <a href="mailto:arun.neelicattu@gmail.com">Arun Neelicattu</a>
* @since 2.13
*/
public class
OSvTerminal
extends
TerminalSupport
{
public
Class<?>
sttyClass = null;
public
Object stty = null;
public
OSvTerminal() {
super(true);
setAnsiSupported(true);
try {
if (
stty == null) {
sttyClass =
Class.
forName("com.cloudius.util.Stty");
stty =
sttyClass.
newInstance();
}
} catch (
Exception e) {
Log.
warn("Failed to load com.cloudius.util.Stty",
e);
}
}
@
Override
public void
init() throws
Exception {
super.init();
if (
stty != null) {
sttyClass.
getMethod("jlineMode").
invoke(
stty);
}
}
@
Override
public void
restore() throws
Exception {
if (
stty != null) {
sttyClass.
getMethod("reset").
invoke(
stty);
}
super.restore();
// Newline in end of restore like in jline.UnixTerminal
System.
out.
println();
}
}