summaryrefslogtreecommitdiffstats
path: root/src/fastd.c
diff options
context:
space:
mode:
authorRick Lei <ricklei@gmail.com>2015-01-14 15:11:43 +0100
committerRick Lei <ricklei@gmail.com>2015-01-14 15:11:43 +0100
commitc4378784ae2caec57634f9f04bcb3dcddc673f36 (patch)
tree70bbdb1c348803006a7cbf2092da65312720a386 /src/fastd.c
parent133cee578e04e561bb17e37393bbf7e427522560 (diff)
downloadfastd-c4378784ae2caec57634f9f04bcb3dcddc673f36.tar
fastd-c4378784ae2caec57634f9f04bcb3dcddc673f36.zip
Add Android 4.1+ support. See doc/README-Android.md for build HOWTO.
* Update CMake files to work with android-cmake * Use unix domain socket for communicating with Android GUI * May also run standalone but requires rooted Android device
Diffstat (limited to 'src/fastd.c')
-rw-r--r--src/fastd.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/fastd.c b/src/fastd.c
index 43dacc7..1b2eb33 100644
--- a/src/fastd.c
+++ b/src/fastd.c
@@ -2,6 +2,10 @@
Copyright (c) 2012-2014, Matthias Schiffer <mschiffer@universe-factory.net>
All rights reserved.
+ Android port contributor:
+ Copyright (c) 2014-2015, Haofeng "Rick" Lei <ricklei@gmail.com>
+ All rights reserved.
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -246,6 +250,12 @@ static inline void write_pid(void) {
if (!conf.pid_file)
return;
+#ifdef __ANDROID__
+ if (conf.android_integration) {
+ pr_warn("fastd doesn't support pid file in GUI integration mode on Android");
+ return;
+ }
+#endif
uid_t uid = geteuid();
gid_t gid = getegid();
@@ -256,17 +266,17 @@ static inline void write_pid(void) {
pr_debug_errno("seteuid");
}
- int fd = open(conf.pid_file, O_WRONLY|O_CREAT|O_TRUNC, 0666);
- if (fd < 0) {
- pr_error_errno("can't write PID file: open");
+ FILE *f = fopen(conf.pid_file, "w");
+ if (f == NULL) {
+ pr_error_errno("can't write PID file: fopen");
goto end;
}
- if (dprintf(fd, "%u", (unsigned)getpid()) < 0)
- pr_error_errno("can't write PID file: dprintf");
+ if (fprintf(f, "%u", (unsigned)getpid()) < 0)
+ pr_error_errno("can't write PID file: fprintf");
- if (close(fd) < 0)
- pr_warn_errno("close");
+ if (fclose(f) < 0)
+ pr_warn_errno("fclose");
end:
if (seteuid(uid) < 0)