diff --git a/cdist/conf/type/__file_py/__init__.py b/cdist/conf/type/__file/__init__.py
similarity index 100%
rename from cdist/conf/type/__file_py/__init__.py
rename to cdist/conf/type/__file/__init__.py
diff --git a/cdist/conf/type/__file/explorer/stat b/cdist/conf/type/__file/explorer/stat
index 91c8cc84..c772abcf 100755
--- a/cdist/conf/type/__file/explorer/stat
+++ b/cdist/conf/type/__file/explorer/stat
@@ -52,7 +52,6 @@ fallback() {
# nothing to work with, nothing we could do
[ -e "$destination" ] || exit 0
-
if ! command -v stat >/dev/null
then
fallback
@@ -69,39 +68,7 @@ group: %Dg %Sg
mode: %Lp %Sp
size: %Dz
links: %Dl
-" "$destination" | awk '/^type/ { print tolower($0); next } { print }'
- ;;
- solaris)
- ls1="$( ls -ld "$destination" )"
- ls2="$( ls -ldn "$destination" )"
-
- if [ -f "$__object/parameter/mode" ]
- then mode_should="$( cat "$__object/parameter/mode" )"
- fi
-
- # yes, it is ugly hack, but if you know better way...
- if [ -z "$( find "$destination" -perm "$mode_should" )" ]
- then octets=888
- else octets="$( echo "$mode_should" | sed 's/^0//' )"
- fi
-
- case "$( echo "$ls1" | cut -c1-1 )" in
- -) echo 'type: regular file' ;;
- d) echo 'type: directory' ;;
- esac
-
- echo "owner: $( echo "$ls2" \
- | awk '{print $3}' ) $( echo "$ls1" \
- | awk '{print $3}' )"
-
- echo "group: $( echo "$ls2" \
- | awk '{print $4}' ) $( echo "$ls1" \
- | awk '{print $4}' )"
-
- echo "mode: $octets $( echo "$ls1" | awk '{print $1}' )"
- echo "size: $( echo "$ls1" | awk '{print $5}' )"
- echo "links: $( echo "$ls1" | awk '{print $2}' )"
- ;;
+ ;;
*)
# NOTE: Do not use --printf here as it is not supported by BusyBox stat.
# NOTE: BusyBox's stat might not support the "-c" option, in which case
diff --git a/cdist/conf/type/__file/parameter/optional b/cdist/conf/type/__file/parameter/optional
index 9b98352c..c696d592 100644
--- a/cdist/conf/type/__file/parameter/optional
+++ b/cdist/conf/type/__file/parameter/optional
@@ -3,4 +3,3 @@ group
mode
owner
source
-onchange
diff --git a/cdist/conf/type/__file_py/explorer/cksum b/cdist/conf/type/__file_old/explorer/cksum
similarity index 100%
rename from cdist/conf/type/__file_py/explorer/cksum
rename to cdist/conf/type/__file_old/explorer/cksum
diff --git a/cdist/conf/type/__file_old/explorer/stat b/cdist/conf/type/__file_old/explorer/stat
new file mode 100755
index 00000000..13c1c208
--- /dev/null
+++ b/cdist/conf/type/__file_old/explorer/stat
@@ -0,0 +1,88 @@
+#!/bin/sh
+#
+# 2013 Steven Armstrong (steven-cdist armstrong.cc)
+# 2019 Nico Schottelius (nico-cdist at schottelius.org)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+#
+
+destination="/$__object_id"
+
+# nothing to work with, nothing we could do
+[ -e "$destination" ] || exit 0
+
+os=$("$__explorer/os")
+case "$os" in
+ "freebsd"|"netbsd"|"openbsd"|"macosx")
+ stat -f "type: %HT
+owner: %Du %Su
+group: %Dg %Sg
+mode: %Lp %Sp
+size: %Dz
+links: %Dl
+" "$destination" | awk '/^type/ { print tolower($0); next; } { print; }'
+ ;;
+ alpine)
+ # busybox stat
+ stat -c "type: %F
+owner: %u %U
+group: %g %G
+mode: %a %A
+size: %s
+links: %h
+" "$destination"
+ ;;
+ solaris)
+ ls1="$( ls -ld "$destination" )"
+ ls2="$( ls -ldn "$destination" )"
+
+ if [ -f "$__object/parameter/mode" ]
+ then mode_should="$( cat "$__object/parameter/mode" )"
+ fi
+
+ # yes, it is ugly hack, but if you know better way...
+ if [ -z "$( find "$destination" -perm "$mode_should" )" ]
+ then octets=888
+ else octets="$( echo "$mode_should" | sed 's/^0//' )"
+ fi
+
+ case "$( echo "$ls1" | cut -c1-1 )" in
+ -) echo 'type: regular file' ;;
+ d) echo 'type: directory' ;;
+ esac
+
+ echo "owner: $( echo "$ls2" \
+ | awk '{print $3}' ) $( echo "$ls1" \
+ | awk '{print $3}' )"
+
+ echo "group: $( echo "$ls2" \
+ | awk '{print $4}' ) $( echo "$ls1" \
+ | awk '{print $4}' )"
+
+ echo "mode: $octets $( echo "$ls1" | awk '{print $1}' )"
+ echo "size: $( echo "$ls1" | awk '{print $5}' )"
+ echo "links: $( echo "$ls1" | awk '{print $2}' )"
+ ;;
+ *)
+ stat --printf="type: %F
+owner: %u %U
+group: %g %G
+mode: %a %A
+size: %s
+links: %h
+" "$destination"
+ ;;
+esac
diff --git a/cdist/conf/type/__file_py/explorer/type b/cdist/conf/type/__file_old/explorer/type
similarity index 100%
rename from cdist/conf/type/__file_py/explorer/type
rename to cdist/conf/type/__file_old/explorer/type
diff --git a/cdist/conf/type/__file/gencode-local b/cdist/conf/type/__file_old/gencode-local
similarity index 100%
rename from cdist/conf/type/__file/gencode-local
rename to cdist/conf/type/__file_old/gencode-local
diff --git a/cdist/conf/type/__file/gencode-remote b/cdist/conf/type/__file_old/gencode-remote
similarity index 100%
rename from cdist/conf/type/__file/gencode-remote
rename to cdist/conf/type/__file_old/gencode-remote
diff --git a/cdist/conf/type/__file/man.rst b/cdist/conf/type/__file_old/man.rst
similarity index 100%
rename from cdist/conf/type/__file/man.rst
rename to cdist/conf/type/__file_old/man.rst
diff --git a/cdist/conf/type/__file_py/parameter/default/state b/cdist/conf/type/__file_old/parameter/default/state
similarity index 100%
rename from cdist/conf/type/__file_py/parameter/default/state
rename to cdist/conf/type/__file_old/parameter/default/state
diff --git a/cdist/conf/type/__file_py/parameter/optional b/cdist/conf/type/__file_old/parameter/optional
similarity index 76%
rename from cdist/conf/type/__file_py/parameter/optional
rename to cdist/conf/type/__file_old/parameter/optional
index c696d592..9b98352c 100644
--- a/cdist/conf/type/__file_py/parameter/optional
+++ b/cdist/conf/type/__file_old/parameter/optional
@@ -3,3 +3,4 @@ group
mode
owner
source
+onchange
diff --git a/cdist/conf/type/__file_py/explorer/stat b/cdist/conf/type/__file_py/explorer/stat
deleted file mode 100755
index 8a917556..00000000
--- a/cdist/conf/type/__file_py/explorer/stat
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/sh
-#
-# 2013 Steven Armstrong (steven-cdist armstrong.cc)
-#
-# This file is part of cdist.
-#
-# cdist is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# cdist is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with cdist. If not, see .
-#
-
-destination="/$__object_id"
-
-# nothing to work with, nothing we could do
-[ -e "$destination" ] || exit 0
-
-os=$("$__explorer/os")
-case "$os" in
- "freebsd"|"netbsd"|"openbsd")
- # FIXME: should be something like this based on man page, but can not test
- stat -f "type: %ST
-owner: %Du %Su
-group: %Dg %Sg
-mode: %Op %Sp
-size: %Dz
-links: %Dl
-" "$destination"
- ;;
- "macosx")
- stat -f "type: %HT
-owner: %Du %Su
-group: %Dg %Sg
-mode: %Lp %Sp
-size: %Dz
-links: %Dl
-" "$destination"
- ;;
- *)
- stat --printf="type: %F
-owner: %u %U
-group: %g %G
-mode: %a %A
-size: %s
-links: %h
-" "$destination"
- ;;
-esac