# Tmpfiles

Parses systemd tmpfiles.d files

Author: Julien Pivotto roidel.nosp@m.apluie@inui.nosp@m.ts.eu

Summary

Tmpfiles | Parses systemd tmpfiles.d files
Reference | This lens tries to keep as close as possible to `man 5 tmpfiles.d` where possible.
License | This file is licenced under the LGPL v2+, like the rest of Augeas.
Lens Usage | To be documented
Configuration files | This lens applies to /etc/tmpfiles.d/*.conf /usr/lib/tmpfiles.d/*.conf and /run/tmpfiles.d/*.conf.
Examples | The Test_Tmpfiles file contains various examples and tests.
USEFUL PRIMITIVES |
Comments and empty lines |
sep_spc | Space
sep_opt_spc | Optional space (for the beginning of the lines)
comment | Comments
empty | Empty lines
Lense-specific primitives |
type | One letter.
mode | “-”, or 3-4 bytes.
age | “-”, or one of the formats seen in the manpage: 10d, 5seconds, 1y5days.
argument | The last field.
field | Applies to the other fields: path, gid and uid fields
record | A valid record, one line in the file.
THE TMPFILES LENSE |
lns | The tmpfiles lens.
filter |

### Reference

This lens tries to keep as close as possible to `man 5 tmpfiles.d` where possible.

### License

This file is licenced under the LGPL v2+, like the rest of Augeas.

### Lens Usage

To be documented

### Configuration files

This lens applies to /etc/tmpfiles.d/*.conf /usr/lib/tmpfiles.d/*.conf and /run/tmpfiles.d/*.conf. See filter.

### Examples

The Test_Tmpfiles file contains various examples and tests.

### USEFUL PRIMITIVES

### Comments and empty lines

### sep_spc

> let sep_spc = Sep.space

Space

### sep_opt_spc

> let sep_opt_spc = Sep.opt_space

Optional space (for the beginning of the lines)

### comment

> let comment = Util.comment

Comments

### empty

> let empty = Util.empty

Empty lines

### Lense-specific primitives

### type

> let type = /([fFwdDvqQpLcbCxXrRzZtThHaAm]|[AabcLp]\+)!?/

One letter. Some of them can have a “+” and all can have a “!”.

Not all letters are valid.

### mode

> let mode = /(-|~?[0-7]{3,4})/

”-”, or 3-4 bytes. Optionally starts with a “~”.

### age

> let age = /(-|(~?[0-9]+(s|m|min|h|d|w|ms|us|((second|minute|hour|day|week|millisecond|microsecond)s?))?)+)/

”-”, or one of the formats seen in the manpage: 10d, 5seconds, 1y5days. optionally starts with a “~’.

### argument

> let argument = /([^# \t\n][^#\n]*[^# \t\n]|[^# \t\n])/

The last field. It can contain spaces.

### field

> let field = /[^# \t\n]+/

Applies to the other fields: path, gid and uid fields

### record

> let record = [ seq "record" . sep_opt_spc . [ label "type" . store type ] . sep_spc . [ label "path" . store field ] . ( sep_spc . [ label "mode" . store mode ] . ( sep_spc . [ label "uid" . store field ] . ( sep_spc . [ label "gid" . store field ] . ( sep_spc . [ label "age" . store age ] . ( sep_spc . [ label "argument" . store argument ] )? )? )? )? )? . Util.comment_or_eol ]

A valid record, one line in the file. Only the two first fields are mandatory.

### THE TMPFILES LENSE

### lns

> let lns = ( empty | comment | record ) *

The tmpfiles lens. Each line can be a comment, a record or empty.

### filter

Provides unit tests and examples for the Tmpfiles lens.

> let sep_spc = Sep.space

Space

> let sep_opt_spc = Sep.opt_space

Optional space (for the beginning of the lines)

> let comment = Util.comment

Comments

> let empty = Util.empty

Empty lines

> let type = /([fFwdDvqQpLcbCxXrRzZtThHaAm]|[AabcLp]\+)!?/

One letter.

> let mode = /(-|~?[0-7]{3,4})/

“-”, or 3-4 bytes.

> let age = /(-|(~?[0-9]+(s|m|min|h|d|w|ms|us|((second|minute|hour|day|week|millisecond|microsecond)s?))?)+)/

“-”, or one of the formats seen in the manpage: 10d, 5seconds, 1y5days.

> let argument = /([^# \t\n][^#\n]*[^# \t\n]|[^# \t\n])/

The last field.

> let field = /[^# \t\n]+/

Applies to the other fields: path, gid and uid fields

> let record = [ seq "record" . sep_opt_spc . [ label "type" . store type ] . sep_spc . [ label "path" . store field ] . ( sep_spc . [ label "mode" . store mode ] . ( sep_spc . [ label "uid" . store field ] . ( sep_spc . [ label "gid" . store field ] . ( sep_spc . [ label "age" . store age ] . ( sep_spc . [ label "argument" . store argument ] )? )? )? )? )? . Util.comment_or_eol ]

A valid record, one line in the file.

> let lns = ( empty | comment | record ) *

The tmpfiles lens.
Close