/* * 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(); } }