forked from ungleich-public/cdist
		
	do not generate code when mode = 0xxx format
Signed-off-by: Nico Schottelius <nico@bento.schottelius.org>
This commit is contained in:
		
					parent
					
						
							
								ed10f4e5b4
							
						
					
				
			
			
				commit
				
					
						acd42b259b
					
				
			
		
					 1 changed files with 41 additions and 34 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
#!/bin/sh
 | 
			
		||||
#
 | 
			
		||||
# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 2011-2013 Nico Schottelius (nico-cdist at schottelius.org)
 | 
			
		||||
# 2013 Steven Armstrong (steven-cdist armstrong.cc)
 | 
			
		||||
#
 | 
			
		||||
# This file is part of cdist.
 | 
			
		||||
| 
						 | 
				
			
			@ -26,20 +26,20 @@ stat_file="$__object/explorer/stat"
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
get_current_value() {
 | 
			
		||||
   if [ -s "$stat_file" ]; then
 | 
			
		||||
      _name="$1"
 | 
			
		||||
      _value="$2"
 | 
			
		||||
      case "$_value" in
 | 
			
		||||
         [0-9]*)
 | 
			
		||||
            _index=2
 | 
			
		||||
         ;;
 | 
			
		||||
         *)
 | 
			
		||||
            _index=3
 | 
			
		||||
         ;;
 | 
			
		||||
      esac
 | 
			
		||||
      awk '/'"$_name"':/ { print $'$_index' }' "$stat_file"
 | 
			
		||||
      unset _name _value _index
 | 
			
		||||
   fi
 | 
			
		||||
    if [ -s "$stat_file" ]; then
 | 
			
		||||
        _name="$1"
 | 
			
		||||
        _value="$2"
 | 
			
		||||
        case "$_value" in
 | 
			
		||||
            [0-9]*)
 | 
			
		||||
                _index=2
 | 
			
		||||
            ;;
 | 
			
		||||
            *)
 | 
			
		||||
                _index=3
 | 
			
		||||
            ;;
 | 
			
		||||
        esac
 | 
			
		||||
        awk '/'"$_name"':/ { print $'$_index' }' "$stat_file"
 | 
			
		||||
        unset _name _value _index
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
set_group() {
 | 
			
		||||
| 
						 | 
				
			
			@ -59,29 +59,36 @@ set_mode() {
 | 
			
		|||
 | 
			
		||||
set_attributes=
 | 
			
		||||
case "$state_should" in
 | 
			
		||||
   present|exists)
 | 
			
		||||
      # Note: Mode - needs to happen last as a chown/chgrp can alter mode by
 | 
			
		||||
      #  clearing S_ISUID and S_ISGID bits (see chown(2))
 | 
			
		||||
      for attribute in group owner mode; do
 | 
			
		||||
         if [ -f "$__object/parameter/$attribute" ]; then
 | 
			
		||||
    present|exists)
 | 
			
		||||
    # Note: Mode - needs to happen last as a chown/chgrp can alter mode by
 | 
			
		||||
    #  clearing S_ISUID and S_ISGID bits (see chown(2))
 | 
			
		||||
    for attribute in group owner mode; do
 | 
			
		||||
        if [ -f "$__object/parameter/$attribute" ]; then
 | 
			
		||||
            value_should="$(cat "$__object/parameter/$attribute")"
 | 
			
		||||
 | 
			
		||||
            # change 0xxx format to xxx format => same as stat returns
 | 
			
		||||
            if [ "$attribute" = mode ]; then
 | 
			
		||||
                value_should="$(echo $value_should | sed 's/^0\(...\)/\1/')"
 | 
			
		||||
            fi
 | 
			
		||||
            
 | 
			
		||||
            value_is="$(get_current_value "$attribute" "$value_should")"
 | 
			
		||||
            if [ -f "$__object/files/set-attributes" -o "$value_should" != "$value_is" ]; then
 | 
			
		||||
               "set_$attribute" "$value_should"
 | 
			
		||||
                "set_$attribute" "$value_should"
 | 
			
		||||
            fi
 | 
			
		||||
         fi
 | 
			
		||||
      done
 | 
			
		||||
   ;;
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
 | 
			
		||||
   absent)
 | 
			
		||||
      if [ "$type" = "file" ]; then
 | 
			
		||||
         echo rm -f \"$destination\"
 | 
			
		||||
         echo remove >> "$__messages_out"
 | 
			
		||||
      fi
 | 
			
		||||
   ;;
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
   *)
 | 
			
		||||
      echo "Unknown state: $state_should" >&2
 | 
			
		||||
      exit 1
 | 
			
		||||
   ;;
 | 
			
		||||
    absent)
 | 
			
		||||
        if [ "$type" = "file" ]; then
 | 
			
		||||
            echo rm -f \"$destination\"
 | 
			
		||||
            echo remove >> "$__messages_out"
 | 
			
		||||
        fi
 | 
			
		||||
    ;;
 | 
			
		||||
 | 
			
		||||
    *)
 | 
			
		||||
        echo "Unknown state: $state_should" >&2
 | 
			
		||||
        exit 1
 | 
			
		||||
    ;;
 | 
			
		||||
esac
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue