-c_tags="$_DATA/.index/tags.cache"; c_tagcategories="$_DATA/.index/tagcategories.cache"
-if [ ! -s "$c_tags" -o ! -s "$c_tagcategories" ] \
- || [ "$(find "$_DATA/" -path '*/.index/meta' -newer "$c_tags")" ]
- then
- w_tags="$(
- list_meta |sed -E '
- s;^.*\ttags=([^\t]*)\t.*$;\1;;
- s;,;\n;g;
- ' \
- | sort |uniq -c |sort -rn |sed -E 's;^ *[0-9]+ ;;;' \
- | UNSTRING | HTML \
- | sed -E 's;
\;;\n;g; s;\n+;\n;g;'
- )"
- w_tagcategories="$(printf %s "$w_tags" | sed -rn '/:/s;^-?([^:]+):.*$;\1;p' |sort -u )"
- printf %s "$w_tags" >"$c_tags"
- printf %s "$w_tagcategories" >"$c_tagcategories"
-else
- w_tags="$(cat "$c_tags")"
- w_tagcategories="$(cat "$c_tagcategories")"
+taglist(){
+ list_meta |sed -E '
+ s;^.*\ttags=([^\t]*)\t.*$;\1;;
+ s;,;\n;g;
+ ' \
+ | sort |uniq -c |sort -rn |sed -E 's;^ *[0-9]+ ;;;' \
+ | UNSTRING | HTML \
+ | sed -E 's;
\;;\n;g; s;\n+;\n;g;'
+}
+
+tclist(){
+ printf %s "$*" \
+ | sed -rn '/:/s;^-?([^:]+):.*$;\1;p' \
+ |sort -u
+}
+
+c_tags="$_DATA/.index/tags.cache";
+if [ ! -s "$c_tags" ]; then
+ taglist >"$c_tags.$$"
+ mv "$c_tags.$$" "$c_tags"