Skip to content

Commit 4a12b23

Browse files
committed
Fix patch build error
1 parent c5e1b20 commit 4a12b23

1 file changed

Lines changed: 144 additions & 33 deletions

File tree

patches/namefirst/mainline.diff

Lines changed: 144 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
# Author: Luuk van Baal
55

66
diff --git a/src/nnn.c b/src/nnn.c
7-
index f8a2c58..9802a1f 100644
7+
index 19ebc2cf..42a0a6b0 100644
88
--- a/src/nnn.c
99
+++ b/src/nnn.c
10-
@@ -394,6 +394,10 @@ typedef struct {
10+
@@ -430,6 +430,10 @@ typedef struct {
1111
} session_header_t;
1212
#endif
1313

@@ -18,11 +18,12 @@ index f8a2c58..9802a1f 100644
1818
/* GLOBALS */
1919

2020
/* Configuration, contexts */
21-
@@ -1070,10 +1074,12 @@ static char *getpwname(uid_t uid)
21+
@@ -1175,10 +1179,13 @@ static char *getpwname(uid_t uid)
2222
static char *namecache;
2323

2424
if (uidcache != uid) {
25-
+ if (dtls.maxuidln && !dtls.printguid) dtls.printguid = 1;
25+
+ if (dtls.maxuidln && !dtls.printguid)
26+
+ dtls.printguid = 1;
2627
struct passwd *pw = getpwuid(uid);
2728

2829
uidcache = uid;
@@ -31,11 +32,12 @@ index f8a2c58..9802a1f 100644
3132
}
3233

3334
return namecache ? namecache : xitoa(uid);
34-
@@ -1085,10 +1091,12 @@ static char *getgrname(gid_t gid)
35+
@@ -1190,10 +1197,13 @@ static char *getgrname(gid_t gid)
3536
static char *grpcache;
3637

3738
if (gidcache != gid) {
38-
+ if (dtls.maxgidln && !dtls.printguid) dtls.printguid = 1;
39+
+ if (dtls.maxgidln && !dtls.printguid)
40+
+ dtls.printguid = 1;
3941
struct group *gr = getgrgid(gid);
4042

4143
gidcache = gid;
@@ -44,7 +46,7 @@ index f8a2c58..9802a1f 100644
4446
}
4547

4648
return grpcache ? grpcache : xitoa(gid);
47-
@@ -3834,14 +3842,13 @@ static void resetdircolor(int flags)
49+
@@ -4346,14 +4356,13 @@ static void resetdircolor(int flags)
4850
* Max supported str length: NAME_MAX;
4951
*/
5052
#ifdef NOLC
@@ -62,7 +64,7 @@ index f8a2c58..9802a1f 100644
6264
{
6365
wchar_t * const wbuf = (wchar_t *)g_buf;
6466
wchar_t *buf = wbuf;
65-
@@ -3866,7 +3873,7 @@ static wchar_t *unescape(const char *str, uint_t maxcols)
67+
@@ -4378,7 +4387,7 @@ static wchar_t *unescape(const char *str, uint_t maxcols)
6668
++buf;
6769
}
6870

@@ -71,7 +73,107 @@ index f8a2c58..9802a1f 100644
7173
}
7274

7375
static off_t get_size(off_t size, off_t *pval, int comp)
74-
@@ -4228,38 +4235,13 @@ static void printent(int pdents_index, uint_t namecols, bool sel)
76+
@@ -4627,9 +4636,10 @@ static uchar_t get_color_pair_name_ind(const struct entry *ent, char *pind, int
77+
}
78+
79+
#ifndef NOHIGHLIGHT_FILTER
80+
-static void printent_name(const struct entry *ent, uint_t namecols, bool sel)
81+
+static size_t printent_name(const struct entry *ent, uint_t namecols, bool sel)
82+
{
83+
char * const fltr = g_ctx[cfg.curctx].c_fltr;
84+
+ size_t namelen;
85+
86+
/* If there's a filter string, highlight matches */
87+
if (fltr[1]) {
88+
@@ -4644,15 +4654,18 @@ static void printent_name(const struct entry *ent, uint_t namecols, bool sel)
89+
if (cfg.regex) {
90+
/* For regex, we don't highlight - just print normally */
91+
#ifndef NOLC
92+
- addwstr(unescape(ent->name, namecols));
93+
+ namelen = unescape(ent->name, namecols);
94+
+ addwstr((wchar_t *)g_buf);
95+
#else
96+
- addstr(unescape(ent->name, MIN(namecols, ent->nlen) + 1));
97+
+ namelen = unescape(ent->name, MIN(namecols, ent->nlen) + 1);
98+
+ addstr((char *)g_buf);
99+
#endif
100+
} else if (cfg.fuzzy) {
101+
/* Get fuzzy match positions */
102+
fuzzy_match_positions(fltr + 1, ent->name, matched);
103+
#ifndef NOLC
104+
- wchar_t * const wbuf = unescape(ent->name, namecols);
105+
+ namelen = unescape(ent->name, namecols);
106+
+ wchar_t * const wbuf = (wchar_t *)g_buf;
107+
uint_t col = 0;
108+
for (wchar_t *p = wbuf; *p && col < namecols; ++p, ++col) {
109+
if (matched[col]) {
110+
@@ -4665,7 +4678,8 @@ static void printent_name(const struct entry *ent, uint_t namecols, bool sel)
111+
}
112+
#else
113+
/* Non-wide character version for fuzzy highlighting */
114+
- const char *name = unescape(ent->name, MIN(namecols, ent->nlen) + 1);
115+
+ namelen = unescape(ent->name, MIN(namecols, ent->nlen) + 1);
116+
+ const char *name = (char *)g_buf;
117+
for (uint_t i = 0; (i < namecols) && name[i]; ++i) {
118+
if (matched[i]) {
119+
attron(match_attrs);
120+
@@ -4680,7 +4694,8 @@ static void printent_name(const struct entry *ent, uint_t namecols, bool sel)
121+
/* String match - highlight the substring */
122+
string_match_positions(fltr + 1, ent->name, matched);
123+
#ifndef NOLC
124+
- wchar_t * const wbuf = unescape(ent->name, namecols);
125+
+ namelen = unescape(ent->name, namecols);
126+
+ wchar_t * const wbuf = (wchar_t *)g_buf;
127+
uint_t col = 0;
128+
for (wchar_t *p = wbuf; *p && col < namecols; ++p, ++col) {
129+
if (matched[col]) {
130+
@@ -4693,7 +4708,8 @@ static void printent_name(const struct entry *ent, uint_t namecols, bool sel)
131+
}
132+
#else
133+
/* Non-wide character version for string highlighting */
134+
- const char *name = unescape(ent->name, MIN(namecols, ent->nlen) + 1);
135+
+ namelen = unescape(ent->name, MIN(namecols, ent->nlen) + 1);
136+
+ const char *name = (char *)g_buf;
137+
for (uint_t i = 0; (i < namecols) && name[i]; ++i) {
138+
if (matched[i]) {
139+
attron(match_attrs);
140+
@@ -4708,22 +4724,30 @@ static void printent_name(const struct entry *ent, uint_t namecols, bool sel)
141+
} else {
142+
/* No filter or filter not active - print normally */
143+
#ifndef NOLC
144+
- addwstr(unescape(ent->name, namecols));
145+
+ namelen = unescape(ent->name, namecols);
146+
+ addwstr((wchar_t *)g_buf);
147+
#else
148+
- addstr(unescape(ent->name, MIN(namecols, ent->nlen) + 1));
149+
+ namelen = unescape(ent->name, MIN(namecols, ent->nlen) + 1);
150+
+ addstr((char *)g_buf);
151+
#endif
152+
}
153+
+
154+
+ return namelen;
155+
}
156+
#else
157+
/* Without highlight support, just print the name normally */
158+
-static inline void printent_name(const struct entry *ent, uint_t namecols, bool sel)
159+
+static inline size_t printent_name(const struct entry *ent, uint_t namecols, bool sel)
160+
{
161+
(void)sel; /* Suppress unused parameter warning */
162+
#ifndef NOLC
163+
- addwstr(unescape(ent->name, namecols));
164+
+ size_t namelen = unescape(ent->name, namecols);
165+
+ addwstr((wchar_t *)g_buf);
166+
#else
167+
- addstr(unescape(ent->name, MIN(namecols, ent->nlen) + 1));
168+
+ size_t namelen = unescape(ent->name, MIN(namecols, ent->nlen) + 1);
169+
+ addstr((char *)g_buf);
170+
#endif
171+
+
172+
+ return namelen;
173+
}
174+
#endif
175+
176+
@@ -4731,38 +4755,14 @@ static void printent(int pdents_index, uint_t namecols, bool sel)
75177
{
76178
const struct entry *ent = &pdents[pdents_index];
77179
char ind = '\0';
@@ -99,7 +201,8 @@ index f8a2c58..9802a1f 100644
99201
- if (attrs)
100202
- attroff(attrs);
101203
- }
102-
+ int attrs = 0, namelen;
204+
+ int attrs = 0;
205+
+ size_t namelen;
103206

104207
if (g_state.showlines) {
105208
ptrdiff_t rel_num = pdents_index - cur;
@@ -111,16 +214,12 @@ index f8a2c58..9802a1f 100644
111214
uchar_t color_pair = get_color_pair_name_ind(ent, &ind, &attrs);
112215

113216
addch((ent->flags & FILE_SELECTED) ? '+' | A_REVERSE | A_BOLD : ' ');
114-
@@ -4284,15 +4266,40 @@ static void printent(int pdents_index, uint_t namecols, bool sel)
217+
@@ -4786,12 +4786,44 @@ static void printent(int pdents_index, uint_t namecols, bool sel)
218+
if (!ind)
115219
++namecols;
116220

117-
#ifndef NOLC
118-
- addwstr(unescape(ent->name, namecols));
119-
+ addwstr((namelen = unescape(ent->name, namecols), (wchar_t *)g_buf));
120-
#else
121-
- addstr(unescape(ent->name, MIN(namecols, ent->nlen) + 1));
122-
+ addstr((namelen = unescape(ent->name, MIN(namecols, ent->nlen) + 1), (char *)g_buf));
123-
#endif
221+
- printent_name(ent, namecols, sel);
222+
+ namelen = printent_name(ent, namecols, sel);
124223

125224
- if (attrs)
126225
+ if (!sel && attrs)
@@ -137,9 +236,16 @@ index f8a2c58..9802a1f 100644
137236
+ attron(attrs);
138237
+ if (!g_state.oldcolor && (type == S_IFDIR || (type == S_IFLNK && ent->flags & DIR_OR_DIRLNK)))
139238
+ attroff(A_BOLD);
140-
+ int sizelen = (type == S_IFREG || type == S_IFDIR) ? xstrlen(size = coolsize(cfg.blkorder ? ent->blocks << blk_shift : ent->size)) : 1;
141-
+ printw("%*c%*s%s%s", 1 + MIN(namecols, dtls.maxnameln + (uint_t)(ind ? 0 : 1)) - namelen, ' ',
142-
+ dtls.maxsizeln - sizelen, "", size ? size : (type = (uchar_t)get_detail_ind(ent->mode), (char *)&type), " ");
239+
+ int sizelen;
240+
+ if (type == S_IFREG || type == S_IFDIR) {
241+
+ size = coolsize(cfg.blkorder ? ent->blocks << blk_shift : ent->size);
242+
+ sizelen = xstrlen(size);
243+
+ } else
244+
+ sizelen = 1;
245+
+ printw("%*c%*s%s%s",
246+
+ 1 + MIN(namecols, dtls.maxnameln + (uint_t)(ind ? 0 : 1)) - (int)namelen, ' ',
247+
+ dtls.maxsizeln - sizelen, "", size ? size
248+
+ : (type = (uchar_t)get_detail_ind(ent->mode), (char *)&type), " ");
143249
+#ifndef NOUG
144250
+ if (g_state.uidgid && dtls.printguid) {
145251
+ addstr(getpwname(ent->uid));
@@ -155,7 +261,7 @@ index f8a2c58..9802a1f 100644
155261
}
156262

157263
/**
158-
@@ -6527,26 +6534,19 @@ static void statusbar(char *path)
264+
@@ -7670,26 +7702,19 @@ static void statusbar(char *path)
159265
tocursor();
160266
}
161267

@@ -185,7 +291,7 @@ index f8a2c58..9802a1f 100644
185291
}
186292

187293
/* 2 columns for preceding space and indicator */
188-
@@ -6412,8 +6411,6 @@ static void draw_line(int ncols)
294+
@@ -7728,8 +7753,6 @@ static void draw_line(int ncols)
189295
/* Must reset e.g. no files in dir */
190296
if (dir)
191297
attroff(COLOR_PAIR(cfg.curctx + 1) | A_BOLD);
@@ -194,29 +300,34 @@ index f8a2c58..9802a1f 100644
194300
}
195301

196302
static void redraw(char *path)
197-
@@ -6521,6 +6518,21 @@ static void redraw(char *path)
198-
199-
onscreen = MIN(onscreen + curscroll, ndents);
303+
@@ -7837,6 +7860,26 @@ static void redraw(char *path)
304+
int onscreen = MIN(ONSCREEN + curscroll, ndents);
305+
int len = scanselforpath(path, FALSE);
200306

201307
+ if (cfg.showdetail) {
202308
+ ushort_t lenbuf = dtls.maxnameln = dtls.maxsizeln = dtls.maxuidln = dtls.maxgidln = dtls.printguid = 0;
203309
+ for (i = curscroll; i < onscreen; ++i) {
204-
+ if ((lenbuf = pdents[i].nlen - 1) > dtls.maxnameln) dtls.maxnameln = lenbuf;
205-
+ if ((lenbuf = xstrlen(coolsize(cfg.blkorder ? pdents[i].blocks << blk_shift : pdents[i].size))) > dtls.maxsizeln) dtls.maxsizeln = lenbuf;
310+
+ if ((lenbuf = pdents[i].nlen - 1) > dtls.maxnameln)
311+
+ dtls.maxnameln = lenbuf;
312+
+ if ((lenbuf = xstrlen(coolsize(cfg.blkorder ? pdents[i].blocks << blk_shift : pdents[i].size))) > dtls.maxsizeln)
313+
+ dtls.maxsizeln = lenbuf;
206314
+#ifndef NOUG
207315
+ if (g_state.uidgid) {
208-
+ if ((getpwname(pdents[i].uid), dtls.uidln) > dtls.maxuidln) dtls.maxuidln = dtls.uidln;
209-
+ if ((getgrname(pdents[i].gid), dtls.gidln) > dtls.maxgidln) dtls.maxgidln = dtls.gidln;
316+
+ if ((getpwname(pdents[i].uid), dtls.uidln) > dtls.maxuidln)
317+
+ dtls.maxuidln = dtls.uidln;
318+
+ if ((getgrname(pdents[i].gid), dtls.gidln) > dtls.maxgidln)
319+
+ dtls.maxgidln = dtls.gidln;
210320
+ }
211321
+#endif
212322
+ }
213-
+ dtls.maxentln = dtls.maxnameln + dtls.maxsizeln + (dtls.printguid ? (dtls.maxuidln + dtls.maxgidln + 29) : 26);
323+
+ dtls.maxentln = dtls.maxnameln + dtls.maxsizeln
324+
+ + (dtls.printguid ? (dtls.maxuidln + dtls.maxgidln + 29) : 26);
214325
+ }
215326
+
216327
ncols = adjust_cols(ncols);
217328

218-
int len = scanselforpath(path, FALSE);
219-
@@ -6551,7 +6563,7 @@ static void redraw(char *path)
329+
/* Print listing */
330+
@@ -7865,7 +7908,7 @@ static void redraw(char *path)
220331
#endif
221332
}
222333

0 commit comments

Comments
 (0)