@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; } }
/** Read back from native memory. */ @Override public void read() { boolean returnWide = original instanceof WString[]; boolean wide = NativeString.WIDE_STRING.equals(encoding); for (int si=0;si < original.length;si++) { Pointer p = getPointer(si * Native.POINTER_SIZE); Object s = null; if (p != null) { s = wide ? p.getWideString(0) : p.getString(0, encoding); if (returnWide) s = new WString((String)s); } original[si] = s; } }
private StringArray(Object[] strings, String encoding) { super((strings.length + 1) * Native.POINTER_SIZE); this.original = strings; this.encoding = encoding; for (int i=0;i < strings.length;i++) { Pointer p = null; if (strings[i] != null) { NativeString ns = new NativeString(strings[i].toString(), encoding); natives.add(ns); p = ns.getPointer(); } setPointer(Native.POINTER_SIZE * i, p); } setPointer(Native.POINTER_SIZE * strings.length, null); } /** Read back from native memory. */
StringArray sa = new StringArray(); sa.addStringToArray("Hello, world"); String[] array = sa.getsTA(); for (String s: array) System.out.println(s);
String classNameStringArray = StringArray.class.getName(); // Delete existing string arrays from the database jdxHandle.delete2(classNameStringArray, null, JDXS.FLAG_DEEP); // Create and store new string array in the database int id = 1; String[] myFavourites = new String[]{"abc", "pqr", "xyz"}; StringArray stringArray = new StringArray(id, myFavourites); jdxHelper.insert(stringArray, true); // Retrieve a string array from the database StringArray retrievedStringArray = (StringArray) jdxHelper.getObjectById(classNameStringArray, "id="+id, true, null); myFavourites = retrievedStringArray.getFavourites(); // Use myFavourites in your app
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())); }
/** Read back from native memory. */ @Override public void read() { boolean returnWide = original instanceof WString[]; boolean wide = NativeString.WIDE_STRING.equals(encoding); for (int si=0;si < original.length;si++) { Pointer p = getPointer(si * Pointer.SIZE); Object s = null; if (p != null) { s = wide ? p.getWideString(0) : p.getString(0, encoding); if (returnWide) s = new WString((String)s); } original[si] = s; } }
private StringArray(Object[] strings, String encoding) { super((strings.length + 1) * Pointer.SIZE); this.original = strings; this.encoding = encoding; for (int i=0;i < strings.length;i++) { Pointer p = null; if (strings[i] != null) { NativeString ns = new NativeString(strings[i].toString(), encoding); natives.add(ns); p = ns.getPointer(); } setPointer(Pointer.SIZE * i, p); } setPointer(Pointer.SIZE * strings.length, null); } /** Read back from native memory. */
@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 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); }