fileio

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2021 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package fileio provides functionality to interact with the OSs filesystem. This includes iteration over (parts of) the filesystem, as well as enumeration of network shares.

Index

Constants

This section is empty.

Variables

View Source
var (
	// FilesBuffer sets how many files can be buffered at one time
	// during iteration.
	FilesBuffer = 8
)

Functions

func DriveTypeNames

func DriveTypeNames() []string

DriveTypeNames returns a list of possible string values of DriveType.

func Enumerate

func Enumerate(typeMask DriveType) ([]string, error)

Enumerate enumerates all mounted drives of the given type.

Types

type DriveType

type DriveType int

DriveType describes the type of a system drive.

ENUM( Unknown=0 Removable=1 Fixed=2 Remote=4 CDRom=8 RAM=16 )

const (
	// DriveTypeUnknown is a DriveType of type Unknown
	DriveTypeUnknown DriveType = iota
	// DriveTypeRemovable is a DriveType of type Removable
	DriveTypeRemovable
	// DriveTypeFixed is a DriveType of type Fixed
	DriveTypeFixed
	// DriveTypeRemote is a DriveType of type Remote
	DriveTypeRemote DriveType = iota + 1
	// DriveTypeCDRom is a DriveType of type CDRom
	DriveTypeCDRom DriveType = iota + 4
	// DriveTypeRAM is a DriveType of type RAM
	DriveTypeRAM DriveType = iota + 11
)

func ParseDriveType

func ParseDriveType(name string) (DriveType, error)

ParseDriveType attempts to convert a string to a DriveType

func (DriveType) MarshalText

func (x DriveType) MarshalText() ([]byte, error)

MarshalText implements the text marshaller method

func (DriveType) String

func (x DriveType) String() string

String implements the Stringer interface.

func (*DriveType) UnmarshalText

func (x *DriveType) UnmarshalText(text []byte) error

UnmarshalText implements the text unmarshaller method

type FSScanProgress

type FSScanProgress struct {
	File    File
	Matches []yara.MatchRule
	Error   error
}

FSScanProgress provides information about the scanning progress.

type FSScanner

type FSScanner struct {
	NGoroutines int
	// contains filtered or unexported fields
}

FSScanner is a scanner for the filesystem.

func NewFSScanner

func NewFSScanner(scanner FileScanner) *FSScanner

NewFSScanner create a new FSScanner, which will use the given FileScanner to scan any encountered file.

func (*FSScanner) Scan

func (s *FSScanner) Scan(it Iterator) (<-chan *FSScanProgress, error)

Scan scans all files, emitted by the given Iterator.

type File

type File interface {
	Path() string
	Stat() (os.FileInfo, error)
}

File is a small abstraction layer for a file.

type FileScanner

type FileScanner interface {
	ScanFile(filename string) (results []yara.MatchRule, err error)
}

FileScanner provides functionality to scan files.

type Iterator

type Iterator interface {
	Next() (File, error)
	Close() error
}

Iterator provides capability to iterate over files.

func Concat

func Concat(iterators ...Iterator) Iterator

Concat concatenates multiple Iterators. When one Iterator is exhausted, the next one is used.

func Concurrent

func Concurrent(iterators ...Iterator) Iterator

Concurrent combines the given Iterators concurrently. Each given Iterator will run in its own goroutine.

func IteratePath

func IteratePath(ctx context.Context, path string, validExtensions []string) (Iterator, error)

IteratePath starts an asynchronous, recursive Iterator over all files and subdirectores in the given path. For each file with one of the given validExtensions, a File will be emitted, which can be read using Iterator.Next.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL