BlitzMax

BlitzMax

  • Downloads
  • Docs
  • API
  • Resources
  • About

›Glob

BlitzMax API

  • Introduction

BRL

    Audio

    • Introduction
    • TChannel
    • TSound

    AudioSample

    • Introduction
    • TAudioSample
    • TAudioSampleLoader

    Bank

    • Introduction
    • TBank

    BankStream

    • Introduction
    • TBankStream

    Base64

    • Introduction
    • TBase64

    Blitz

    • Introduction
    • TArrayBoundsException
    • TBlitzException
    • TIllegalArgumentException
    • TInvalidEnumException
    • TNullFunctionException
    • TNullMethodException
    • TNullObjectException
    • TOutOfDataException
    • TRuntimeException
    • IIterable
    • IIterator
    • ICloseable

    Clipboard

    • Introduction
    • TClipboard
    • TClipboardOpts
    • TWin32ClipboardOpts
    • TX11ClipboardOpts

    Color

    • Introduction
    • SColor8
  • BRL.D3D7Max2D
  • BRL.D3D9Max2D
  • BRL.DirectSoundAudio
  • BRL.EndianStream
  • Event

    • Introduction
    • TEvent
  • BRL.EventQueue
  • FileSystem

    • Introduction
    • IFileWalker
    • SFileAttributes
    • EFileWalkOption
    • EFileWalkResult
  • BRL.FreeAudioAudio
  • BRL.GLGraphics
  • BRL.GLMax2D
  • Glob

    • Introduction
    • EGlobOptions
    • TGlobIter
  • BRL.GNet
  • BRL.Graphics
  • BRL.Hook
  • IO

    • Introduction
    • MaxIO
  • BRL.KeyCodes
  • LinkedList

    • Introduction
    • TList
    • TListEnum
    • TLink

    Map

    • Introduction
    • TMap
  • BRL.Math
  • Max2D

    • Introduction
    • TImage

    MaxLua

    • Introduction
    • TLuaClass
    • TLuaObject

    MaxUnit

    • Introduction
    • TTest
    • TAssert
  • BRL.OGGLoader
  • BRL.OpenALAudio
  • Path

    • Introduction
    • TPath
    • IPathWalker
    • SPathAttributes
    • TPathDirIterator

    Pixmap

    • Introduction
    • TPixmap
    • TPixmapLoader
  • BRL.PolledInput
  • BRL.RamStream
  • Random

    • Introduction
    • TRandomDefault

    RectPacker

    • Introduction
    • EPackingMethod
    • SPackedRect
    • TPackedSheet
    • TRectPacker

    Reflection

    • Introduction
    • TTypeId
    • TMember
    • TConstant
    • TField
    • TGlobal
    • TFunction
    • TMethod
  • BRL.Retro
  • BRL.Socket
  • BRL.SocketStream
  • BRL.StandardIO
  • Stream

    • Introduction
    • TCStream
    • TIO
    • TStream
    • TStreamException
    • TStreamFactory
    • TStreamReadException
    • TStreamWrapper
    • TStreamWriteException

    StringBuilder

    • Introduction
    • TStringBuilder
    • TSplitBuffer
  • BRL.System
  • BRL.SystemDefault
  • BRL.TextStream
  • ThreadPool

    • Introduction
    • TRunnable
    • TThreadPoolExecutor

    Threads

    • Introduction
    • TThread
    • TThreadData
    • TMutex
    • TSemaphore
    • TCondVar

    Time

    • Introduction
    • ETimeUnit
    • TTimeoutException

    Timer

    • Introduction
    • TChrono
  • BRL.TimerDefault
  • Volumes

    • Introduction
    • TVolume
  • BRL.WAVLoader

Pub

  • Pub.FreeJoy
  • Pub.FreeProcess
  • Pub.Glad
  • Pub.Glew
  • Joystick

    • Introduction
    • TJoystickDriver
  • Pub.Lua
  • Pub.OpenAL
  • Pub.OpenGLES
  • StdC

    • Introduction
    • SDateTime
  • Pub.xmmintrin

Collections

    IntMap

    • Introduction
    • TIntMap

    ObjectList

    • Introduction
    • TObjectList
    • TObjectListEnumerator
    • TObjectListReverseEnumerator

    ObjectMap

    • Introduction
    • TObjectMap

    PtrMap

    • Introduction
    • TPtrMap

    StringMap

    • Introduction
    • TStringMap

