#!/usr/bin/picolisp /usr/lib/picolisp/lib.l
(load "@lib/misc.l")
(de GetFullPath (Parent L Full)
(cond
((=0 (length L))
(println "=0" Full)
(Full)) # return Subdir list
(T
#(println "****" (car L))
(setq Full (cons (pack Parent "/" (car L)) Full))
#(println ">>>>" Full)
(GetFullPath Parent (cdr L) Full)) ) )
(de ffiles (Dir_list)
# 1st time, no argument, present working directory
(let Item (car Dir_list)
(cond
((=0 (length Dir_list))
(bye))
((nT (car (info Item)))
(println " ")
(println Dir_list)
(println (pack Item " is not a directory"))
#(println "dirname: " (dirname Item))
#(println "path: " (path Item))
(PrintInfo Item)
(ffiles (cdr Dir_list)) )
(T (println " ")
(println "Dir_list: " Dir_list)
(println (pack Item " is a directory"))
(lst? (GetFullPath Item (dir Item)))
(ffiles (cdr (append Dir_list (GetFullPath Item (dir Item))))) )
) )
)
(de PrintInfo (Item)
(println Item 'size: (getSize Item) 'modified: (getDateTime Item) 'path: (path Item) 'dirname: (dirname Item) 'basename: (basename Item)) )
(de getSize (Item)
(car (info Item)))
(de getDateTime (Item)
(stamp (cadr (info Item)) (cddr (info Item)) ) )
(de main ()
(setq FullList ())
(println (dir) )
(ffiles (dir))
(bye)
)
IyEvdXNyL2Jpbi9waWNvbGlzcCAvdXNyL2xpYi9waWNvbGlzcC9saWIubAoKCihsb2FkICJAbGliL21pc2MubCIpCgooZGUgR2V0RnVsbFBhdGggKFBhcmVudCBMIEZ1bGwpCiAgIChjb25kCiAgICAgICgoPTAgKGxlbmd0aCBMKSkgCiAgICAgICAgIChwcmludGxuICI9MCIgRnVsbCkKICAgICAgICAgKEZ1bGwpKSAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiBTdWJkaXIgbGlzdAogICAgICAoVCAKICAgICAgICAgIyhwcmludGxuICIqKioqIiAoY2FyIEwpKQogICAgICAgICAoc2V0cSBGdWxsIChjb25zIChwYWNrIFBhcmVudCAiLyIgKGNhciBMKSkgRnVsbCkpCiAgICAgICAgICMocHJpbnRsbiAiPj4+PiIgRnVsbCkKICAgICAgICAgKEdldEZ1bGxQYXRoIFBhcmVudCAoY2RyIEwpIEZ1bGwpKSApICkKCgooZGUgZmZpbGVzIChEaXJfbGlzdCkKICAgIyAxc3QgdGltZSwgbm8gYXJndW1lbnQsIHByZXNlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgKGxldCBJdGVtIChjYXIgRGlyX2xpc3QpCgogICAoY29uZAogICAgICAoKD0wIChsZW5ndGggRGlyX2xpc3QpKQogICAgICAgIChieWUpKSAKCiAgICAgICgoblQgKGNhciAoaW5mbyBJdGVtKSkpIAogICAgICAgICAocHJpbnRsbiAiICIpCiAgICAgICAgIChwcmludGxuIERpcl9saXN0KQogICAgICAgICAocHJpbnRsbiAocGFjayBJdGVtICIgaXMgbm90IGEgZGlyZWN0b3J5IikpCiAgICAgICAgICMocHJpbnRsbiAiZGlybmFtZTogIiAoZGlybmFtZSBJdGVtKSkKICAgICAgICAgIyhwcmludGxuICJwYXRoOiAiIChwYXRoIEl0ZW0pKQogICAgICAgICAoUHJpbnRJbmZvIEl0ZW0pIAogICAgICAgICAoZmZpbGVzIChjZHIgRGlyX2xpc3QpKSApCgogICAgICAoVCAocHJpbnRsbiAiICIpCiAgICAgICAgIChwcmludGxuICJEaXJfbGlzdDogIiBEaXJfbGlzdCkKICAgICAgICAgKHByaW50bG4gKHBhY2sgSXRlbSAiIGlzIGEgZGlyZWN0b3J5IikpCiAgICAgICAgIChsc3Q/IChHZXRGdWxsUGF0aCBJdGVtIChkaXIgSXRlbSkpKQogICAgICAgICAoZmZpbGVzIChjZHIgKGFwcGVuZCBEaXJfbGlzdCAoR2V0RnVsbFBhdGggSXRlbSAoZGlyIEl0ZW0pKSkpKSApCiAgICkgKQopCgoKKGRlIFByaW50SW5mbyAoSXRlbSkKICAgKHByaW50bG4gSXRlbSAgJ3NpemU6ICAoZ2V0U2l6ZSBJdGVtKSAnbW9kaWZpZWQ6IChnZXREYXRlVGltZSBJdGVtKSAncGF0aDogKHBhdGggSXRlbSkgJ2Rpcm5hbWU6IChkaXJuYW1lIEl0ZW0pICdiYXNlbmFtZTogKGJhc2VuYW1lIEl0ZW0pKSApCgoKKGRlIGdldFNpemUgKEl0ZW0pCiAgIChjYXIgKGluZm8gSXRlbSkpKQoKCihkZSBnZXREYXRlVGltZSAoSXRlbSkKICAgKHN0YW1wIChjYWRyIChpbmZvIEl0ZW0pKSAoY2RkciAoaW5mbyBJdGVtKSkgKSApCgoKKGRlIG1haW4gKCkKICAgKHNldHEgRnVsbExpc3QgKCkpCiAgIChwcmludGxuIChkaXIpICkKICAgKGZmaWxlcyAoZGlyKSkKICAgKGJ5ZSkKKQo=