bzw

package: bzflag

title: bzw(5)

summary: BZFlag world file format

text:
# bzw(5)

## NAME
bzw - BZFlag world file format

## DESCRIPTION
The BZFlag world file format describes a world environment that is used by the BZFlag game server, bzfs. X BZW file format

The BZFlag world file format describes and environment that includes the game map, physical world attributes, and automatic world weapons. The map may contain a variety of "obstacles" like buildings, pyramids, and meshes. These obstacles make up the world that the BZFlag tanks will drive around in. Map attributes may be set to create worlds of various sizes, the default size is 800x800.

Here is small example world:

\# simple world containing a box, pyramid, and mesh

world

name Simple World

size 100.0

end

box

position -20 -20 0

size 10 20 10

end

pyramid

position 20 20 0

size 10 10 20

end

mesh

vertex -10 0 0

vertex 10 0 0

vertex 0 10 0

face

vertices 0 1 2

endface

end

The .bzw file is a plain text file with a relatively simple file format. The format of this text file consists of any number of objects listed in any order (except that physics, textureMatrix, dynamicColor, and material must come before they are referenced) separated by newlines and grouped into blocks of types. The list of world types consists of:

world

options

waterLevel

dynamicColor

textureMatrix

transform

material

physics

define

group

mesh

meshbox

meshpyr

arc

cone

sphere

tetra

box

pyramid

link

teleporter

base

weapon

zone

Each object is described by placing the type on one line, the word end on a following line, and a list of attributes for that object, one per line, in between. The exceptions to the rule are define and face, which are concluded with enddef and endface. Attributes may be listed in any order. Attributes have default values, and if that is good enough, the attribute need not be listed.

Words are always specified in lowercase. Line comments can be specified by placing a # sign at the start of the line.

For documentation purposes, you can tag each object by adding a name attribute. There is no set limit to the number of times you may use any of the objects except for the world, options, and waterLevel objects, they can only be specified once. The options object contains command line arguments that are used to configure the server's game mode, but can not contain server specific options such as -p, -passwd, and -conf.

In the following examples, the values are the defaults.

The World object

Header for the world.

world

name example_world

size 400.0

flagHeight 10.0

end

The Options object

A world file interface for setting command line options for BZFS.

options

-set _tankSpeed 36

-j +r -ms 3

+f GM{5} +f SW{5}

end

The Water Level object

Sets how high the water is, in a matter of units.

waterLevel

name example_waterlevel

height -1.0 # anything below 0 turns it off

end

The Group Definition object

Defines a group, which may include other group instances

This does not place any objects into the world, a group instance must be used to generate world objects from a group definition.

define <example_groupdef>

\# You can add any object to a group definition,

\# except for the following types:

\# textureMatrix

\# dynamicColor

\# material

\# physics

\# links

\# weapon

\# zone

enddef

The Group Instantiation object

Instantiates a group, and possibly modifies subobjects

group <example_groupdef> # a valid group definition reference

shift 0 0 0 # (repeatable)

scale 1 1 1 # (repeatable)

shear 0 0 0 # (repeatable)

spin angle nx ny nz # (repeatable)

\# angle degrees about vector n

team 0 # change all base colors within group

tint 1 1 1 1 # hierarchically tints objects within this group

drivethrough # make all subobjects drivethrough

shootthrough # make all subobjects shootthrough

ricochet # make all subobjects ricochet phydrv example_phydrv # reassign any valid physics drivers

matref example_material # set material properties

\# (except for the color)

matswap oldMat newMat #replace a given material in the instance

end

The Dynamic Color object

dynamicColor

name example_dyncol

\# there are 4 channels that can be modified:

\# red, green, blue, alpha

\# there are 5 types of commands per channel:

\# limits, sinusoid, clampUp, clampDown, sequence

\# except for "limits" and "sequence", the commands are repeatable

\# if a sequence is used, then clampUps and clampDowns have no effect

\# sequences can use three states (0, 1, 2).

\# 0 - equivalent to an active clampDown

\# 1 - equivalent to no clamps

\# 2 - equivalent to an active clampUp

\# if both clampUp and clampDown are active, the value is (min+max)/2

\# the sinusoid function starts at the max value

\# the sum of a channel's sinusoids is clamped between 0 and 1

red limits 0 1 # min/max limits

green sinusoid 0.1 0 0.25 # period, offset, weight

blue clampUp 0.1 0 0.75 # period, offset, width

alpha clampDown 0.2 0.5 0.5 # period, offset, width

red sequence 0.0 0.0 2 0 1 1 2 0 ... # period, offset, list of states

end

The Texture Matrix object

textureMatrix

name example_texmat

scale 0.0 0.0 1.0 1.0 # u/v freqs, u/v scales

spin 0.0 # rotation freq

shift 0.0 0.0 # u/v freqs

center 0.5 0.5 # dynamic u/v center (for spin and scale)

fixedscale 0.0 0.0 # time invariant u/v scale

fixedspin 0.0 # time invariant rotation

fixedshift 0.0 0.0 # time invariant u/v shift

end

Material Properties

Material properties may be set on several types of objects, including meshes, mesh faces, arcs, cones, spheres, and tetras. Here are the properties:

material

name example_material

resetmat # restore default values

matref material_name # copy another material's properties

ambient 0.2 0.2 0.2 1.0 # ambient color

diffuse 1.0 1.0 1.0 1.0 # diffuse color (main color)

color 1.0 1.0 1.0 1.0 # synonym for 'diffuse'

specular 0.0 0.0 0.0 1.0 # specular color

emission 0.0 0.0 0.0 1.0 # emission color

shininess 0.0 # shininess (0.0 – 128.0)

texture filename # set working texture

\# - non-interlaced PNG

\# - http:// or ftp:// hyperlinks can be used (no spaces)

\# - BZFlag default texture names can be used (.png not required)

addtexture filename # add texture

notextures # specify that no textures are to be used

notexalpha # don't use the texture's alpha channel

notexcolor # the color is not applied to the texture

\# if a texture is specified, but not found, the default texture

\# will be used. if the default texture is also not available, then

\# the color will be used (untextured)

spheremap # use spherical texture coordinate mapping

texmat -1 # texture matrix (-1 for none)

dyncol -1 # dynamic color (-1 for none)

noradar # do not display on radar (except normal mode)

noshadow # do not render shadows

noculling # do not cull by face winding (double-sided)

nosorting # do not do front-to-back alpha sorting

nolighting # disable lighting

alphathresh 0.0 # alpha thresholding value

groupalpha # sort translucent faces as a group

occluder # faces with this material will occlude

end

The Physics Driver object

physics

name example_phydrv

linear 0.0 0.0 0.0 # x/y/z linear velocities

angular 0.0 0.0 0.0 # rotation freq, x/y coordinates

slide 0.0 # time until max velocity (> 0.0 enables)

death Message goes here.

\# the 'death' property requires a non-blank message

end

The Mesh object

mesh

name example_mesh

\# Material properties applied to a mesh apply to all faces

\# that follow the setting. Mesh faces will alter their own

\# properties without affecting the state of the mesh properties.

\# The same pattern is used to apply physics drivers.

vertex 100 200 300 # add a vertex (repeatable)

normal 1.0 0 0 # add a normal (repeatable)

texcoord 0.1 0.75 # add a texture coordinate (repeatable)

inside 5.5 4.5 1.2 # add an inside point (repeatable)

outside 0 0 1000 # add an outside point (repeatable)

shift 0 0 0 # (repeatable)

scale 1 1 1 # (repeatable)

shear 0 0 0 # (repeatable)

spin angle nx ny nz # (repeatable)

phydrv example_phydrv # assign a physics driver

smoothbounce # ricochets use normals

noclusters # render each mesh face individually

face # start a face (repeatable)

\# the front-face winding is counter-clockwise

vertices 1 4 0 3 5 # list of vertices (requires at least three)

normals 2 6 0 4 7 # list of normals (optional)

texcoords 0 3 2 4 9 # list of texture coordinates (optional)

phydrv example_phydrv # assign a physics driver

endface # end the face

\#

\# This next element can be added to increase the rendering speed

\# of the mesh object. If the client is capable of using this data,

\# then it is used to draw the mesh instead of the face information.

\#

drawInfo

dlist # display list for all material sets

decorative # older clients with not see this mesh

angvel <degrees/sec> # rotation about initial Z axis

extents <minX> <minY> <minZ> <maxX> <maxY> <maxZ>

sphere <x> <y> <z> <radiusSquared>

corner <v> <n> <t> (repeatable)

vertex 0.0 0.0 0.0 (repeatable)

normal 0.0 0.0 0.0 (repeatable)

texcoord 0.0 0.0 (repeatable)

lod (repeatable)

lengthPerPixel <value>

matref <name> (repeatable)

dlist # display list for this material set

sphere <x> <y> <z> <radiusSquared>

points 0 (repeatable)

lines 0 1 (repeatable)

lineloop 0 1 (repeatable)

linestrip 0 1 (repeatable)

tris 0 1 2 (repeatable)

tristrip 0 1 2 (repeatable)

trifan 0 1 2 (repeatable)

quads 0 1 2 3 (repeatable)

quadstrip 0 1 2 3 (repeatable)

polygon 0 1 2 (repeatable)

end # matref

end # lod

end # drawInfo

end # mesh

The Arc object

arc

name example_arc

divisions 16 # number of subdivisions

flatshading # flat shading (smooth is default)

angle 360 # the sweep angle

ratio 1 # (outrad - inrad) / outrad

position 0.0 0.0 0.0

size 10 10 10

rotation 0.0

shift 0 0 0 # (repeatable)

scale 1 1 1 # (repeatable)

shear 0 0 0 # (repeatable)

spin angle nx ny nz # (repeatable)

phydrv example_phydrv # assign a physics driver

smoothbounce # ricochets use normals

end

The Cone object

cone

name example_cone

divisions 16 # number of subdivisions

flatshading # flat shading (smooth is default)

angle 360 # the sweep angle

position 0.0 0.0 0.0

size 10 10 10

rotation 0.0

shift 0 0 0 # (repeatable)

scale 1 1 1 # (repeatable)

shear 0 0 0 # (repeatable)

spin angle nx ny nz # (repeatable)

phydrv example_phydrv # assign a physics driver

smoothbounce # ricochets use normals

end

The Sphere object

sphere

name example_sphere

divisions 4 # number of subdivisions

flatshading # flat shading (smooth is default)

position 0.0 0.0 10.0

size 10 10 10

radius 10 # sets all size values to this value

rotation 0.0

shift 0 0 0 # (repeatable)

scale 1 1 1 # (repeatable)

shear 0 0 0 # (repeatable)

spin angle nx ny nz # (repeatable)

phydrv example_phydrv # assign a physics driver

smoothbounce # ricochets use normals

end

The Tetrahedron object

tetra

name example_tetra

\# there must always be 4 vertices

vertex -10.0 -5.0 0.0

vertex +10.0 -5.0 0.0

vertex 0.0 10.0 0.0

vertex 0.0 5.0 10.0

shift 0 0 0 # (repeatable)

scale 1 1 1 # (repeatable)

shear 0 0 0 # (repeatable)

spin angle nx ny nz # (repeatable)

end

The Box object

Adds a simple block.

box

name example_box

position 0.0 0.0 0.0

size 30.0 30.0 9.42

