solaris fixes

This commit is contained in:
Ryan Dahl 2011-08-02 06:29:25 +00:00
parent 2e9a743da0
commit 22ec2db413
2 changed files with 12 additions and 4 deletions

View File

@ -32,7 +32,7 @@ CPPFLAGS += -D_FILE_OFFSET_BITS=64
ifeq (SunOS,$(uname_S))
EV_CONFIG=config_sunos.h
EIO_CONFIG=config_sunos.h
CPPFLAGS += -Isrc/ares/config_sunos
CPPFLAGS += -Isrc/ares/config_sunos -D__EXTENSIONS__
LINKFLAGS+=-lsocket -lnsl
UV_OS_FILE=uv-sunos.c
endif

View File

@ -65,6 +65,7 @@
extern char **environ;
# endif
#define LOCKFILE_SUFFIX ".lock"
static uv_err_t last_err;
@ -2236,6 +2237,7 @@ size_t uv__strlcpy(char* dst, const char* src, size_t size) {
uv_stream_t* uv_std_handle(uv_std_type type) {
assert(0 && "implement me");
return NULL;
}
@ -2412,7 +2414,6 @@ int uv_process_kill(uv_process_t* process, int signum) {
}
#define LOCKFILE_SUFFIX ".lock"
int uv_flock_init(uv_flock_t* lock, const char* filename) {
int saved_errno;
int status;
@ -2437,10 +2438,10 @@ out:
errno = saved_errno;
return status;
}
#undef LOCKFILE_SUFFIX
int uv_flock_acquire(uv_flock_t* lock, int* locked_p) {
struct flock fl;
char buf[32];
int saved_errno;
int status;
@ -2461,8 +2462,15 @@ int uv_flock_acquire(uv_flock_t* lock, int* locked_p) {
goto out;
}
fl.l_type = F_WRLCK;
fl.l_whence = SEEK_SET;
fl.l_start = 0;
fl.l_len = 0;
fl.l_pid = getpid();
do {
status = flock(lockfd, LOCK_EX | LOCK_NB);
status = fcntl(lockfd, F_SETLKW, &fl);
}
while (status == -1 && errno == EINTR);