Crypto

    Digest

    • Introduction
    • TMessageDigest
    • TDigestRegister

    Cipher

    • Introduction
    • TCipher
    • TCipherMode
    • Crypto.AESCipher
    • Crypto.AnubisCipher
    • Crypto.BlowfishCipher
    • Crypto.CamelliaCipher
    • Crypto.Cast5Cipher
    • Crypto.DESCipher
    • Crypto.IdeaCipher
    • Crypto.KasumiCipher
    • Crypto.KhazadCipher
    • Crypto.KSeedCipher
    • Crypto.NoekeonCipher
    • Crypto.SerpentCipher
    • Crypto.SkipjackCipher
    • Crypto.TwofishCipher
    • Crypto.XTeaCipher

    CBCMode

    • Introduction
    • TCBCCipherMode

    CFBMode

    • Introduction
    • TCFBCipherMode

    CTRMode

    • Introduction
    • TCTRCipherMode

    ECBMode

    • Introduction
    • TECBCipherMode

    F8Mode

    • Introduction
    • TF8CipherMode

    LRWMode

    • Introduction
    • TLRWCipherMode

    OFBMode

    • Introduction
    • TOFBCipherMode

    XTSMode

    • Introduction
    • TXTSCipherMode

    Blake2BDigest

    • Introduction
    • TBlake2B_512
    • TBlake2B_384
    • TBlake2B_256
    • TBlake2B_160

    CRC32

    • Introduction
    • TCRC32

    MD5Digest

    • Introduction
    • TMD5

    Ripemd320Digest

    • Introduction
    • TRipemd320

    Ripemd356Digest

    • Introduction
    • TRipemd256

    Ripemd160Digest

    • Introduction
    • TRipemd160

    Ripemd128Digest

    • Introduction
    • TRipemd128

    SHA1Digest

    • Introduction
    • TSHA1

    SHA256Digest

    • Introduction
    • TSHA256

    SHA512Digest

    • Introduction
    • TSHA512

    SHA3Digest

    • Introduction
    • TSHA3_512
    • TSHA3_384
    • TSHA3_256
    • TSHA3_224

    TigerDigest

    • Introduction
    • TTiger

    WhirlpoolDigest

    • Introduction
    • TWhirlpool

    Crypto

    • Introduction
    • TCryptoRandom
    • TCryptoSecretBox
    • TCryptoHash
    • TCryptoSign
    • TCryptoKeyExchange
    • TCryptoKey
    • TCryptoHashKey
    • TCryptoSecretBoxKey
    • TCryptoSignature
    • TCryptoExchangeKeyPair
    • TCryptoSessionKeyPair
    • TCryptoNPacket
    • TCryptoKK1Packet
    • TCryptoKK2Packet
    • TCryptoXX1Packet
    • TCryptoXX2Packet
    • TCryptoXX3Packet
    • TCryptoExchangeState
    • TCryptoPWHashMasterKey
    • TCryptoPWHashStoredKey
    • TCryptoPasswordHash

Math

    Matrix

    • Introduction
    • SMat2D
    • SMat2F
    • SMat2I
    • SMat3D
    • SMat3F
    • SMat3I
    • SMat4D
    • SMat4F
    • SMat4I

    Quaternion

    • Introduction
    • SQuatD
    • SQuatF
    • SQuatI

    Vector

    • Introduction
    • SVec2D
    • SVec2F
    • SVec2I
    • SVec3D
    • SVec3F
    • SVec3I
    • SVec4D
    • SVec4F
    • SVec4I

MaxGUI

  • MaxGUI.MaxGUI
  • MaxGUI.Drivers
  • MaxGUI.Localization
  • MaxGUI.ProxyGadgets
  • MaxGUI.CocoaMaxGUI
  • MaxGUI.Win32MaxGUIEx

Net

    Http

    • Introduction
    • THttpClient
    • THttpRequest
    • THttpResponse
    • THttpResult
    • TUrl
    • ICompleteListener
    • ICookie
    • THttpClientException
    • THttpCookie
    • THttpCookieBuilder
    • THttpField
    • THttpFields
    • TRetryPolicy
    • TUrlBuilder
    • TContent
    • TStringContent
    • TStreamContent
    • TBytePtrContent
    • TByteArrayContent
    • TBankContent
    • TCAStore
    • ECookieAttribute
    • EHttpAuthMethod
    • EHttpHeader
    • EHttpMethod
    • EUrlCode
    • EUrlPart

