Commit graph

1802 commits

Author SHA1 Message Date
NRK f8ee991254 xstrdup: use memcpy
the length is already known, so memcpy should be faster than xstrsncpy.
2022-08-16 19:31:18 +06:00
NRK 29a5992dee use standard C11 alignas
nnn source code already uses C11, which introduced `_Alignas` [^0] as a
standardized alternative to __attribute__((aligned)).

there are no other usage of `__attribute__` in the nnn source code, so
in theory this should make things more portable across compilers.

also removes an unnecessary usage of `alloca()` with an aligned constant
sized buffer instead.

[^0]: https://en.cppreference.com/w/c/language/_Alignas
2022-08-11 11:31:35 +06:00
KlzXS 65dec55e23
Improved chunk allocation logic
Found memory deallocation edge case

Update and move chunk limit check

Generalize maximum size of input

Remove hard-coded values

Remove superfluous check before free

Let the kernel deal with extra data

Handle signals while reading

Conform to the manpage

Make CI happy

use `size_t` instead of `ssize_t`

`ssize_t` was used just so `--i` when `i` was zero would become -1
instead of SIZE_MAX. for looping through something in reverse order, the
"goes-to" operator (`-->`) can be used instead which doesn't require `i`
to be signed anymore.

remove useless blank line

use a normal loop

don't see any reason why freeing in reverse order would've been needed.

Co-authored-by: N-R-K <nrk@disroot.org>
2022-08-03 17:38:19 +02:00
Arun Prakash Jana ab9d8bee89
Fix #1449: ^N not working 2022-08-01 23:41:04 +05:30
Arun Prakash Jana a7ebc7858a
Key 'J' to jump to entry number or relative offset 2022-07-31 18:54:47 +05:30
Arun Prakash Jana e8acae3274
Continue listing when max files/size is exceeded 2022-07-31 12:49:42 +05:30
Arun Prakash Jana 21eebbb003
File list mode changes
- support listing maximum 16K files
- check if target directory exists before directory tree creation
  in most of the cases many files will be under the same directory
- make frequently used function 'inline'
2022-07-31 11:11:32 +05:30
Arun Prakash Jana e73b57c78a
Option -B to use bsdtar as archive tool 2022-07-29 22:35:43 +05:30
Arun Prakash Jana b76cea3a34 Revert "Patch #1386: make bsdtar the default archive handler"
This reverts commit e104b749be.
2022-07-29 22:14:00 +05:30
Arun Prakash Jana 83825a7d11
Fix rm prompt
Esc - cancels the search
y/Y - adds the force option
n/N/any other key - prompts for every file
2022-07-28 19:38:55 +05:30
N-R-K f618b78866
Makefile: more robust generated header tracking (#1439)
give each generated header it's own unique file so that it's not
possible to try and build `O_EMOJI=1` with the generated header for
`O_NERD=1`.
2022-07-26 20:26:49 +05:30
Arun Prakash Jana 0988268a61
Prepare for release v4.6 Absinthe 2022-07-26 19:28:44 +05:30
Arun Prakash Jana f415924c7e
Remove redundant spaces 2022-07-24 20:07:27 +05:30
NRK fe9c1bbb3a icons: use a compact array
a lot of the extension use the same icon. this can be exploited via
having an array with all the unique icons and then storing a single byte
index into the unique array.

when using `O_EMOJI` this results in around ~1.7KiB drop in the total
table size. `O_NERD` and `O_ICONS` get roughly ~0.5KiB savings.
2022-07-24 16:24:11 +06:00
Arun Prakash Jana 197717ce68
Enable hidden when opening a hidden file 2022-07-23 09:33:11 +05:30
NRK 3b09fd1c75 Revise and optimize icons handling
This pretty much reworks the entire icon system. Some notable changes:

* The extensions are put into a statically generated hash-table instead
  of a sorted array. We use Robin-Hood insertion to reduce the max probe
  length. Currently we need to probe only 2 slots for `O_EMOJI` and only
  3 for `O_NERD`/`O_ICONS`.
* I've opted not to use a perfect-hash since the perfect hashes
  generated by [`gperf`](https://www.gnu.org/software/gperf) used some
  huge lookup table. The hash function also wasn't as minimal as I'd
  like.
* Colors are now using X-Macros. This should speed up startup since we
  don't have to search `icons_ext` linearly to find unique colors.
* The hash-table generator outputs a more space optimized `struct
  icon_pair` using a char array instead of char pointer. This brings
  down the binary size from `145KiB` when using `O_NERD` down to
  `137KiB`.
* Some unnecessary duplication and indirection has been reduced by using
  the `ICON_STR()` macro.
2022-07-22 17:08:42 +06:00
Arun Prakash Jana d95755cce1
Use unget_wch() 2022-07-21 17:51:20 +05:30
Arun Prakash Jana 12b5416b2c
Fix #1428: handle unicode keybinds 2022-07-20 20:09:34 +05:30
Arun Prakash Jana a937265833
Reduce get_wch() array length and initialization. 2022-07-20 18:49:24 +05:30
Arun Prakash Jana b75a22f72d
Minor improvements 2022-07-18 18:28:16 +05:30
Arun Prakash Jana b752744ca0
Show volume used information in help 2022-07-18 18:28:16 +05:30
Arun Prakash Jana db7cb4da1e
Fix double order chars on filter case match change 2022-07-18 18:28:15 +05:30
NRK 7121a6fe43
Fix build break 2022-06-30 22:26:17 +05:30
NRK 744e9aaf70 initialize to zero instead of using memset
reduces some unncessary code. and when initializing larger objects,
compilers (gcc and clang at least) typically tend to compile it down to
a memset anyways.
2022-06-30 00:27:00 +06:00
NRK 1d347b1ce9 cfg: use designated initializer
anything not explicitly initialized will be implicitly initialized to
zero. this makes things more robust since comments are not checked by
the compiler and can be incorrect.
2022-06-30 00:26:36 +06:00
NRK 2df0cbd08b fix incorrect comment
xextension() uses xmemrchr to find '.'
2022-06-30 00:25:44 +06:00
Arun Prakash Jana 52f4ee5aee
Fix build break 2022-06-28 23:17:23 +05:30
NRK eb66cb5d11 account for realpath failure
realpath may fail, in which case fallback to mkpath.
2022-06-20 21:49:41 +06:00
Arun Prakash Jana 2130e1b33a
Use the term auto-advance instead of auto-jump
There's no jump.
2022-06-15 20:04:56 +05:30
Arun Prakash Jana d898d174f5
Fix docs, allow / to enable filter inside bookmarks 2022-06-14 17:36:17 +05:30
Arun Prakash Jana 581e629c20
Enable automatic dir entry on unique filer match 2022-06-14 13:49:41 +05:30
Arun Prakash Jana 56f96c3d0a
Enable filtering in plugins/bookmarks dirs
Enable auto-dir entry on filter mode
2022-06-14 13:10:54 +05:30
Arun Prakash Jana 51f2fde0e6
Revert #1398: Go to prev dir on bookmark key repeat
Reasons:

1. `b` is not a special key and will be interpreted as a filter
2. with this change pressing the standard `-` inside a symlinked
   bookmark takes back to the bookmarks directory. This deviates
   from the regular bookmarks behaviour.
2022-06-14 12:51:42 +05:30
Luuk van Baal 5b5a62bb0d
Fix false positive selbm 2022-06-13 04:07:40 +02:00
Arun Prakash Jana 19b2ea324a
Skip redundant getutil() call 2022-06-11 21:32:16 +05:30
Arun Prakash Jana 03fc3b99c5
Add informative comment 2022-06-11 21:25:03 +05:30
Arun Prakash Jana e104b749be
Patch #1386: make bsdtar the default archive handler 2022-06-11 15:09:40 +05:30
Arun Prakash Jana 49f21ae013
Fix segfault when last dir is not set 2022-06-11 06:05:57 +05:30
Göran Gustafsson 4baee859f8
Go to last dir on bookmark key repeat 2022-06-10 21:18:02 +05:30
Luuk van Baal 6fc8f63c0d
Disable e on explorer mode 2022-06-08 21:01:03 +02:00
Arun 88306e2d9c
Merge pull request #1391 from ggustafsson/feat/usage-stdout-fix
Print usage info to stdout instead of stderr
2022-06-08 02:54:27 +05:30
Göran Gustafsson 5023abe2df Print usage info to stdout instead of stderr 2022-06-07 20:33:05 +02:00
Göran Gustafsson 93db9bb2be Use -x flag with BSD stat 2022-06-05 22:13:23 +02:00
NRK 5ae3891ee5 fix incorrect usage of sizeof
`sizeof(cmd)` here would give the sizeof a char pointer, not the sizeof
the cp/mv array.
2022-06-02 15:44:31 +06:00
Arun Prakash Jana 10e2d37d0f Revert "Enter type-to-nav for bookmarks dir"
This reverts commit 8cdeddeb4a.
2022-05-30 22:20:45 +05:30
Arun Prakash Jana 85be28c019 Revert "Fix reverting filtermode on empty directory"
This reverts commit 4337214f50.
2022-05-30 22:19:41 +05:30
Arun Prakash Jana d618922177
Get rid of rundir 2022-05-29 22:32:54 +05:30
Arun Prakash Jana 4337214f50
Fix reverting filtermode on empty directory 2022-05-29 20:17:55 +05:30
Arun Prakash Jana 31a273fdd0
Fix build break 2022-05-29 20:09:33 +05:30
Luuk van Baal 8cdeddeb4a
Enter type-to-nav for bookmarks dir 2022-05-29 13:55:15 +02:00
Arun Prakash Jana 8175571952
Clear runtime states 2022-05-28 23:30:56 +05:30
Arun Prakash Jana 3a50be93fd
Fix #1369: limit symlinked bookmarks to bookmarks dir 2022-05-28 23:14:07 +05:30
Arun Prakash Jana 8d83af811f
Fix #1369: open target of symlinked bookmark 2022-05-28 05:54:55 +05:30
NRK ba72fca69a check for some alloc failures 2022-05-12 18:26:48 +06:00
Desmond Kabus b45be9bc5b
Add build option EMOJI for Unicode emoji as file icons 2022-05-10 20:31:11 +05:30
Arun Prakash Jana 18a6a010cf
Fix #1355: interpret suffix $nnn when paging 2022-05-10 19:46:19 +05:30
Arun Prakash Jana 3f58f6111c Prepare for release v4.5 Cachaça 2022-04-26 18:34:24 +05:30
Arun Prakash Jana cc965d1c2d
Use bold forward arrowhead for current 2022-04-26 04:26:01 +05:30
Arun Prakash Jana dc16ca2340
Add 2 spaces after icons for better visibility 2022-04-26 03:59:12 +05:30
Arun Prakash Jana 6b9f8f3666
Fix #1345: allow symlink name '@' in single file case 2022-04-20 20:20:25 +05:30
Arun Prakash Jana be4460c1da
Handle broken window if started in type-to-nav 2022-04-16 18:48:52 +05:30
Arun Prakash Jana eb42f7a948
Bind ^J with toggle auto-jump on open 2022-04-16 18:04:09 +05:30
Arun Prakash Jana 2c5cb4c5aa
Replace ^J with + to (un)select
^J has been reported as out of place several times.
As `+` is used as the seleciton marker, it makes more sense.
2022-04-16 17:04:53 +05:30
NRK d0bf2abb37 consistently use ELEMENTS macro
+ some small white-space fixes
2022-04-12 22:30:22 +06:00
Arun Prakash Jana d66492ac10 Show reverse timestamp for young entries
Show timestamps for entries modified/created within 5 minutes in
reverse.

Signed-off-by: Arun Prakash Jana <engineerarun@gmail.com>
2022-04-02 10:15:14 +05:30
Arun 81226db24e
Merge pull request #1330 from N-R-K/prompt_clearsel
native prompt: clear selection on successful operation
2022-03-24 03:05:47 +05:30
NRK 72ecf6c4b8 native prompt: clear selection on successful operation
have been using the %j substitution for a bit now, it's quite nice :)
but it's also quite annoying when doing something like

	mv "%j" ./

in this case, the files have been moved but the selection is incorrectly
points to them.

when there's a successful operation made on the selection via the native
prompt, it makes sense to clear the selection.
2022-03-24 00:23:38 +06:00
NRK 9be6c1a5e2 avoid unnessary heap allocation
the binary size shouldn't change since it'll most likely go into the bss
section.
2022-03-22 17:50:54 +06:00
Arun Prakash Jana d38841d5f3
Support n/N to cancel forced rm 2022-03-13 12:37:50 +05:30
Arun Prakash Jana 66639c6053
Fix #1312 2022-02-27 01:44:30 +05:30
NRK 2fedc92efc export NNN_INCLUDE_HIDDEN to plugins
Closes: https://github.com/jarun/nnn/issues/1308
2022-02-22 17:40:44 +06:00
NRK 799b8fd378 don't leak inotify_fd to plugins
Closes: https://github.com/jarun/nnn/issues/1291

Co-authored-by: Daniel Eklöf <daniel@ekloef.se>
2022-02-15 19:05:58 +06:00
Arun Prakash Jana 23b54ba0cf
Open previous active context on context quit 2022-02-06 00:23:45 +05:30
Arun Prakash Jana aa2147f3ef
make option O_NOSORT to disable sort on dir load 2022-01-23 10:52:33 +05:30
Arun Prakash Jana e140e34483
Disable filterinfo if file details enabled 2022-01-22 21:06:57 +05:30
Arun Prakash Jana fe4ea8a029
Update copyright date 2022-01-22 16:02:51 +05:30
NRK 02d6feb9b9 check bound before making access 2021-12-25 12:47:48 +06:00
NRK 1608c8763f avoid having function with unspecified arguments 2021-12-25 12:47:33 +06:00
NRK 78c0d54400 avoid doing arithmetic on void pointer 2021-12-25 12:47:24 +06:00
NRK 62f1004836 upadte the source code according to the docs 2021-12-25 08:37:28 +06:00
Arun Prakash Jana 892e4c0082
Use terms consistent with man page in docs 2021-12-25 08:02:27 +05:30
Arun Prakash Jana 1e8b8d14ff
Remove redundant line 2021-11-27 09:48:21 +05:30
NRK bd8faa2dd8 use patterns[] for archive command string 2021-11-24 22:34:22 +06:00
NRK 578e6d1aaa use a macro for the format string
this makes things slightly more robust as changing the string inside the
macro would automatically change the malloc size.
2021-11-24 22:06:05 +06:00
NRK f7091f78e5 fix the malloc size in get_archive_cmd
since the tr hack was removed in deead97, the format string is no longer
70 chars. also removes unnecessary malloc casting.
2021-11-24 21:53:11 +06:00
Omar Polo fb3d3ab0ef define SED only if not already defined
This allows packagers to set a custom path for sed (gsed may be simply
called `gsed' or `gnu-sed' or ...)
2021-11-24 11:44:50 +01:00
Omar Polo deead97e23 drop unnecessary ifdef __linux__
since nnn requires gsed anyway, why don't use it?
Probably forgot in #1210
2021-11-24 11:40:59 +01:00
Arun Prakash Jana 65eddfe7b9
Prepare for release v4.4 Tequila 2021-11-23 18:33:45 +05:30
Luuk van Baal 1a6d54515b Guard open_with getreadline with for picker
fix luukvbaal/nnn.nvim#25
2021-11-23 13:11:42 +01:00
KlzXS ca9b5e04c7
Enforce %J only at the end of command
Also removes double shell
2021-11-16 00:44:44 +01:00
Arun Prakash Jana f66183937d
More frequent interrupt handling during du
The check is done when traversing directories in preorder i.e before the files
inside are enumerated. Postorder traversal is unwinding, so mostly we are done
with the calculation and finishing off the thread.
2021-11-15 01:11:46 +05:30
KlzXS 48415c5e1c
Revert "malloc() mem those persist through program runtime"
This reverts commit b84ad2d552.
2021-11-08 15:08:12 +01:00
Arun 1508874b5a
Merge pull request #1224 from KlzXS/nmv_list_current
Updated .nmv to support current when NNN_LIST
2021-11-08 13:34:39 +00:00
KlzXS 22096ee0cd
Updated .nmv to support current when NNN_LIST
NNN_LIST now should pass listroo
2021-11-07 22:08:43 +01:00
Arun Prakash Jana b84ad2d552
malloc() mem those persist through program runtime
At exit, the OS should reclaim all the memory, so no explicit free() required.
2021-11-05 07:59:40 +05:30
KlzXS eb769c0de5
Resolve symlinks one level for .nmv when in list mode 2021-11-03 08:37:08 +05:30
Arun Prakash Jana bdbd182c65
Handle plugin selection early 2021-11-01 12:54:47 +05:30
Arun Prakash Jana cffcd655e9
Minor code refactor 2021-10-30 12:26:31 +05:30
Arun Prakash Jana 2a87694e6a
Do not reorder pre-ordered directory on refresh 2021-10-30 12:07:45 +05:30
Arun Prakash Jana 473cd271b5
Position cursor in correct place for long names 2021-10-29 21:27:02 +05:30