diff --git a/include/uv-private/uv-unix.h b/include/uv-private/uv-unix.h index b07781f4..21078fe3 100644 --- a/include/uv-private/uv-unix.h +++ b/include/uv-private/uv-unix.h @@ -204,10 +204,14 @@ typedef void* uv_lib_t; #include #include -#define UV_FS_EVENT_PRIVATE_FIELDS \ +#ifdef PORT_SOURCE_FILE +# define UV_FS_EVENT_PRIVATE_FIELDS \ ev_io event_watcher; \ uv_fs_event_cb cb; \ - file_obj_t fo; \ + file_obj_t fo; +#else /* !PORT_SOURCE_FILE */ +# define UV_FS_EVENT_PRIVATE_FIELDS +#endif #else diff --git a/src/unix/internal.h b/src/unix/internal.h index 0ab8ba95..12ab6217 100644 --- a/src/unix/internal.h +++ b/src/unix/internal.h @@ -27,6 +27,12 @@ #include /* offsetof */ +#undef HAVE_FUTIMES +#undef HAVE_PIPE2 +#undef HAVE_ACCEPT4 +#undef HAVE_KQUEUE +#undef HAVE_PORTS_FS + #if defined(__linux__) #include @@ -49,6 +55,14 @@ #endif /* __linux__ */ +#if defined(__sun) +# include +# include +# ifdef PORT_SOURCE_FILE +# define HAVE_PORTS_FS 1 +# endif +#endif /* __sun */ + #if defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun) # define HAVE_FUTIMES 1 #endif diff --git a/src/unix/sunos.c b/src/unix/sunos.c index f5312207..725e5603 100644 --- a/src/unix/sunos.c +++ b/src/unix/sunos.c @@ -30,10 +30,13 @@ #include #include -#include #include #include -#include + +#if HAVE_PORTS_FS +# include +# include +#endif uint64_t uv_hrtime() { @@ -85,6 +88,7 @@ void uv_loadavg(double avg[3]) { } +#if HAVE_PORTS_FS static void uv__fs_event_rearm(uv_fs_event_t *handle) { if (port_associate(handle->fd, PORT_SOURCE_FILE, @@ -173,3 +177,21 @@ void uv__fs_event_destroy(uv_fs_event_t* handle) { handle->filename = NULL; handle->fo.fo_name = NULL; } + +#else /* !HAVE_PORTS_FS */ + +int uv_fs_event_init(uv_loop_t* loop, + uv_fs_event_t* handle, + const char* filename, + uv_fs_event_cb cb, + int flags) { + uv__set_sys_error(loop, ENOSYS); + return -1; +} + + +void uv__fs_event_destroy(uv_fs_event_t* handle) { + assert(0 && "unreachable"); /* should never be called */ +} + +#endif /* HAVE_PORTS_FS */