You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
refactor source tree organization, switch to meson
This commit is contained in:
99
src/libandroid/asset_manager.c
Normal file
99
src/libandroid/asset_manager.c
Normal file
@@ -0,0 +1,99 @@
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
struct AAssetManager {
|
||||
};
|
||||
|
||||
struct AAsset{
|
||||
int fd;
|
||||
};
|
||||
|
||||
typedef int64_t off64_t;
|
||||
typedef void JNIEnv;
|
||||
typedef void * jobject;
|
||||
|
||||
#define ASSET_DIR "data/assets/"
|
||||
|
||||
struct AAsset* AAssetManager_open(struct AAssetManager *amgr, const char *file_name, int mode)
|
||||
{
|
||||
char *path = malloc(strlen(file_name) + strlen(ASSET_DIR) + 1);
|
||||
int fd;
|
||||
|
||||
strcpy(path, ASSET_DIR);
|
||||
strcat(path, file_name);
|
||||
|
||||
printf("openning asset with filename: %s\n", file_name);
|
||||
|
||||
printf("openning asset at path: %s\n", path);
|
||||
|
||||
fd = open(path, O_CLOEXEC | O_RDWR);
|
||||
if(fd < 0) {
|
||||
printf("oopsie, falied to open file: %s (errno: %d)\n", file_name, errno);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
free(path);
|
||||
|
||||
struct AAsset* asset = malloc(sizeof(struct AAsset));
|
||||
asset->fd = fd;
|
||||
|
||||
return asset;
|
||||
}
|
||||
|
||||
const void * AAsset_getBuffer(struct AAsset *asset)
|
||||
{
|
||||
int ret;
|
||||
int err;
|
||||
int fd = asset->fd;
|
||||
|
||||
struct stat statbuf;
|
||||
|
||||
ret = fstat(fd, &statbuf);
|
||||
if(ret)
|
||||
printf("oopsie, fstat failed on fd: %d with errno: %d\n", fd, errno);
|
||||
|
||||
uint8_t *buffer = malloc(statbuf.st_size);
|
||||
ret = pread(fd, buffer, statbuf.st_size, 0);
|
||||
if(ret < 0) {
|
||||
err = errno;
|
||||
printf("oopsie, read failed on fd: %d with errno: %d\n", fd, err);
|
||||
exit(err);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
off64_t AAsset_getLength64(struct AAsset *asset)
|
||||
{
|
||||
int ret;
|
||||
int fd = asset->fd;
|
||||
|
||||
struct stat statbuf;
|
||||
|
||||
ret = fstat(fd, &statbuf);
|
||||
if(ret)
|
||||
printf("oopsie, fstat failed on fd: %d with errno: %d\n", fd, errno);
|
||||
|
||||
return statbuf.st_size;
|
||||
}
|
||||
|
||||
struct AAssetManager * AAssetManager_fromJava(JNIEnv *env, jobject assetManager)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void AAsset_close(struct AAsset *asset)
|
||||
{
|
||||
int fd = asset->fd;
|
||||
|
||||
printf("closing asset with fd: %d\n", fd);
|
||||
close(fd);
|
||||
|
||||
free(asset);
|
||||
}
|
||||
6
src/libandroid/misc.c
Normal file
6
src/libandroid/misc.c
Normal file
@@ -0,0 +1,6 @@
|
||||
#include <stdio.h>
|
||||
|
||||
void android_set_abort_message(const char* msg) {
|
||||
printf("android_set_abort_message called: '%s'\n", msg);
|
||||
// exit(1);
|
||||
}
|
||||
Reference in New Issue
Block a user