summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorнаб <nabijaczleweli@nabijaczleweli.xyz>2022-11-26 01:21:57 +0100
committerBenBE <BenBE@geshi.org>2023-01-08 18:22:10 +0100
commit650cf0f13bf667270d0a6a4612437af264667585 (patch)
tree37116670b928be51c7052306b0aea6671eb6acec
parent8def4d63cd9c216d89b785f858c866257f9a6768 (diff)
Use a 0x{devnum} format for devices in lock screen, like files screen
Also reflow it to not be absolutely bonkers
-rw-r--r--ProcessLocksScreen.c11
-rw-r--r--ProcessLocksScreen.h2
-rw-r--r--linux/Platform.c5
3 files changed, 11 insertions, 7 deletions
diff --git a/ProcessLocksScreen.c b/ProcessLocksScreen.c
index 5f876e5d..57c9ce75 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, "<END OF FILE>",
data->filename ? data->filename : "<N/A>"
);
} 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 : "<N/A>"
);
diff --git a/ProcessLocksScreen.h b/ProcessLocksScreen.h
index 560f3a88..417df7b2 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 4382c1ee..64f25c42 100644
--- a/linux/Platform.c
+++ b/linux/Platform.c
@@ -22,6 +22,7 @@ in the source distribution for its full text.
#include <string.h>
#include <time.h>
#include <unistd.h>
+#include <sys/sysmacros.h>
#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;

© 2014-2024 Faster IT GmbH | imprint | privacy policy