Split collect-memstat.sh into sysstat sar and System-V sar versions
diff --git a/collect-memstat.sh b/collect-memstat.sh
index 6da393c..03b1e90 100644
--- a/collect-memstat.sh
+++ b/collect-memstat.sh
@@ -40,15 +40,15 @@
 [ -n "$INTERFACE" ] && set_hostname_from_interface "$INTERFACE"
 [ -z "$HOSTNAME" ] && HOSTNAME="`hostname`"
 
-export LC_TIME=C
-sar -r "$INTERVAL" | sed -ur -e "/^[0-9]{2}:[0-9]{2}:[0-9]{2}/!d" -e "s/[0-9]{2}:[0-9]{2}:[0-9]{2}.{4}//" | while read -r line; do
-	set -- $line
-	if [ $# != 10 ]; then
-		echo "data error: # $# != 10" 1>&2
-		continue
-	fi
-	[ "$1" = kbmemfree ] && continue
-	#echo $7
-	http_post "${INFLUXDB_BASE_URL}write?db=$INFLUXDB_DB_NAME" \
-		"memstat,host=$HOSTNAME kbmemfree=$1,kbmemused=$2,memused_p=$3,kbbuffers=$4,kbcached=$5,kbcommit=$6,commit_p=$7,kbactive=$8,kbinact=$9,kbdirty=${10}"
-done
+if [ -x "`which sar.sysstat`" ]; then
+	SAR=sar.sysstat
+	. "$PROGRAM_DIR/collect-memstat.sysstat-sar.sh"
+elif [ -x "`which sar`" ] && [ -f /proc/cpuinfo ] && [ -f /proc/loadavg ] && [ -f /proc/meminfo ] && [ -f /proc/stat ] && [ -f /proc/vmstat ] && [ -f /proc/uptime ] && [ -f /proc/net/dev ]; then
+	# Assume sysstat sar if a Linux procfs or compatible implementation is found
+	SAR=sar
+	. "$PROGRAM_DIR/collect-memstat.sysstat-sar.sh"
+else case "`uname -sr`" in
+	"SunOS 5."*)
+		. "$PROGRAM_DIR/collect-memstat.sysv-sar.sh"
+		;;
+esac fi
diff --git a/collect-memstat.sysstat-sar.sh b/collect-memstat.sysstat-sar.sh
new file mode 100644
index 0000000..1ca6075
--- /dev/null
+++ b/collect-memstat.sysstat-sar.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# Copyright 2015-2019 Rivoreo
+
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
+# FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+if [ -z "${PROGRAM_DIR+set}" ]; then
+	echo "You should not run this script directly" 1>&2
+	exit 255
+fi
+[ -z "$SAR" ] && SAR=sar
+export LC_TIME=C
+$SAR -r "$INTERVAL" | sed -ur -e "/^[0-9]{2}:[0-9]{2}:[0-9]{2}/!d" -e "s/[0-9]{2}:[0-9]{2}:[0-9]{2}.{4}//" | while read -r line; do
+	set -- $line
+	if [ $# != 10 ]; then
+		echo "data error: # $# != 10" 1>&2
+		continue
+	fi
+	[ "$1" = kbmemfree ] && continue
+	#echo $7
+	http_post "${INFLUXDB_BASE_URL}write?db=$INFLUXDB_DB_NAME" \
+		"memstat,host=$HOSTNAME kbmemfree=$1,kbmemused=$2,memused_p=$3,kbbuffers=$4,kbcached=$5,kbcommit=$6,commit_p=$7,kbactive=$8,kbinact=$9,kbdirty=${10}"
+done
diff --git a/collect-memstat.sysv-sar.sh b/collect-memstat.sysv-sar.sh
new file mode 100644
index 0000000..5038a4d
--- /dev/null
+++ b/collect-memstat.sysv-sar.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+# Copyright 2015-2019 Rivoreo
+
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE
+# FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
+# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+if [ -z "${PROGRAM_DIR+set}" ]; then
+	echo "You should not run this script directly" 1>&2
+	exit 255
+fi
+page_size="`pagesize`" || page_size=4096
+count=2147483646
+export LC_TIME=C
+while sar -r "$INTERVAL" $count; do sleep 0; done | sed -ur -e "/^[0-9]{2}:[0-9]{2}:[0-9]{2}/!d" -e "s/[0-9]{2}:[0-9]{2}:[0-9]{2} //" | while read -r line; do
+	set -- $line
+	if [ $# != 2 ]; then
+		echo "data error: # $# != 2" 1>&2
+		continue
+	fi
+	[ "$1" = freemem ] && continue
+	#echo $7
+	http_post "${INFLUXDB_BASE_URL}write?db=$INFLUXDB_DB_NAME" \
+		"memstat,host=$HOSTNAME freepages=$1,kbmemfree=$(($1*page_size/1024))"
+done