pidgin/pidgin
Clone
Summary
Browse
Changes
Graph
Add some new methods to purple tags
default
tip
45 hours ago, Gary Kramlich
b45add2a840c
Add some new methods to purple tags
* purple_tags_exists is a simplier version of purple_tags_lookup.
* purple_tags_contains makes it easier to find multiple matching tags.
Testing Done:
Ran the unit tests under valgrind and had the turtles check in on things too.
Reviewed at https://reviews.imfreedom.org/r/3143/
/*
* Purple - Internet Messaging Library
* Copyright (C) Pidgin Developers <devel@pidgin.im>
*
* Purple is the legal property of its developers, whose names are too numerous
* to list here. Please refer to the COPYRIGHT file distributed with this
* source distribution.
*
* This library 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 2 of the License, or (at your option)
* any later version.
*
* This library 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 library; if not, see <https://www.gnu.org/licenses/>.
*/
#include
"purplepath.h"
#include
"core.h"
#include
"purpleui.h"
#ifdef _WIN32
#
include
"win32/win32dep.h"
#endif
/******************************************************************************
* Globals
*****************************************************************************/
static
gchar
*
custom_user_dir
=
NULL
;
static
gchar
*
user_dir
=
NULL
;
static
gchar
*
cache_dir
=
NULL
;
static
gchar
*
config_dir
=
NULL
;
static
gchar
*
data_dir
=
NULL
;
/******************************************************************************
* Helpers
*****************************************************************************/
static
const
gchar
*
purple_xdg_dir
(
gchar
**
xdg_dir
,
const
gchar
*
xdg_base_dir
,
const
gchar
*
xdg_type
)
{
if
(
!*
xdg_dir
)
{
if
(
!
custom_user_dir
)
{
PurpleUi
*
ui
=
purple_core_get_ui
();
const
gchar
*
id
=
NULL
;
id
=
purple_ui_get_id
(
ui
);
if
(
id
==
NULL
)
{
id
=
"purple"
;
}
*
xdg_dir
=
g_build_filename
(
xdg_base_dir
,
id
,
NULL
);
}
else
{
*
xdg_dir
=
g_build_filename
(
custom_user_dir
,
xdg_type
,
NULL
);
}
}
return
*
xdg_dir
;
}
/******************************************************************************
* Public API
*****************************************************************************/
const
gchar
*
purple_cache_dir
(
void
)
{
return
purple_xdg_dir
(
&
cache_dir
,
g_get_user_cache_dir
(),
"cache"
);
}
const
gchar
*
purple_config_dir
(
void
)
{
return
purple_xdg_dir
(
&
config_dir
,
g_get_user_config_dir
(),
"config"
);
}
const
gchar
*
purple_data_dir
(
void
)
{
return
purple_xdg_dir
(
&
data_dir
,
g_get_user_data_dir
(),
"data"
);
}
void
purple_util_set_user_dir
(
const
gchar
*
dir
)
{
g_free
(
custom_user_dir
);
custom_user_dir
=
g_strdup
(
dir
);
g_clear_pointer
(
&
user_dir
,
g_free
);
g_clear_pointer
(
&
cache_dir
,
g_free
);
g_clear_pointer
(
&
config_dir
,
g_free
);
g_clear_pointer
(
&
data_dir
,
g_free
);
}