Murga-Projects Forums

Full Version: Listing availiable storage devices
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi all. It's been quite a while since I've been on here, but I'm back at it. I'm trying to build a list of all availiable internal and external drives that are mounted. It needs to work in Windows and Linux. In Windows it is kind of clumsy but I do have it working with this code.

--check for windows
CheckForWindows = "C:/"

windows = false

--Define the drive table.        
drive = {}

if lfs.attributes (CheckForWindows) ~= nil then
       windows = true

       --Check for all the Windows drives.
       if lfs.attributes ("A:/") ~= nil then
                drive["a"] = "A:"

   -- Use the above code to check for each drive letter from A to Z.


In linux, my first thought was to just check the /mnt directory. However I found that some types of Linux don't use this directory. For instance my computer running PCLinuxOS has all removable media listed in the "/Media" directory and the "/mnt" directory is empty. I can see this could end up being really messy. Is there an easier way to do this?


For linux, I'd try to parse the output of the 'mount' command.
Like this more or less:

output = fh:read('*a')
for dev,point in output:gmatch("(/dev/[%w_/]+) on (/[%w_/]*).-\n") do

Another Linux option is to check /etc/mtab, which is a list of all currently mounted filesystems.

for line in io.lines("/etc/mtab") do
if string.find(line,"^/dev/") then
  dev,_=string.gsub(line,"%s.*","") -- cut off everything after field 1

or a more compact version that does similar...

for line in io.lines("/etc/mtab") do

Hey thanks!! Those all worked very well. I will give them a try in a few differant versions of Linux and wok it into my application.
Reference URL's