summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-02-25 20:11:48 +0800
committerPo Lu <luangruo@yahoo.com>2023-02-25 20:11:48 +0800
commitdf29bb71fc47b5e24fa971b668e4fa09dd6d244d (patch)
tree78672c8e9f3b3db96f59a2bf6f81107d9eadb4af /src
parent8e4c5db193dc7baee5846520fe8b63d8bea99148 (diff)
Update Android port
* java/org/gnu/emacs/EmacsNoninteractive.java (main): Port to Android 2.2. * src/android-asset.h (AAsset_openFileDescriptor): Delete stub function. * src/android.c (android_check_compressed_file): Delete function. (android_open): Stop trying to find compressed files or to use the system provided file descriptor. Explain why.
Diffstat (limited to 'src')
-rw-r--r--src/android-asset.h9
-rw-r--r--src/android.c65
2 files changed, 11 insertions, 63 deletions
diff --git a/src/android-asset.h b/src/android-asset.h
index b0e83bbf424..3b2f8105865 100644
--- a/src/android-asset.h
+++ b/src/android-asset.h
@@ -365,15 +365,6 @@ android_asset_read_internal (AAsset *asset, int nbytes, char *buffer)
return total;
}
-static int
-AAsset_openFileDescriptor (AAsset *asset, off_t *out_start,
- off_t *out_end)
-{
- *out_start = 0;
- *out_end = 0;
- return -1;
-}
-
static long
AAsset_getLength (AAsset *asset)
{
diff --git a/src/android.c b/src/android.c
index 72c50c0a13c..40d6234d508 100644
--- a/src/android.c
+++ b/src/android.c
@@ -1376,42 +1376,6 @@ android_hack_asset_fd (AAsset *asset)
#endif
}
-/* Read two bytes from FD and see if they are ``PK'', denoting ZIP
- archive compressed data. If FD is -1, return -1.
-
- If they are not, rewind the file descriptor to offset 0.
-
- If either operation fails, return -1 and close FD. Else, value is
- FD. */
-
-static int
-android_check_compressed_file (int fd)
-{
- char bytes[2];
-
- if (fd == -1)
- return -1;
-
- if (read (fd, bytes, 2) != 2)
- goto lseek_back;
-
- if (bytes[0] != 'P' || bytes[1] != 'K')
- goto lseek_back;
-
- /* This could be compressed data! */
- return -1;
-
- lseek_back:
- /* Seek back to offset 0. If this fails, return -1. */
- if (lseek (fd, 0, SEEK_SET) != 0)
- {
- close (fd);
- return -1;
- }
-
- return fd;
-}
-
/* Make FD close-on-exec. If any system call fails, do not abort, but
log a warning to the system log. */
@@ -1482,28 +1446,21 @@ android_open (const char *filename, int oflag, int mode)
return -1;
}
- /* Try to obtain the file descriptor corresponding to this
- asset. */
- fd = AAsset_openFileDescriptor (asset, &out_start,
- &out_length);
+ /* Create a shared memory file descriptor containing the asset
+ contents.
+
+ The documentation misleads people into thinking that
+ AAsset_openFileDescriptor does precisely this. However, it
+ instead returns an offset into any uncompressed assets in the
+ ZIP archive. This cannot be found in its documentation. */
- /* The platform sometimes returns a file descriptor to ZIP
- compressed data. Detect that and fall back to creating a
- shared memory file descriptor. */
- fd = android_check_compressed_file (fd);
+ fd = android_hack_asset_fd (asset);
if (fd == -1)
{
- /* The asset can't be accessed for some reason. Try to
- create a shared memory file descriptor. */
- fd = android_hack_asset_fd (asset);
-
- if (fd == -1)
- {
- AAsset_close (asset);
- errno = ENXIO;
- return -1;
- }
+ AAsset_close (asset);
+ errno = ENXIO;
+ return -1;
}
/* If O_CLOEXEC is specified, make the file descriptor close on