Random

    Core

    • Introduction
    • TRandom
  • Random.PRVHASH
  • Random.Secure
  • SFMT

    • Introduction
    • TSFMTRandom
  • Random.Squares
  • Random.Xoshiro

SDL

    SDL

    • Introduction
    • TSDLStream

    SDLSystem

    • Introduction
    • TSDLMultiGesture

    SDLVideo

    • Introduction
    • TSDLDisplay
    • TSDLGLContext
    • TSDLWindow

    SDLRender

    • Introduction
    • TSDLRenderer
    • TSDLTexture

    SDLTimer

    • Introduction
    • TSDLTimer

    SDLHaptic

    • Introduction
    • TSDLHaptic
    • TSDLHapticCondition
    • TSDLHapticConstant
    • TSDLHapticCustom
    • TSDLHapticDirection
    • TSDLHapticEffect
    • TSDLHapticLeftRight
    • TSDLHapticPeriodic
    • TSDLHapticRamp

    SDLSensor

    • Introduction
    • TSDLSensor
  • SDL.SDLFreeAudio
  • SDL.GLSDLMax2D
  • SDL.GL2SDLMax2D
  • SDL.D3D9SDLMax2D
  • SDLVirtualJoystick

    • Introduction
    • TVirtualJoystick

Steam

    SteamSDK

    • Introduction
    • TSteamClient
    • TSteamUtils
    • TSteamUserStats
    • TSteamFriends
    • TSteamUGC
    • ISteamFriendsListener
    • ISteamUGCListener
    • ISteamUserStatsListener
    • ISteamUtilsListener
    • EItemPreviewType
    • EPersonaChange
    • EPersonaState
    • ERemoteStoragePublishedFileVisibility
    • EUGCMatchingUGCType
    • EUGCQuery
    • EUserRestriction
    • EUserUGCList
    • EWorkshopFileType

Text

    CP932Encoding

    • Text.CP932Encoding

    CSV

    • Introduction
    • TCsvParser
    • TCsvHeader
    • TCsvRow
    • TCsvOptions
    • SCsvColumn

    Encoding

    • Text.Encoding

    Format

    • Introduction
    • TFormatter

    Graphviz

    • Introduction
    • TGVGraphviz
    • TAGraph

    Ini

    • Introduction
    • TIni
    • TIniProperty
    • TIniSection

    JConv

    • Introduction
    • TJConv
    • TJConvBuilder
    • TJConvSerializer

    Json

    • Introduction
    • TJSON
    • TJSONObject
    • TJSONString
    • TJSONInteger
    • TJSONReal
    • TJSONBool
    • TJSONArray
    • TJSONNull
    • TJSONError
    • TJSONNumber

    Markdown

    • Introduction
    • TMarkdown
    • IMDRenderer

    Pikchr

    • Introduction
    • EPikChrFlags

    Regex

    • Introduction
    • TRegEx
    • TRegExMatch
    • TRegExOptions
    • TRegExException

    TOML

    • Introduction
    • ETomlNodeType
    • TToml
    • ITomlNode
    • STomlDate
    • STomlDateTime
    • STomlTime
    • TTomlArray
    • TTomlInteger
    • TTomlString
    • TTomlTable
    • TTomlBoolean

    Xml

    • Introduction
    • TxmlDoc
    • TxmlNode
    • TxmlAttribute
Edit

BRL.Glob

File Globbing in BlitzMax

File globbing is a powerful pattern-matching mechanism used to select files and directories based on wildcard expressions. BlitzMax provides comprehensive glob support via the BRL.Glob module, and with integration into higher-level APIs such as TPath.

This document describes the supported glob patterns, options, and usage conventions.


What Is a Glob?

A glob is a string pattern that matches file system paths. Instead of specifying an exact file name, you describe a set of possible matches using wildcard characters.

For example:

  • *.txt matches all text files in a directory
  • src/**/*.bmx matches all .bmx files anywhere under src

Basic Wildcards

* — Match Any Characters (Single Segment)

The asterisk (*) matches zero or more characters within a single path segment.

Examples:

  • *.bmx → matches main.bmx, test.bmx
  • file* → matches file, file1, filename

