X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/804a3b4084659a30586c6cdadf7b2b3de5019fd6..fc8ea20ab569ec39de93e64540d173ea1214b2ec:/helpers.lua

diff --git a/helpers.lua b/helpers.lua
index f2bd5e4..4e90e16 100644
--- a/helpers.lua
+++ b/helpers.lua
@@ -2,16 +2,16 @@
 --[[
                                                   
      Licensed under GNU General Public License v2 
-      * (c) 2013,      Luke Bonham                
-      * (c) 2010-2012, Peter Hofmann              
+      * (c) 2013, Luke Bonham                     
                                                   
 --]]
 
 local debug  = require("debug")
 
 local capi   = { timer = timer }
-local io     = { open = io.open,
-                 lines = io.lines }
+local io     = { open  = io.open,
+                 lines = io.lines,
+                 popen = io.popen }
 local rawget = rawget
 
 -- Lain helper functions for internal use
@@ -33,19 +33,23 @@ end
 
 -- {{{ File operations
 
--- see if the file exists
+-- see if the file exists and is readable
 function helpers.file_exists(file)
   local f = io.open(file)
-  if f then f:close() end
+  if f then
+      local s = f:read()
+      f:close()
+      f = s
+  end
   return f ~= nil
 end
 
--- get all lines from a file, returns an empty 
+-- get all lines from a file, returns an empty
 -- list/table if the file does not exist
 function helpers.lines_from(file)
   if not helpers.file_exists(file) then return {} end
   lines = {}
-  for line in io.lines(file) do 
+  for line in io.lines(file) do
     lines[#lines + 1] = line
   end
   return lines
@@ -61,7 +65,7 @@ end
 -- returns nil otherwise
 function helpers.first_nonempty_line(file)
   for k,v in pairs(helpers.lines_from(file)) do
-    if #v then return v end 
+    if #v then return v end
   end
   return nil
 end
@@ -83,6 +87,18 @@ end
 
 -- }}}
 
+-- {{{ Pipe operations
+
+-- read the full output of a pipe (command)
+function helpers.read_pipe(cmd)
+   local f = assert(io.popen(cmd))
+   local output = f:read("*all")
+   f:close()
+   return output
+end
+
+-- }}}
+
 -- {{{ A map utility
 
 helpers.map_table = {}