@Override public boolean canWork() { try { if (File.pathSeparatorChar!=':') return false; // quick test to reject non-Unix without loading all the rest of the classes args = JavaVMArguments.current(); // go through the whole motion to make sure all the relevant classes are loaded now LIBC.getdtablesize(); int v = LIBC.fcntl(99999, F_GETFD); LIBC.fcntl(99999, F_SETFD, v); Daemon.getCurrentExecutable(); LIBC.execv("positively/no/such/executable", new StringArray(new String[]{"a","b","c"})); return true; } catch (UnsupportedOperationException | LinkageError | IOException e) { LOGGER.log(FINE, getClass()+" unsuitable", e); return false; } }
public void restart() throws Exception { // close all files upon exec, except stdin, stdout, and stderr int sz = LIBC.getdtablesize(); for (int i = 3; i < sz; i++) { int flags = LIBC.fcntl(i, F_GETFD); if (flags < 0) continue; LIBC.fcntl(i, F_SETFD, flags | FD_CLOEXEC); } // exec to self String exe = Daemon.getCurrentExecutable(); LIBC.execv(exe, new StringArray(args.toArray(new String[args.size()]))); throw new IOException("Failed to exec '" + exe + "' " + LIBC.strerror(Native.getLastError())); }
@Override public void restart() throws IOException, InterruptedException { Jenkins jenkins = Jenkins.getInstanceOrNull(); // guard against repeated concurrent calls to restart try { if (jenkins != null) { jenkins.cleanUp(); } } catch (Exception e) { LOGGER.log(Level.SEVERE, "Failed to clean up. Restart will continue.", e); } // close all files upon exec, except stdin, stdout, and stderr int sz = LIBC.getdtablesize(); for(int i=3; i<sz; i++) { int flags = LIBC.fcntl(i, F_GETFD); if(flags<0) continue; LIBC.fcntl(i, F_SETFD,flags| FD_CLOEXEC); } // exec to self String exe = args.get(0); LIBC.execvp(exe, new StringArray(args.toArray(new String[args.size()]))); throw new IOException("Failed to exec '"+exe+"' "+LIBC.strerror(Native.getLastError())); }
@Override public Object toNative(Object value, ToNativeContext context) { if (value == null) return null; if (value instanceof String[]) { return new StringArray((String[])value, true); } return new WString(value.toString()); } @Override
} else if (cls == String[].class || cls == WString.class) { StringArray sa = cls == String[].class ? new StringArray((String[])value, encoding) : new StringArray((WString[])value);
/** * Initializes Tesseract engine. */ protected void init() { api = TessAPI.INSTANCE; handle = api.TessBaseAPICreate(); StringArray sarray = new StringArray(configList.toArray(new String[0])); PointerByReference configs = new PointerByReference(); configs.setPointer(sarray); api.TessBaseAPIInit1(handle, datapath, language, ocrEngineMode, configs, configList.size()); if (psm > -1) { api.TessBaseAPISetPageSegMode(handle, psm); } }
/** * Initializes Tesseract engine. */ protected void init() { handle = TessBaseAPICreate(); StringArray sarray = new StringArray(configList.toArray(new String[0])); PointerByReference configs = new PointerByReference(); configs.setPointer(sarray); TessBaseAPIInit1(handle, datapath, language, ocrEngineMode, configs, configList.size()); if (psm > -1) { TessBaseAPISetPageSegMode(handle, psm); } }
return new StringArray((String[])arg, encoding); } else if (WString[].class == argClass) { return new StringArray((WString[])arg); } else if (Pointer[].class == argClass) { return new PointerArray((Pointer[])arg);
public void setRgpszUsageIdentier(String[] array) { if (array == null || array.length == 0) { cUsageIdentifier = 0; rgpszUsageIdentifier = null; } else { cUsageIdentifier = array.length; rgpszUsageIdentifier = new StringArray(array); } } }
@Override public int execve(String command, String[] argv, String[] env) { StringArray argvp = (argv == null) ? new StringArray(new String[]{command}) : new StringArray(argv); StringArray envp = (env == null) ? null : new StringArray(env); return m_Clib.execve(command, argvp, envp); }
@Override public int execve(String command, String[] argv, String[] env) { StringArray argvp = (argv == null) ? new StringArray(new String[]{command}) : new StringArray(argv); StringArray envp = (env == null) ? null : new StringArray(env); return m_Clib.execve(command, argvp, envp); }
@Override public int execve(String command, String[] argv, String[] env) { StringArray argvp = (argv == null) ? new StringArray(new String[]{command}) : new StringArray(argv); StringArray envp = (env == null) ? null : new StringArray(env); return m_Clib.execve(command, argvp, envp); }
@Override public void execv(String path, String[] argv) { StringArray argvp = (argv == null) ? new StringArray(new String[]{path}) : new StringArray(argv); m_Clib.execv(path, argvp); }
@Override public void execv(String path, String[] argv) { StringArray argvp = (argv == null) ? new StringArray(new String[]{path}) : new StringArray(argv); m_Clib.execv(path, argvp); }
@Override public void execv(String path, String[] argv) { StringArray argvp = (argv == null) ? new StringArray(new String[]{path}) : new StringArray(argv); m_Clib.execv(path, argvp); }
@Override public void execv(String path, String[] argv) { StringArray argvp = (argv == null) ? new StringArray(new String[]{path}) : new StringArray(argv); m_Clib.execv(path, argvp); }
@Override public Object toNative(Object value, ToNativeContext context) { if (value == null) return null; if (value instanceof String[]) { return new StringArray((String[])value, true); } return new WString(value.toString()); } @Override
StringArray sa = new StringArray(); sa.addStringToArray("Hello, world"); String[] array = sa.getsTA(); for (String s: array) System.out.println(s);
@SuppressWarnings("unchecked") @Override public void synchronize(List list, long timeout, boolean dispose) throws DrmaaException { StringArray jobIds = new StringArray((String[]) list.toArray(new String[list.size()])); checkError(LibDrmaa.drmaa_synchronize(jobIds, new NativeLong(timeout), dispose ? 1 : 0, getError(), LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN)); }
@Test(enabled=false) public void testReadQueueLimits() { String queue = "hour"; StringArray queues = new StringArray(new String[] {queue}); IntByReference numQueues = new IntByReference(1); queueInfoEnt queueInfo = LibBat.lsb_queueinfo(queues, numQueues, null, null, 0); Assert.assertEquals(numQueues.getValue(), 1); Assert.assertNotNull(queueInfo); Assert.assertEquals(queueInfo.queue, queue); int runLimit = queueInfo.rLimits[LibLsf.LSF_RLIMIT_RUN]; Assert.assertTrue(runLimit > 0, "LSF run limit is not greater than zero: " + runLimit); }