Blame doc/examples/tree.lua.html

Packit 437b5e
Packit 437b5e
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Packit 437b5e
<html>
Packit 437b5e
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
Packit 437b5e
<head>
Packit 437b5e
    <title>luaposix 33.3.0 Reference</title>
Packit 437b5e
    <link rel="stylesheet" href="../ldoc.css" type="text/css" />
Packit 437b5e
</head>
Packit 437b5e
<body>
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
	
Packit 437b5e
	
<big></big>
Packit 437b5e
	
Packit 437b5e
 
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e
Packit 437b5e

Packit 437b5e

luaposix 33.3.0

Packit 437b5e
Packit 437b5e
    Packit 437b5e
      
  • Index
  • Packit 437b5e
    Packit 437b5e
    Packit 437b5e
    Packit 437b5e
    Packit 437b5e

    Examples

    Packit 437b5e
      Packit 437b5e
        
    • curses.lua
    • Packit 437b5e
        
    • dir.lua
    • Packit 437b5e
        
    • fork.lua
    • Packit 437b5e
        
    • fork2.lua
    • Packit 437b5e
        
    • getopt.lua
    • Packit 437b5e
        
    • glob.lua
    • Packit 437b5e
        
    • limit.lua
    • Packit 437b5e
        
    • lock.lua
    • Packit 437b5e
        
    • netlink-uevent.lua
    • Packit 437b5e
        
    • ping.lua
    • Packit 437b5e
        
    • poll.lua
    • Packit 437b5e
        
    • rt_sched.lua
    • Packit 437b5e
        
    • signal.lua
    • Packit 437b5e
        
    • socket.lua
    • Packit 437b5e
        
    • termios.lua
    • Packit 437b5e
        
    • tree.lua
    • Packit 437b5e
      Packit 437b5e

      Modules

      Packit 437b5e
        Packit 437b5e
          
      • posix
      • Packit 437b5e
          
      • posix.ctype
      • Packit 437b5e
          
      • posix.curses
      • Packit 437b5e
          
      • posix.dirent
      • Packit 437b5e
          
      • posix.errno
      • Packit 437b5e
          
      • posix.fcntl
      • Packit 437b5e
          
      • posix.fnmatch
      • Packit 437b5e
          
      • posix.getopt
      • Packit 437b5e
          
      • posix.glob
      • Packit 437b5e
          
      • posix.grp
      • Packit 437b5e
          
      • posix.libgen
      • Packit 437b5e
          
      • posix.poll
      • Packit 437b5e
          
      • posix.pwd
      • Packit 437b5e
          
      • posix.sched
      • Packit 437b5e
          
      • posix.signal
      • Packit 437b5e
          
      • posix.stdio
      • Packit 437b5e
          
      • posix.stdlib
      • Packit 437b5e
          
      • posix.sys.msg
      • Packit 437b5e
          
      • posix.sys.resource
      • Packit 437b5e
          
      • posix.sys.socket
      • Packit 437b5e
          
      • posix.sys.stat
      • Packit 437b5e
          
      • posix.sys.statvfs
      • Packit 437b5e
          
      • posix.sys.time
      • Packit 437b5e
          
      • posix.sys.times
      • Packit 437b5e
          
      • posix.sys.utsname
      • Packit 437b5e
          
      • posix.sys.wait
      • Packit 437b5e
          
      • posix.syslog
      • Packit 437b5e
          
      • posix.termio
      • Packit 437b5e
          
      • posix.time
      • Packit 437b5e
          
      • posix.unistd
      • Packit 437b5e
          
      • posix.utime
      • Packit 437b5e
        Packit 437b5e

        Classes

        Packit 437b5e
          Packit 437b5e
            
        • posix.curses.chstr
        • Packit 437b5e
            
        • posix.curses.window
        • Packit 437b5e
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
              

          tree.lua

          Packit 437b5e
          Packit 437b5e
          -- tree view of the file system like the "tree" unix utility
          Packit 437b5e
          -- John Belmonte <jvb@prairienet.org>
          Packit 437b5e
          Packit 437b5e
          local posix = require 'posix'
          Packit 437b5e
          Packit 437b5e
          local leaf_indent = '|   '
          Packit 437b5e
          local tail_leaf_indent = '    '
          Packit 437b5e
          local leaf_prefix = '|-- '
          Packit 437b5e
          local tail_leaf_prefix = '`-- '
          Packit 437b5e
          local link_prefix = ' -> '
          Packit 437b5e
          Packit 437b5e
          local function printf(...)
          Packit 437b5e
            io.write(string.format(...))
          Packit 437b5e
          end
          Packit 437b5e
          Packit 437b5e
          local function do_directory(directory, level, prefix)
          Packit 437b5e
              local num_dirs = 0
          Packit 437b5e
              local num_files = 0
          Packit 437b5e
              local files = posix.dir(directory)
          Packit 437b5e
              local last_file_index = #files
          Packit 437b5e
              table.sort(files)
          Packit 437b5e
              for i, name in ipairs(files) do
          Packit 437b5e
                  if name ~= '.' and name ~= '..' then
          Packit 437b5e
                      local full_name = string.format('%s/%s', directory, name)
          Packit 437b5e
                      local info = assert(posix.stat(full_name))
          Packit 437b5e
                      local is_tail = (i==last_file_index)
          Packit 437b5e
                      local prefix2 = is_tail and tail_leaf_prefix or leaf_prefix
          Packit 437b5e
                      local link = ''
          Packit 437b5e
                      if info.type == 'link' then
          Packit 437b5e
                          linked_name = assert(posix.readlink(full_name))
          Packit 437b5e
                          link = string.format('%s%s', link_prefix, linked_name)
          Packit 437b5e
                      end
          Packit 437b5e
                      printf('%s%s%s%s\n', prefix, prefix2, name, link)
          Packit 437b5e
                      if info.type == 'directory' then
          Packit 437b5e
                          local indent = is_tail and tail_leaf_indent or leaf_indent
          Packit 437b5e
                          -- TODO: cache string concatination
          Packit 437b5e
                          sub_dirs, sub_files = do_directory(full_name, level+1,
          Packit 437b5e
                              prefix .. indent)
          Packit 437b5e
                          num_dirs = num_dirs + sub_dirs + 1
          Packit 437b5e
                          num_files = num_files + sub_files
          Packit 437b5e
                      else
          Packit 437b5e
                          num_files = num_files + 1
          Packit 437b5e
                      end
          Packit 437b5e
                  end
          Packit 437b5e
              end
          Packit 437b5e
              return num_dirs, num_files
          Packit 437b5e
          end
          Packit 437b5e
          Packit 437b5e
          local function fore(directory)
          Packit 437b5e
              print(directory)
          Packit 437b5e
              num_dirs, num_files = do_directory(directory, 0, '')
          Packit 437b5e
              printf('\n%d directories, %d files\n', num_dirs, num_files)
          Packit 437b5e
          end
          Packit 437b5e
          Packit 437b5e
          directory = (arg and #arg > 0) and arg[1] or '.'
          Packit 437b5e
          fore(directory)
          Packit 437b5e
          Packit 437b5e
          Packit 437b5e
           
          Packit 437b5e
           
          Packit 437b5e
          Packit 437b5e
          generated by LDoc 1.4.3
          Packit 437b5e
          Last updated 2015-03-01 09:06:02 
          Packit 437b5e
           
          Packit 437b5e
           
          Packit 437b5e
          </body>
          Packit 437b5e
          </html>