From 447e9a4cd5d385e8724b7f92c952d66bd35a2c34 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 18 Jun 2013 18:11:52 +0000 Subject: add option to enable auto-execute scripts, but exclude certain directories. --- source/blender/blenkernel/intern/autoexec.c | 69 +++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 source/blender/blenkernel/intern/autoexec.c (limited to 'source/blender/blenkernel/intern/autoexec.c') diff --git a/source/blender/blenkernel/intern/autoexec.c b/source/blender/blenkernel/intern/autoexec.c new file mode 100644 index 00000000000..48bebd34179 --- /dev/null +++ b/source/blender/blenkernel/intern/autoexec.c @@ -0,0 +1,69 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * 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 2 + * 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, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributor(s): Blender Foundation 2013 + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/blenkernel/intern/armature.c + * \ingroup bke + * + * Currently just checks if a blend file can be trusted to autoexec, + * may add signing here later. + */ + +#include +#include + +#include "DNA_userdef_types.h" + +#include "BLI_utildefines.h" +#include "BLI_fnmatch.h" +#include "BLI_path_util.h" + +#include "BKE_autoexec.h" /* own include */ + +/** + * \param path The path to check against. + * \return Success + */ +bool BKE_autoexec_match(const char *path) +{ + bPathCompare *path_cmp; + +#ifdef WIN32 + const int fnmatch_flags = FNM_CASEFOLD; +#else + const int fnmatch_flags = 0; +#endif + + BLI_assert((U.flag & USER_SCRIPT_AUTOEXEC_DISABLE) == 0); + + for (path_cmp = U.autoexec_paths.first; path_cmp; path_cmp = path_cmp->next) { + if ((path_cmp->flag & USER_PATHCMP_GLOB)) { + if (fnmatch(path_cmp->path, path, fnmatch_flags) == 0) { + return true; + } + } + else if (BLI_path_ncmp(path_cmp->path, path, strlen(path_cmp->path)) == 0) { + return true; + } + } + + return false; +} -- cgit v1.2.3