@@ -494,50 +494,35 @@ static void walkHandle(uv_handle_t* h, void* arg) {
494494 std::ostream* out = reinterpret_cast <std::ostream*>(arg);
495495 uv_any_handle* handle = (uv_any_handle*)h;
496496
497+ #define UV_FS_CASE (t, uv_function ) \
498+ do { \
499+ char *buffer = nullptr ; \
500+ int rc; \
501+ size_t size = 0 ; \
502+ type = #t; \
503+ /* First call to get required buffer size. */ \
504+ rc = uv_function (&(handle->##t), buffer, &size); \
505+ if (rc == UV_ENOBUFS) { \
506+ buffer = (char *)malloc (size); \
507+ rc = uv_function (&(handle->##t), buffer, &size); \
508+ if (rc == 0 ) { \
509+ /* buffer is not null terminated. */ \
510+ std::string name (buffer, size); \
511+ data << " filename: " << name; \
512+ } \
513+ free (buffer); \
514+ } \
515+ } \
516+ while (0 )
517+
497518 // List all the types so we get a compile warning if we've missed one,
498519 // (using default: supresses the compiler warning.)
499520 switch (h->type ) {
500521 case UV_UNKNOWN_HANDLE: type = " unknown" ; break ;
501522 case UV_ASYNC: type = " async" ; break ;
502523 case UV_CHECK: type = " check" ; break ;
503- case UV_FS_EVENT: {
504- char *buffer = nullptr ;
505- int rc;
506- size_t size = 0 ;
507- type = " fs_event" ;
508- // First call to get required buffer size.
509- rc = uv_fs_event_getpath (&(handle->fs_event ), buffer, &size);
510- if (rc == UV_ENOBUFS) {
511- buffer = (char *)malloc (size);
512- rc = uv_fs_event_getpath (&(handle->fs_event ), buffer, &size);
513- if (rc == 0 ) {
514- // buffer is not null terminated.
515- std::string name (buffer, size);
516- data << " filename: " << name;
517- }
518- free (buffer);
519- }
520- break ;
521- }
522- case UV_FS_POLL: {
523- char *buffer = nullptr ;
524- int rc;
525- size_t size = 0 ;
526- type = " fs_poll" ;
527- // First call to get required buffer size.
528- rc = uv_fs_poll_getpath (&(handle->fs_poll ), buffer, &size);
529- if (rc == UV_ENOBUFS) {
530- buffer = (char *)malloc (size);
531- rc = uv_fs_poll_getpath (&(handle->fs_poll ), buffer, &size);
532- if (rc == 0 ) {
533- // buffer is not null terminated.
534- std::string name (buffer, size);
535- data << " filename: " << name;
536- }
537- free (buffer);
538- }
539- break ;
540- }
524+ case UV_FS_EVENT: UV_FS_CASE (fs_event, uv_fs_event_getpath); break ;
525+ case UV_FS_POLL: UV_FS_CASE (fs_poll, uv_fs_poll_getpath); break ;
541526 case UV_HANDLE: type = " handle" ; break ;
542527 case UV_IDLE: type = " idle" ; break ;
543528 case UV_NAMED_PIPE: type = " pipe" ; break ;
0 commit comments