rotation 0.0

end

The Pyramid object

Adds a triangular shaped object.

pyramid

name example_pyramid

position 0.0 0.0 0.0

size 8.2 8.2 10.25

rotation 0.0

end

The Teleporter object

Adds an object that places a tank at another teleporter in a different area when ran through.

teleporter [name]

\# the [name] tag is used for linkage

name example_teleporter

position 0.0 0.0 0.0

size 5.06 4.48 20.16

rotation 0.0

border 1.12

end

The Link object

Adds a route to teleport a tank between two teleporters.

\# Teleporter names are terminated with either :f (forward)

\# or :b (backwards). The forwards link points to 0 degrees,

\# and the backwards link points to 180. Links are made by

\# pattern matching the teleporter names. The '*' and '?'

\# globbing characters can be used to make multiple matches.

\# If there are multiple matches for the "to" link, then the

\# destination will be selected randomly between the matches.

\# in-game.

\# NOTE: bzfs -d -d -d -d will print the linkage table.

link

name example_link

\# this will link all teleporters randomly to all other teleporters

from *

to *

end

\# or, to link between known teleporters examp_tele1(front) and examp_tele2(back)

link

name example_realLink

from examp_tele1:f

to examp_tele2:b

end

The Base object

Creates a team base where the corresponding team's flag is stored. The oncap option will fire a world weapon of the specified type when the team flag for this base is captured.

base

name example_base

position 0.0 0.0 0.0

size 60.0 60.0 0.0

rotation 0.0

color 0

oncap V

end

The Weapon object

Creates a world weapon, or a weapon fired automatically by the world. The weapon can either be timed or be event driven. Timed weapons should use the initdelay and delay fields. Event driven weapons need to use the trigger option to define what the trigger event is. Valid trigger events are; OnCap, for flag capture events. OnSpawn, for player spawn events. OnDie, for player death events. If the weapon is to be triggered only for a specific team then the eventteam option should be used with a team number (1 to 4). An eventteam value of -1 will trigger this weapon for any team. -1 is the default eventteam value.

weapon

name example_weapon

position 0.0 0.0 0.0

rotation 0.0

tilt 0.0

initdelay 10.0

delay 10.0 3.0 5.0 3.0

type V

trigger flagcap

eventteam V

end

The Zone object

Specifies a certain range in the world, and what attributes that range has.

zone

name example_zone

position 0.0 0.0 0.0

size 1.0 1.0 1.0

rotation 0.0

\# where players may spawn

team 0 1 2 3 4

\# where flag may spawn

flag GM SW good bad

\# dropped team flags will fly to the closest safety zone

safety 1 2 3 4

\# attach a flag to this zone (always spawn in this zone)

zoneflag GM 3 # type, count (type can be a team flag, ex: R*)

end

## FILE SYNTAX
The symbol '?' means that the item is optional.

The notation {a..b} means that the number of times the item can be present must be between 'a' and 'b', where '*' mean infinity. ('?' is equivalent to {0..1})

angle := <float>

2dpoint := <float> <float>

3dpoint := <float> <float> <float>

rgbColor := <float> <float> <float>

alpha := <float>

rgbaColor := rgbColor alpha? | <color_name> alpha?

channel := "red" | "green" | "blue" | "alpha"

(BZWReader.cxx/parseNormalObject)

allObjects :=

"box"

| "pyramid"

| "base"

| "link"

| "teleporter"

| "mesh"

| "arc"

| "meshbox"

| "cone"

| "meshpyr"

| "sphere"

| "tetra"

| "weapon"

| "zone"

| "waterLevel"

| "dynamicColor"

| "textureMatrix"

| "material"

| "physics"

| "transform"

(BZWReader.cxx/BZWReader::readWorldStream)

Note: Blank lines and lines starting with # are discarded.

worldStream :=

"end"

| allObjects

| "define" <group_name>

| "enddef"

| "group" <group_name>

| "teleporter" <name>?

| "options"

| "include" <filename>

| "world"

(ParseMaterial.cxx/parseMaterials)

material :=

object

| "matref" <material_name>

| "resetmat"

| "dyncol" <dynamic_color_name>

| "ambient" rgbaColor

| ("diffuse" | "color") rgbaColor

| "specular" rgbaColor

| "emission" rgbaColor

| "shininess" <float>

| "texture <texture_name>

| "notextures"

| "addtexture" <texture_name>

| "texmat" <matrix_name>

| "notexalpha"

| "notexcolor"

| "spheremap"

| "noradar"

| "noshadow"

| "noculling"

| "nosorting"

| "nolighting"

| "alphathresh" <value>

| "groupalpha"

| "occluder"

| "shader" <shader_name> # NOT IMPLEMENTED

| "addshader" <shader_name> # NOT IMPLEMENTED

| "noshaders" # NOT IMPLEMENTED

(WorldFileObject:.cxx/WorldFileObject::read)

object := "name" <name>

(WorldFileLocation.cxx/readWorldFileLocation::read)

location :=

("pos" | "position") 3dpoint

| "size" 3dpoint

| ("rot" | "rotation") <float>

| "shift" 3dpoint

| "scale" 3dpoint

| "shear" 3dpoint

| "spin" angle 3dpoint

| "xform" <transform_name>

| object

(WorldFileObstacle.cxx/WorldFileObstacle::read)

obstacle :=

"drivethrough"

| "shootthrough"

| "passable"

| "ricochet"

| location

(CustomArc.cxx/CustomArc::read)

meshbox :=

"divisions" <integer>

| "angle" angle

| "ratio" <float>

| "texsize" <float> <float> <float> <float>

| "phydrv" <physics_driver_name>

| "smoothbounce"

| "flatshading"

| material

| ("top" | "bottom" | "inside" | "outside" | "startside" | "endside") material

| obstacle

arc :=

"divisions" <integer>

| "angle" angle

| "ratio" <float>

| "texsize" <float> <float> <float> <float>

| "phydrv" <physics_driver_name>

| "smoothbounce"

| "flatshading"

| material

| ("top" | "bottom" | "inside" | "outside" | "startside" | "endside") material

| obstacle

(CustomBase.cxx/CustomBase::read)

base :=

"color" <integer>

| obstacle

(CustomBox.cxx)

box := obstacle

(CustomCone.cxx/CustomCone::read)

meshpyr :=

"divisions" <integer>

| "angle" <float>

| "texsize" <float> <float>

| "phydrv" <physics_driver_name>

| "smoothbounce"

| "flatshading"

| material

| ("edge" | "bottom" | "startside" | "endside") material

| "flipz"

| obstacle

cone :=

"divisions" <integer>

| "angle" <float>

| "texsize" <float> <float>

| "phydrv" <physics_driver_name>

| "smoothbounce"

| "flatshading"

| material

| ("edge" | "bottom" | "startside" | "endside") material

| obstacle

(CustomDynamicColor.cxx/CustomDynamicColor::read)

dynamicColor :=

object

| channel "limits" <float> <float>

| channel "sinusoid" <float> <float> <float>

| channel "clampup" <float> <float> <float>

| channel "clampdown" <float> <float> <float>

| channel "sequence" <float> <float> ("0" "1" "2"){1..*}

(CustomGate.cxx/CustomGate::read)

teleporter :=

"border" <float>

| "horizontal" # NOT IMPLEMENTED

| obstacle

(CustomGroup.cxx/CustomGroup::read)

group :=

"team" <integer>

| "tint" rgbaColor

| "phydrv" <physics_driver_name>

| "matref" <material_name>

| obstacle

(CustomLink.cxx/CustomLink::read)

teleporter_spec :=

<integer>

| <teleporter_name_with_wildcards> (":f" | ":b")?

link :=

"from" <teleporter_spec>

| "to" <teleporter_spec>

| object

(MeshDrawInfo.cxx/MeshDrawInfo::parseDrawCmd)

drawInfoCmd :=

"points" <integer>+

| "lines" <integer> <integer> <integer>{2}*

| "lineloop" <integer> <integer>+

| "linestrip" <integer> <integer> <integer{2}*

| "tris" <integer> <integer> <integer> <integer>{3}*

| "tristrip" <integer> <integer> <integer>+

| "trifan" <integer> <integer> <integer>+

| "quads" <integer> <integer> <integer> <integer> <integer>{4}*

| "quadstrip" <integer> <integer> <integer>{2}+

| "polygon" <integer> <integer> <integer> <integer>{3}*

(MeshDrawInfo.cxx/MeshDrawInfo::parseDrawSet)

drawInfoSet :=

"matref" <material_name>

| "dlist"

| "sphere" 3dpoint <float>

| drawInfoCmd

(MeshDrawInfo.cxx/MeshDrawInfo::parseDrawLod)

drawInfoLod :=

"lod"

| "lengthPerPixel" <float>

| drawInfoSet

(MeshDrawInfo.cxx/MeshDrawInfo::parse)

drawInfo :=

"drawInfo"

| "dlist"

| "decorative"

| "angvel" <float>

| "extents" 3dpoint 3dpoint

| "sphere" 3dpoint <float>

| "corner" <integer> <integer> <integer>

| "vertex" 3dpoint

| "normal" 3dpoint

| "texcoord" <float> <float>

| drawInfoLod

(CustomMesh.cxx/CustomMesh::read)

mesh :=

"face"

| face

| "endface"

| "inside" 3dpoint

| "outside" 3dpoint

| "vertex" 3dpoint

| "normal" 3dpoint

| "texcoord" <float> <float>

| "phydrv" <physics_driver_name>

| "smoothbounce"

| "noclusters"

| drawInfo

| material

| obstacle

(CustomMeshFace.cxx/CustomMeshFace::read)

face :=

"vertices" <integer>{3..*}

| "normals" <integer>{3..*}

| "texcoords" <integer>{3..*}

| "phydrv" <physics_driver_name>

| "smoothbounce"

| "noclusters"

| "drivethrough"

| "shootthrough"

| "ricochet"

| "passable"

| material

(CustomMeshTransform.cxx/CustomMeshTransform::read)

transform :=

"shift" 3dpoint

| "scale" 3dpoint

| "shear" 3dpoint

| "spin" angle 3dpoint

| "xform" <transform_name>

| object

(CustomPhysicsDriver.cxx/CustomPhysicsDriver::read)

physics :=

"linear" 3dpoint

| "angular" <float> 2dpoint

| "radial" <float> 2dpoint # NOT IMPLEMENTED

| "slide" <float>

| "death" <string>

| object

(CustomPyramid.cxx/CustomPyramid::read)

pyramid :=

"flipz"

| obstacle

(CustomSphere.cxx/CustomSphere::read)

sphere :=

"divisions" <integer>

| "radius" <float>

| ("hemi" | "hemisphere")

| "texsize" <float> <float>

| "phydrv" <physics_driver_name>

| "smoothbounce"

| "flatshading"

| material

| ("edge" | "bottom") material

| obstacle

(CustomTetra.cxx/CustomTetra::read)

Note: At most 4 vertices can be specified.

Note2: material will apply to all vertices when specified first, otherwise like "normals" and "texcoords" they apply to the previous vertex.

tetra :=

"vertex" 3dpoint

| "normals" 3dpoint

| "texcoords" 2dpoint

| material

| obstacle

(CustomTextureMatrix.cxx/CustomTextureMatrix::read)

textureMatrix :=

