1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-27 07:37:33 +00:00

Simplify last change (bug#60311)

* src/json.c (json_available_p): Use original code.  Always return
true for !WINDOWSNT.
(ensure_json_available): Now defined only on WINDOWSNT.
(Fjson_serialize, Fjson_insert, Fjson_parse_string)
(Fjson_parse_buffer): Call ensure_json_available only on
WINDOWSNT.

* lisp/subr.el (json-available-p): Simplify.
This commit is contained in:
Eli Zaretskii 2022-12-26 15:26:48 +02:00
parent 082fc6e308
commit 26b2ec7cb8
2 changed files with 28 additions and 19 deletions

View File

@ -6911,11 +6911,8 @@ sentence (see Info node `(elisp) Documentation Tips')."
(defun json-available-p ()
"Return non-nil if Emacs has libjansson support."
(declare (side-effect-free error-free))
(and (eval-when-compile (fboundp 'json-serialize))
;; If `json--available-p' is present, we need to call it at run-time.
(or (not (eval-when-compile (fboundp 'json--available-p)))
(json--available-p))))
(and (fboundp 'json--available-p)
(json--available-p)))
(defun ensure-list (object)
"Return OBJECT as a list.

View File

@ -555,37 +555,39 @@ json_parse_args (ptrdiff_t nargs,
}
}
#ifdef WINDOWSNT
static bool
json_available_p (void)
{
if (json_initialized)
return true;
json_initialized = init_json_functions ();
Lisp_Object status = json_initialized ? Qt : Qnil;
Vlibrary_cache = Fcons (Fcons (Qjson, status), Vlibrary_cache);
#ifdef WINDOWSNT
if (!json_initialized)
{
Lisp_Object status;
json_initialized = init_json_functions ();
status = json_initialized ? Qt : Qnil;
Vlibrary_cache = Fcons (Fcons (Qjson, status), Vlibrary_cache);
}
return json_initialized;
}
#else /* !WINDOWSNT */
return true;
#endif
}
#ifdef WINDOWSNT
static void
ensure_json_available (void)
{
#ifdef WINDOWSNT
if (!json_available_p ())
Fsignal (Qjson_unavailable,
list1 (build_unibyte_string ("jansson library not found")));
#endif
}
#endif
#ifdef WINDOWSNT
DEFUN ("json--available-p", Fjson__available_p, Sjson__available_p, 0, 0, NULL,
doc: /* Whether libjansson is available (internal). */)
doc: /* Return non-nil if libjansson is available (internal use only). */)
(void)
{
return json_available_p () ? Qt : Qnil;
}
#endif
DEFUN ("json-serialize", Fjson_serialize, Sjson_serialize, 1, MANY,
NULL,
@ -617,7 +619,10 @@ usage: (json-serialize OBJECT &rest ARGS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
specpdl_ref count = SPECPDL_INDEX ();
#ifdef WINDOWSNT
ensure_json_available ();
#endif
struct json_configuration conf =
{json_object_hashtable, json_array_array, QCnull, QCfalse};
@ -714,7 +719,10 @@ usage: (json-insert OBJECT &rest ARGS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
specpdl_ref count = SPECPDL_INDEX ();
#ifdef WINDOWSNT
ensure_json_available ();
#endif
struct json_configuration conf =
{json_object_hashtable, json_array_array, QCnull, QCfalse};
@ -959,7 +967,10 @@ usage: (json-parse-string STRING &rest ARGS) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
specpdl_ref count = SPECPDL_INDEX ();
#ifdef WINDOWSNT
ensure_json_available ();
#endif
Lisp_Object string = args[0];
CHECK_STRING (string);
@ -1044,7 +1055,10 @@ usage: (json-parse-buffer &rest args) */)
(ptrdiff_t nargs, Lisp_Object *args)
{
specpdl_ref count = SPECPDL_INDEX ();
#ifdef WINDOWSNT
ensure_json_available ();
#endif
struct json_configuration conf =
{json_object_hashtable, json_array_array, QCnull, QCfalse};
@ -1121,9 +1135,7 @@ syms_of_json (void)
DEFSYM (Qplist, "plist");
DEFSYM (Qarray, "array");
#ifdef WINDOWSNT
defsubr (&Sjson__available_p);
#endif
defsubr (&Sjson_serialize);
defsubr (&Sjson_insert);
defsubr (&Sjson_parse_string);