LINUX.ORG.RU

faccessat и F_OK - нету в Андроиде, но надо....

 


0

2

Надо сделать как faccessat и F_OK. То есть проверить - существует ли файл, или ссылка на него, если реальный файл не существует. (Не дереференсить...) http://man7.org/linux/man-pages/man2/access.2.html

faccessat нет в Андроиде. Как проверить - может другими средствами, может syscall какой?

faccessat и F_OK - нету в Андроиде

Есть в андроиде, хотя и не во всяком:

$ grep -rI faccessat android-ndk-r15c/platforms/android-19/arch-arm/usr/include
android-ndk-r15c/platforms/android-19/arch-arm/usr/include/asm/unistd.h:#define __NR_faccessat (__NR_SYSCALL_BASE+334)
по 4.4 ещё нет, а начиная с Android 5 (API Level 21) уже есть:
$ grep -rI faccessat android-ndk-r15c/platforms/android-21/arch-arm/usr/include
android-ndk-r15c/platforms/android-21/arch-arm/usr/include/asm/unistd.h:#define __NR_faccessat (__NR_SYSCALL_BASE+334)
android-ndk-r15c/platforms/android-21/arch-arm/usr/include/asm-generic/unistd.h:#define __NR_faccessat 48
android-ndk-r15c/platforms/android-21/arch-arm/usr/include/unistd.h:extern int faccessat(int, const char*, int, int);
android-ndk-r15c/platforms/android-21/arch-arm/usr/include/sys/glibc-syscalls.h:#define SYS_faccessat __NR_faccessat
android-ndk-r15c/platforms/android-21/arch-arm/usr/include/sys/glibc-syscalls.h:#define SYS_faccessat __NR_faccessat
android-ndk-r15c/platforms/android-21/arch-arm/usr/include/sys/glibc-syscalls.h:#define SYS_faccessat __NR_faccessat
android-ndk-r15c/platforms/android-21/arch-arm/usr/include/sys/glibc-syscalls.h:#define SYS_faccessat __NR_faccessat
android-ndk-r15c/platforms/android-21/arch-arm/usr/include/sys/glibc-syscalls.h:#define SYS_faccessat __NR_faccessat

gag ★★★★★
()
Ответ на: комментарий от mittorn

Спасибо. Видимо этот Rich Felker, хорошенько так прочел «man syscall» :)

FreakMurderer
() автор топика

не советовал бы связываться со lstat'ом через сисколы, там же со структурой фиг угадаешь - меняется от версии к версии, от архитектуры к архитектуре... хотя в твоем случае можно забить на это и просто чекить ошибку, но тогда буфер бери с запасом, а то в сегфолт вылететь нефиг делать

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.