# [pathes.h] Path Iterator / File Access & I/O Handling

## contents

#include "standard.h"

## Types

PIT | Abstract tokenizer / path iterator type

## Tokenizer / Path iterator

    PIT PIT_make(c_string PathList)
| creates a tokenizer / path iterator from 'PathList'
    void PIT_sep(PIT Piter,c_string sep)
| defines 'sep' as token separator for iterator 'Piter'
    c_string PIT_read(PIT Piter)
| next token / path in iterator 'Piter'
    void PIT_drop(PIT Piter)
| drops tokenizer / path iterator 'Piter'

## File access / information

    c_string DirSep(void)
| directory separator ( constant )
    c_string PathSep(void)
| path separator ( constant )
    c_bool AbsolutePathSep(c_string file)
| whether 'file' starts with a path separator
    c_bool AbsolutPath(c_string file)
| whether 'file' is an absolut path
    c_bool PathIgnCase(void)
| whether pathes are case insensitive
    c_string FileLName(c_string file)
| filename of path 'file'; allocs memory
    c_string FilePrefix(c_string file)
| directory prefix of path 'file'; allocs memory
    c_string FileSuffix(c_string file)
| suffix of path 'file'; allocs memory
    c_string BaseFile(c_string file)
| basename of path 'file'; allocs memory
    c_bool IsPath(c_string path)
| whether 'path' is a regular file, directory, ...
    c_bool IsDirEntry(c_string file, c_string dir)
| whether 'file' is an entry of directory 'dir'
    c_string GetEnvCtx(c_string env)
| value of context or environment variable or NULL
    c_string MkPath(c_string direnv, c_string basename, c_string ext, char opt)
| path = cons(env,dir_separation,basename,ext); allocs memory. Note: opt = 'd' --> env = direnv direnv = "" & opt = 'c' & relative basename --> env = dirname(cwd) direnv != "" & opt = '$' --> env = $direnv direnv != "" & opt = 'e' --> env = getenv(direnv) direnv != "" & opt = 'p' --> env = findPath in getenv(direnv)
    long PathMTime(c_string path)
| file modification time of 'path'
    long Path_FileSize(c_string path)
| the file size of 'path'
    c_bool IsDirPath(c_string path)
| path = directory ?
    c_bool IsRegPath(c_string path)
| path = regular file ?
    c_bool IsCDevPath(c_string path)
| path = character device ?
    c_bool IsBDevPath(c_string path)
| path = block device ?
    c_bool IsFifoPath(c_string path)
| path = FIFO ?

## File I/O handling

    FILE* TryOpnFile(c_string path, c_string access)
| tries to open 'path' in mode 'access' ( MSDOS convention 'w|r[+]t|b' )
    FILE* OpnFile(c_string path, c_string access)
| opens 'path' in mode 'access' ( MSDOS convention 'w|r[+]t|b' ); raises exception
    FILE* TryOpenPath(c_string env, c_string file, c_string ext, c_string acc)
| tries to open Path(env,file,ext) in mode 'acc' ( MSDOS convention 'w|r[+]t|b' )
    FILE* OpenPath(c_string env, c_string file, c_string ext, c_string acc)
| opens Path(env,file,ext) in mode 'acc' ( MSDOS convention 'w|r[+]t|b' ); raises exception