Files
kumomta/docs/reference/kumo/uncached_glob.md
T
Wez Furlong 7e6ca34e2d new: kumo.fs lua module
The read_dir and glob functions have been logically moved into that new
namespace, leaving deprecated versions of them in the `kumo` module.

A new `kumo.fs.open` function that works similarly to `io.open` is
provided.  This function cooperates with the kumo async io scheduler
and won't block it if the filesystem is under pressure.

It returns file handles that are simlar to the builtin lua file handle
objects, but do not support formatting or parsing of writes or reads
respectively: the calling code is responsible for that.  The rationale
for this difference is that is that lua's semantics for those functions
are frankly a bit weird and are hard to replicate precisely.
2025-07-23 16:51:06 +01:00

47 lines
1.6 KiB
Markdown

---
tags:
- utility
- filesystem
status: deprecated
---
# kumo.uncached_glob
```
kumo.uncached_glob(pattern [, relative_to])
```
{{since('2024.06.10-84e84b89')}}
!!! warning
This function can cause an expensive filesystem walk to occur, especially
if used on a storage volume that is experiencing IO pressure (such as
from spooling or logging). You probably should use the implicitly
cached [glob](glob.md) function instead of this one. If you must use this one,
then it is strongly advised that you avoid calling it from the file-level
scope of your policy scripts in order to avoid unconditionally triggering
the walk on every lua context construction.
This function evalutes the glob `pattern` and returns an array containing the
absolute file names of the matching results. Due to limitations in the lua
bindings, all of the paths must be able to be represented as UTF-8 or this
function will generate an error.
The optional `relative_to` parameter can be used to make the results relative
to a path. If the results have the same prefix as `relative_to` then it will
be removed from the returned path. The default for for this parameter is `.`.
!!! note
If the specified pattern or path references a directory that doesn't
exist, or a directory that is inaccessible to the kumo user, no
error will be generated; those paths are silently omitted from
the results.
```lua
local kumo = require 'kumo'
-- logs the names of all of the '*.conf' files under `/etc`
print(kumo.json_encode_pretty(kumo.uncached_glob '/etc/*.conf'))
```