+ protected size_t list_dir(string dir, ref List<string> res)
+ {
+ size_t count = 0;
+ var d = File.new_for_path(dir);
+ var enumerator = d.enumerate_children(FILE_ATTRIBUTE_STANDARD_NAME, 0, null);
+ FileInfo file_info;
+ while ((file_info = enumerator.next_file(null)) != null)
+ {
+ if (!file_info.get_name().has_suffix(".gpx")) continue;
+ res.append(file_info.get_name());
+ ++count;
+ }
+ return count;
+ }
+
+ public string[] list_entries(bool only_unacked=true)
+ {
+ size_t count = 0;
+ List<string> entries = new List<string>();
+ if (!only_unacked)
+ count += list_dir(config.homedir + "/archive", ref entries);
+ count += list_dir(config.homedir + "/log", ref entries);
+ string[] res = new string[count+1];
+ size_t cur = 0;
+ for (weak List<string> i = entries; i != null; i = i.next)
+ res[cur++] = i.data;
+ res[cur] = null;
+ return res;
+ }
+