# This file contains a list of files and directories with known permissions.
# It is used by the packaging class to ensure that the permissions, owners and
# group of listed files and directories are in sync across the system.
#
# The format of this file 
#
#<path>	<mode>	<uid>	<gid>	<walk>	<fmode>	<fuid>	<fgid>
#
# or
#
#<path> link <target>
#
# <path>: directory path
# <mode>: mode for directory
# <uid>:  uid for directory
# <gid>:  gid for directory
# <walk>: recursively walk the directory?  true or false
# <fmode>: if walking, new mode for files
# <fuid>:  if walking, new uid for files
# <fgid>:  if walking, new gid for files
# <target>: turn the directory into a symlink point to target
#
# in mode, uid or gid, a "-" means don't change any existing values
#
# /usr/src		0755	root	root	false	-	-	-
# /usr/share/man	0755	root	root	true	0644	root	root

# Note: all standard config directories are automatically assigned "0755 root root false - - -"

# Documentation should always be corrected
${mandir}		0755	root	root	true	0644	root	root
${infodir}		0755	root	root	true	0644	root	root
${docdir}		0755	root	root	true	0644	root	root
${datadir}/gtk-doc	0755	root	root	true	0644	root	root

# Fixup locales
${datadir}/locale	0755	root	root	true	0644	root	root

# Cleanup headers
${includedir}		0755	root	root	true	0644	root	root

# Cleanup debug src
/usr/src/debug		0755	root	root	true	0644	root	root

# Items from base-files
# Links
${localstatedir}/run	link	/run
${localstatedir}/lock	link	/run/lock
${localstatedir}/tmp	link	volatile/tmp

/home				0755	root	root	false - - -
/srv				0755	root	root	false - - -
${prefix}/src			0755	root	root	false - - -
${localstatedir}/local		0755	root	root	false - - -

# Special permissions from base-files
# Set 1777
/tmp				01777	root	root	false - - -
${localstatedir}/volatile/tmp	01777	root	root	false - - -

# Set 0700
${ROOT_HOME}			0700	root	root	false - - -

# Set 2775-lsb
${localstatedir}/mail		02775	root	mail	false - - -
