Title-case every page and section heading

DPM is public-facing, and its headings read as titles: capitalized
throughout, with articles, conjunctions, and short prepositions left
lowercase in the middle.

Applies to the markdown documents and to the Doxygen page and section
titles in the public header, so the generated reference matches. One
prose cross-reference in DESIGN.md follows the section it names.
This commit is contained in:
2026-08-15 20:49:29 -04:00
parent 38bd9314cc
commit 99173d27ea
6 changed files with 57 additions and 57 deletions

View File

@@ -2,7 +2,7 @@
Programs link libdpm-core.so as an ordinary shared library dependency — the same way they link any other library — to reach the package manager in-process: build systems, installers, image builders, system tooling, and foreign-language bindings all use the library the `dpm` binary is built on. A program holding a default context is working against system configuration, the system module path, the system tree, and system locking, the same environment the installed `dpm` binary sees.
## Compiling and linking
## Compiling and Linking
With the library installed, include the public header and link it:
@@ -18,7 +18,7 @@ The header installs to the standard include path and the library to the standard
`<dpm/core.h>` names no module and carries no module-specific type. It offers two things: discovery of modules, and interaction with them.
## The context
## The Context
All work happens through a context handle:
@@ -46,7 +46,7 @@ Leaving `config_dir` NULL selects `/etc/dpm/conf.d/`; leaving `module_path` NULL
The root override is what makes chroot builds, image assembly, and sysroot management work: package operations act on the given tree instead of the running system. Multiple simultaneous contexts with different roots are legal.
## Acquiring and using modules
## Acquiring and Using Modules
**`dpm_require`** loads a module by name, on demand:
@@ -75,7 +75,7 @@ int rc = dpm_execute(ctx, mod, "command", argc, argv);
This is the only path into module code, and it is the same path the `dpm` binary uses and the same path a module uses to reach a peer. You address a module by name and a capability by command string, so your program compiles against no module header, no struct layout, and no module symbol. What a module accepts as commands and arguments, and what its return codes mean, is documented by that module.
## Enumerating modules
## Enumerating Modules
```
dpm_cursor* cur = dpm_list_modules(ctx);
@@ -97,11 +97,11 @@ The cursor covers every valid module in the module path; invalid candidates are
- **`dpm_module_path`(ctx)** — the resolved module directory.
- **`dpm_last_error`(ctx)** — a human-readable description of the most recent failure on the context, or NULL.
## Ownership and errors
## Ownership and Errors
Strings returned by the library are owned by the context (or by the module that produced them) and remain valid until `dpm_close`; callers never free them. Functions returning int use 0 for success. Functions returning pointers use NULL for failure, with detail available from `dpm_last_error`.
## Complete example
## Complete Example
```
#include <dpm/core.h>