"fixedshift" 2dpoint

| "fixedscale" 2dpoint

| "fixedspin" angle

| "fixedcenter" 2dpoint

| "shift" <float> <float>

| "spin" <float>

| "scale" <float> <float> <float> <float>

| "center" 2dpoint

| object

(CustomWaterLevel.cxx/CustomWaterLevel::read)

waterLevel :=

"height" <float>

| material

| object

(CustomWeapon.cxx/CustomWeapon::read)

weapon :=

"initdelay" <float>

| "delay" <float>{1..*}

| "type" <flag_short_name>

| location

(CustomWorld.cxx/CustomWorld::read)

world :=

"size" <float>

| "flagHeight" <float>

| object

(CustomZone.cxx/CustomZone::read)

zone :=

"team" <integer>{1..*}

"flag" ("good" | "bad" | <flag_short_name>){1..*}

| "safety" <integer>{1..*}

| "zoneflag" <flag_short_name> <integer>?

| location

## SEE ALSO
bzflag(6), bzadmin(6), bzfs(6)


cachefilesd.conf

package: cachefilesd

title: cachefilesd.conf(5)

summary: Local file caching configuration file

text:
# cachefilesd.conf(5)

## NAME
/etc/cachefilesd.conf - Local file caching configuration file

## SYNOPSIS
The configuration file for cachefilesd which can manage a persistent cache for a variety of network filesystems using a set of files on an already mounted filesystem as the data store.

## DESCRIPTION
This configuration file can contain a number of commands. Each one should be on a separate line. Blank lines and lines beginning with a '#' character are considered to be comments and are discarded.

The only mandatory command is:

dir <path>

This command specifies the directory containing the root of the cache. It may only specified once per configuration file.

All the other commands are optional:

secctx <label>

Specify an LSM security context as which the kernel will perform operations to access the cache. The default is to use cachefilesd's security context. Files will be created in the cache with the label of directory specified to the 'dir' command.

brun <N>%

bcull <N>%

bstop <N>%

frun <N>%

fcull <N>%

fstop <N>%

These commands configure the culling limits. The defaults are 7% (run), 5% (cull) and 1% (stop) respectively. See the section on cache culling for more information.

The commands beginning with a 'b' are file space (block) limits, those beginning with an 'f' are file count limits.

tag <name>

This command specifies a tag to FS-Cache to use in distinguishing multiple caches. This is only required if more than one cache is going to be used. The default is "CacheFiles".

culltable <log2size>

This command specifies the size of the tables holding the lists of cullable objects in the cache. The bigger the number, the faster and more smoothly that culling can proceed when there are many objects in the cache, but the more memory will be consumed by cachefilesd.

The quantity is specified as log2 of the size actually required, for example 12 indicates a table of 4096 entries and 13 indicates 8192 entries. The permissible values are between 12 and 20, the latter indicating 1048576 entries. The default is 12.

nocull

Disable culling. Culling and building up the cull table take up a certain amount of a systems resources, which may be undesirable. Supplying this option disables all culling activity. The cache will keep building up to the limits set and won't be shrunk, except by the removal of out-dated cache files.

debug <mask>

This command specifies a numeric bitmask to control debugging in the kernel module. The default is zero (all off). The following values can be OR'd into the mask to collect various information:

1

Turn on trace of function entry (_enter() macros)

2

Turn on trace of function exit (_leave() macros)

4

Turn on trace of internal debug points (_debug())

This mask can also be set through /sys/module/cachefiles/parameters/debug.

## EXAMPLES
As an example, consider the following:

dir /var/cache/fscache

secctx cachefiles_kernel_t

tag mycache

brun 10%

bcull 7%

bstop 3%

secctx system_u:system_r:cachefiles_kernel_t:s0

This places the cache storage objects in a directory called "/var/cache/fscache", names the cache "mycache", permits the cache to run freely as long as there's at least 10% free space on /var/cache/fscache/, starts culling the cache when the free space drops below 7% and stops writing new stuff into the cache if the amount of free space drops below 3%. If the cache is suspended, it won't reactivate until the amount of free space rises again to 10% or better.

Furthermore, this will tell the kernel module the security context it should use when accessing the cache (SELinux is assumed to be the LSM in this example). In this case, SELinux would use cachefiles_kernel_t as the key into the policy.

## CACHE CULLING
The cache may need culling occasionally to make space. This involves discarding objects from the cache that have been used less recently than anything else. Culling is based on the access time of data objects. Empty directories are culled if not in use.

Cache culling is done on the basis of the percentage of blocks and the percentage of files available in the underlying filesystem. There are six "limits":

brun

frun

If the amount of free space and the number of available files in the cache rises above both these limits, then culling is turned off.

bcull

fcull

If the amount of available space or the number of available files in the cache falls below either of these limits, then culling is started.

bstop

fstop

If the amount of available space or the number of available files in the cache falls below either of these limits, then no further allocation of disk space or files is permitted until culling has raised things above these limits again.

These must be configured thusly:

0 <= bstop < bcull < brun < 100

0 <= fstop < fcull < frun < 100

Note that these are percentages of available space and available files, and do not appear as 100 minus the percentage displayed by the df program.

The userspace daemon scans the cache to build up a table of cullable objects. These are then culled in least recently used order. A new scan of the cache is started as soon as space is made in the table. Objects will be skipped if their atimes have changed or if the kernel module says it is still using them.

Culling can be disabled with the nocull option.

## SEE ALSO
cachefilesd(8), df(1), /usr/share/doc/cachefilesd-*/README

## AUTHORS
The cachefilesd software has been developed by David Howells


certmonger.conf

package: certmonger

title: certmonger.conf(5)

summary: configuration file for certmonger

text:
# certmonger.conf(5)

## NAME
certmonger.conf - configuration file for certmonger

## DESCRIPTION
The certmonger.conf file contains default settings used by certmonger. Its format is more or less that of a typical INI-style file. The only sections currently of note are named defaults and selfsign.

## DEFAULTS
Within the defaults section, these variables and values are recognized:

notify_ttls

This is the list of times, given in seconds, before a certificate's not-after validity date (often referred to as its expiration time) when certmonger should warn that the certificate will soon no longer be valid. If this value is not specified, certmonger will attempt to use the value of the ttls setting. The default list of values is "2419200, 604800, 259200, 172800, 86400, 43200, 21600, 7200, 3600".

enroll_ttls

This is the list of times, given in seconds, before a certificate's not-after validity date (often referred to as its expiration time) when certmonger should attempt to automatically renew the certificate, if it is configured to do so. If this value is not specified, certmonger will attempt to use the value of the ttls setting. The default list of values is "2419200, 604800, 259200, 172800, 86400, 43200, 21600, 7200, 3600".

notification_method

This is the method by which certmonger will notify the system administrator that a certificate will soon become invalid. The recognized values are syslog, mail, and command. The default is syslog. When sending mail, the notification message will be the mail message subject. When invoking a command, the notification message and type will be available in the "CERTMONGER_NOTIFICATION" and "CERTMONGER_NOTIFICATION_TYPE" environment variables and the related request's nickname/ID will be available in the "CERTMONGER_NOTIFICATION_CERT_NICKNAME" environment variable.

notification_destination

This is the destination to which certmonger will send notifications. It can be a syslog priority and/or facility, separated by a period, it can be an email address, or it can be a command to run. The default value is daemon.notice.

key_type

This is the type of key pair which will be generated, used in certificate signing requests, and used when self-signing certificates. RSA is supported. EC (also known as ECDSA) is also supported. The default is RSA.

rsa_key_size

This is the size of an RSA key if the value is not included in a certificate request. If this value is not set then the default is 2048. The minimum value allowed is 1024.

symmetric_cipher

This is the symmetric cipher which will be used to encrypt private keys stored in OpenSSL's PEM format. Recognized values include aes128 and aes256. The default is aes128. It is not recommended that this value be changed except in cases where the default is incompatible with other software.

digest

This is the digest algorithm which will be used when signing certificate signing requests and self-signed certificates. Recognized values include sha1, sha256, sha384, and sha512. The default is sha256. It is not recommended that this value be changed except in cases where the default is incompatible with other software.

nss_ca_trust

These are the trust attributes which are applied to CA certificates which should be trusted, when they are saved to NSS databases. The default is CT,C,C.

nss_other_trust

These are the trust attributes which are applied to certificates which are not necessarily to be trusted, when they are saved to NSS databases. The default is ,,.

max_key_use_count

When attempting to replace a certificate, if certmonger has previously obtained at least this number of certificates using the current key pair, it will generate a new key pair to use before proceeding. There is effectively no default for this setting.

max_key_lifetime

The amount of time after a key was first generated when certmonger will attempt to generate a new key pair to replace it, as part of the process of replacing a certificate. The value is specified as a combination of years (y), months (M), weeks (w), days (d), hours (h), minutes (m), and/or seconds (s). If no unit of time is specified, seconds are assumed. The date when a key was generated is not recorded if the key was not generated by certmonger, or if the key was generated with a version of certmonger older than 0.78, and for those cases, this option has no effect. There is effectively no default for this setting.

## SELFSIGN
Within the selfsign section, these variables and values are recognized:

validity_period

This is the validity period given to self-signed certificates. The value is specified as a combination of years (y), months (M), weeks (w), days (d), hours (h), minutes (m), and/or seconds (s). If no unit of time is specified, seconds are assumed. The default value is 1y.

populate_unique_id

This controls whether or not self-signed certificates will have their subjectUniqueID and issuerUniqueID fields populated. While RFC5280 prohibits their use, they may be needed and/or used by older applications. The default value is no.

## LOCAL
Within the local section, these variables and values are recognized:

validity_period

This is the validity period given to the locally-signed CA's certificate when it is generated. The value is specified as a combination of years (y), months (M), weeks (w), days (d), hours (h), minutes (m), and/or seconds (s). If no unit of time is specified, seconds are assumed. If not set, the value of the validity_period setting from the selfsign section, if one is set there, will be used. The default value is 1y.

## SCEP
Within the scep section, these variables and values are recognized:

challenge_password_otp

This controls whether the SCEP challenge password is treated as a one-time password. If set to yes then the challenge password and/or challenge password file will be removed from the tracking request after the first certificate issuance so will not be sent with renewal requests. The default is no.

## BUGS
Please file tickets for any that you find at https://fedorahosted.org/certmonger/

## SEE ALSO
certmonger(8) certmonger_selinux(8)


cgreen

package: cgreen

title: cgreen(5)

text:
# cgreen(5)

## NAME
cgreen - a framework for C and C++ unit tests and mocking

## DESCRIPTION
Cgreen is a framework for creating and running compact and easy-to-read unittests for C and/or C++.

Here are some of its features:

•

Fluent API resulting in very readable tests

•

Expressive and clear output using the default reporter

•

Fully functional mocks, both strict and loose

•

Each test runs in its own process for test suite robustness

•

Automatic discovery and running of tests using dynamic library inspection

•

Extensive and expressive constraints for many datatypes

•

BDD-flavoured test declarations with Before and After declarations

•

Extensible reporting mechanism

•

Fully composable test suites

•

An isolated test can be run in a single process for debugging

## SEE ALSO
cgreen-runner(1)

The full documentation for cgreen-runner and the Cgreen framework is in the Cgreen manual available at


cgconfig.conf

package: cgroup

title: cgconfig.conf(5)

summary: libcgroup configuration file

text:
# cgconfig.conf(5)

## NAME
cgconfig.conf - libcgroup configuration file

## DESCRIPTION
cgconfig.conf is a configuration file used by libcgroup to define control groups, their parameters and their mount points. The file consists of mount , group and default sections. These sections can be in arbitrary order and all of them are optional. Any line starting with '#' is considered a comment line and is ignored.

mount section has this form:

```
mount {
```

```
<controller> = <path>;
...
```

```
}
```

controller

Name of the kernel subsystem. The list of subsystems supported by the kernel can be found in /proc/cgroups file. Named hierarchy can be specified as controller "name=<somename>". Do not forget to use double quotes around this controller name (see examples below). Apart from named hierarchy, additional mount options may be specified by putting the controller and the options in quotes. Options supported are nosuid, noexec and nodev. Libcgroup merges all subsystems mounted to the same directory (see Example 1) and the directory is mounted only once.

path

The directory path where the group hierarchy associated to a given controller shall be mounted. The directory is created automatically on cgconfig service startup if it does not exist and is deleted on service shutdown.

If no mount section is specified, no controllers are mounted.

group section has this form:

```
group <name> {
```

```
[permissions]
<controller> {
```

```
<param name> = <param value>;
...
```

```
}
...
```

```
}
```

name

Name of the control group. It can contain only characters, which are allowed for directory names. The groups form a tree, i.e. a control group can contain zero or more subgroups. Subgroups can be specified using '/' delimiter. The root control group is always created automatically in all hierarchies and it is the base of the group hierarchy. It can be explicitly specified in cgconfig.conf by using '.' as group name. This can be used e.g. to set its permissions, as shown in Example 6.

When the parent control group of a subgroup is not specified it is created automatically.

permissions

Permissions of the given control group on mounted filesystem. root has always permission to do anything with the control group. Permissions have the following syntax:

```
perm {
```

```
task {
```

```
uid = <task user>;
gid = <task group>;
fperm = <file permissions>
```

```
}
admin {
```

```
uid = <admin name>;
gid = <admin group>;
dperm = <directory permissions>
fperm = <file permissions>
```

```
}
```

```
}
```

task user/group

Name of the user and the group, which own the tasks file of the control group. Given fperm then specify the file permissions. Please note that the given value is not used as was specified. Instead, current file owner permissions are used as a "umask" for group and others permissions. For example if fperm = 777 then both group and others will get the same permissions as the file owner.

admin user/group

Name of the user and the group which own the rest of control group's files. Given fperm and dperm control file and directory permissions. Again, the given value is masked by the file/directory owner permissions.

Permissions are only apply to the enclosing control group and are not inherited by subgroups. If there is no perm section in the control group definition, root:root is the owner of all files and default file permissions are preserved if fperm resp. dperm are not specified.

controller

Name of the kernel subsystem. The section can be empty, default kernel parameters will be used in this case. By specifying controller the control group and all its parents are controlled by the specific subsystem. One control group can be controlled by multiple subsystems, even if the subsystems are mounted on different directories. Each control group must be controlled by at least one subsystem, so that libcgroup knows in which hierarchies the control group should be created. The parameters of the given controller can be modified in the following section enclosed in brackets.

param name

Name of the file to set. Each controller can have zero or more parameters.

param value

Value which should be written to the file when the control group is created. If it is enclosed in double quotes `"', it can contain spaces and other special characters.

If no group section is specified, no groups are created.

default section has this form:

```
default {
```

```
perm {
```

```
task {
```

```
uid = <task user>;
gid = <task group>;
fperm = <file permissions>
```

```
}
admin {
```

```
uid = <admin name>;
gid = <admin group>;
dperm = <directory permissions>
fperm = <file permissions>
```

```
}
```

```
}
```

```
}
```

Content of the perm section has the same form as in group section. The permissions defined here specify owner and permissions of groups and files of all groups, which do not have explicitly specified their permissions in their group section.

template section has the same structure as group section. Template name uses the same templates string as cgrules.conf destination tag (see (cgrules.conf (5)). Template definition is used as a control group definition for rules in cgrules.conf (5) with the same destination name. Templates does not use default section settings.

/etc/cgconfig.d/ directory can be used for additional configuration files. cgrulesengd searches this directory for additional templates.

## EXAMPLES

### Example 1
The configuration file:

```
mount {
```

```
cpu = /mnt/cgroups/cpu;
cpuacct = /mnt/cgroups/cpu;
```

```
}
```

creates the hierarchy controlled by two subsystems with no groups inside. It corresponds to the following operations:

```
mkdir /mnt/cgroups/cpu
mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu
```

### Example 2
The configuration file:

```
mount {
```

```
cpu = /mnt/cgroups/cpu;
"name=scheduler" = /mnt/cgroups/cpu;
"name=noctrl" = /mnt/cgroups/noctrl;
```

```
}
group daemons {
```

```
cpu {
```

```
cpu.shares = "1000";
```

```
}
```

```
}
group test {
```

```
"name=noctrl" {
}
```

```
}
```

```

```

creates two hierarchies. One hierarchy named scheduler controlled by cpu subsystem, with group daemons inside. Second hierarchy is named noctrl without any controller, with group test. It corresponds to following operations:

```
mkdir /mnt/cgroups/cpu
mount -t cgroup -o cpu,name=scheduler cpu /mnt/cgroups/cpu
mount -t cgroup -o none,name=noctrl none /mnt/cgroups/noctrl
mkdir /mnt/cgroups/cpu/daemons
echo 1000 > /mnt/cgroups/cpu/daemons/www/cpu.shares
mkdir /mnt/cgroups/noctrl/tests
```

The daemons group is created automatically when its first subgroup is created. All its parameters have the default value and only root can access group's files.

Since both cpuacct and cpu subsystems are mounted to the same directory, all groups are implicitly controlled also by cpuacct subsystem, even if there is no cpuacct section in any of the groups.

### Example 3
The configuration file:

```
mount {
```

```
cpu = /mnt/cgroups/cpu;
cpuacct = /mnt/cgroups/cpu;
```

```
}
group daemons/www {
```

```
perm {
```

```
task {
```

```
uid = root;
gid = webmaster;
fperm = 770;
```

```
}
admin {
```

```
uid = root;
gid = root;
dperm = 775;
fperm = 744;
```

```
}
```

```
}
cpu {
```

```
cpu.shares = "1000";
```

```
}
```

```
}
group daemons/ftp {
```

```
perm {
```

```
task {
```

```
uid = root;
gid = ftpmaster;
fperm = 774;
```

```
}
admin {
```

```
uid = root;
gid = root;
dperm = 755;
fperm = 700;
```

```
}
```

```
}
cpu {
```

```
cpu.shares = "500";
```

```
}
```

```
}
```

```

