Opening the magic database only when actually going to use it,
and closing it afterward. git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4884 35c25a1d-7b9e-4130-9fde-d3aeb78583b8master
parent
f9375267c7
commit
f304622af8
|
@ -5,6 +5,8 @@
|
||||||
* src/nano.c (precalc_multicolorinfo): Improve debugging messages,
|
* src/nano.c (precalc_multicolorinfo): Improve debugging messages,
|
||||||
and remove superfluous assignment (fileptr already equals endptr).
|
and remove superfluous assignment (fileptr already equals endptr).
|
||||||
* src/color.c (color_update): Move magic check to after headerline.
|
* src/color.c (color_update): Move magic check to after headerline.
|
||||||
|
* src/color.c (color_update): Open the magic database only when
|
||||||
|
actually going to use it, and close it afterward.
|
||||||
|
|
||||||
2014-05-13 Benno Schulenberg <bensberg@justemail.net>
|
2014-05-13 Benno Schulenberg <bensberg@justemail.net>
|
||||||
* src/text.c (do_linter): Make an error message somewhat clearer.
|
* src/text.c (do_linter): Make an error message somewhat clearer.
|
||||||
|
|
48
src/color.c
48
src/color.c
|
@ -158,7 +158,7 @@ void color_update(void)
|
||||||
/* Var magicstring will stay NULL if we fail to get a magic result. */
|
/* Var magicstring will stay NULL if we fail to get a magic result. */
|
||||||
#ifdef HAVE_LIBMAGIC
|
#ifdef HAVE_LIBMAGIC
|
||||||
const char *magicstring = NULL;
|
const char *magicstring = NULL;
|
||||||
magic_t cookie;
|
magic_t cookie = NULL;
|
||||||
struct stat fileinfo;
|
struct stat fileinfo;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -186,28 +186,6 @@ void color_update(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_LIBMAGIC
|
|
||||||
if (stat(openfile->filename, &fileinfo) == 0) {
|
|
||||||
cookie = magic_open(MAGIC_SYMLINK |
|
|
||||||
#ifdef DEBUG
|
|
||||||
MAGIC_DEBUG | MAGIC_CHECK |
|
|
||||||
#endif
|
|
||||||
MAGIC_ERROR);
|
|
||||||
if (cookie == NULL || magic_load(cookie, NULL) < 0)
|
|
||||||
statusbar(_("magic_load() failed: %s"), strerror(errno));
|
|
||||||
else {
|
|
||||||
magicstring = magic_file(cookie, openfile->filename);
|
|
||||||
if (magicstring == NULL) {
|
|
||||||
statusbar(_("magic_file(%s) failed: %s"),
|
|
||||||
openfile->filename, magic_error(cookie));
|
|
||||||
}
|
|
||||||
#ifdef DEBUG
|
|
||||||
fprintf(stderr, "Returned magic string is: %s\n", magicstring);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif /* HAVE_LIBMAGIC */
|
|
||||||
|
|
||||||
/* If we didn't specify a syntax override string, or if we did and
|
/* If we didn't specify a syntax override string, or if we did and
|
||||||
* there was no syntax by that name, get the syntax based on the
|
* there was no syntax by that name, get the syntax based on the
|
||||||
* file extension, then try magic, and then look in the header. */
|
* file extension, then try magic, and then look in the header. */
|
||||||
|
@ -287,6 +265,28 @@ void color_update(void)
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
fprintf(stderr, "No result from headerline either, trying libmagic...\n");
|
fprintf(stderr, "No result from headerline either, trying libmagic...\n");
|
||||||
#endif
|
#endif
|
||||||
|
if (stat(openfile->filename, &fileinfo) == 0) {
|
||||||
|
/* Open the magic database and get a diagnosis of the file. */
|
||||||
|
cookie = magic_open(MAGIC_SYMLINK |
|
||||||
|
#ifdef DEBUG
|
||||||
|
MAGIC_DEBUG | MAGIC_CHECK |
|
||||||
|
#endif
|
||||||
|
MAGIC_ERROR);
|
||||||
|
if (cookie == NULL || magic_load(cookie, NULL) < 0)
|
||||||
|
statusbar(_("magic_load() failed: %s"), strerror(errno));
|
||||||
|
else {
|
||||||
|
magicstring = magic_file(cookie, openfile->filename);
|
||||||
|
if (magicstring == NULL) {
|
||||||
|
statusbar(_("magic_file(%s) failed: %s"),
|
||||||
|
openfile->filename, magic_error(cookie));
|
||||||
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
|
fprintf(stderr, "Returned magic string is: %s\n", magicstring);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Now try and find a syntax that matches the magicstring. */
|
||||||
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
|
for (tmpsyntax = syntaxes; tmpsyntax != NULL;
|
||||||
tmpsyntax = tmpsyntax->next) {
|
tmpsyntax = tmpsyntax->next) {
|
||||||
|
|
||||||
|
@ -311,6 +311,8 @@ void color_update(void)
|
||||||
nfreeregex(&e->ext);
|
nfreeregex(&e->ext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (stat(openfile->filename, &fileinfo) == 0)
|
||||||
|
magic_close(cookie);
|
||||||
}
|
}
|
||||||
#endif /* HAVE_LIBMAGIC */
|
#endif /* HAVE_LIBMAGIC */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue