about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/x11/xquartz/privileged
blob: 9d9c802002b2af57533a6337976e7d63d95df473 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!@shell@

export PATH=@PATH@:$PATH
export FONTCONFIG_FILE="@FONTCONFIG_FILE@"

# Our usage of mktemp fails with GNU, so prefer /usr/bin to hopefully
# get BSD mktemp
if [ -x /usr/bin/mktemp ] ; then
    MKTEMP=/usr/bin/mktemp
else
    MKTEMP=mktemp
fi

STAT=/usr/bin/stat

for dir in /tmp/.ICE-unix /tmp/.X11-unix /tmp/.font-unix ; do
    success=0
    for attempt in 1 2 3 4 5 ; do
        check=`${STAT} -f '%#p %u %g' ${dir} 2> /dev/null`
        if [ "${check}" = "041777 0 0" ] ; then
            success=1
            break
        elif [ -n "${check}" ] ; then
            saved=$(${MKTEMP} -d ${dir}-XXXXXXXX)
            mv ${dir} ${saved}
            echo "${dir} exists but is insecure.  It has been moved into ${saved}" >&2
        fi

        # if $dir exists and is a symlink (ie protect against a race)
        if ${MKTEMP} -d ${dir} >& /dev/null ; then
            chmod 1777 $dir
            chown root:wheel $dir
            success=1
            break
        fi
    done

    if [ "${success}" -eq 0 ] ; then
        echo "Could not successfully create ${dir}" >&2
    fi
done

@FONT_CACHE@ -s &