It does not cross directory boundaries:

  • */*.bmx matches src/main.bmx
  • It does not match src/utils/main.bmx

? — Match One Character

The question mark (?) matches exactly one character within a path segment.

Examples:

  • file?.txt → matches file1.txt, fileA.txt
  • Does not match file10.txt

Character Classes

Character classes match one character from a defined set.

[abc]

Matches one of the listed characters.

  • file[ab].txt → matches filea.txt, fileb.txt

[a-z]

Matches a character in a range.

  • [0-9].txt → matches 1.txt, 9.txt

Negated Classes

Negation can be written as either ! or ^.

  • [!a-z]
  • [^a-z]

These match any character not in the range.


Path Separators

Glob patterns use / as the path separator, regardless of platform.

This ensures consistent behavior across:

  • Windows
  • macOS
  • Linux
  • Virtual filesystems ( BRL.Io / MaxIO )

Globstar: **

When the EGlobOptions.GlobStar flag is enabled, the special segment ** matches zero or more directory levels.

Examples:

  • **/*.bmx → all .bmx files recursively
  • src/**/test*.bmx → matches tests at any depth under src

Important note:

  • **/*.txt does not match files in the starting directory
  • To include them, use brace expansion: {*.txt,**/*.txt}

Dotfiles and the Period Flag

By default, wildcard patterns do not match entries whose names begin with ..

For example:

  • * does not match .gitignore

To include dotfiles, enable: EGlobOptions.Period


Case Sensitivity

Matching is case-sensitive by default.

To enable case-insensitive matching, use: EGlobOptions.CaseFold

This affects:

  • *
  • ?
  • character classes

Escaping Metacharacters

