Switch minadb over to C++.

Change-Id: I5afaf70caa590525627c676c88b445d3162de33e
This commit is contained in:
Elliott Hughes 2015-04-10 13:59:19 -07:00
parent 23017c5d5c
commit 20531ef605
9 changed files with 24 additions and 31 deletions

View file

@ -30,10 +30,8 @@
#include "install.h"
#include "common.h"
#include "adb_install.h"
extern "C" {
#include "minadbd/fuse_adb_provider.h"
#include "fuse_sideload.h"
}
static RecoveryUI* ui = NULL;

View file

@ -17,7 +17,13 @@
#ifndef __FUSE_SDCARD_PROVIDER_H
#define __FUSE_SDCARD_PROVIDER_H
#include <sys/cdefs.h>
__BEGIN_DECLS
void* start_sdcard_fuse(const char* path);
void finish_sdcard_fuse(void* token);
__END_DECLS
#endif

View file

@ -17,6 +17,10 @@
#ifndef __FUSE_SIDELOAD_H
#define __FUSE_SIDELOAD_H
#include <sys/cdefs.h>
__BEGIN_DECLS
// define the filenames created by the sideload FUSE filesystem
#define FUSE_SIDELOAD_HOST_MOUNTPOINT "/sideload"
#define FUSE_SIDELOAD_HOST_FILENAME "package.zip"
@ -35,4 +39,6 @@ struct provider_vtab {
int run_fuse_sideload(struct provider_vtab* vtab, void* cookie,
uint64_t file_size, uint32_t block_size);
__END_DECLS
#endif

View file

@ -11,9 +11,9 @@ minadbd_cflags := \
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
adb_main.c \
fuse_adb_provider.c \
services.c \
adb_main.cpp \
fuse_adb_provider.cpp \
services.cpp \
LOCAL_MODULE := libminadbd
LOCAL_CFLAGS := $(minadbd_cflags)

View file

@ -19,10 +19,6 @@
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
struct adb_data {
int sfd; // file descriptor for the adb channel
@ -30,12 +26,7 @@ struct adb_data {
uint32_t block_size;
};
int read_block_adb(void* cookie, uint32_t block, uint8_t* buffer,
uint32_t fetch_size);
int read_block_adb(void* cookie, uint32_t block, uint8_t* buffer, uint32_t fetch_size);
int run_adb_fuse(int sfd, uint64_t file_size, uint32_t block_size);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -36,19 +36,16 @@ struct stinfo {
void *cookie;
};
void *service_bootstrap_func(void *x)
{
stinfo *sti = x;
void* service_bootstrap_func(void* x) {
stinfo* sti = reinterpret_cast<stinfo*>(x);
sti->func(sti->fd, sti->cookie);
free(sti);
return 0;
}
static void sideload_host_service(int sfd, void* cookie)
{
static void sideload_host_service(int sfd, void* cookie) {
char* saveptr;
const char* s = adb_strtok_r(cookie, ":", &saveptr);
const char* s = adb_strtok_r(reinterpret_cast<char*>(cookie), ":", &saveptr);
uint64_t file_size = strtoull(s, NULL, 10);
s = adb_strtok_r(NULL, ":", &saveptr);
uint32_t block_size = strtoul(s, NULL, 10);
@ -65,22 +62,20 @@ static void sideload_host_service(int sfd, void* cookie)
static int create_service_thread(void (*func)(int, void *), void *cookie)
{
stinfo *sti;
adb_thread_t t;
int s[2];
if(adb_socketpair(s)) {
printf("cannot create service socket pair\n");
return -1;
}
sti = malloc(sizeof(stinfo));
stinfo* sti = reinterpret_cast<stinfo*>(malloc(sizeof(stinfo)));
if(sti == 0) fatal("cannot allocate stinfo");
sti->func = func;
sti->cookie = cookie;
sti->fd = s[1];
if(adb_thread_create( &t, service_bootstrap_func, sti)){
adb_thread_t t;
if (adb_thread_create( &t, service_bootstrap_func, sti)){
free(sti);
adb_close(s[0]);
adb_close(s[1]);
@ -92,8 +87,7 @@ static int create_service_thread(void (*func)(int, void *), void *cookie)
return s[0];
}
int service_to_fd(const char *name)
{
int service_to_fd(const char* name) {
int ret = -1;
if (!strncmp(name, "sideload:", 9)) {

View file

@ -43,11 +43,9 @@
#include "screen_ui.h"
#include "device.h"
#include "adb_install.h"
extern "C" {
#include "adb.h"
#include "fuse_sideload.h"
#include "fuse_sdcard_provider.h"
}
struct selabel_handle *sehandle;