aboutsummaryrefslogtreecommitdiffstats
path: root/src/androidvfs.c
diff options
context:
space:
mode:
authorPo Lu2023-08-06 21:45:29 +0800
committerPo Lu2023-08-06 21:45:29 +0800
commit7873369338ee0159ca285153fd4592cbcff65d7a (patch)
treebd4fb3b1c8b19836d8d78b3ff4173470cfefd687 /src/androidvfs.c
parent669a4b96c374801faa137f43b4497b2ed6511104 (diff)
downloademacs-7873369338ee0159ca285153fd4592cbcff65d7a.tar.gz
emacs-7873369338ee0159ca285153fd4592cbcff65d7a.zip
Update Android port
* java/org/gnu/emacs/EmacsNative.java: Declare ftruncate. * java/org/gnu/emacs/EmacsSafThread.java (openDocument1): If initially opening with rwt, verify the file descriptor is really writable; if not, resort to rw and truncating the file descriptor by hand instead. * src/androidvfs.c (NATIVE_NAME (ftruncate)): New function. Truncate file descriptor and return whether that was successful.
Diffstat (limited to 'src/androidvfs.c')
-rw-r--r--src/androidvfs.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/androidvfs.c b/src/androidvfs.c
index dc5097f463e..d6daff481b0 100644
--- a/src/androidvfs.c
+++ b/src/androidvfs.c
@@ -5605,7 +5605,7 @@ android_saf_file_open (struct android_vnode *vnode, int flags,
5605 /* Open a parcel file descriptor according to flags. */ 5605 /* Open a parcel file descriptor according to flags. */
5606 5606
5607 method = service_class.open_document; 5607 method = service_class.open_document;
5608 trunc = flags & O_TRUNC; 5608 trunc = (flags & O_TRUNC);
5609 write = ((flags & O_RDWR) == O_RDWR || (flags & O_WRONLY)); 5609 write = ((flags & O_RDWR) == O_RDWR || (flags & O_WRONLY));
5610 inside_saf_critical_section = true; 5610 inside_saf_critical_section = true;
5611 descriptor 5611 descriptor
@@ -6121,6 +6121,12 @@ NATIVE_NAME (safPostRequest) (JNIEnv *env, jobject object)
6121 sem_post (&saf_completion_sem); 6121 sem_post (&saf_completion_sem);
6122} 6122}
6123 6123
6124JNIEXPORT jboolean JNICALL
6125NATIVE_NAME (ftruncate) (JNIEnv *env, jobject object, jint fd)
6126{
6127 return ftruncate (fd, 0) != -1;
6128}
6129
6124#ifdef __clang__ 6130#ifdef __clang__
6125#pragma clang diagnostic pop 6131#pragma clang diagnostic pop
6126#else /* GNUC */ 6132#else /* GNUC */