From 142721a52fd9c8478ad21d0d0ad2e46655f7f8c7 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Thu, 8 Dec 2005 20:46:09 +0000 Subject: [PATCH] provide option to use sudo to read the file --- .../java/src/net/hyperic/sigar/FileTail.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/bindings/java/src/net/hyperic/sigar/FileTail.java b/bindings/java/src/net/hyperic/sigar/FileTail.java index 21b60839..2c90cf0b 100644 --- a/bindings/java/src/net/hyperic/sigar/FileTail.java +++ b/bindings/java/src/net/hyperic/sigar/FileTail.java @@ -2,11 +2,18 @@ package net.hyperic.sigar; import java.io.FileReader; import java.io.IOException; +import java.io.InputStreamReader; import java.io.Reader; import java.util.HashMap; public abstract class FileTail extends FileWatcher { + public static final String PROP_USE_SUDO = + "sigar.tail.sudo"; + + private boolean useSudo = + "true".equals(System.getProperty(PROP_USE_SUDO)); + private HashMap offsets = new HashMap(); public abstract void tail(FileInfo info, Reader reader); @@ -15,13 +22,24 @@ public abstract class FileTail extends FileWatcher { super(sigar); } + public void useSudo(boolean useSudo) { + this.useSudo = useSudo; + } + public void onChange(FileInfo info) { long len = info.size; Reader reader = null; - + String name = info.getName(); + try { - reader = new FileReader(info.getName()); + if (this.useSudo) { + reader = + new InputStreamReader(new SudoFileInputStream(name)); + } + else { + reader = new FileReader(name); + } reader.skip(getOffset(info)); tail(info, reader); setOffset(info);