From d15f47412effbcb20105d87e94f3a114e0e26449 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 21 Jan 2016 21:08:56 +0900 Subject: [PATCH] server: Always print the full path of objects when dumping them. Signed-off-by: Alexandre Julliard --- server/completion.c | 4 +--- server/device.c | 6 +----- server/directory.c | 12 ++---------- server/event.c | 10 ++-------- server/handle.c | 1 + server/mailslot.c | 3 +-- server/mapping.c | 4 +--- server/mutex.c | 4 +--- server/named_pipe.c | 9 ++------- server/object.c | 24 +++++++++++++++++------- server/semaphore.c | 4 +--- server/symlink.c | 6 ++---- server/timer.c | 4 +--- server/winstation.c | 8 ++------ 14 files changed, 35 insertions(+), 64 deletions(-) diff --git a/server/completion.c b/server/completion.c index a93551f9e3f..e0654766afa 100644 --- a/server/completion.c +++ b/server/completion.c @@ -102,9 +102,7 @@ static void completion_dump( struct object *obj, int verbose ) struct completion *completion = (struct completion *) obj; assert( obj->ops == &completion_ops ); - fprintf( stderr, "Completion " ); - dump_object_name( &completion->obj ); - fprintf( stderr, " (%u packets pending)\n", completion->depth ); + fprintf( stderr, "Completion depth=%u", completion->depth ); } static struct object_type *completion_get_type( struct object *obj ) diff --git a/server/device.c b/server/device.c index fb91c021116..b35f2e7b686 100644 --- a/server/device.c +++ b/server/device.c @@ -314,11 +314,7 @@ static void set_irp_result( struct irp_call *irp, unsigned int status, static void device_dump( struct object *obj, int verbose ) { - struct device *device = (struct device *)obj; - - fprintf( stderr, "Device " ); - dump_object_name( &device->obj ); - fputc( '\n', stderr ); + fputs( "Device\n", stderr ); } static struct object_type *device_get_type( struct object *obj ) diff --git a/server/directory.c b/server/directory.c index 9369e78c4f4..de049ef7d09 100644 --- a/server/directory.c +++ b/server/directory.c @@ -108,11 +108,7 @@ static struct directory *dir_objtype; static void object_type_dump( struct object *obj, int verbose ) { - assert( obj->ops == &object_type_ops ); - - fputs( "Object type ", stderr ); - dump_object_name( obj ); - fputc( '\n', stderr ); + fputs( "Object type\n", stderr ); } static struct object_type *object_type_get_type( struct object *obj ) @@ -124,11 +120,7 @@ static struct object_type *object_type_get_type( struct object *obj ) static void directory_dump( struct object *obj, int verbose ) { - assert( obj->ops == &directory_ops ); - - fputs( "Directory ", stderr ); - dump_object_name( obj ); - fputc( '\n', stderr ); + fputs( "Directory\n", stderr ); } static struct object_type *directory_get_type( struct object *obj ) diff --git a/server/event.c b/server/event.c index 591f1e2df64..5b2bfc94dfc 100644 --- a/server/event.c +++ b/server/event.c @@ -153,10 +153,8 @@ static void event_dump( struct object *obj, int verbose ) { struct event *event = (struct event *)obj; assert( obj->ops == &event_ops ); - fprintf( stderr, "Event manual=%d signaled=%d ", + fprintf( stderr, "Event manual=%d signaled=%d\n", event->manual_reset, event->signaled ); - dump_object_name( &event->obj ); - fputc( '\n', stderr ); } static struct object_type *event_get_type( struct object *obj ) @@ -230,11 +228,7 @@ struct keyed_event *get_keyed_event_obj( struct process *process, obj_handle_t h static void keyed_event_dump( struct object *obj, int verbose ) { - struct keyed_event *event = (struct keyed_event *)obj; - assert( obj->ops == &keyed_event_ops ); - fprintf( stderr, "Keyed event " ); - dump_object_name( &event->obj ); - fputc( '\n', stderr ); + fputs( "Keyed event\n", stderr ); } static struct object_type *keyed_event_get_type( struct object *obj ) diff --git a/server/handle.c b/server/handle.c index 05d71bac386..10ed4c695fa 100644 --- a/server/handle.c +++ b/server/handle.c @@ -153,6 +153,7 @@ static void handle_table_dump( struct object *obj, int verbose ) if (!entry->ptr) continue; fprintf( stderr, " %04x: %p %08x ", index_to_handle(i), entry->ptr, entry->access ); + dump_object_name( entry->ptr ); entry->ptr->ops->dump( entry->ptr, 0 ); } } diff --git a/server/mailslot.c b/server/mailslot.c index cb9510c0eff..0d93f42057a 100644 --- a/server/mailslot.c +++ b/server/mailslot.c @@ -325,8 +325,7 @@ static void mailslot_queue_async( struct fd *fd, const async_data_t *data, int t static void mailslot_device_dump( struct object *obj, int verbose ) { - assert( obj->ops == &mailslot_device_ops ); - fprintf( stderr, "Mail slot device\n" ); + fputs( "Mailslot device\n", stderr ); } static struct object_type *mailslot_device_get_type( struct object *obj ) diff --git a/server/mapping.c b/server/mapping.c index e206dea8eec..f66f326edea 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -604,12 +604,10 @@ static void mapping_dump( struct object *obj, int verbose ) struct mapping *mapping = (struct mapping *)obj; assert( obj->ops == &mapping_ops ); fprintf( stderr, "Mapping size=%08x%08x prot=%08x fd=%p header_size=%08x base=%08lx " - "shared_file=%p ", + "shared_file=%p\n", (unsigned int)(mapping->size >> 32), (unsigned int)mapping->size, mapping->protect, mapping->fd, mapping->header_size, (unsigned long)mapping->base, mapping->shared_file ); - dump_object_name( &mapping->obj ); - fputc( '\n', stderr ); } static struct object_type *mapping_get_type( struct object *obj ) diff --git a/server/mutex.c b/server/mutex.c index 98490e00e4b..fe94674e65f 100644 --- a/server/mutex.c +++ b/server/mutex.c @@ -138,9 +138,7 @@ static void mutex_dump( struct object *obj, int verbose ) { struct mutex *mutex = (struct mutex *)obj; assert( obj->ops == &mutex_ops ); - fprintf( stderr, "Mutex count=%u owner=%p ", mutex->count, mutex->owner ); - dump_object_name( &mutex->obj ); - fputc( '\n', stderr ); + fprintf( stderr, "Mutex count=%u owner=%p\n", mutex->count, mutex->owner ); } static struct object_type *mutex_get_type( struct object *obj ) diff --git a/server/named_pipe.c b/server/named_pipe.c index 870192d67e9..aa527aa0581 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -269,11 +269,7 @@ static const struct fd_ops named_pipe_device_fd_ops = static void named_pipe_dump( struct object *obj, int verbose ) { - struct named_pipe *pipe = (struct named_pipe *) obj; - assert( obj->ops == &named_pipe_ops ); - fprintf( stderr, "Named pipe " ); - dump_object_name( &pipe->obj ); - fprintf( stderr, "\n" ); + fputs( "Named pipe\n", stderr ); } static unsigned int named_pipe_map_access( struct object *obj, unsigned int access ) @@ -443,8 +439,7 @@ static void pipe_client_destroy( struct object *obj) static void named_pipe_device_dump( struct object *obj, int verbose ) { - assert( obj->ops == &named_pipe_device_ops ); - fprintf( stderr, "Named pipe device\n" ); + fputs( "Named pipe device\n", stderr ); } static struct object_type *named_pipe_device_get_type( struct object *obj ) diff --git a/server/object.c b/server/object.c index 31883bdcd09..1ec547a58b3 100644 --- a/server/object.c +++ b/server/object.c @@ -68,12 +68,14 @@ void dump_objects(void) { struct object *ptr = LIST_ENTRY( p, struct object, obj_list ); fprintf( stderr, "%p:%d: ", ptr, ptr->refcount ); + dump_object_name( ptr ); ptr->ops->dump( ptr, 1 ); } LIST_FOR_EACH( p, &object_list ) { struct object *ptr = LIST_ENTRY( p, struct object, obj_list ); fprintf( stderr, "%p:%d: ", ptr, ptr->refcount ); + dump_object_name( ptr ); ptr->ops->dump( ptr, 1 ); } } @@ -267,16 +269,24 @@ void *create_named_object( struct namespace *namespace, const struct object_ops return obj; } +/* recursive helper for dump_object_name */ +static void dump_name( struct object *obj ) +{ + struct object_name *name = obj->name; + + if (!name) return; + if (name->parent) dump_name( name->parent ); + fputs( "\\\\", stderr ); + dump_strW( name->name, name->len / sizeof(WCHAR), stderr, "[]" ); +} + /* dump the name of an object to stderr */ void dump_object_name( struct object *obj ) { - if (!obj->name) fprintf( stderr, "name=\"\"" ); - else - { - fprintf( stderr, "name=L\"" ); - dump_strW( obj->name->name, obj->name->len/sizeof(WCHAR), stderr, "\"\"" ); - fputc( '\"', stderr ); - } + if (!obj->name) return; + fputc( '[', stderr ); + dump_name( obj ); + fputs( "] ", stderr ); } /* unlink a named object from its namespace, without freeing the object itself */ diff --git a/server/semaphore.c b/server/semaphore.c index a9786b13609..8c594a4aa7a 100644 --- a/server/semaphore.c +++ b/server/semaphore.c @@ -124,9 +124,7 @@ static void semaphore_dump( struct object *obj, int verbose ) { struct semaphore *sem = (struct semaphore *)obj; assert( obj->ops == &semaphore_ops ); - fprintf( stderr, "Semaphore count=%d max=%d ", sem->count, sem->max ); - dump_object_name( &sem->obj ); - fputc( '\n', stderr ); + fprintf( stderr, "Semaphore count=%d max=%d\n", sem->count, sem->max ); } static struct object_type *semaphore_get_type( struct object *obj ) diff --git a/server/symlink.c b/server/symlink.c index abc34f2aaaa..6710133e4dd 100644 --- a/server/symlink.c +++ b/server/symlink.c @@ -77,11 +77,9 @@ static void symlink_dump( struct object *obj, int verbose ) struct symlink *symlink = (struct symlink *)obj; assert( obj->ops == &symlink_ops ); - fprintf( stderr, "Symlink " ); - dump_object_name( obj ); - fprintf( stderr, " -> L\"" ); + fputs( "Symlink target=\"", stderr ); dump_strW( symlink->target, symlink->len / sizeof(WCHAR), stderr, "\"\"" ); - fprintf( stderr, "\"\n" ); + fputs( "\"\n", stderr ); } static struct object_type *symlink_get_type( struct object *obj ) diff --git a/server/timer.c b/server/timer.c index 2c0522cbd2a..2f6f6070e12 100644 --- a/server/timer.c +++ b/server/timer.c @@ -184,10 +184,8 @@ static void timer_dump( struct object *obj, int verbose ) { struct timer *timer = (struct timer *)obj; assert( obj->ops == &timer_ops ); - fprintf( stderr, "Timer manual=%d when=%s period=%u ", + fprintf( stderr, "Timer manual=%d when=%s period=%u\n", timer->manual, get_timeout_str(timer->when), timer->period ); - dump_object_name( &timer->obj ); - fputc( '\n', stderr ); } static struct object_type *timer_get_type( struct object *obj ) diff --git a/server/winstation.c b/server/winstation.c index 7a6b9fce630..62d780fa432 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -133,10 +133,8 @@ static void winstation_dump( struct object *obj, int verbose ) { struct winstation *winstation = (struct winstation *)obj; - fprintf( stderr, "Winstation flags=%x clipboard=%p atoms=%p ", + fprintf( stderr, "Winstation flags=%x clipboard=%p atoms=%p\n", winstation->flags, winstation->clipboard, winstation->atom_table ); - dump_object_name( &winstation->obj ); - fputc( '\n', stderr ); } static struct object_type *winstation_get_type( struct object *obj ) @@ -223,10 +221,8 @@ static void desktop_dump( struct object *obj, int verbose ) { struct desktop *desktop = (struct desktop *)obj; - fprintf( stderr, "Desktop flags=%x winstation=%p top_win=%p hooks=%p ", + fprintf( stderr, "Desktop flags=%x winstation=%p top_win=%p hooks=%p\n", desktop->flags, desktop->winstation, desktop->top_window, desktop->global_hooks ); - dump_object_name( &desktop->obj ); - fputc( '\n', stderr ); } static struct object_type *desktop_get_type( struct object *obj )