diff --git a/ProcessLocksScreen.c b/ProcessLocksScreen.c index 5f876e5df..57c9ce75f 100644 --- a/ProcessLocksScreen.c +++ b/ProcessLocksScreen.c @@ -27,7 +27,8 @@ ProcessLocksScreen* ProcessLocksScreen_new(const Process* process) { this->pid = process->tgid; else this->pid = process->pid; - return (ProcessLocksScreen*) InfoScreen_init(&this->super, process, NULL, LINES - 2, " FD TYPE EXCLUSION READ/WRITE DEVICE:INODE START END FILENAME"); + + return (ProcessLocksScreen*) InfoScreen_init(&this->super, process, NULL, LINES - 2, " FD TYPE EXCLUSION READ/WRITE DEVICE NODE START END FILENAME"); } void ProcessLocksScreen_delete(Object* this) { @@ -64,18 +65,18 @@ static void ProcessLocksScreen_scan(InfoScreen* this) { char entry[512]; if (ULLONG_MAX == data->end) { - xSnprintf(entry, sizeof(entry), "%5d %-10s %-10s %-10s %02x:%02x:%020"PRIu64" %20"PRIu64" %20s %s", + xSnprintf(entry, sizeof(entry), "%5d %-10s %-10s %-10s %#6"PRIx64" %10"PRIu64" %19"PRIu64" %19s %s", data->fd, data->locktype, data->exclusive, data->readwrite, - data->dev[0], data->dev[1], data->inode, + (uint64_t) data->dev, data->inode, data->start, "", data->filename ? data->filename : "" ); } else { - xSnprintf(entry, sizeof(entry), "%5d %-10s %-10s %-10s %02x:%02x:%020"PRIu64" %20"PRIu64" %20"PRIu64" %s", + xSnprintf(entry, sizeof(entry), "%5d %-10s %-10s %-10s %#6"PRIx64" %10"PRIu64" %19"PRIu64" %19"PRIu64" %s", data->fd, data->locktype, data->exclusive, data->readwrite, - data->dev[0], data->dev[1], data->inode, + (uint64_t) data->dev, data->inode, data->start, data->end, data->filename ? data->filename : "" ); diff --git a/ProcessLocksScreen.h b/ProcessLocksScreen.h index 560f3a88d..417df7b20 100644 --- a/ProcessLocksScreen.h +++ b/ProcessLocksScreen.h @@ -27,7 +27,7 @@ typedef struct FileLocks_Data_ { char* readwrite; char* filename; int fd; - unsigned int dev[2]; + dev_t dev; uint64_t inode; uint64_t start; uint64_t end; diff --git a/linux/Platform.c b/linux/Platform.c index 4382c1ee1..64f25c420 100644 --- a/linux/Platform.c +++ b/linux/Platform.c @@ -22,6 +22,7 @@ in the source distribution for its full text. #include #include #include +#include #include "BatteryMeter.h" #include "ClockMeter.h" @@ -478,16 +479,18 @@ FileLocks_ProcessData* Platform_getProcessLocks(pid_t pid) { FileLocks_Data data = {.fd = file}; int _; + unsigned int maj, min; char lock_end[25], locktype[32], exclusive[32], readwrite[32]; if (10 != sscanf(buffer + strlen("lock:\t"), "%d: %31s %31s %31s %d %x:%x:%"PRIu64" %"PRIu64" %24s", &_, locktype, exclusive, readwrite, &_, - &data.dev[0], &data.dev[1], &data.inode, + &maj, &min, &data.inode, &data.start, lock_end)) continue; data.locktype = xStrdup(locktype); data.exclusive = xStrdup(exclusive); data.readwrite = xStrdup(readwrite); + data.dev = makedev(maj, min); if (String_eq(lock_end, "EOF")) data.end = ULLONG_MAX;