diff options
author | Donnie Berkholz <spyderous@gentoo.org> | 2005-08-16 03:08:47 +0000 |
---|---|---|
committer | Donnie Berkholz <spyderous@gentoo.org> | 2005-08-16 03:08:47 +0000 |
commit | fd98cd69c6d5537ea53512814a72741363bd56de (patch) | |
tree | 5262ecd8e5db2a13dcbdc41567578b8f71509c46 /x11-apps/xfs/files | |
parent | Stable on SPARC wrt security bug #102577. (diff) | |
download | gentoo-2-fd98cd69c6d5537ea53512814a72741363bd56de.tar.gz gentoo-2-fd98cd69c6d5537ea53512814a72741363bd56de.tar.bz2 gentoo-2-fd98cd69c6d5537ea53512814a72741363bd56de.zip |
Add all the files that the monolith installed, including an init script. Add a hack for changing configdir that needs to be transformed to autoconf.
(Portage version: 2.0.51.22-r2)
Diffstat (limited to 'x11-apps/xfs/files')
-rw-r--r-- | x11-apps/xfs/files/digest-xfs-0.99.0-r1 | 1 | ||||
-rw-r--r-- | x11-apps/xfs/files/xfs.conf.d | 23 | ||||
-rw-r--r-- | x11-apps/xfs/files/xfs.config | 47 | ||||
-rwxr-xr-x | x11-apps/xfs/files/xfs.start | 334 |
4 files changed, 405 insertions, 0 deletions
diff --git a/x11-apps/xfs/files/digest-xfs-0.99.0-r1 b/x11-apps/xfs/files/digest-xfs-0.99.0-r1 new file mode 100644 index 000000000000..430ec886a40a --- /dev/null +++ b/x11-apps/xfs/files/digest-xfs-0.99.0-r1 @@ -0,0 +1 @@ +MD5 fc9ed8773c67bdd54a80c51e567e0076 xfs-0.99.0.tar.bz2 136432 diff --git a/x11-apps/xfs/files/xfs.conf.d b/x11-apps/xfs/files/xfs.conf.d new file mode 100644 index 000000000000..aa4de5a87412 --- /dev/null +++ b/x11-apps/xfs/files/xfs.conf.d @@ -0,0 +1,23 @@ +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License, v2 +# $Header: /var/cvsroot/gentoo-x86/x11-apps/xfs/files/xfs.conf.d,v 1.1 2005/08/16 03:08:47 spyderous Exp $ + +# Config file for /etc/init.d/xfs + + +# Port for xfs to listen on. Default is set to "-1", meaning +# it will only listen on unix sockets, and not tcp ports. If +# you however want it to listen on tcp, remember to comment +# "nolisten = tcp" in /etc/X11/fs/config. + +XFS_PORT="-1" + + +# If this is set to "yes", then the xfs rc-script will +# scan all the font directories in /etc/X11/fs/config for +# changes, and if any, will add the required files. This +# may take a while on very old boxes, so set it to "no" +# if it takes too long for you. + +SETUP_FONTDIRS="yes" + diff --git a/x11-apps/xfs/files/xfs.config b/x11-apps/xfs/files/xfs.config new file mode 100644 index 000000000000..ba2ea9aab94e --- /dev/null +++ b/x11-apps/xfs/files/xfs.config @@ -0,0 +1,47 @@ +# +# X Font Server configuration file +# + +# allow a max of 4 clients to connect to this font server +#client-limit = 4 + +# no tcp, use sockets! +no-listen = tcp + +# when a font server reaches its limit, start up a new one +clone-self = on + +# alternate font servers for clients to use +#alternate-servers = foo:7101,bar:7102 + +# where to look for fonts +# Some of these are commented out, i.e. the TrueType and Type1 +# directories in /usr/share, because they aren't forced to be +# installed alongside X. +# +catalogue = /usr/share/fonts/75dpi, + /usr/share/fonts/100dpi, + /usr/share/fonts/misc, + /usr/share/fonts/Type1, + /usr/share/fonts/Speedo, + /usr/share/fonts/CID, + /usr/share/fonts/util, + /usr/share/fonts/local, + /usr/share/fonts/Speedo, + /usr/share/fonts/truetype, + /usr/share/fonts/TTF, + /usr/share/fonts/cyrillic, + /usr/share/fonts/freefont, + /usr/share/fonts/sharefont, + /usr/share/fonts/default/Type1, + /usr/share/fonts/ttf/decoratives, + /usr/share/fonts/ttf/western + +# in 12 points, decipoints +default-point-size = 120 + +# 100 x 100 and 75 x 75 +default-resolutions = 75,75,100,100 + +# how to log errors +use-syslog = on diff --git a/x11-apps/xfs/files/xfs.start b/x11-apps/xfs/files/xfs.start new file mode 100755 index 000000000000..52a9270dd92e --- /dev/null +++ b/x11-apps/xfs/files/xfs.start @@ -0,0 +1,334 @@ +#!/sbin/runscript +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License, v2 +# Author: Martin Schlemmer <azarah@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/x11-apps/xfs/files/xfs.start,v 1.1 2005/08/16 03:08:47 spyderous Exp $ + +#NB: Config is in /etc/conf.d/xfs + + +opts="${opts} mkfontdirs" + +depend() { + use logger +} + +check_config() { + if [ -z "${XFS_PORT}" ] + then + eerror "Please set \$XFS_PORT in /etc/conf.d/xfs!" + return 1 + fi + return 0 +} + +# Return 0 on change, or 1 on no change, or if dir do not exist +check_changed() { + local x="" + local fontlist="" + + # If the dir do not exist, e + if [ ! -d $1 ] + then + return 1 + fi + + # Create a list of all non known config files in the font dir + fontlist="$(find $1/ -maxdepth 1 -type f | \ + gawk '$0 !~ /fonts\..*$|^.*\.dir$|XftCache/ {print}')" + + if [ ! -f $1/fonts.list ] + then + if [ -n "${fontlist}" ] + then + # No list file exist, so create it and return 0 to add + # this font dir as a candidate for updating... + echo "${fontlist}" > $1/fonts.list + + return 0 + fi + else + local retval=1 + + # All the fonts was removed, so cleanup + if [ -z "${fontlist}" ] + then + for x in $1/fonts.* $1/encodings.dir $1/XftCache + do + if [ -f ${x} ] + then + rm -f ${x} + fi + done + + return 1 + fi + + # Check that no files was added or removed.... + if [ "$(cat $1/fonts.list | md5sum)" != "$(echo "${fontlist}" | md5sum)" ] + then + retval=0 + fi + + # Check that no files was updated.... + if [ "${retval}" -ne 0 ] + then + local changed_list="" + +# It should be more consistant if we consider a change to fonts.scale, or +# encodings.dir files as a need for an update as well ... +# changed_list="$(find $1/ -type f -cnewer $1/fonts.dir | \ +# gawk '$0 !~ /fonts\..*$|^.*\.dir$|XftCache/ {print}')" + changed_list="$(find $1/ -type f -cnewer $1/fonts.dir | \ + gawk '$0 !~ /fonts\.(list|cache-1)$|XftCache/ {print}')" + + if [ -n "${changed_list}" ] + then + retval=0 + fi + fi + + # OK, something changed, so recreate fonts.list and add as candidate + # for updating... + if [ "${retval}" -eq 0 ] + then + echo "${fontlist}" > $1/fonts.list + + return 0 + fi + fi + + return 1 +} + +# This is a function to extract font dirs from +# the xfs config file (/etc/X11/fs/config). +get_fontdir_list() { + [ ! -r /etc/X11/fs/config ] && return 0 + + gawk ' + BEGIN { + + while((getline xfsconf_data < ("/etc/X11/fs/config")) > 0) { + + # Strip any comments + if (xfsconf_data !~ /^[[:space:]]*#/) { + + # Dont bother if its a blank line + if (xfsconf_data == "") continue + + # If we have a line that contain 'catalogue=', we + # should be where the list of font dirs are + if (xfsconf_data ~ /catalogue[[:space:]]*=/) + DO_WRITE = 1 + + # Ok, we got our que, so start + if (DO_WRITE) { + + # Strip and suffixes from the directory lists + sub(/\:[[:alnum:]]*/, "", xfsconf_data) + + # Strip any leading spaces and tabs + sub(/^[[:space:]]*/, "", xfsconf_data) + # Strip the 'catalogue=' part + sub(/catalogue[[:space:]]*=[[:space:]]*/, "", xfsconf_data) + + # The last font dir will not have a ',', so this will + # be the last line we read ... + if (xfsconf_data !~ /,$/) { + + DO_WRITE = 0 + DONE = 1 + } + + # Strip the ending ',' ... + sub(/,$/, "", xfsconf_data) + + # If we have a valid font path, print it + if (xfsconf_data != "") { + + have_dup = 0 + + # Check for duplicates ... + for (x in DIRLIST) + if (DIRLIST[x] == xfsconf_data) { + + have_dup = 1 + break + } + + if (!have_dup) { + print xfsconf_data + DIRLIST[++i] = xfsconf_data + } + } + } + + # No need to continue reading the file ... + if (DONE) break + } + } + + close("/etc/X11/fs/config") + }' + + return 0 +} + +# This is the main beast for setting up the font dirs +setup_font_dirs() { + local x="" + local pending_fontdirs="" + local changed="no" + + umask 022 + + local NEEDED_BIN + local NEEDED_BINS="/usr/X11R6/bin/mkfontdir + /usr/X11R6/bin/mkfontscale + /usr/X11R6/bin/ttmkfdir" + for NEEDED_BIN in ${NEEDED_BINS} + do + if [ ! -x ${NEEDED_BIN} ] + then + ewarn "Could not find the `basename ${NEEDED_BIN}` binary!" + return 0 + fi + done + + if [ ! -d /usr/share/fonts/encodings ] + then + ewarn "Encodings directory are missing!" + ewarn "Please restore /usr/share/fonts/encodings ..." + return 0 + fi + + # Generate the encodings.dir ... + /usr/X11R6/bin/mkfontdir -n \ + -e /usr/share/fonts/encodings \ + -e /usr/share/fonts/encodings/large \ + -- /usr/share/fonts/encodings + + ebegin "Scanning font directories" + for x in $(get_fontdir_list) + do + if test -d ${x} && check_changed ${x} + then + if [ -z "${pending_fontdirs}" ] + then + pending_fontdirs="${x}" + else + pending_fontdirs="${pending_fontdirs} ${x}" + fi + fi + done + eend 0 + + if [ -n "${pending_fontdirs}" ] + then + ebegin "Indexing font directories" + for x in ${pending_fontdirs} + do + ebegin " ${x}" + + # Only generate .scale files if truetype, opentype or type1 + # fonts are present ... + + # First truetype (ttf,ttc) + # NOTE: ttmkfdir does NOT work on type1 fonts (#53753) + # Also, there is no way to regenerate Speedo/CID fonts.scale + # <spyderous@gentoo.org> 2 August 2004 + if [ "${x/encodings}" = "${x}" -a \ + -n "$(find ${x} -iname '*.tt[cf]' -print)" ] + then + /usr/X11R6/bin/ttmkfdir -x 2 \ + -e /usr/share/fonts/encodings/encodings.dir \ + -o ${x}/fonts.scale -d ${x} > /dev/null + # ttmkfdir fails on some stuff, so try mkfontscale if it does + local ttmkfdir_return=$? + if [ ${ttmkfdir_return} -ne 0 ] + then + /usr/X11R6/bin/mkfontscale \ + -a /usr/share/fonts/encodings/encodings.dir \ + -- ${x} + fi + + # Next type1 and opentype (pfa,pfb,otf,otc) + elif [ "${x/encodings}" = "${x}" -a \ + -n "$(find ${x} -iname '*.[po][ft][abcf]' -print)" ] + then + /usr/X11R6/bin/mkfontscale \ + -a /usr/share/fonts/encodings/encodings.dir \ + -- ${x} + fi + + # Now generate fonts.dir files ... + if [ "${x/encodings}" = "${x}" ] + then + /usr/X11R6/bin/mkfontdir \ + -e /usr/share/fonts/encodings \ + -e /usr/share/fonts/encodings/large \ + -- ${x} > /dev/null + fi + + if [ "${x/encodings}" = "${x}" -a -x /usr/X11R6/bin/xftcache ] && \ + [ -n "$(find ${x} -iname '*.[otps][pft][cfad]' -print)" ] + then + # xftcache is broken, but run it anyhow ... + /usr/X11R6/bin/xftcache ${x} &> /dev/null + fi + eend 0 + + changed="yes" + done + fi + + # While we at it, update fontconfig's cache as well + if [ -x /usr/bin/fc-cache -a "${changed}" = "yes" ] + then + ebegin "Updating FC cache" + HOME="/root" /usr/bin/fc-cache + eend 0 + fi +} + +mkfontdirs() { + setup_font_dirs +} + +start() { + check_config || return 1 + + if [ "${SETUP_FONTDIRS}" = "yes" ] + then + setup_font_dirs + fi + + ebegin "Starting X Font Server" + if [ "`grep -e "^xfs:" /etc/passwd`" ] ; then + # Fix possible security problem, turned to hard failure in 6.8.0 + # See discussion at http://freedesktop.org/bugzilla/show_bug.cgi?id=306 + rm -rf /tmp/.font-unix + mkdir /tmp/.font-unix + chmod 1777 /tmp/.font-unix + + start-stop-daemon --start --quiet --exec /usr/X11R6/bin/xfs \ + -- -daemon -config /etc/X11/fs/config \ + -droppriv -user xfs -port ${XFS_PORT} 1>&2 + else + start-stop-daemon --start --quiet --exec /usr/X11R6/bin/xfs \ + -- -daemon -config /etc/X11/fs/config \ + -port ${XFS_PORT} 1>&2 + fi + eend $? +} + +stop() { + ebegin "Stopping X Font Server" + start-stop-daemon --stop --quiet --exec /usr/X11R6/bin/xfs 1>&2 + rm -rf /tmp/.font-unix + eend $? +} + + +# vim:ts=4 |