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
 | 
					#!/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)
 | 
					# 2013 Steven Armstrong (steven-cdist armstrong.cc)
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This file is part of cdist.
 | 
					# This file is part of cdist.
 | 
				
			||||||
| 
						 | 
					@ -26,20 +26,20 @@ stat_file="$__object/explorer/stat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
get_current_value() {
 | 
					get_current_value() {
 | 
				
			||||||
   if [ -s "$stat_file" ]; then
 | 
					    if [ -s "$stat_file" ]; then
 | 
				
			||||||
      _name="$1"
 | 
					        _name="$1"
 | 
				
			||||||
      _value="$2"
 | 
					        _value="$2"
 | 
				
			||||||
      case "$_value" in
 | 
					        case "$_value" in
 | 
				
			||||||
         [0-9]*)
 | 
					            [0-9]*)
 | 
				
			||||||
            _index=2
 | 
					                _index=2
 | 
				
			||||||
         ;;
 | 
					            ;;
 | 
				
			||||||
         *)
 | 
					            *)
 | 
				
			||||||
            _index=3
 | 
					                _index=3
 | 
				
			||||||
         ;;
 | 
					            ;;
 | 
				
			||||||
      esac
 | 
					        esac
 | 
				
			||||||
      awk '/'"$_name"':/ { print $'$_index' }' "$stat_file"
 | 
					        awk '/'"$_name"':/ { print $'$_index' }' "$stat_file"
 | 
				
			||||||
      unset _name _value _index
 | 
					        unset _name _value _index
 | 
				
			||||||
   fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set_group() {
 | 
					set_group() {
 | 
				
			||||||
| 
						 | 
					@ -59,29 +59,36 @@ set_mode() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set_attributes=
 | 
					set_attributes=
 | 
				
			||||||
case "$state_should" in
 | 
					case "$state_should" in
 | 
				
			||||||
   present|exists)
 | 
					    present|exists)
 | 
				
			||||||
      # Note: Mode - needs to happen last as a chown/chgrp can alter mode by
 | 
					    # Note: Mode - needs to happen last as a chown/chgrp can alter mode by
 | 
				
			||||||
      #  clearing S_ISUID and S_ISGID bits (see chown(2))
 | 
					    #  clearing S_ISUID and S_ISGID bits (see chown(2))
 | 
				
			||||||
      for attribute in group owner mode; do
 | 
					    for attribute in group owner mode; do
 | 
				
			||||||
         if [ -f "$__object/parameter/$attribute" ]; then
 | 
					        if [ -f "$__object/parameter/$attribute" ]; then
 | 
				
			||||||
            value_should="$(cat "$__object/parameter/$attribute")"
 | 
					            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")"
 | 
					            value_is="$(get_current_value "$attribute" "$value_should")"
 | 
				
			||||||
            if [ -f "$__object/files/set-attributes" -o "$value_should" != "$value_is" ]; then
 | 
					            if [ -f "$__object/files/set-attributes" -o "$value_should" != "$value_is" ]; then
 | 
				
			||||||
               "set_$attribute" "$value_should"
 | 
					                "set_$attribute" "$value_should"
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
         fi
 | 
					        fi
 | 
				
			||||||
      done
 | 
					    done
 | 
				
			||||||
   ;;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
   absent)
 | 
					    ;;
 | 
				
			||||||
      if [ "$type" = "file" ]; then
 | 
					 | 
				
			||||||
         echo rm -f \"$destination\"
 | 
					 | 
				
			||||||
         echo remove >> "$__messages_out"
 | 
					 | 
				
			||||||
      fi
 | 
					 | 
				
			||||||
   ;;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
   *)
 | 
					    absent)
 | 
				
			||||||
      echo "Unknown state: $state_should" >&2
 | 
					        if [ "$type" = "file" ]; then
 | 
				
			||||||
      exit 1
 | 
					            echo rm -f \"$destination\"
 | 
				
			||||||
   ;;
 | 
					            echo remove >> "$__messages_out"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					        echo "Unknown state: $state_should" >&2
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
esac
 | 
					esac
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue