Skip to content

Commit

Permalink
Version 0.1.3; updated CHANGELOG and README
Browse files Browse the repository at this point in the history
  • Loading branch information
jivanpal committed Aug 29, 2021
1 parent b707cb9 commit fa7bc9f
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 17 deletions.
60 changes: 60 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,65 @@
# Drat changelog

## v0.1.3 (2021-08-29)

### Functional changes

- Linux support added (tested under Ubuntu 20.04.3). From this version onwards,
binaries for Linux on x86-64 will also be provided for versioned releases.
Some more general code portability provisions have also been made.

- `drat inspect` now automatically detects the APFS block size, based on the
block size value provided by the container superblock found at block 0.

- Extended fields (xfields) are now supported.

- `drat recover` now gets the actual file size and thus outputs files of the
correct size rather than a multiple of the APFS block size. The tools in
`/supplemental-tools` have thus been removed. ([Issue #2](https://github.com/jivanpal/drat/issues/2)).

- UUIDs are now printed in standard format.

- Fixed bug in `get_nx_incompatible_features_string()` and `get_nx_flags_string()`
that caused these functions to analyse the `nx_features` field instead.

- `drat version` now outputs legal info (copyright notice, warranty, and
licence).

### Other changes

- Refactored libraries:

- `/include` has been added to the compilation include path to avoid use of
relative paths.

- `/src/apfs/struct` has moved to `/include/apfs`, and can thus be included
as `<apfs>`. This library contains headers that define all data structures
detailed in Apple's APFS specfication.

- The remainder of `/src/apfs` has moved to `/include/drat`, and can thus be
included as `<drat>`. This library contains functionality specific to Drat:

- Headers in `<drat/func>` define functions that facilitate common
operations on data strctures provided by `<apfs>`;

- Headers in `<drat/string>` define functions that produce human-readable
strings/output detailing the data contained in data structures provided
by `<apfs>`; and

- Headers in `<drat>` define miscellaneous functions.

- Refactored code:

- String generation functions that operate on enum fields have had their
shared code factored into `<drat/string/common.h>` as
`get_single_enum_string()` and `get_flags_enum_string()`.

- Use of `ctime()` for printing timestamps has been factored into
`get_apfs_timestamp_string()`.

- Documentation for v0.2.x has been drafted in `/docs` using
[Sphinx](https://www.sphinx-doc.org/en/master/).

## v0.1.2 (2021-02-05)

- Renamed `src/apfs/struct/const.h` to `src/apfs/struct/jconst.h`
Expand Down
47 changes: 31 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,36 +17,35 @@ Currently, all of Drat's commands (except `modify`, which is currently disabled
as it is not fit for use) operate in a read-only fashion, as they are intended
to be used in situations involving data recovery or data forensics.

## Build instructions
### Running the software

If you're running macOS on an Intel Mac, precompiled binaries for versioned
releases are available on the [releases page](https://github.com/jivanpal/drat/releases).
If you're using an Intel machine that's running macOS or Linux, you can find
binaries for versioned releases on the [releases page](https://github.com/jivanpal/drat/releases).

Documentation for versioned releases and as generated from the `main` branch
[can be viewed online](https://drat.readthedocs.io/).

Compilation and execution has been tested on macOS Catalina 10.15.7 (19H524) on
an Intel x86-64 machine (MacBookPro9,2).

### Compiling the software

#### Requirements

- `gcc` — Required because we use `__attribute__((packed))`. Tested with
GCC 11.2.0, installed via [Homebrew](https://brew.sh) (Homebrew GCC 11.2.0).
- GNU C Compiler (`gcc`) — Required because we use `__attribute__((packed))`.

- GNU Make (`make`).

- `make` — Tested with GNU Make 3.81, as included in Xcode Command Line Tools.
- GNU Argp library (`<argp.h>`) — Part of the GNU C Library (glibc):

- `<argp.h>` (GNU Argp library) — If compiling on macOS, you can get this by
installing the [Homebrew](https://brew.sh) package `argp-standalone`; the
Makefile will handle this configuration automatically. If you acquire this
library any other way, you will need to configure `CFLAGS` and `LDFLAGS` as
appropriate (see lines in `Makefile` after `ifeq ($(shell uname -s),Darwin)`).
- On Ubuntu, ensure that the package `libc6-dev` is installed.

- On macOS, you can install just Argp via the [Homebrew](https://brew.sh)
package `argp-standalone`. The Makefile will handle this configuration
automatically. If you acquire Argp any other way, such as by installing
glibc in its entirety, you may need to configure `CFLAGS` and `LDFLAGS` as
appropriate.

#### Instructions

- Ensure that `gcc` is in your `$PATH`, or modify the `CC` and `LD` values in
`Makefile` to reflect the location of `gcc` on your system.
- Ensure that `gcc` is in your `$PATH`, or configure `CC` and `LD` as appropriate.

- Run `make` from the project root (where this `README.md` file resides). An
`out` directory will be created in which the object files will be stored. The
Expand All @@ -55,6 +54,22 @@ an Intel x86-64 machine (MacBookPro9,2).
- Run `make clean` to remove the compiled binary (`drat`) and other output files
(`out` directory).

#### Tested platforms

Compilation and execution has been tested on the following platforms:

- macOS Catalina 10.15.7 (19H524) on an Intel x86-64 machine (MacBookPro9,2), using:

- GCC 11.2.0 (Homebrew GCC 11.2.0)
- GNU Make 3.81 (as included in Xcode Command Line Tools)
- Homebrew package `argp-standalone`, version 1.3

- Ubuntu 20.04.3 on an Intel x86-64 machine (Intel Core i5-4288U), using:

- GCC 9.3.0
- GNU Make 4.2.1
- GNU C Library (glibc) 2.31

### Generating the documentation

[Sphinx](https://www.sphinx-doc.org/en/master/) is used to manage the
Expand Down
2 changes: 1 addition & 1 deletion src/legal.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#define DRAT_LEGAL_H

#define VERSION_AND_COPYRIGHT_STRING \
"Drat version 0.1.2\n" \
"Drat version 0.1.3\n" \
"Copyright (C) 2019-2021 Jivan Pal\n" \
"<https://dratapp.com>\n"

Expand Down

0 comments on commit fa7bc9f

Please sign in to comment.