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