aix: do not store absolute path to ahafs
We only need the absolute path to create our .mon file under /aha. So only duplicate the passed string. This keeps behaviour similar to other platforms. Fixes test fs_event_getpath. PR-URL: https://github.com/libuv/libuv/pull/776 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This commit is contained in:
parent
a117fbd13b
commit
6ae622b0a1
@ -725,18 +725,11 @@ static void uv__ahafs_event(uv_loop_t* loop, uv__io_t* event_watch, unsigned int
|
||||
int bytes, rc = 0;
|
||||
uv_fs_event_t* handle;
|
||||
int events = 0;
|
||||
int i = 0;
|
||||
char fname[PATH_MAX];
|
||||
char *p;
|
||||
|
||||
handle = container_of(event_watch, uv_fs_event_t, event_watcher);
|
||||
|
||||
/* Clean all the buffers*/
|
||||
for(i = 0; i < PATH_MAX; i++) {
|
||||
fname[i] = 0;
|
||||
}
|
||||
i = 0;
|
||||
|
||||
/* At this point, we assume that polling has been done on the
|
||||
* file descriptor, so we can just read the AHAFS event occurrence
|
||||
* data and parse its results without having to block anything
|
||||
@ -749,35 +742,27 @@ static void uv__ahafs_event(uv_loop_t* loop, uv__io_t* event_watch, unsigned int
|
||||
if(bytes > 0)
|
||||
rc = uv__parse_data(result_data, &events, handle);
|
||||
|
||||
/* Unrecoverable error */
|
||||
if (rc == -1)
|
||||
return;
|
||||
|
||||
/* For directory changes, the name of the files that triggered the change
|
||||
* are never absolute pathnames
|
||||
*/
|
||||
if (uv__path_is_a_directory(handle->path) == 0) {
|
||||
p = handle->dir_filename;
|
||||
while(*p != NULL){
|
||||
fname[i]= *p;
|
||||
i++;
|
||||
p++;
|
||||
}
|
||||
} else {
|
||||
/* For file changes, figure out whether filename is absolute or not */
|
||||
if (handle->path[0] == '/') {
|
||||
p = strrchr(handle->path, '/');
|
||||
p = strrchr(handle->path, '/');
|
||||
if (p == NULL)
|
||||
p = handle->path;
|
||||
else
|
||||
p++;
|
||||
|
||||
while(*p != NULL) {
|
||||
fname[i]= *p;
|
||||
i++;
|
||||
p++;
|
||||
}
|
||||
}
|
||||
}
|
||||
strncpy(fname, p, sizeof(fname) - 1);
|
||||
/* Just in case */
|
||||
fname[sizeof(fname) - 1] = '\0';
|
||||
|
||||
/* Unrecoverable error */
|
||||
if (rc == -1)
|
||||
return;
|
||||
else /* Call the actual JavaScript callback function */
|
||||
handle->cb(handle, (const char*)&fname, events, 0);
|
||||
handle->cb(handle, fname, events, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -857,7 +842,7 @@ int uv_fs_event_start(uv_fs_event_t* handle,
|
||||
/* Setup/Initialize all the libuv routines */
|
||||
uv__handle_start(handle);
|
||||
uv__io_init(&handle->event_watcher, uv__ahafs_event, fd);
|
||||
handle->path = uv__strdup((const char*)&absolute_path);
|
||||
handle->path = uv__strdup(filename);
|
||||
handle->cb = cb;
|
||||
|
||||
uv__io_start(handle->loop, &handle->event_watcher, UV__POLLIN);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user