diff --git a/packages/libandroid-posix-semaphore/build.sh b/packages/libandroid-posix-semaphore/build.sh index 48a7b4ec5..f73c4eb08 100644 --- a/packages/libandroid-posix-semaphore/build.sh +++ b/packages/libandroid-posix-semaphore/build.sh @@ -3,13 +3,12 @@ TERMUX_PKG_DESCRIPTION="Shared library for the posix semaphore system function" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="@termux" TERMUX_PKG_VERSION=0.1 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SKIP_SRC_EXTRACT=true TERMUX_PKG_BUILD_IN_SRC=true termux_step_make() { - $CC $CFLAGS $CPPFLAGS -DPREFIX="\"$TERMUX_PREFIX\"" \ - -c $TERMUX_PKG_BUILDER_DIR/semaphore.c + $CC $CFLAGS $CPPFLAGS -c $TERMUX_PKG_BUILDER_DIR/semaphore.c $CC $LDFLAGS -shared semaphore.o -o libandroid-posix-semaphore.so $AR rcu libandroid-posix-semaphore.a semaphore.o cp -f $TERMUX_PKG_BUILDER_DIR/LICENSE $TERMUX_PKG_SRCDIR/ diff --git a/packages/libandroid-posix-semaphore/semaphore.c b/packages/libandroid-posix-semaphore/semaphore.c index b338afeae..96c9a4acc 100644 --- a/packages/libandroid-posix-semaphore/semaphore.c +++ b/packages/libandroid-posix-semaphore/semaphore.c @@ -38,15 +38,13 @@ #include // fstat() #include // calloc() #include // mutex +#include // _PATH_TMP #ifndef SEM_NSEMS_MAX #define SEM_NSEMS_MAX 256 #endif // !SEM_NSEMS_MAX -#ifndef PREFIX -#define PREFIX "/data/data/com.termux/files/usr" -#endif -#define SEM_PREFIX PREFIX"/tmp/sem." +#define SEM_PREFIX _PATH_TMP "sem." static __inline__ char *__strchrnul(const char *s, int c) { @@ -63,7 +61,7 @@ typedef struct { } semtab_type; static semtab_type *semtab; -static pthread_mutex_t lock; +static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; #define LOCK(l) (pthread_mutex_lock(&l)) #define UNLOCK(l) (pthread_mutex_unlock(&l)) @@ -223,10 +221,15 @@ fail: int sem_close(sem_t *sem) { + if (sem == NULL || semtab == NULL) { + errno = EINVAL; + return -1; + } int i; LOCK(lock); for (i=0; i