commit 31b360aa186994d9ad184fc23d8d2112af6db4bb
Author: rani <clagv.randomgames@gmail.com>
Date: Tue Jun 28 16:24:10 2022 +0000
diff --git a/include/dir.h b/include/dir.h
index f079f56..3f671fb 100644
--- a/include/dir.h
+++ b/include/dir.h
@@ -498 +498 @@ struct dir_entry_t {
uint16_t mode;
time_t mtime;
- long owner;
- long group;
+ char * owner;
+ char * group;
int size;
enum f_size u_size;
};
@@ -666 +6610 @@ char * mode_to_s(struct dir_entry_t *);
// number of directory entries
extern size_t n_dir_entries;
+// longest owner name in dir
+extern size_t dir_longest_owner;
+// longest group name in dir
+extern size_t dir_longest_group;
// actual directory entries
extern struct dir_entry_t ** dir_entries;
diff --git a/include/io.h b/include/io.h
index 4d20757..dc5a9d0 100644
--- a/include/io.h
+++ b/include/io.h
@@ -576 +577 @@ void unmark_all(void);
void mark_all(void);
void set_color(void);
void print_mode(struct dir_entry_t *);
+void padstr(size_t);
extern bool print_path;
diff --git a/src/dir.c b/src/dir.c
index d1655ca..6eddb16 100644
--- a/src/dir.c
+++ b/src/dir.c
@@ -66 +68 @@
#include <stdbool.h>
#include <unistd.h>
#include <errno.h>
+#include <pwd.h>
+#include <grp.h>
#include "type.h"
#include "opts.h"
@@ -166 +188 @@
char * cwd = NULL;
size_t n_dir_entries = 0;
+size_t dir_longest_owner = 0;
+size_t dir_longest_group = 0;
struct dir_entry_t ** dir_entries = NULL;
bool permission_denied = false;
@@ -1458 +14913 @@ int list_dir(char * dir_path) {
#else
dir_entry->mtime = buf->st_mtim.tv_sec;
#endif
- dir_entry->owner = buf->st_uid;
- dir_entry->group = buf->st_gid;
+ size_t n;
+ dir_entry->owner = getpwuid(buf->st_uid)->pw_name;
+ if ((n = strlen(dir_entry->owner)) > dir_longest_owner)
+ dir_longest_owner = n;
+ dir_entry->group = getgrgid(buf->st_gid)->gr_name;
+ if ((n = strlen(dir_entry->group)) > dir_longest_group)
+ dir_longest_group = n;
dir_entry->size = buf->st_size;
dir_entry->u_size = 0;
diff --git a/src/io.c b/src/io.c
index 5a422e3..4a9ac3b 100644
--- a/src/io.c
+++ b/src/io.c
@@ -78 +76 @@
#include <locale.h>
#include <fcntl.h>
#include <time.h>
-#include <pwd.h>
-#include <grp.h>
#if ICONS
#include "type.h"
@@ -10915 +10713 @@ void curses_write_file(struct dir_entry_t * dir_entry, bool highlight) {
char * icon = NULL;
#endif
char * smode = NULL;
- char * owner = NULL;
- char * group = NULL;
+ char * owner = dir_entry->owner;
+ char * group = dir_entry->group;
char * size = NULL;
char time[128];
if (p_long) {
smode = mode_to_s(dir_entry);
- owner = getpwuid(dir_entry->owner)->pw_name;
- group = getgrgid(dir_entry->group)->gr_name;
switch (dir_entry->u_size) {
case 0: size = "B"; break;
case 1: size = "KB"; break;
@@ -1979 +19320 @@ void curses_write_file(struct dir_entry_t * dir_entry, bool highlight) {
if (dir_entry->marked) printw("%c ", '-');
if (p_long) {
print_mode(dir_entry);
- printw(" %s %s %4d %-2s %s ",
- owner, group, dir_entry->size,
- size, time);
+ // print owner
+ addch(' ');
+ addstr(owner);
+ size_t n = strlen(owner);
+ if (n < dir_longest_owner) padstr(dir_longest_owner - n);
+
+ // print group
+ addch(' ');
+ addstr(group);
+ n = strlen(owner);
+ if (n < dir_longest_group) padstr(dir_longest_group - n);
+
+ printw(" %4d %-2s %s ",
+ dir_entry->size, size, time);
free(smode);
}
#if ICONS
@@ -2386 +24511 @@ void print_mode(struct dir_entry_t * f) {
}
+void padstr(size_t n) {
+ for (size_t i = 0; i < n; i++) addch(' ');
+}
+
+
char * prompt(char * t, char ** args) {
int sub_cols = 30;
int sub_rows = sub_cols / 2;