You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2014/02/28 12:01:08 UTC
svn commit: r1572916 - in /subversion/trunk/subversion:
include/private/svn_magic.h include/svn_config.h libsvn_client/add.c
libsvn_client/import.c libsvn_subr/config_file.c libsvn_subr/magic.c
Author: philip
Date: Fri Feb 28 11:01:08 2014
New Revision: 1572916
URL: http://svn.apache.org/r1572916
Log:
Provide config:miscellany:enable-magic-file to control the use of
libmagic. There are environment variables that do this already but
they are not specific to Subversion and affect other applications.
* subversion/include/svn_config.h
(SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE): New.
* subversion/include/private/svn_magic.h
(svn_magic__init): Add config parameter.
* subversion/libsvn_subr/config_file.c
(svn_config_ensure): Document new setting.
* subversion/libsvn_subr/magic.c
(svn_magic__init): Check for enable-magic-file=no.
* subversion/libsvn_client/add.c
(add): Pass config to svn_magic__init.
* subversion/libsvn_client/import.c
(import): Pass config to svn_magic__init.
Modified:
subversion/trunk/subversion/include/private/svn_magic.h
subversion/trunk/subversion/include/svn_config.h
subversion/trunk/subversion/libsvn_client/add.c
subversion/trunk/subversion/libsvn_client/import.c
subversion/trunk/subversion/libsvn_subr/config_file.c
subversion/trunk/subversion/libsvn_subr/magic.c
Modified: subversion/trunk/subversion/include/private/svn_magic.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_magic.h?rev=1572916&r1=1572915&r2=1572916&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_magic.h (original)
+++ subversion/trunk/subversion/include/private/svn_magic.h Fri Feb 28 11:01:08 2014
@@ -30,7 +30,8 @@
/* An opaque struct that wraps a libmagic cookie. */
typedef struct svn_magic__cookie_t svn_magic__cookie_t;
-/* This routine initialises libmagic.
+/* This routine initialises libmagic. CONFIG is a config hash and
+ * may be NULL.
* Upon success a new *MAGIC_COOKIE is allocated in RESULT_POOL.
* On failure *MAGIC_COOKIE is set to NULL.
* All resources used by libmagic are freed by a cleanup handler
@@ -38,6 +39,7 @@ typedef struct svn_magic__cookie_t svn_m
* the pool is cleared! */
void
svn_magic__init(svn_magic__cookie_t **magic_cookie,
+ apr_hash_t *config,
apr_pool_t *result_pool);
/* Detect the mime-type of the file at LOCAL_ABSPATH using MAGIC_COOKIE.
Modified: subversion/trunk/subversion/include/svn_config.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_config.h?rev=1572916&r1=1572915&r2=1572916&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_config.h (original)
+++ subversion/trunk/subversion/include/svn_config.h Fri Feb 28 11:01:08 2014
@@ -131,6 +131,8 @@ typedef struct svn_config_t svn_config_t
/** @deprecated Not used by Subversion since 2003/r847039 (well before 1.0) */
#define SVN_CONFIG_OPTION_TEMPLATE_ROOT "template-root"
#define SVN_CONFIG_OPTION_ENABLE_AUTO_PROPS "enable-auto-props"
+/** @since New in 1.9. */
+#define SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE "enable-magic-file"
#define SVN_CONFIG_OPTION_NO_UNLOCK "no-unlock"
#define SVN_CONFIG_OPTION_MIMETYPES_FILE "mime-types-file"
#define SVN_CONFIG_OPTION_PRESERVED_CF_EXTS "preserved-conflict-file-exts"
Modified: subversion/trunk/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/add.c?rev=1572916&r1=1572915&r2=1572916&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/add.c (original)
+++ subversion/trunk/subversion/libsvn_client/add.c Fri Feb 28 11:01:08 2014
@@ -840,7 +840,7 @@ add(const char *local_abspath,
svn_magic__cookie_t *magic_cookie;
apr_array_header_t *ignores = NULL;
- svn_magic__init(&magic_cookie, scratch_pool);
+ svn_magic__init(&magic_cookie, ctx->config, scratch_pool);
if (existing_parent_abspath)
{
Modified: subversion/trunk/subversion/libsvn_client/import.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/import.c?rev=1572916&r1=1572915&r2=1572916&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/import.c (original)
+++ subversion/trunk/subversion/libsvn_client/import.c Fri Feb 28 11:01:08 2014
@@ -664,7 +664,7 @@ import(const char *local_abspath,
const svn_io_dirent2_t *dirent;
import_ctx->autoprops = autoprops;
- svn_magic__init(&import_ctx->magic_cookie, pool);
+ svn_magic__init(&import_ctx->magic_cookie, ctx->config, pool);
/* Get a root dir baton. We pass the revnum we used for testing our
assumptions and obtaining inherited properties. */
Modified: subversion/trunk/subversion/libsvn_subr/config_file.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/config_file.c?rev=1572916&r1=1572915&r2=1572916&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/config_file.c (original)
+++ subversion/trunk/subversion/libsvn_subr/config_file.c Fri Feb 28 11:01:08 2014
@@ -1278,6 +1278,12 @@ svn_config_ensure(const char *config_dir
"### for 'svn add' and 'svn import', it defaults to 'no'." NL
"### Automatic properties are defined in the section 'auto-props'." NL
"# enable-auto-props = yes" NL
+#ifdef SVN_HAVE_LIBMAGIC
+ "### Set enable-magic-file to 'no' to disable magic file detection" NL
+ "### of the file type when automatically setting svn:mime-type. It" NL
+ "### defaults to 'yes' if magic file support is possible." NL
+ "# enable-magic-file = yes" NL
+#endif
"### Set interactive-conflicts to 'no' to disable interactive" NL
"### conflict resolution prompting. It defaults to 'yes'." NL
"# interactive-conflicts = no" NL
Modified: subversion/trunk/subversion/libsvn_subr/magic.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/magic.c?rev=1572916&r1=1572915&r2=1572916&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/magic.c (original)
+++ subversion/trunk/subversion/libsvn_subr/magic.c Fri Feb 28 11:01:08 2014
@@ -33,6 +33,8 @@
#include "svn_types.h"
#include "svn_pools.h"
#include "svn_error.h"
+#include "svn_config.h"
+#include "svn_hash.h"
#include "svn_private_config.h"
@@ -63,12 +65,28 @@ close_magic_cookie(void *baton)
void
svn_magic__init(svn_magic__cookie_t **magic_cookie,
+ apr_hash_t *config,
apr_pool_t *result_pool)
{
-
svn_magic__cookie_t *mc = NULL;
#ifdef SVN_HAVE_LIBMAGIC
+ if (config)
+ {
+ svn_boolean_t enable;
+ svn_config_t *cfg = svn_hash_gets(config, SVN_CONFIG_CATEGORY_CONFIG);
+
+ SVN_ERR(svn_config_get_bool(cfg, &enable,
+ SVN_CONFIG_SECTION_MISCELLANY,
+ SVN_CONFIG_OPTION_ENABLE_MAGIC_FILE,
+ TRUE));
+ if (!enable)
+ {
+ *magic_cookie = NULL;
+ return;
+ }
+ }
+
mc = apr_palloc(result_pool, sizeof(*mc));
/* Initialise libmagic. */