By default, metacharacters can be escaped using backslash (\):

  • \* matches a literal *
  • \[ matches a literal [
  • \{ matches a literal {

To disable escaping entirely, use: EGlobOptions.NoEscape


Brace Expansion {a,b}

Brace expansion allows you to expand a pattern into multiple alternatives before globbing occurs.

Example:

  • {a,b}.txt expands to:
    • a.txt
    • b.txt

More complex examples:

  • src/{core,ui}/*.bmx
  • {*.txt,**/*.txt}

Nested Braces

Brace expressions may be nested:

  • {a,{b,c}}.txt

Expansion Rules

  • Expansion is purely textual
  • Only braces containing a top-level comma are expanded
  • Unterminated or malformed braces are treated as literal text
  • Escaped braces (\{, \}) are not expanded

Rooted vs Relative Patterns

Rooted Patterns

Patterns starting with a root (/ or drive root on Windows) are treated as absolute.

  • Base directory is ignored
  • Results are absolute paths

Relative Patterns

If a pattern is not rooted:

  • Matching starts from baseDir if supplied
  • Otherwise, from the current directory

Results are returned as relative paths.


Filtering Flags

Additional flags allow result filtering:

  • OnlyDir → return directories only
  • NoDir → exclude directories
  • Mark → append / to directory matches
  • NoSort → preserve filesystem order

APIs

Eager Globbing

Glob returns all matches as an array.

Lazy Globbing (Iterators)

GlobIter returns an iterator that yields matches on demand.

Iterators should be closed if not fully consumed. Use a Using block to ensure cleanup:

Using
    Local it:TGlobIter = GlobIter("**/*.bmx", EGlobOptions.GlobStar)
Do
    For Local s:String = EachIn it
        Print s
    Next
End Using

Matching Paths Without Filesystem Access (MatchGlob)

MatchGlob compares a glob pattern against a single path as a string, without accessing the filesystem.

This function returns True if path matches the glob pattern according to the same matching rules used by Glob, and False otherwise.

Unlike Glob and GlobIter, MatchGlob:

  • Does not read directories
  • Does not require the path to exist
  • Performs no filesystem I/O

It is purely a pattern-matching operation.


What is MatchGlob used for?

MatchGlob is useful when you already have a path (or a list of paths) and want to filter them using glob syntax.

Common use cases include:

  • Filtering results from WalkFileTree
  • Matching paths obtained from another source (archives, manifests, logs)
  • Applying glob rules to virtual or conceptual paths
  • Implementing ignore/include filters (similar to .gitignore)

Path-aware matching

MatchGlob is path-aware and understands directory separators.

If pattern contains no path separators (/), it is matched only against the final path segment (the file or directory name).

Example:

MatchGlob("*.txt", "/data/files/readme.txt") ' True

If pattern contains path separators, it is matched against the trailing segments of path.

Example:

MatchGlob("sub/*.txt", "/root/sub/file.txt") ' True

This allows relative patterns to match absolute paths naturally.


Rooted patterns

If pattern is rooted (for example, starts with / on Linux/macOS), then path must also be rooted at the same location for a match to succeed.

Rooted and non-rooted paths cannot be mixed.


Supported syntax MatchGlob supports the same pattern features as filesystem globbing:

  • * and ? wildcards
  • Character classes ([a-z], [!abc])
  • Brace expansion ({a,b})
  • Backslash escaping (unless NoEscape is set)
  • Globstar (**) when EGlobOptions.GlobStar is enabled
  • Case folding via EGlobOptions.CaseFold
  • Dotfile matching via EGlobOptions.Period

Example:

Local path:String = "/src/core/main.bmx"

If MatchGlob("src/**/main.bmx", path, EGlobOptions.GlobStar) Then
    Print "Matched!"
End If

Notes

  • MatchGlob does not check whether the path exists
  • Directory vs file type is not considered
  • Trailing slashes are matched literally

If you need filesystem-aware matching (for example, checking whether a matched path is a directory), use Glob, GlobIter, or TPath based APIs instead.

Virtual Filesystem Support

All glob functionality works identically when BRL.Io / MaxIO is enabled.

This allows globbing over:

  • Mounted archives
  • Virtual directories
  • Packaged game assets

Performance Notes

  • Prefer iterators for large directory trees
  • Avoid unnecessary ** at high directory levels
  • Combine patterns with brace expansion instead of multiple glob calls

Types

TypeDescription
TGlobIterAn iterator that yields all paths matching the given glob pattern.

Enums

EnumDescription
EGlobOptionsFile globbing options

Functions

Function Glob:String[](pattern:String, flags:EGlobOptions = EGlobOptions.None, baseDir:String = "")

Performs file globbing.

Expands a glob pattern into an array of matching files and/or directories.

The glob pattern supports the following constructs:

  • * matches zero or more characters within a single path segment.
  • ? matches exactly one character within a single path segment.
  • Character classes such as [abc], [a-z], and negated classes [!abc] or [^abc].
  • Backslash escaping of metacharacters (unless the EGlobOptions.NoEscape flag is set).
  • The ** globstar operator (when EGlobOptions.GlobStar is enabled) to match zero or more directory levels.

By default, wildcard patterns do not match entries whose names begin with .. This behavior can be changed by enabling the EGlobOptions.Period flag.

Brace expansion using curly braces is supported.

A pattern of the form {a,b} is expanded into multiple patterns before globbing is performed. For example:

  • "src/{core,ui}/*.bmx" expands to "src/core/*.bmx" and "src/ui/*.bmx".

Brace expressions may be nested. Expansion is purely textual and occurs before any wildcard matching.

Only brace expressions containing at least one top-level comma are expanded. Malformed or unterminated brace expressions are treated as literal text.

Note that **/pattern matches only files below the starting directory. To include files in the starting directory, combine with pattern using brace expansion. For example, {pattern,**/pattern}.

Backslash-escaped braces (\{ and \}) are treated literally unless EGlobOptions.NoEscape is specified.

If pattern is not rooted, globbing begins relative to baseDir if supplied, or the current directory as returned by CurrentDir. If pattern is rooted, baseDir is ignored and matching begins at the root.

The returned paths are:

  • Rooted paths if pattern is rooted.
  • Paths relative to baseDir (or the current directory) if pattern is not rooted.

The flags parameter controls additional matching behavior and result filtering. See EGlobOptions for details.

The globbing implementation works consistently for both the native filesystem and the virtual filesystem when BRL.Io / MaxIO is enabled.


Function MatchGlob:Int(pattern:String, path:String, flags:EGlobOptions = EGlobOptions.None)

Matches a path against a glob pattern.

Checks whether a file path path matches the glob pattern.

The matching rules are identical to those used by Glob, including support for wildcards (*, ?), character classes ([ ]), escaping, and the ** globstar operator when EGlobOptions.GlobStar is enabled.

Brace expansion using curly braces is supported.

Brace expressions such as {a,b} are expanded into multiple patterns before matching is performed. For example, "sub/{a,b}.txt" is equivalent to matching against "sub/a.txt" or "sub/b.txt".

Only well-formed brace expressions containing at least one top-level comma are expanded. Escaped or malformed brace expressions are treated as literal text.

Note that **/pattern matches only files below the starting directory. To include files in the starting directory, combine with pattern using brace expansion. For example, {pattern,**/pattern}.

If pattern does not contain any path separators (/), it is matched only against the final path segment of path (the file or directory name).

If pattern contains path separators and is not rooted, it is matched against the trailing segments of path. This allows relative patterns such as "sub/*.txt" to match absolute paths like "/path/to/sub/file.txt".

If pattern is rooted, path must also be rooted at the same location for a match to succeed.

The flags parameter controls matching behavior such as case folding, dotfile matching, globstar support, and escaping. See EGlobOptions for details.

This function performs no filesystem access and does not require the path to exist.


Function GlobIter:TGlobIter(pattern:String, flags:EGlobOptions = EGlobOptions.None, baseDir:String = "")

Performs file globbing.

Expands a glob pattern into an iterator of matching files and/or directories.

The glob pattern supports the following constructs:

  • * matches zero or more characters within a single path segment.
  • ? matches exactly one character within a single path segment.
  • Character classes such as [abc], [a-z], and negated classes [!abc] or [^abc].
  • Backslash escaping of metacharacters (unless the EGlobOptions.NoEscape flag is set).
  • The ** globstar operator (when EGlobOptions.GlobStar is enabled) to match zero or more directory levels.

By default, wildcard patterns do not match entries whose names begin with .. This behavior can be changed by enabling the EGlobOptions.Period flag.

Brace expansion using curly braces is supported.

A pattern of the form {a,b} is expanded into multiple patterns before globbing is performed. For example:

  • "src/{core,ui}/*.bmx" expands to "src/core/*.bmx" and "src/ui/*.bmx".

Brace expressions may be nested. Expansion is purely textual and occurs before any wildcard matching.

Only brace expressions containing at least one top-level comma are expanded. Malformed or unterminated brace expressions are treated as literal text.

Note that **/pattern matches only files below the starting directory. To include files in the starting directory, combine with pattern using brace expansion. For example, {pattern,**/pattern}.

Backslash-escaped braces (\{ and \}) are treated literally unless EGlobOptions.NoEscape is specified.

If pattern is not rooted, globbing begins relative to baseDir if supplied, or the current directory as returned by CurrentDir. If pattern is rooted, baseDir is ignored and matching begins at the root.

The returned paths are:

  • Rooted paths if pattern is rooted.
  • Paths relative to baseDir (or the current directory) if pattern is not rooted.

The flags parameter controls additional matching behavior and result filtering. See EGlobOptions for details.

The globbing implementation works consistently for both the native filesystem and the virtual filesystem when BRL.Io / MaxIO is enabled.

The returned iterator should be closed if not fully consumed, to release any held resources. This can be done manually by calling Close(), or automatically via a Using block. For example:

Using
Local it:TGlobIter = GlobIter("src/**/*.bmx", EGlobOptions.GlobStar, "base/dir")
Do
For Local s:String = EachIn it
If s = "src/some/specific/file.bmx" Then
Print "Found it!"
Exit
End If
Next
End Using


← BRL.GLMax2DEGlobOptions →
  • What Is a Glob?
  • Basic Wildcards
    • * — Match Any Characters (Single Segment)
    • ? — Match One Character
  • Character Classes
    • [abc]
    • [a-z]
    • Negated Classes
  • Path Separators
  • Globstar: **
  • Dotfiles and the Period Flag
  • Case Sensitivity
  • Escaping Metacharacters
  • Brace Expansion {a,b}
    • Nested Braces
    • Expansion Rules
  • Rooted vs Relative Patterns
    • Rooted Patterns
    • Relative Patterns
  • Filtering Flags
  • APIs
    • Eager Globbing
    • Lazy Globbing (Iterators)
  • Matching Paths Without Filesystem Access (MatchGlob)
    • What is MatchGlob used for?
    • Path-aware matching
    • Rooted patterns
    • Notes
  • Virtual Filesystem Support
  • Performance Notes
  • Types
  • Enums
  • Functions
    • Function Glob:String[](pattern:String, flags:EGlobOptions = EGlobOptions.None, baseDir:String = "")
    • Function MatchGlob:Int(pattern:String, path:String, flags:EGlobOptions = EGlobOptions.None)
    • Function GlobIter:TGlobIter(pattern:String, flags:EGlobOptions = EGlobOptions.None, baseDir:String = "")
BlitzMax
Docs
Getting StartedDownloadsAbout
Community
Resources
More
GitHubStarChat on Discord
Copyright © 2026 Bruce A Henderson