From 35ef3f73d5993d475d5dad8c12a89dba1259b448 Mon Sep 17 00:00:00 2001
From: P. J. McDermott <pjm@nac.net>
Date: Tue, 26 Nov 2013 16:28:25 -0500
Subject: lib/feed.sh: New file.

---
diff --git a/lib/feed.sh b/lib/feed.sh
new file mode 100644
index 0000000..7b8d639
--- /dev/null
+++ b/lib/feed.sh
@@ -0,0 +1,90 @@
+# ProteanOS Development Kit
+# lib/feed.sh
+# Functions for handling feed index files
+#
+# Copyright (C) 2013  Patrick "P. J." McDermott
+#
+# This program 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.
+#
+# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+[ "x${_FEED_SM+set}" = 'xset' ] && return 0
+_FEED_SM=1
+
+use fd
+
+feed_download()
+{
+	local feed_index="${1}"
+
+	wget -O - "${feed_index}"
+
+	return 0
+}
+
+feed_find_pkgs()
+{
+	local deps_file="${1}"
+	local line=
+	local deps_fd=
+	local pkg=
+	local deps=
+	local all_deps=
+	local dep=
+	local pkgs=
+	local new_deps=
+
+	fopen "${1}" 'w'
+	deps_fd=${FD}
+
+	pkg=''
+	all_deps=''
+	IFS=''
+	while read -r line; do
+		unset IFS
+		if [ "x${line}" != 'x' ]; then
+			case "${line}" in
+				'Package:'*)
+					pkg="${line#Package:}"
+					pkg="${pkg## }"
+					;;
+				*'Depends:'*)
+					deps="${line#*Depends:}"
+					deps="${deps## }"
+					all_deps="${all_deps}${deps}, "
+					;;
+			esac
+		else
+			if profile_include_pkg "${pkg}"; then
+				pkgs="${pkgs} ${pkg}"
+			fi
+			new_deps=''
+			IFS=", ${HT}${LF}"
+			for dep in ${all_deps}; do
+				unset IFS
+				# Trim off " |.*$" and " (.*$" (versions and
+				# disjunctions).
+				dep="$(printf '%s ' ${dep} | cut -d ' ' -f 1)"
+				new_deps="${new_deps} ${dep}"
+			done
+			unset IFS
+			printf '%s%s\n' "${pkg}" "${new_deps}" >&${deps_fd}
+			pkg=''
+			all_deps=''
+		fi
+	done
+	unset IFS
+
+	fclose ${deps_fd}
+
+	return 0
+}
--
cgit v0.9.1