The OXFuse library is free software.
This library is distributed in the hope that it will be useful,
but without any warranty; without even the implied warranty of
merchantability or fitness for a particular purpose.

**Official repositories**:

- [https://codeberg.org/os-18/oxfuse](https://codeberg.org/os-18/oxfuse)
- [https://gitlab.com/os-18/oxfuse](https://gitlab.com/os-18/oxfuse)

---

## OXFuse

OXFuse (Object-oriented eXtension of FUSE) is a binding to [libfuse3](https://github.com/libfuse/libfuse)
for the D programming language.

### Features

- To create your own file system, you should inherit from the `oxfuse.FileSystem` class and overload any methods (file operations).

- This library allows to use fourty operations from libfuse (all except `write_buf()`/`read_buf()`).

- The behavior of all non-overloaded functions is determined by FUSE and the OS kernel.

- The library doesn\'t contain bindings to functions which parse command line arguments.
  Parsing is proposed to be done using the D language tools.

- Error situations with accompanying messages and `errno` are based on `FuseException` and the `fe()` function.

### Documentation

[https://os-18.codeberg.page/oxfuse/](https://os-18.codeberg.page/oxfuse/)

### See also

The "examples/" directory contains several different implementations of file systems.

Useful imformation is also available here: [https://github.com/libfuse/libfuse/wiki](https://github.com/libfuse/libfuse/wiki).

---

## Ready-made packages

See:  
[Download Page of OS-18](https://codeberg.org/os-18/os-18-docs/src/branch/master/OS-18_Packages.md)  

The page contains information about installing several packages, including
OXFuse.


---

## Build from source

### Preparing

You must have [make](https://www.gnu.org/software/make/)
and at least one of these compilers:

- [Digital Mars D Compiler](https://dlang.org/download.html#dmd)
- [LLVM D Compiler](https://wiki.dlang.org/LDC)
- [GNU D Compiler](https://www.gdcproject.org)

Also the library needs **libfuse3**.

### Simple building and installing

Creating of static and dynamic libraries for the **ldc2** compiler (by default):

```
make
```

Installation (root rights may be required):

```
make install
```

After that, the library for ldc2 is ready for use.

You can install the library to any other directory:

```
make install DESTDIR=/home/$USER/sandbox
```

Uninstalling:

```
make uninstall
```

If you installed in an alternative directory:

```
make uninstall DESTDIR=/home/$USER/sandbox
```

### Other compilers

Compiler by default is **ldc2**.
You can choose other compiler (for example, **dmd**):

```
make DC=dmd
```

Installing:

```
make install DC=dmd
```

Uninstalling:

```
make uninstall DC=dmd
```

---


## Feedback

Questions, suggestions, comments, bugs:

**tech.vindex@gmail.com**

Also use the repository service tools.

---
