This file is indexed.

/usr/bin/update-profile-cache is in desktop-profiles 1.4.18.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/sh
#
# This script checks whether generating a cache of the wanted profile 
# assignment makes sense, and if so (re)generate the cache if it's out of date
# 
# Supported CACHE_TYPES:
# - static: used when profiles are either activated machine-wide or not at all
# - none: used when we either don't want or don't support a cache
# TODO: caching in the non-static case
###############################################################################

#################
# initialization
#################
  # get user preferences
  if (test -r /etc/default/desktop-profiles); then
    . /etc/default/desktop-profiles;
  fi;  

  #failsave in case default file is deleted
  LISTINGS_DIRS=${LISTINGS_DIRS:-'/etc/desktop-profiles'}
  CACHE_DIR=${CACHE_DIR:-'/var/cache/desktop-profiles'}
  CACHE_FILE="$CACHE_DIR/activated_profiles"

##############################################  
# Check wether generating a cache makes sense  
##############################################
  # if is true when there's at least 1 non-deactivated profile with a 
  # group or command requirment
  # (a group or command requirement means at least 1 character in the 
  # requirement that's neither whitespace nor '!')
  if( test $(list-desktop-profiles -e '$REQUIREMENTS' -r '[^[:space:]!]' | \
      grep -v '^![[:space:]]\|[[:space:]]!$\|[[:space:]]![[:space:]]\|^!$' | \
      wc -l) -ne 0); then
    CACHE_TYPE=none;
  else 
    CACHE_TYPE=static
  fi;

###########################################
# generate $CACHE_FILE if that makes sense
###########################################
  if (test "$CACHE_TYPE" = static); then
    #if:
    # - cache doesn't exist yet or
    # - last modification time of any metadata file is newer then the cache
    if !(test -e "$CACHE_FILE") ||
       !(test $(ls -t -1 /etc/desktop-profiles/*.listing \
                         /etc/default/desktop-profiles \
			 "$CACHE_FILE" 2> /dev/null | \
	        head -1) = "$CACHE_FILE"); then

      # delete old cache (otherwise activateDesktopProfiles reuses it)
      rm -f "$CACHE_FILE";

      # make sure we only use the metadata files 
      KDEDIRS='';XDG_CONFIG_DIRS='';XDG_DATA_DIRS='';CHOICESPATH='';
      GNUSTEP_PATHLIST='';UDEdir='';

      # generate profile settings
      . /etc/X11/Xsession.d/20desktop-profiles_activateDesktopProfiles;

      # move generated path files to cache dir, and set env vars accordingly
      if (test -e "$MANDATORY_PATH" ); then
        # sanity check
        mkdir -p "$CACHE_DIR";
	
	#do it with cat+rm instead of mv to ensure correct permissions
        cat "$MANDATORY_PATH" > "$CACHE_DIR/mandatory_path";
	rm -f "$MANDATORY_PATH";
	MANDATORY_PATH="$CACHE_DIR/mandatory_path";
      fi;
      if (test -e "$DEFAULTS_PATH" ); then
        #sanity check
	mkdir -p "$CACHE_DIR";
	
	#do it with cat+rm instead of mv to ensure correct permissions
        cat "$DEFAULTS_PATH" > "$CACHE_DIR/defaults.path";
	rm -f "$DEFAULTS_PATH";
	DEFAULTS_PATH="$CACHE_DIR/defaults.path";
      fi;	

      # save profile settings to $CACHE_FILE
      mkdir -p "$CACHE_DIR";
      env | grep 'KDEDIRS\|XDG_CONFIG_DIRS\|XDG_DATA_DIRS\|CHOICESPATH\|UDEdir\|GNUSTEP_PATHLIST\|MANDATORY_PATH\|DEFAULTS_PATH' > "$CACHE_FILE";

      # Add markers for env variables according to personality type
      # markers will be filled in at X-start
      case "$PERSONALITY" in 
	rude) 
	  sed -i -e 's/^\(KDEDIRS=.*\)$/\1:$KDEDIRS/' \
	   -e 's/^\(XDG_CONFIG_DIRS=.*\)$/\1:$XDG_CONFIG_DIRS/' \
	   -e 's/^\(XDG_DATA_DIRS=.*\)$/\1:$XDG_DATA_DIRS/' \
	   -e 's/^\(CHOICESPATH=.*\)$/\1:$CHOICESPATH/' \
	   -e 's/^\(GNUSTEP_PATHLIST=.*\)$/\1:$GNUSTEP_PATHLIST/' \
	   -e 's/^\(UDEdir=.*\)$/\1:$UDEdir/' \
	   "$CACHE_FILE";
	;;

	sheep | autocrat) 
          #no markers to add
	;; 

        polite | *) 
	  sed -i -e 's/^\(KDEDIRS=\)\(.*\)$/\1$KDEDIRS:\2/' \
	   -e 's/^\(XDG_CONFIG_DIRS=\)\(.*\)$/\1$XDG_CONFIG_DIRS:\2/' \
	   -e 's/^\(XDG_DATA_DIRS=\)\(.*\)$/\1$XDG_DATA_DIRS:\2/' \
	   -e 's/^\(CHOICESPATH=\)\(.*\)$/\1$CHOICESPATH:\2/' \
	   -e 's/^\(GNUSTEP_PATHLIST=\)\(.*\)$/\1$GNUSTEP_PATHLIST:\2/' \
	   -e 's/^\(UDEdir=\)\(.*\)$/\1$UDEdir:\2/' \
	   "$CACHE_FILE";
	;;	
      esac;	
    fi;
  # end static cache generation  
  else
    # we don't want to use the cache so make sure no old one is left behind  
    rm -f "$CACHE_FILE";
  fi;