Skip to content

Commit fa7bc9f

Browse files
committed
Version 0.1.3; updated CHANGELOG and README
1 parent b707cb9 commit fa7bc9f

File tree

3 files changed

+92
-17
lines changed

3 files changed

+92
-17
lines changed

CHANGELOG.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,65 @@
11
# Drat changelog
22

3+
## v0.1.3 (2021-08-29)
4+
5+
### Functional changes
6+
7+
- Linux support added (tested under Ubuntu 20.04.3). From this version onwards,
8+
binaries for Linux on x86-64 will also be provided for versioned releases.
9+
Some more general code portability provisions have also been made.
10+
11+
- `drat inspect` now automatically detects the APFS block size, based on the
12+
block size value provided by the container superblock found at block 0.
13+
14+
- Extended fields (xfields) are now supported.
15+
16+
- `drat recover` now gets the actual file size and thus outputs files of the
17+
correct size rather than a multiple of the APFS block size. The tools in
18+
`/supplemental-tools` have thus been removed. ([Issue #2](https://github.com/jivanpal/drat/issues/2)).
19+
20+
- UUIDs are now printed in standard format.
21+
22+
- Fixed bug in `get_nx_incompatible_features_string()` and `get_nx_flags_string()`
23+
that caused these functions to analyse the `nx_features` field instead.
24+
25+
- `drat version` now outputs legal info (copyright notice, warranty, and
26+
licence).
27+
28+
### Other changes
29+
30+
- Refactored libraries:
31+
32+
- `/include` has been added to the compilation include path to avoid use of
33+
relative paths.
34+
35+
- `/src/apfs/struct` has moved to `/include/apfs`, and can thus be included
36+
as `<apfs>`. This library contains headers that define all data structures
37+
detailed in Apple's APFS specfication.
38+
39+
- The remainder of `/src/apfs` has moved to `/include/drat`, and can thus be
40+
included as `<drat>`. This library contains functionality specific to Drat:
41+
42+
- Headers in `<drat/func>` define functions that facilitate common
43+
operations on data strctures provided by `<apfs>`;
44+
45+
- Headers in `<drat/string>` define functions that produce human-readable
46+
strings/output detailing the data contained in data structures provided
47+
by `<apfs>`; and
48+
49+
- Headers in `<drat>` define miscellaneous functions.
50+
51+
- Refactored code:
52+
53+
- String generation functions that operate on enum fields have had their
54+
shared code factored into `<drat/string/common.h>` as
55+
`get_single_enum_string()` and `get_flags_enum_string()`.
56+
57+
- Use of `ctime()` for printing timestamps has been factored into
58+
`get_apfs_timestamp_string()`.
59+
60+
- Documentation for v0.2.x has been drafted in `/docs` using
61+
[Sphinx](https://www.sphinx-doc.org/en/master/).
62+
363
## v0.1.2 (2021-02-05)
464

565
- Renamed `src/apfs/struct/const.h` to `src/apfs/struct/jconst.h`

README.md

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,36 +17,35 @@ Currently, all of Drat's commands (except `modify`, which is currently disabled
1717
as it is not fit for use) operate in a read-only fashion, as they are intended
1818
to be used in situations involving data recovery or data forensics.
1919

20-
## Build instructions
20+
### Running the software
2121

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

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

28-
Compilation and execution has been tested on macOS Catalina 10.15.7 (19H524) on
29-
an Intel x86-64 machine (MacBookPro9,2).
30-
3128
### Compiling the software
3229

3330
#### Requirements
3431

35-
- `gcc` — Required because we use `__attribute__((packed))`. Tested with
36-
GCC 11.2.0, installed via [Homebrew](https://brew.sh) (Homebrew GCC 11.2.0).
32+
- GNU C Compiler (`gcc`) — Required because we use `__attribute__((packed))`.
33+
34+
- GNU Make (`make`).
3735

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

40-
- `<argp.h>` (GNU Argp library) — If compiling on macOS, you can get this by
41-
installing the [Homebrew](https://brew.sh) package `argp-standalone`; the
42-
Makefile will handle this configuration automatically. If you acquire this
43-
library any other way, you will need to configure `CFLAGS` and `LDFLAGS` as
44-
appropriate (see lines in `Makefile` after `ifeq ($(shell uname -s),Darwin)`).
38+
- On Ubuntu, ensure that the package `libc6-dev` is installed.
39+
40+
- On macOS, you can install just Argp via the [Homebrew](https://brew.sh)
41+
package `argp-standalone`. The Makefile will handle this configuration
42+
automatically. If you acquire Argp any other way, such as by installing
43+
glibc in its entirety, you may need to configure `CFLAGS` and `LDFLAGS` as
44+
appropriate.
4545

4646
#### Instructions
4747

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

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

57+
#### Tested platforms
58+
59+
Compilation and execution has been tested on the following platforms:
60+
61+
- macOS Catalina 10.15.7 (19H524) on an Intel x86-64 machine (MacBookPro9,2), using:
62+
63+
- GCC 11.2.0 (Homebrew GCC 11.2.0)
64+
- GNU Make 3.81 (as included in Xcode Command Line Tools)
65+
- Homebrew package `argp-standalone`, version 1.3
66+
67+
- Ubuntu 20.04.3 on an Intel x86-64 machine (Intel Core i5-4288U), using:
68+
69+
- GCC 9.3.0
70+
- GNU Make 4.2.1
71+
- GNU C Library (glibc) 2.31
72+
5873
### Generating the documentation
5974

6075
[Sphinx](https://www.sphinx-doc.org/en/master/) is used to manage the

src/legal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#define DRAT_LEGAL_H
33

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

0 commit comments

Comments
 (0)