diff --git a/src/com/sheepit/client/os/FreeBSD.java b/src/com/sheepit/client/os/FreeBSD.java index 4651caf..18f81af 100644 --- a/src/com/sheepit/client/os/FreeBSD.java +++ b/src/com/sheepit/client/os/FreeBSD.java @@ -80,11 +80,33 @@ public class FreeBSD extends OS { } } b.close(); - return ret; } catch (Exception e) { e.printStackTrace(); } + if (ret.haveData() == false) { + Log.getInstance(null).debug("OS::FreeBSD::getCPU failed to get CPU from dmesg, using partia sysctl"); + ret.setModel("0"); + ret.setFamily("0"); + try { + Runtime run = Runtime.getRuntime(); + Process sysctl = run.exec("sysctl -n hw.model"); + BufferedReader buf = new BufferedReader(new InputStreamReader(sysctl.getInputStream())); + String name = ""; + + name = buf.readLine(); + buf.close(); + if (name == "") { + ret.setName("0"); + } + else { + ret.setName(name); + } + } + catch (IOException e) { + Log.getInstance(null).debug("OS::FreeBSD::getCPU exception " + e); + } + } return ret; } @@ -92,23 +114,20 @@ public class FreeBSD extends OS { public int getMemory() { try { Runtime r = Runtime.getRuntime(); - Process p = r.exec("dmesg"); + Process p = r.exec("sysctl -n hw.usermem"); BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = ""; - while ((line = b.readLine()) != null) { - if (line.startsWith("avail memory")) { - String buf[] = line.split(" "); - if (buf.length > 4) { - Long mem_byte = Long.parseLong(buf[3].trim()); - return (int) (mem_byte / Long.valueOf(1024)); - } - } - } + line = b.readLine(); b.close(); + if (line.isEmpty()) { + return 0; + } + Long mem_byte = Long.parseLong(line.trim()); + return (int) (mem_byte / Long.valueOf(1024)); } - catch (Exception e) { - e.printStackTrace(); + catch (IOException e) { + Log.getInstance(null).debug("OS::FreeBSD::getMemory exception " + e); } return 0;