```

creates the hierarchy controlled by two subsystems with one group and two subgroups inside, setting one parameter. It corresponds to the following operations (except for file permissions which are little bit trickier to emulate via chmod):

```
mkdir /mnt/cgroups/cpu
mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu
mkdir /mnt/cgroups/cpu/daemons
mkdir /mnt/cgroups/cpu/daemons/www
chown root:root /mnt/cgroups/cpu/daemons/www/*
chown root:webmaster /mnt/cgroups/cpu/daemons/www/tasks
echo 1000 > /mnt/cgroups/cpu/daemons/www/cpu.shares

 # + chmod the files so the result looks like:

 # ls -la /mnt/cgroups/cpu/daemons/www/

 # admin.dperm = 755:

 # drwxr-xr-x. 2 root webmaster 0 Jun 16 11:51 .

 #

 # admin.fperm = 744:

 # --w-------. 1 root webmaster 0 Jun 16 11:51 cgroup.event_control

 # -r--r--r--. 1 root webmaster 0 Jun 16 11:51 cgroup.procs

 # -r--r--r--. 1 root webmaster 0 Jun 16 11:51 cpuacct.stat

 # -rw-r--r--. 1 root webmaster 0 Jun 16 11:51 cpuacct.usage

 # -r--r--r--. 1 root webmaster 0 Jun 16 11:51 cpuacct.usage_percpu

 # -rw-r--r--. 1 root webmaster 0 Jun 16 11:51 cpu.rt_period_us

 # -rw-r--r--. 1 root webmaster 0 Jun 16 11:51 cpu.rt_runtime_us

 # -rw-r--r--. 1 root webmaster 0 Jun 16 11:51 cpu.shares

 # -rw-r--r--. 1 root webmaster 0 Jun 16 11:51 notify_on_release

 #

 # tasks.fperm = 770

 # -rw-rw----. 1 root webmaster 0 Jun 16 11:51 tasks
mkdir /mnt/cgroups/cpu/daemons/ftp
chown root:root /mnt/cgroups/cpu/daemons/ftp/*
chown root:ftpmaster /mnt/cgroups/cpu/daemons/ftp/tasks
echo 500 > /mnt/cgroups/cpu/daemons/ftp/cpu.shares

 # + chmod the files so the result looks like:

 # ls -la /mnt/cgroups/cpu/daemons/ftp/

 # admin.dperm = 755:

 # drwxr-xr-x. 2 root ftpmaster 0 Jun 16 11:51 .

 #

 # admin.fperm = 700:

 # --w-------. 1 root ftpmaster 0 Jun 16 11:51 cgroup.event_control

 # -r--------. 1 root ftpmaster 0 Jun 16 11:51 cgroup.procs

 # -r--------. 1 root ftpmaster 0 Jun 16 11:51 cpuacct.stat

 # -rw-------. 1 root ftpmaster 0 Jun 16 11:51 cpuacct.usage

 # -r--------. 1 root ftpmaster 0 Jun 16 11:51 cpuacct.usage_percpu

 # -rw-------. 1 root ftpmaster 0 Jun 16 11:51 cpu.rt_period_us

 # -rw-------. 1 root ftpmaster 0 Jun 16 11:51 cpu.rt_runtime_us

 # -rw-------. 1 root ftpmaster 0 Jun 16 11:51 cpu.shares

 # -rw-------. 1 root ftpmaster 0 Jun 16 11:51 notify_on_release

 #

 # tasks.fperm = 774:

 # -rw-rw-r--. 1 root ftpmaster 0 Jun 16 11:51 tasks
```

The daemons group is created automatically when its first subgroup is created. All its parameters have the default value and only root can access the group's files.

Since both cpuacct and cpu subsystems are mounted to the same directory, all groups are implicitly also controlled by the cpuacct subsystem, even if there is no cpuacct section in any of the groups.

### Example 4
The configuration file:

```
mount {
```

```
cpu = /mnt/cgroups/cpu;
cpuacct = /mnt/cgroups/cpuacct;
```

```
}
group daemons {
```

```
cpuacct{
}
cpu {
}
```

```
}
```

creates two hierarchies and one common group in both of them. It corresponds to the following operations:

```
mkdir /mnt/cgroups/cpu
mkdir /mnt/cgroups/cpuacct
mount -t cgroup -o cpu cpu /mnt/cgroups/cpu
mount -t cgroup -o cpuacct cpuacct /mnt/cgroups/cpuacct
mkdir /mnt/cgroups/cpu/daemons
mkdir /mnt/cgroups/cpuacct/daemons
```

In fact there are two groups created. One in the cpuacct hierarchy, the second in the cpu hierarchy. These two groups have nothing in common and can contain different subgroups and different tasks.

### Example 5
The configuration file:

```
mount {
```

```
cpu = /mnt/cgroups/cpu;
cpuacct = /mnt/cgroups/cpuacct;
```

```
}
group daemons {
```

```
cpuacct{
}
```

```
}
group daemons/www {
```

```
cpu {
```

```
cpu.shares = "1000";
```

```
}
```

```
}
group daemons/ftp {
```

```
cpu {
```

```
cpu.shares = "500";
```

```
}
```

```
}
```

creates two hierarchies with few groups inside. One of the groups is created in both hierarchies. It corresponds to the following operations:

```
mkdir /mnt/cgroups/cpu
mkdir /mnt/cgroups/cpuacct
mount -t cgroup -o cpu cpu /mnt/cgroups/cpu
mount -t cgroup -o cpuacct cpuacct /mnt/cgroups/cpuacct
mkdir /mnt/cgroups/cpuacct/daemons
mkdir /mnt/cgroups/cpu/daemons
mkdir /mnt/cgroups/cpu/daemons/www
echo 1000 > /mnt/cgroups/cpu/daemons/www/cpu.shares
mkdir /mnt/cgroups/cpu/daemons/ftp
echo 500 > /mnt/cgroups/cpu/daemons/ftp/cpu.shares
```

Group daemons is created in both hierarchies. In the cpuacct hierarchy the group is explicitly mentioned in the configuration file. In the cpu hierarchy the group is created implicitly when www is created there. These two groups have nothing in common, for example they do not share processes and subgroups. Groups www and ftp are created only in the cpu hierarchy and are not controlled by the cpuacct subsystem.

### Example 6
The configuration file:

```
mount {
```

```
cpu = /mnt/cgroups/cpu;
cpuacct = /mnt/cgroups/cpu;
```

```
}
group . {
```

```
perm {
```

```
task {
```

```
uid = root;
gid = operator;
```

```
}
admin {
```

```
uid = root;
gid = operator;
```

```
}
```

```
}
cpu {
}
```

```
}
group daemons {
```

```
perm {
```

```
task {
```

```
uid = root;
gid = daemonmaster;
```

```
}
admin {
```

```
uid = root;
gid = operator;
```

```
}
```

```
}
cpu {
}
```

```
}
```

```

```

creates the hierarchy controlled by two subsystems with one group having some special permissions. It corresponds to the following operations:

```
mkdir /mnt/cgroups/cpu
mount -t cgroup -o cpu,cpuacct cpu /mnt/cgroups/cpu
chown root:operator /mnt/cgroups/cpu/*
chown root:operator /mnt/cgroups/cpu/tasks
mkdir /mnt/cgroups/cpu/daemons
chown root:operator /mnt/cgroups/cpu/daemons/*
chown root:daemonmaster /mnt/cgroups/cpu/daemons/tasks
```

Users which are members of the operator group are allowed to administer the control groups, i.e. create new control groups and move processes between these groups without having root privileges.

Members of the daemonmaster group can move processes to the daemons control group, but they can not move the process out of the group. Only the operator or root can do that.

### Example 7
The configuration file:

```
mount {
```

```
cpu = /mnt/cgroups/cpu;
cpuacct = /mnt/cgroups/cpuacct;
```

```
}
group students {
```

```
cpuacct{
}
cpu {
}
```

```
}
template students/%u {
```

```
cpuacct{
}
cpu {
}
```

```
}
mkdir /mnt/cgroups/cpu/daemons
mkdir /mnt/cgroups/cpuacct/daemons
```

The situation is the similar as in Example 4. The only difference is template, which is used if some rule uses "/students/%u" as a destination.

### Example 8
The configuration file:

```
mount {
```

```
"cpu,nodev,nosuid,noexec" = /mnt/cgroups/cpu;
```

```
}
```

This is the same as mount -t cgroup cgroup -o nodev,nosuid,noexec,cpu /mnt/cgroups/cpu It mounts the cpu controller with MS_NODEV, MS_NOSUID and MS_NOEXEC options passed.

## RECOMMENDATIONS

### Keep hierarchies separated
Having multiple hierarchies is perfectly valid and can be useful in various scenarios. To keeps things clean, do not create one group in multiple hierarchies. Examples 4 and 5 show how unreadable and confusing it can be, especially when reading somebody elses configuration file.

### Explicit is better than implicit
libcgroup can implicitly create groups which are needed for the creation of configured subgroups. This may be useful and save some typing in simple scenarios. When it comes to multiple hierarchies, it's better to explicitly specify all groups and all controllers related to them.

## FILES
/etc/cgconfig.conf

default libcgroup configuration file

/etc/cgconfig.d/

default libcgroup configuration files directory

## SEE ALSO
cgconfigparser (8)

## BUGS
Parameter values must be single strings without spaces. Parsing of quoted strings is not implemented.


cgred.conf

title: cgred.conf(5)

summary: libcgroup configuration file

text:
# cgred.conf(5)

## NAME
cgred.conf - libcgroup configuration file

## DESCRIPTION
cgred.conf is cgred service configuration file. In this file there could be defined several internal values. Defining anything else in this file will cause the CGroup Rules Daemon program to fail.

CONFIG_FILE

specifies the configuration file for cgred service

LOG_FILE

variable specifies the file to which logs will be written (by default they are not sent to a file but to syslog)

NODAEMON

if it is equal to "--nodamon" then run cgred in non-daemon mode

LOG

define the verbosity of logging. Accepted values are '-v', '-vv', '-q' and '--nolog'.

## FILES
/etc/cgred.conf

default libcgroup configuration file

## SEE ALSO
cgrules.conf (5), cgconfig.conf (5), cgrules.d (5)


cgrules.conf

title: cgrules.conf(5)

summary: libcgroup configuration file

text:
# cgrules.conf(5)

## NAME
cgrules.conf - libcgroup configuration file

## DESCRIPTION
cgrules.conf configuration file is used by libcgroups to define control groups to which a process belongs.

The file contains a list of rules which assign to a defined group/user a control group in a subsystem (or control groups in subsystems).

Rules have two formats:

```
<user>               	<controllers>		<destination>
```

```
<user>:<process name>	<controllers>		<destination>
```

Where:

user can be:

```
    - a user name

    - a group name with @group syntax

    - the wildcard '*', for any user or group

    - '%', which is equivalent to "ditto" (useful for

      multi-line rules where different cgroups need to be

      specified for various hierarchies for a single user)
```

process name is optional and it can be:

```
    - a process name

    - a full command path of a process
```

controllers can be:

```
    - comma separated controller names (no spaces) or

    - * (for all mounted controllers)
```

destination can be:

```
    - path relative to the controller hierarchy (ex. pgrp1/gid1/uid1)

    - following strings called "templates" and will get expanded

          %u     username, uid if name resolving fails

          %U     uid

          %g     group name, gid if name resolving fails

          %G     gid

          %p     process name, pid if name not available

          %P     pid

          '\' can be used to escape '%'
```

First rule which matches the criteria will be executed. Any text starting with '#' is considered as a start of comment line and is ignored.

If the destination contains template string, the control group can be created on-fly. In time when some process wants to use the template rule which leads to control group (see cgexec (1)) and the control group does not exist, the group is created. The template control group parameters can be specified in cgconfig.conf configuration file. See (cgconfig.conf (5)). If the template definition is not found there created group have default kernel setting.

To create a hierarchy of configuration files, use /etc/cgrules.d directory.

## EXAMPLES

```
student         devices         /usergroup/students
```

Student's processes in the 'devices' subsystem belong to the control group /usergroup/students.

```
student:cp       devices         /usergroup/students/cp
```

When student executes 'cp' command, the processes in the 'devices' subsystem belong to the control group /usergroup/students/cp.

```
@admin           *              admingroup/
```

Processes started by anybody from admin group no matter in what subsystem belong to the control group admingroup/.

```
peter           cpu             test1/
%               memory          test2/
```

The first line says Peter's task for cpu controller belongs to test1 control group. The second one says Peter's tasks for memory controller belong to test2/ control group.

```
*               *               default/
```

All processes in any subsystem belong to the control group default/. Since the earliest matched rule is applied, it makes sense to have this line at the end of the list. It will put a task which was not mentioned in the previous rules to default/ control group.

```
@students	cpu,cpuacct	students/%u
```

Processes in cpu and cpuacct subsystems started by anybody from students group belong to group students/name. Where "name" is user name of owner of the process.

## FILES
/etc/cgrules.conf

default libcgroup configuration file

/etc/cgrules.d

default libcgroup configuration files directory

## SEE ALSO
cgconfig.conf (5), cgclassify (1), cgred.conf (5), cgrules.d (5)


default.cfg

package: chocolate-common

title: default.cfg(5)

summary: Chocolate Doom configuration file

text:
# default.cfg(5)

## NAME
default.cfg - Chocolate Doom configuration file

## DESCRIPTION
default.cfg is the configuration file for chocolate-doom(6). The configuration options stored in the file are the same as those stored in the original DOS Vanilla Doom. Extra Chocolate Doom-specific options are stored in a separate configuration file, chocolate-doom.cfg.

default.cfg is normally stored in the user's home directory, as ~/.local/share/chocolate-doom/default.cfg. The path can be overridden using the XDG_DATA_HOME environment variable (see the XDG Base Directory Specification).

The chocolate-doom-setup(6) tool provides a simple to use front-end for editing default.cfg.

## FILE FORMAT
The file is a plain-text file, consisting of a list of configuration options and their values, separated by whitespace. Each option is stored on a separate line. Options have different types; an option may have either an integer, floating point or string value. If the option is of a string type, the value is surrounded by quotes (").

For example:

integer_value 1

integer_value2 1

floating_point_value 4.2

string_value "hello world"

Invalid lines or comments in the file will be ignored, but it is advisable not to put them in the file; the file is rewritten from scratch every time the game exits, so any invalid lines or comments will be lost.

Some options are used for keyboard key bindings; these are stored as integer values containing the keyboard scan code of the key to be bound to. Boolean values are also stored as integers, with a value of zero usually indicating "false" and a non-zero value indicating "true".

## CONFIGURATION VARIABLES
mouse_sensitivity

Mouse sensitivity. This value is used to multiply input mouse movement to control the effect of moving the mouse. The "normal" maximum value available for this through the in-game options menu is 9. A value of 31 or greater will cause the game to crash when entering the options menu.

sfx_volume

Volume of sound effects, range 0-15.

music_volume

Volume of in-game music, range 0-15.

show_messages

If non-zero, messages are displayed on the heads-up display in the game ("picked up a clip", etc). If zero, these messages are not displayed.

key_right

Keyboard key to turn right.

key_left

Keyboard key to turn left.

key_up

Keyboard key to move forward.

key_down

Keyboard key to move backward.

key_strafeleft

Keyboard key to strafe left.

key_straferight

Keyboard key to strafe right.

key_fire

Keyboard key to fire the currently selected weapon.

key_use

Keyboard key to "use" an object, eg. a door or switch.

key_strafe

Keyboard key to turn on strafing. When held down, pressing the key to turn left or right causes the player to strafe left or right instead.

key_speed

Keyboard key to make the player run.

use_mouse

If non-zero, mouse input is enabled. If zero, mouse input is disabled.

mouseb_fire

Mouse button to fire the currently selected weapon.

mouseb_strafe

Mouse button to turn on strafing. When held down, the player will strafe left and right instead of turning left and right.

mouseb_forward

Mouse button to move forward.

use_joystick

If non-zero, joystick input is enabled.

joyb_fire

Joystick virtual button that fires the current weapon.

joyb_strafe

Joystick virtual button that makes the player strafe while held down.

joyb_use

Joystick virtual button to "use" an object, eg. a door or switch.

joyb_speed

Joystick virtual button that makes the player run while held down. If this has a value of 20 or greater, the player will always run, even if use_joystick is 0.

screenblocks

Screen size, range 3-11. A value of 11 gives a full-screen view with the status bar not displayed. A value of 10 gives a full-screen view with the status bar displayed.

detaillevel

Screen detail. Zero gives normal "high detail" mode, while a non-zero value gives "low detail" mode.

snd_channels

Number of sounds that will be played simultaneously.

snd_musicdevice

Music output device. A non-zero value gives MIDI sound output, while a value of zero disables music.

snd_sfxdevice

Sound effects device. A value of zero disables in-game sound effects, a value of 1 enables PC speaker sound effects, while a value in the range 2-9 enables the "normal" digital sound effects.

snd_sbport

SoundBlaster I/O port. Unused.

snd_sbirq

SoundBlaster IRQ. Unused.

snd_sbdma

SoundBlaster DMA channel. Unused.

snd_mport

Output port to use for OPL MIDI playback. Unused.

usegamma

Gamma correction level. A value of zero disables gamma correction, while a value in the range 1-4 gives increasing levels of gamma correction.

chatmacro0

Multiplayer chat macro: message to send when alt+0 is pressed.

chatmacro1

Multiplayer chat macro: message to send when alt+1 is pressed.

chatmacro2

Multiplayer chat macro: message to send when alt+2 is pressed.

chatmacro3

Multiplayer chat macro: message to send when alt+3 is pressed.

chatmacro4

Multiplayer chat macro: message to send when alt+4 is pressed.

chatmacro5

Multiplayer chat macro: message to send when alt+5 is pressed.

chatmacro6

Multiplayer chat macro: message to send when alt+6 is pressed.

chatmacro7

Multiplayer chat macro: message to send when alt+7 is pressed.

chatmacro8

Multiplayer chat macro: message to send when alt+8 is pressed.

chatmacro9

Multiplayer chat macro: message to send when alt+9 is pressed.

## SEE ALSO
chocolate-doom(6), chocolate-doom.cfg(5), chocolate-doom-setup(6)


chocolate-doom.cfg

package: chocolate-doom

title: chocolate-doom.cfg(5)

summary: Chocolate Doom configuration file

text:
# chocolate-doom.cfg(5)

## NAME
chocolate-doom.cfg - Chocolate Doom configuration file

## DESCRIPTION
chocolate-doom.cfg is a configuration file for chocolate-doom(6). This file acts as an auxiliary configuration file; the main configuration options are stored in default.cfg, which contains the same configuration options as Vanilla Doom (for compatibility). chocolate-doom.cfg contains configuration options that are specific to Chocolate Doom only.

chocolate-doom.cfg is normally stored in the user's home directory, as ~/.local/share/chocolate-doom/chocolate-doom.cfg. The path can be overridden using the XDG_DATA_HOME environment variable (see the XDG Base Directory Specification).

The chocolate-setup(6) tool provides a simple to use front-end for editing chocolate-doom.cfg.

## FILE FORMAT
The file format is the same as that used for default.cfg(5).

## CONFIGURATION VARIABLES
video_driver

Name of the SDL video driver to use. If this is an empty string, the default video driver is used.

window_position

Position of the window on the screen when running in windowed mode. Accepted values are: "" (empty string) - don't care, "center" - place window at center of screen, "x,y" - place window at the specified coordinates.

fullscreen

If non-zero, the game will run in full screen mode. If zero, the game will run in a window.

video_display

Index of the display on which the game should run. This has no effect if running in windowed mode (fullscreen=0) and window_position is not set to "center".

aspect_ratio_correct

If non-zero, the screen will be stretched vertically to display correctly on a square pixel video mode.

integer_scaling

If non-zero, forces integer scales for resolution-independent rendering.

window_width

Window width when running in windowed mode.

window_height

Window height when running in windowed mode.

fullscreen_width

Width for screen mode when running fullscreen. If this and fullscreen_height are both set to zero, we run fullscreen as a desktop window that covers the entire screen, rather than ever switching screen modes. It should usually be unnecessary to set this value.

fullscreen_height

Height for screen mode when running fullscreen. See documentation for fullscreen_width.

force_software_renderer

If non-zero, force the use of a software renderer. For use on systems lacking hardware acceleration.

max_scaling_buffer_pixels

Maximum number of pixels to use for intermediate scaling buffer. More pixels mean that the screen can be rendered more precisely, but there are diminishing returns on quality. The default limits to 16,000,000 pixels, which is enough to cover 4K monitor standards.

startup_delay

Number of milliseconds to wait on startup after the video mode has been set, before the game will start. This allows the screen to settle on some monitors that do not display an image for a brief interval after changing video modes.

show_endoom

If non-zero, the ENDOOM text screen is displayed when exiting the game. If zero, the ENDOOM screen is not displayed.

show_diskicon

If non-zero, a disk activity indicator is displayed when data is read from disk. If zero, the disk activity indicator is not displayed.

png_screenshots

If non-zero, save screenshots in PNG format. If zero, screenshots are saved in PCX format, as Vanilla Doom does.

snd_samplerate

Sound output sample rate, in Hz. Typical values to use are 11025, 22050, 44100 and 48000.

snd_cachesize

Maximum number of bytes to allocate for caching converted sound effects in memory. If set to zero, there is no limit applied.

snd_maxslicetime_ms

Maximum size of the output sound buffer size in milliseconds. Sound output is generated periodically in slices. Higher values might be more efficient but will introduce latency to the sound output. The default is 28ms (one slice per tic with the 35fps timer).

snd_pitchshift

If non-zero, sound effects will have their pitch varied up or down by a random amount during play. If zero, sound effects play back at their default pitch.

snd_musiccmd

External command to invoke to perform MIDI playback. If set to the empty string, SDL_mixer's internal MIDI playback is used. This only has any effect when snd_musicdevice is set to General MIDI output.

snd_dmxoption

Value to set for the DMXOPTION environment variable. If this contains "-opl3", output for an OPL3 chip is generated when in OPL MIDI playback mode.

opl_io_port

The I/O port to use to access the OPL chip. Only relevant when using native OPL music playback.

use_libsamplerate

Controls whether libsamplerate support is used for performing sample rate conversions of sound effects. Support for this must be compiled into the program. If zero, libsamplerate support is disabled. If non-zero, libsamplerate is enabled. Increasing values roughly correspond to higher quality conversion; the higher the quality, the slower the conversion process. Linear conversion = 1; Zero order hold = 2; Fast Sinc filter = 3; Medium quality Sinc filter = 4; High quality Sinc filter = 5.

libsamplerate_scale

Scaling factor used by libsamplerate. This is used when converting sounds internally back into integer form; normally it should not be necessary to change it from the default value. The only time it might be needed is if a PWAD file is loaded that contains very loud sounds, in which case the conversion may cause sound clipping and the scale factor should be reduced. The lower the value, the quieter the sound effects become, so it should be set as high as is possible without clipping occurring.

autoload_path

Full path to a directory in which WAD files and dehacked patches can be placed to be automatically loaded on startup. A subdirectory of this directory matching the IWAD name is checked to find the files to load.

music_pack_path

Full path to a directory containing configuration files for substitute music packs. These packs contain high quality renderings of game music to be played instead of using the system's built-in MIDI playback.

timidity_cfg_path

Full path to a Timidity configuration file to use for MIDI playback. The file will be evaluated from the directory where it is evaluated, so there is no need to add "dir" commands into it.

gus_patch_path

Path to GUS patch files to use when operating in GUS emulation mode.

gus_ram_kb

Number of kilobytes of RAM to use in GUS emulation mode. Valid values are 256, 512, 768 or 1024.

vanilla_savegame_limit

If non-zero, the Vanilla savegame limit is enforced; if the savegame exceeds 180224 bytes in size, the game will exit with an error. If this has a value of zero, there is no limit to the size of savegames.

vanilla_demo_limit

If non-zero, the Vanilla demo size limit is enforced; the game exits with an error when a demo exceeds the demo size limit (128KiB by default). If this has a value of zero, there is no limit to the size of demos.

vanilla_keyboard_mapping

If non-zero, the game behaves like Vanilla Doom, always assuming an American keyboard mapping. If this has a value of zero, the native keyboard mapping of the keyboard is used.

player_name

Name to use in network games for identification. This is only used on the "waiting" screen while waiting for the game to start.

grabmouse

If this is non-zero, the mouse will be "grabbed" when running in windowed mode so that it can be used as an input device. When running full screen, this has no effect.

novert

If non-zero, all vertical mouse movement is ignored. This emulates the behavior of the "novert" tool available under DOS that performs the same function.

mouse_acceleration

Mouse acceleration factor. When the speed of mouse movement exceeds the threshold value (mouse_threshold), the speed is multiplied by this value.

mouse_threshold

Mouse acceleration threshold. When the speed of mouse movement exceeds this threshold value, the speed is multiplied by an acceleration factor (mouse_acceleration).

mouseb_strafeleft

Mouse button to strafe left.

mouseb_straferight

Mouse button to strafe right.

mouseb_use

Mouse button to "use" an object, eg. a door or switch.

mouseb_backward

Mouse button to move backwards.

mouseb_prevweapon

Mouse button to cycle to the previous weapon.

mouseb_nextweapon

Mouse button to cycle to the next weapon.

dclick_use

If non-zero, double-clicking a mouse button acts like pressing the "use" key to use an object in-game, eg. a door or switch.

joystick_guid

SDL GUID string indicating the joystick to use. An empty string indicates that no joystick is configured.

joystick_index

Index of SDL joystick to use; this is only used in the case where multiple identical joystick devices are connected which have the same GUID, to distinguish between devices.

joystick_x_axis

Joystick axis to use to for horizontal (X) movement.

joystick_x_invert

If non-zero, movement on the horizontal joystick axis is inverted.

joystick_y_axis

Joystick axis to use to for vertical (Y) movement.

joystick_y_invert

If non-zero, movement on the vertical joystick axis is inverted.

joystick_strafe_axis

Joystick axis to use to for strafing movement.

joystick_strafe_invert

If non-zero, movement on the joystick axis used for strafing is inverted.

joystick_look_axis

Joystick axis to use to for looking up and down.

joystick_look_invert

If non-zero, movement on the joystick axis used for looking is inverted.

joystick_physical_button0

The physical joystick button that corresponds to joystick virtual button #0.

joystick_physical_button1

The physical joystick button that corresponds to joystick virtual button #1.

joystick_physical_button2

The physical joystick button that corresponds to joystick virtual button #2.

joystick_physical_button3

The physical joystick button that corresponds to joystick virtual button #3.

joystick_physical_button4

The physical joystick button that corresponds to joystick virtual button #4.

joystick_physical_button5

The physical joystick button that corresponds to joystick virtual button #5.

joystick_physical_button6

The physical joystick button that corresponds to joystick virtual button #6.

joystick_physical_button7

The physical joystick button that corresponds to joystick virtual button #7.

joystick_physical_button8

The physical joystick button that corresponds to joystick virtual button #8.

joystick_physical_button9

The physical joystick button that corresponds to joystick virtual button #9.

joystick_physical_button10

The physical joystick button that corresponds to joystick virtual button #10.

joyb_strafeleft

Joystick virtual button to make the player strafe left.

joyb_straferight

Joystick virtual button to make the player strafe right.

joyb_menu_activate

Joystick virtual button to activate the menu.

joyb_toggle_automap

Joystick virtual button to toggle the automap.

joyb_prevweapon

Joystick virtual button that cycles to the previous weapon.

joyb_nextweapon

Joystick virtual button that cycles to the next weapon.

key_pause

Key to pause or unpause the game.

key_menu_activate

Key that activates the menu when pressed.

key_menu_up

Key that moves the cursor up on the menu.

key_menu_down

Key that moves the cursor down on the menu.

key_menu_left

Key that moves the currently selected slider on the menu left.

key_menu_right

Key that moves the currently selected slider on the menu right.

key_menu_back

Key to go back to the previous menu.

key_menu_forward

Key to activate the currently selected menu item.

key_menu_confirm

Key to answer 'yes' to a question in the menu.

key_menu_abort

Key to answer 'no' to a question in the menu.

key_menu_help

Keyboard shortcut to bring up the help screen.

key_menu_save

Keyboard shortcut to bring up the save game menu.

key_menu_load

Keyboard shortcut to bring up the load game menu.

key_menu_volume

Keyboard shortcut to bring up the sound volume menu.

key_menu_detail

Keyboard shortcut to toggle the detail level.

key_menu_qsave

Keyboard shortcut to quicksave the current game.

key_menu_endgame

Keyboard shortcut to end the game.

key_menu_messages

Keyboard shortcut to toggle heads-up messages.

key_menu_qload

Keyboard shortcut to load the last quicksave.

key_menu_quit

Keyboard shortcut to quit the game.

key_menu_gamma

Keyboard shortcut to toggle the gamma correction level.

key_spy

Keyboard shortcut to switch view in multiplayer.

key_menu_incscreen

Keyboard shortcut to increase the screen size.

key_menu_decscreen

Keyboard shortcut to decrease the screen size.

key_menu_screenshot

Keyboard shortcut to save a screenshot.

key_map_toggle

Key to toggle the map view.

key_map_north

Key to pan north when in the map view.

key_map_south

Key to pan south when in the map view.

key_map_east

Key to pan east when in the map view.

key_map_west

Key to pan west when in the map view.

key_map_zoomin

Key to zoom in when in the map view.

key_map_zoomout

Key to zoom out when in the map view.

key_map_maxzoom

Key to zoom out the maximum amount when in the map view.

key_map_follow

Key to toggle follow mode when in the map view.

key_map_grid

Key to toggle the grid display when in the map view.

key_map_mark

Key to set a mark when in the map view.

key_map_clearmark

Key to clear all marks when in the map view.

key_weapon1

Key to select weapon 1.

key_weapon2

Key to select weapon 2.

key_weapon3

Key to select weapon 3.

key_weapon4

Key to select weapon 4.

key_weapon5

Key to select weapon 5.

key_weapon6

Key to select weapon 6.

key_weapon7

Key to select weapon 7.

key_weapon8

Key to select weapon 8.

key_prevweapon

Key to cycle to the previous weapon.

key_nextweapon

Key to cycle to the next weapon.

key_message_refresh

Key to re-display last message.

key_demo_quit

Key to quit the game when recording a demo.

key_multi_msg

Key to send a message during multiplayer games.

key_multi_msgplayer1

Key to send a message to player 1 during multiplayer games.

key_multi_msgplayer2

Key to send a message to player 2 during multiplayer games.

key_multi_msgplayer3

Key to send a message to player 3 during multiplayer games.

key_multi_msgplayer4

Key to send a message to player 4 during multiplayer games.

## SEE ALSO
chocolate-doom(6), default.cfg(5), chocolate-setup(6)


chocolate-heretic.cfg

package: chocolate-heretic

title: chocolate-heretic.cfg(5)

summary: Chocolate Doom configuration file

text:
# chocolate-heretic.cfg(5)

## NAME
chocolate-doom.cfg - Chocolate Doom configuration file

## DESCRIPTION
chocolate-doom.cfg is a configuration file for chocolate-doom(6). This file acts as an auxiliary configuration file; the main configuration options are stored in default.cfg, which contains the same configuration options as Vanilla Doom (for compatibility). chocolate-doom.cfg contains configuration options that are specific to Chocolate Doom only.

chocolate-doom.cfg is normally stored in the user's home directory, as ~/.local/share/chocolate-doom/chocolate-doom.cfg. The path can be overridden using the XDG_DATA_HOME environment variable (see the XDG Base Directory Specification).

The chocolate-setup(6) tool provides a simple to use front-end for editing chocolate-doom.cfg.

## FILE FORMAT
The file format is the same as that used for default.cfg(5).

## CONFIGURATION VARIABLES
video_driver

Name of the SDL video driver to use. If this is an empty string, the default video driver is used.

window_position

Position of the window on the screen when running in windowed mode. Accepted values are: "" (empty string) - don't care, "center" - place window at center of screen, "x,y" - place window at the specified coordinates.

fullscreen

If non-zero, the game will run in full screen mode. If zero, the game will run in a window.

video_display

Index of the display on which the game should run. This has no effect if running in windowed mode (fullscreen=0) and window_position is not set to "center".

aspect_ratio_correct

If non-zero, the screen will be stretched vertically to display correctly on a square pixel video mode.

integer_scaling

If non-zero, forces integer scales for resolution-independent rendering.

window_width

Window width when running in windowed mode.

window_height

Window height when running in windowed mode.

fullscreen_width

Width for screen mode when running fullscreen. If this and fullscreen_height are both set to zero, we run fullscreen as a desktop window that covers the entire screen, rather than ever switching screen modes. It should usually be unnecessary to set this value.

fullscreen_height

Height for screen mode when running fullscreen. See documentation for fullscreen_width.

force_software_renderer

If non-zero, force the use of a software renderer. For use on systems lacking hardware acceleration.

max_scaling_buffer_pixels

Maximum number of pixels to use for intermediate scaling buffer. More pixels mean that the screen can be rendered more precisely, but there are diminishing returns on quality. The default limits to 16,000,000 pixels, which is enough to cover 4K monitor standards.

startup_delay

Number of milliseconds to wait on startup after the video mode has been set, before the game will start. This allows the screen to settle on some monitors that do not display an image for a brief interval after changing video modes.

graphical_startup

If non-zero, display the graphical startup screen.

show_endoom

If non-zero, the ENDOOM text screen is displayed when exiting the game. If zero, the ENDOOM screen is not displayed.

png_screenshots

If non-zero, save screenshots in PNG format. If zero, screenshots are saved in PCX format, as Vanilla Doom does.

snd_samplerate

Sound output sample rate, in Hz. Typical values to use are 11025, 22050, 44100 and 48000.

snd_cachesize

Maximum number of bytes to allocate for caching converted sound effects in memory. If set to zero, there is no limit applied.

snd_maxslicetime_ms

Maximum size of the output sound buffer size in milliseconds. Sound output is generated periodically in slices. Higher values might be more efficient but will introduce latency to the sound output. The default is 28ms (one slice per tic with the 35fps timer).

snd_pitchshift

If non-zero, sound effects will have their pitch varied up or down by a random amount during play. If zero, sound effects play back at their default pitch.

snd_musiccmd

External command to invoke to perform MIDI playback. If set to the empty string, SDL_mixer's internal MIDI playback is used. This only has any effect when snd_musicdevice is set to General MIDI output.

snd_dmxoption

Value to set for the DMXOPTION environment variable. If this contains "-opl3", output for an OPL3 chip is generated when in OPL MIDI playback mode.

opl_io_port

The I/O port to use to access the OPL chip. Only relevant when using native OPL music playback.

use_libsamplerate

Controls whether libsamplerate support is used for performing sample rate conversions of sound effects. Support for this must be compiled into the program. If zero, libsamplerate support is disabled. If non-zero, libsamplerate is enabled. Increasing values roughly correspond to higher quality conversion; the higher the quality, the slower the conversion process. Linear conversion = 1; Zero order hold = 2; Fast Sinc filter = 3; Medium quality Sinc filter = 4; High quality Sinc filter = 5.

libsamplerate_scale

Scaling factor used by libsamplerate. This is used when converting sounds internally back into integer form; normally it should not be necessary to change it from the default value. The only time it might be needed is if a PWAD file is loaded that contains very loud sounds, in which case the conversion may cause sound clipping and the scale factor should be reduced. The lower the value, the quieter the sound effects become, so it should be set as high as is possible without clipping occurring.

autoload_path

Full path to a directory in which WAD files and dehacked patches can be placed to be automatically loaded on startup. A subdirectory of this directory matching the IWAD name is checked to find the files to load.

music_pack_path

Full path to a directory containing configuration files for substitute music packs. These packs contain high quality renderings of game music to be played instead of using the system's built-in MIDI playback.

timidity_cfg_path

Full path to a Timidity configuration file to use for MIDI playback. The file will be evaluated from the directory where it is evaluated, so there is no need to add "dir" commands into it.

gus_patch_path

Path to GUS patch files to use when operating in GUS emulation mode.

gus_ram_kb

Number of kilobytes of RAM to use in GUS emulation mode. Valid values are 256, 512, 768 or 1024.

vanilla_keyboard_mapping

If non-zero, the game behaves like Vanilla Doom, always assuming an American keyboard mapping. If this has a value of zero, the native keyboard mapping of the keyboard is used.

player_name

Name to use in network games for identification. This is only used on the "waiting" screen while waiting for the game to start.

grabmouse

If this is non-zero, the mouse will be "grabbed" when running in windowed mode so that it can be used as an input device. When running full screen, this has no effect.

novert

If non-zero, all vertical mouse movement is ignored. This emulates the behavior of the "novert" tool available under DOS that performs the same function.

mouse_acceleration

Mouse acceleration factor. When the speed of mouse movement exceeds the threshold value (mouse_threshold), the speed is multiplied by this value.

mouse_threshold

Mouse acceleration threshold. When the speed of mouse movement exceeds this threshold value, the speed is multiplied by an acceleration factor (mouse_acceleration).

mouseb_strafeleft

Mouse button to strafe left.

mouseb_straferight

Mouse button to strafe right.

mouseb_use

Mouse button to "use" an object, eg. a door or switch.

mouseb_backward

Mouse button to move backwards.

mouseb_prevweapon

Mouse button to cycle to the previous weapon.

mouseb_nextweapon

Mouse button to cycle to the next weapon.

mouseb_invleft

Mouse button to move to the left in the inventory.

mouseb_invright

Mouse button to move to the right in the inventory.

dclick_use

If non-zero, double-clicking a mouse button acts like pressing the "use" key to use an object in-game, eg. a door or switch.

joystick_guid

SDL GUID string indicating the joystick to use. An empty string indicates that no joystick is configured.

joystick_index

Index of SDL joystick to use; this is only used in the case where multiple identical joystick devices are connected which have the same GUID, to distinguish between devices.

joystick_x_axis

Joystick axis to use to for horizontal (X) movement.

joystick_x_invert

If non-zero, movement on the horizontal joystick axis is inverted.

joystick_y_axis

Joystick axis to use to for vertical (Y) movement.

joystick_y_invert

If non-zero, movement on the vertical joystick axis is inverted.

joystick_strafe_axis

Joystick axis to use to for strafing movement.

joystick_strafe_invert

If non-zero, movement on the joystick axis used for strafing is inverted.

joystick_look_axis

Joystick axis to use to for looking up and down.

joystick_look_invert

If non-zero, movement on the joystick axis used for looking is inverted.

joystick_physical_button0

The physical joystick button that corresponds to joystick virtual button #0.

joystick_physical_button1

The physical joystick button that corresponds to joystick virtual button #1.

joystick_physical_button2

The physical joystick button that corresponds to joystick virtual button #2.

joystick_physical_button3

The physical joystick button that corresponds to joystick virtual button #3.

joystick_physical_button4

The physical joystick button that corresponds to joystick virtual button #4.

joystick_physical_button5

The physical joystick button that corresponds to joystick virtual button #5.

joystick_physical_button6

The physical joystick button that corresponds to joystick virtual button #6.

joystick_physical_button7

The physical joystick button that corresponds to joystick virtual button #7.

joystick_physical_button8

The physical joystick button that corresponds to joystick virtual button #8.

joystick_physical_button9

The physical joystick button that corresponds to joystick virtual button #9.

joystick_physical_button10

The physical joystick button that corresponds to joystick virtual button #10.

joyb_strafeleft

Joystick virtual button to make the player strafe left.

joyb_straferight

Joystick virtual button to make the player strafe right.

joyb_menu_activate

Joystick virtual button to activate the menu.

joyb_toggle_automap

Joystick virtual button to toggle the automap.

joyb_prevweapon

Joystick virtual button that cycles to the previous weapon.

joyb_nextweapon

Joystick virtual button that cycles to the next weapon.

key_pause

Key to pause or unpause the game.

key_menu_activate

Key that activates the menu when pressed.

key_menu_up

Key that moves the cursor up on the menu.

key_menu_down

Key that moves the cursor down on the menu.

key_menu_left

Key that moves the currently selected slider on the menu left.

key_menu_right

Key that moves the currently selected slider on the menu right.

key_menu_back

Key to go back to the previous menu.

key_menu_forward

Key to activate the currently selected menu item.

key_menu_confirm

Key to answer 'yes' to a question in the menu.

key_menu_abort

Key to answer 'no' to a question in the menu.

key_menu_help

Keyboard shortcut to bring up the help screen.

key_menu_save

Keyboard shortcut to bring up the save game menu.

key_menu_load

Keyboard shortcut to bring up the load game menu.

key_menu_volume

Keyboard shortcut to bring up the sound volume menu.

key_menu_detail

Keyboard shortcut to toggle the detail level.

key_menu_qsave

Keyboard shortcut to quicksave the current game.

key_menu_endgame

Keyboard shortcut to end the game.

key_menu_messages

Keyboard shortcut to toggle heads-up messages.

key_menu_qload

Keyboard shortcut to load the last quicksave.

key_menu_quit

Keyboard shortcut to quit the game.

key_menu_gamma

Keyboard shortcut to toggle the gamma correction level.

key_spy

Keyboard shortcut to switch view in multiplayer.

key_menu_incscreen

Keyboard shortcut to increase the screen size.

key_menu_decscreen

Keyboard shortcut to decrease the screen size.

key_menu_screenshot

Keyboard shortcut to save a screenshot.

key_map_toggle

Key to toggle the map view.

key_map_north

Key to pan north when in the map view.

key_map_south

Key to pan south when in the map view.

key_map_east

Key to pan east when in the map view.

key_map_west

Key to pan west when in the map view.

key_map_zoomin

Key to zoom in when in the map view.

key_map_zoomout

Key to zoom out when in the map view.

key_map_maxzoom

Key to zoom out the maximum amount when in the map view.

key_map_follow

Key to toggle follow mode when in the map view.

key_map_grid

Key to toggle the grid display when in the map view.

key_map_mark

Key to set a mark when in the map view.

key_map_clearmark

Key to clear all marks when in the map view.

key_weapon1

Key to select weapon 1.

key_weapon2

Key to select weapon 2.

key_weapon3

Key to select weapon 3.

key_weapon4

Key to select weapon 4.

key_weapon5

Key to select weapon 5.

key_weapon6

Key to select weapon 6.

key_weapon7

Key to select weapon 7.

key_weapon8

Key to select weapon 8.

key_prevweapon

Key to cycle to the previous weapon.

key_nextweapon

Key to cycle to the next weapon.

key_arti_quartz

Key to use "quartz flask" artifact.

key_arti_urn

Key to use "mystic urn" artifact.

key_arti_bomb

Key to use "timebomb of the ancients" artifact.

key_arti_tome

Key to use "tome of power" artifact.

key_arti_ring

Key to use "ring of invincibility" artifact.

key_arti_chaosdevice

Key to use "chaos device" artifact.

key_arti_shadowsphere

Key to use "shadowsphere" artifact.

key_arti_wings

Key to use "wings of wrath" artifact.

key_arti_torch

Key to use "torch" artifact.

key_arti_morph

Key to use "morph ovum" artifact.

key_message_refresh

Key to re-display last message.

key_demo_quit

Key to quit the game when recording a demo.

key_multi_msg

Key to send a message during multiplayer games.

key_multi_msgplayer1

Key to send a message to player 1 during multiplayer games.

key_multi_msgplayer2

Key to send a message to player 2 during multiplayer games.

key_multi_msgplayer3

Key to send a message to player 3 during multiplayer games.

key_multi_msgplayer4

Key to send a message to player 4 during multiplayer games.

## SEE ALSO
chocolate-doom(6), default.cfg(5), chocolate-setup(6)


heretic.cfg

title: heretic.cfg(5)

summary: Chocolate Heretic configuration file

text:
# heretic.cfg(5)

## NAME
heretic.cfg - Chocolate Heretic configuration file

## DESCRIPTION
heretic.cfg is the configuration file for chocolate-heretic(6). The configuration options stored in the file are the same as those stored in the original DOS Vanilla Heretic. Extra Chocolate Heretic-specific options are stored in a separate configuration file, chocolate-heretic.cfg.

heretic.cfg is normally stored in the user's home directory, as ~/.local/share/chocolate-heretic/heretic.cfg. The path can be overridden using the XDG_DATA_HOME environment variable (see the XDG Base Directory Specification).

The chocolate-heretic-setup(6) tool provides a simple to use front-end for editing heretic.cfg.

## FILE FORMAT
The file is a plain-text file, consisting of a list of configuration options and their values, separated by whitespace. Each option is stored on a separate line. Options have different types; an option may have either an integer, floating point or string value. If the option is of a string type, the value is surrounded by quotes (").

For example:

integer_value 1

integer_value2 1

floating_point_value 4.2

string_value "hello world"

Invalid lines or comments in the file will be ignored, but it is advisable not to put them in the file; the file is rewritten from scratch every time the game exits, so any invalid lines or comments will be lost.

Some options are used for keyboard key bindings; these are stored as integer values containing the keyboard scan code of the key to be bound to. Boolean values are also stored as integers, with a value of zero usually indicating "false" and a non-zero value indicating "true".

## CONFIGURATION VARIABLES
mouse_sensitivity

Mouse sensitivity. This value is used to multiply input mouse movement to control the effect of moving the mouse. The "normal" maximum value available for this through the in-game options menu is 9. A value of 31 or greater will cause the game to crash when entering the options menu.

sfx_volume

Volume of sound effects, range 0-15.

music_volume

Volume of in-game music, range 0-15.

key_right

Keyboard key to turn right.

key_left

Keyboard key to turn left.

key_up

Keyboard key to move forward.

key_down

Keyboard key to move backward.

key_strafeleft

Keyboard key to strafe left.

key_straferight

Keyboard key to strafe right.

key_flyup

Keyboard key to fly upward.

key_flydown

Keyboard key to fly downwards.

key_flycenter

Keyboard key to center flying.

key_lookup

Keyboard key to look up.

key_lookdown

Keyboard key to look down.

key_lookcenter

Keyboard key to center the view.

key_invleft

Keyboard key to scroll left in the inventory.

key_invright

Keyboard key to scroll right in the inventory.

key_useartifact

Keyboard key to use the current item in the inventory.

key_fire

Keyboard key to fire the currently selected weapon.

key_use

Keyboard key to "use" an object, eg. a door or switch.

key_strafe

Keyboard key to turn on strafing. When held down, pressing the key to turn left or right causes the player to strafe left or right instead.

key_speed

Keyboard key to make the player run.

use_mouse

If non-zero, mouse input is enabled. If zero, mouse input is disabled.

mouseb_fire

Mouse button to fire the currently selected weapon.

mouseb_strafe

Mouse button to turn on strafing. When held down, the player will strafe left and right instead of turning left and right.

mouseb_forward

Mouse button to move forward.

use_joystick

If non-zero, joystick input is enabled.

joyb_fire

Joystick virtual button that fires the current weapon.

joyb_strafe

Joystick virtual button that makes the player strafe while held down.

joyb_use

Joystick virtual button to "use" an object, eg. a door or switch.

joyb_speed

Joystick virtual button that makes the player run while held down. If this has a value of 20 or greater, the player will always run, even if use_joystick is 0.

screenblocks

Screen size, range 3-11. A value of 11 gives a full-screen view with the status bar not displayed. A value of 10 gives a full-screen view with the status bar displayed.

snd_channels

Number of sounds that will be played simultaneously.

snd_musicdevice

Music output device. A non-zero value gives MIDI sound output, while a value of zero disables music.

snd_sfxdevice

Sound effects device. A value of zero disables in-game sound effects, a value of 1 enables PC speaker sound effects, while a value in the range 2-9 enables the "normal" digital sound effects.

snd_sbport

SoundBlaster I/O port. Unused.

snd_sbirq

SoundBlaster IRQ. Unused.

snd_sbdma

SoundBlaster DMA channel. Unused.

snd_mport

Output port to use for OPL MIDI playback. Unused.

usegamma

Gamma correction level. A value of zero disables gamma correction, while a value in the range 1-4 gives increasing levels of gamma correction.

chatmacro0

Multiplayer chat macro: message to send when alt+0 is pressed.

chatmacro1

Multiplayer chat macro: message to send when alt+1 is pressed.

chatmacro2

Multiplayer chat macro: message to send when alt+2 is pressed.

chatmacro3

Multiplayer chat macro: message to send when alt+3 is pressed.

chatmacro4

Multiplayer chat macro: message to send when alt+4 is pressed.

chatmacro5

Multiplayer chat macro: message to send when alt+5 is pressed.

chatmacro6

Multiplayer chat macro: message to send when alt+6 is pressed.

chatmacro7

Multiplayer chat macro: message to send when alt+7 is pressed.

chatmacro8

Multiplayer chat macro: message to send when alt+8 is pressed.

chatmacro9

Multiplayer chat macro: message to send when alt+9 is pressed.

## SEE ALSO
chocolate-heretic(6), chocolate-heretic.cfg(5), chocolate-heretic-setup(6)