/*
* Copyright 2016 Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, as published
* by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranties of
* MERCHANTABILITY, SATISFACTORY QUALITY, 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 .
*
* Authors:
* Charles Kerr
*/
#include "datafiles.h"
static const gchar*
get_directory_prefix_for_type (DatafileType type)
{
switch (type)
{
case DATAFILE_TYPE_SOUND:
return "sounds";
default:
g_critical("unknown type");
return "";
}
}
static gchar*
test_directory_for_file(const char* dir, DatafileType type, const char* basename)
{
gchar* filename = g_build_filename(dir,
GETTEXT_PACKAGE,
get_directory_prefix_for_type(type),
basename,
NULL);
g_debug("looking for \"%s\" at \"%s\"", basename, filename);
if (g_file_test(filename, G_FILE_TEST_EXISTS))
return filename;
g_free(filename);
return NULL;
}
gchar*
datafile_find(DatafileType type, const char * basename)
{
gchar * filename;
const gchar * user_data_dir;
const gchar * const * system_data_dirs;
gsize i;
user_data_dir = g_get_user_data_dir();
if ((filename = test_directory_for_file(user_data_dir, type, basename)))
return filename;
system_data_dirs = g_get_system_data_dirs();
for (i=0; system_data_dirs && system_data_dirs[i]; ++i)
if ((filename = test_directory_for_file(system_data_dirs[i], type, basename)))
return filename;
return NULL;
}