Respect display names of Android content URIs

* java/org/gnu/emacs/EmacsNative.java (displayNameHash): New
function.

* java/org/gnu/emacs/EmacsService.java (buildContentName): New
argument RESOLVER.  Generate names holding URI's display name if
available.  All callers changed.

* lisp/international/mule-cmds.el (set-default-coding-systems):
Fix file name coding system as utf-8-unix on Android as on Mac
OS.

* src/androidvfs.c (enum android_vnode_type): New enum
ANDROID_VNODE_CONTENT_AUTHORITY_NAMED.
(android_content_name): Register root directories for this new
type.
(displayNameHash): New function.
(android_get_content_name): New argument WITH_CHECKSUM.  If
present, treat the final two components as a pair of checksum
and display name, and verify and exclude the two.
(android_authority_name): Provide new argument as appropriate.
(android_authority_initial_name): New function.
This commit is contained in:
Po Lu
2024-03-19 12:08:17 +08:00
parent ce29ae32d0
commit f2e239c6a7
5 changed files with 231 additions and 25 deletions

View File

@@ -281,7 +281,7 @@ public final class EmacsNative
public static native int[] getSelection (short window);
/* Graphics functions used as a replacement for potentially buggy
/* Graphics functions used as replacements for potentially buggy
Android APIs. */
public static native void blitRect (Bitmap src, Bitmap dest, int x1,
@@ -289,7 +289,6 @@ public final class EmacsNative
/* Increment the generation ID of the specified BITMAP, forcing its
texture to be re-uploaded to the GPU. */
public static native void notifyPixelsChanged (Bitmap bitmap);
@@ -313,6 +312,13 @@ public final class EmacsNative
in the process. */
public static native boolean ftruncate (int fd);
/* Functions that assist in generating content file names. */
/* Calculate an 8 digit checksum for the byte array DISPLAYNAME
suitable for inclusion in a content file name. */
public static native String displayNameHash (byte[] displayName);
static
{
/* Older versions of Android cannot link correctly with shared