Commit graph

241 commits

Author SHA1 Message Date
Yorhel
d213ae3bb9 Minor improvements to chdir on browsing
- Don't do the chdir when working on an imported file; To keep with the
  spirit that ncdu doesn't attempt to correlate the imported fs with the
  actual fs.
- Call path_chdir() instead of chdir(), the former can handle infinitely
  long paths. (And, more pragmatically, doesn't generate a warning with
  -Wunused-result enabled).

(That said, path_chdir() is fairly inefficient and could use some
improvements)
2017-01-06 18:48:47 +01:00
Chris West (Faux)
20e1fbce46 chdir to the displayed directory
This isn't necessary for the actual operation of ncdu,
but helps tools like screen/tmux open a new terminal in the currently
viewed directory, which is what people probably expect.
2017-01-06 18:38:52 +01:00
Yorhel
936a9446a8 Add -rr option to disable shell spawning
Fixes https://dev.yorhel.nl/ncdu/bug/94
2017-01-06 18:35:30 +01:00
Yorhel
e4f211db68 Year + version bump for 1.12 2016-08-24 20:59:58 +02:00
Tillmann Karras
dcf08bd8bb Consistently print errors to stderr 2016-01-12 20:00:24 +01:00
piyo
cf9145a783 Confirm quit action during scan only when --confirm-quit 2015-09-23 15:44:32 +09:00
piyo
bfff5762e0 Confirm quit action during scan (reuse existing scan dialog). 2015-09-23 15:44:32 +09:00
Max Klinger
c035c3859c implement confirmation switch 2015-09-20 07:58:07 +02:00
Max Klinger
5aeb4f9b09 change wording when deleting empty directory 2015-09-20 07:54:43 +02:00
Yorhel
078369b8c5 quit.c: Remove two unused variables 2015-09-20 07:53:05 +02:00
piyo
e96cc36d56 Confirm quit action with a cancellable dialog. 2015-09-19 12:36:38 +09:00
Robin Schneider
682add5eae Added backspace key in browser window to back keys (one directory up). 2015-08-03 21:16:19 +02:00
Øyvind A. Holm
7be85679c5 Check for NCDU_SHELL environment variable when spawning shell
Check if the environment variable NCDU_SHELL is defined before the SHELL
variable is checked. This makes it possible to specify a program to
execute when 'b' is pressed. Setting SHELL to for example "mc" (Midnight
Commander) didn't work because mc already uses SHELL to execute
commands.
2015-06-02 04:06:09 +02:00
Yorhel
29f347c19c shell.c: Include sys/wait.h
Required for the W* macros on OpenBSD. Reported by Brian Callahan.
2015-04-07 10:39:46 +02:00
Yorhel
9e549b0319 Disable shell feature on imported file
Can cause too much confusion otherwise; The imported data may not at all
reflect the filesystem that ncdu has access to.
2015-04-05 10:03:32 +02:00
Yorhel
777db9a5df Minor fixes to new shell feature
The check for the system() exit status is slightly problematic, because
bash returns the status code of the last command it executed. I've set
it to only check for status code 127 now (command not found) in order to
at least provide a message when the $SHELL command can't be found. This
error can still be triggered when executing a nonexistant command within
the shell and then exiting.
2014-12-14 15:13:38 +01:00
Thomas Jarosch
a25e5f80a5 Add ability to spawn shell
Key 'b' in the browse window spawns a shell in the current directoy.

We first check the $SHELL environment variable of the user for the preferred
shell interpreter. If it's not set, we fall back to the compile time
configured default shell (usually /bin/bash).

Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
2014-12-14 09:16:27 +01:00
Yorhel
ce18bc392e "Press q to continue" -> "Press q to close"
As per http://dev.yorhel.nl/ncdu/bug/55
2014-08-03 15:15:39 +02:00
Yorhel
79213f0d63 Support building without locale.h
Slightly modified patch from Gianluigi Tiesi.
http://dev.yorhel.nl/ncdu/bug/47
2014-04-13 08:35:46 +02:00
Yorhel
efece12cfe Copyright year update 2014-01-22 15:28:20 +01:00
Yorhel
fe932c7b22 Add support for browsing empty directories
Turns out that being able to open an empty directory actually has its
uses:
- If you delete the last file in a directory, you now won't be directed
  to the parent directory anymore. This allows keeping 'd' pressed
  without worrying that you'll delete stuff outside of the current dir.
  (This is the primary motivation for doing this)
- You can now scan and later refresh an empty directory, as suggested by
  #2 in http://dev.yorhel.nl/ncdu/bug/15
2014-01-22 13:30:51 +01:00
Yorhel
3f29a46f3a Fix offset of parent-dir item 2014-01-22 12:44:51 +01:00
Thomas Klausner
34690e4b51 util.c: Make sure to include stdarg.h
Fixes build on NetBSD.
2013-08-23 13:52:39 +02:00
Yorhel
532c32c884 Add space between file size and unit suffix
As per http://dev.yorhel.nl/ncdu/bug/31
2013-07-23 10:38:37 +02:00
Yorhel
0e9e6d511a Add --si flag for base 10 prefixes
This is a slightly modified patch contributed at

  http://dev.yorhel.nl/ncdu/bug/35
2013-07-23 10:33:24 +02:00
Yorhel
30c0b2db00 browser.c: Fix "Toggle dirs before files when sorting" functionality
This has apparently been broken since version 1.7 (v1.6-7-g5db9c2a to be
precise), yet NOBODY TOLD ME!? :-(

The OSS community has left me in despair!
2013-06-05 16:56:46 +02:00
Yorhel
0a4ad63591 Fix a few compiler warnings
Most of which made sense.
2013-05-09 16:24:15 +02:00
Yorhel
09c444753a Move khash & yopt to deps/
Both microlibraries come from another source, and are not maintained as
part of ncdu. This separation of src/ and deps/ makes the relation more
clear.
2013-04-25 08:11:39 +02:00
Yorhel
bc8ccc959d dir_scan.c: Reset directory sizes when excluded by a CACHEDIR.TAG
Tiny bug fix: The size of an excluded directory entry itself should not
be counted, either. This is consistent with what you'd expect: A cache
directory with thousands of files can easily take up several megabytes
for the dir entry - but from the perspective of a backup system that
recognizes cache dirs - the dir is empty, and therefore shouldn't take
any extra space at all.
2013-04-12 19:43:29 +02:00
Yorhel
01f36e1beb Use /**/ comments + minor style change 2013-04-12 19:37:40 +02:00
Petr Pudlak
dc316e26f5 has_cachedir_tag: Keep statuc allocated buffer for paths. 2013-04-12 18:16:15 +02:00
Petr Pudlak
1b1982e9af Let has_cachedir_tag use malloc instead of a buffer on the stack. 2013-04-12 16:21:16 +02:00
Petr Pudlak
2784d82a9e CACHEDIR.TAG - improve code style and the name of the parameter.
Use a macro instead of the global constant `cachedir_tag_signature`.
Use `memcmp` instead of `strncmp`.
Add `has_cachedir_tag` to exclude.h.

(See http://dev.yorhel.nl/ncdu/bug/30)
2013-04-12 14:53:33 +02:00
Petr Pudlak
3def47c331 Add CACHEDIR.TAG support.
A new command line parameter allows to filter out directories containing
the proper `CACHEDIR.TAG` file.
See http://www.brynosaurus.com/cachedir/
2013-04-10 16:50:57 +02:00
Chris West (Faux)
c4f5f370ac use the locale's thousand seperator, if available 2013-01-13 12:42:28 +00:00
Chris West (Faux)
fdd86924e5 'C' sorts by items 2013-01-13 12:42:28 +00:00
Chris West (Faux)
cfcac262d1 'c' to show child item counts 2013-01-13 12:42:28 +00:00
Yorhel
28c0b58c2e Clip directory sizes to make sure they are positive
I realized that I used addparentstats() with negative values when
removing stuff, so it had to be done this way (without rewriting
everything). It's a simple solution, anyway.
2012-11-22 13:47:10 +01:00
Yorhel
ad84603bee Clip directory sizes to fit in a signed 64bit integer
This mostly avoids the issue of getting negative sizes. It's still
possible to get a negative size after refresh or deletion, I'll get to
that in a bit.
2012-11-22 13:33:32 +01:00
Yorhel
2bc1b3e479 util.c: Fix possible buffer overflow in fillsize() and formatsize()
They should now be able to cope with file sizes in the full (positive)
range of a signed integer, i.e. 0 bytes to 8 EiB minus one byte. The
size calculation of directories, however, may still overflow and cause
negative integers to be passed around. That should be fixed.
2012-11-22 12:42:57 +01:00
Yorhel
7feaeb1483 Abstracted option parsing from option handling
This also adds the possibility to combine short options that expect an
argument, e.g. "-xo <file>" or even "-xo<file>".
2012-09-08 14:38:15 +02:00
Yorhel
eeff908b0c dir_export.c: Add timestamp to meta-data 2012-09-07 09:37:20 +02:00
Yorhel
b6e4092ea7 cli: Use -0,-1,-2 instead of "-u n"
I've no idea for what other purpose I'd use numbered options. This is
much shorter, and can easily be combined with other options (e.g. -rx1).
2012-09-06 14:11:44 +02:00
Yorhel
aad479a19a Disallow refresh/delete after import + provide visual feedback
It's kinda annoying how you need to confirm the messages. I'd prefer
having some status bar where messages are automatically removed after a
short timeout or something. But that's more work, and for the few
cases where feedback is necessary this'll work fine, too.
2012-09-06 13:16:54 +02:00
Yorhel
267de619ba dir_import.c: Only call input_handle() once every 32 read items
Some measurements importing a gzip-compressed file (zcat .. | ncdu -f -)
containing a bit under 6 million items and a few choices of how often to
call input_handle():

Called on every item:

  real    0m13.745s
  user    0m12.576s
  sys     0m4.566s

Called on every 8 items:

  real    0m7.932s
  user    0m9.636s
  sys     0m1.623s

Called on every 16 items:

  real    0m7.559s
  user    0m9.553s
  sys     0m1.323s

Called on every 32 items:

  real    0m7.279s
  user    0m9.353s
  sys     0m1.277s

Called on every 64 items:

  real    0m7.166s
  user    0m9.389s
  sys     0m1.117s

Called on every 256 items:

  real    0m7.073s
  user    0m9.439s
  sys     0m1.027s

32 seemed like a good compromise.
2012-09-06 12:49:20 +02:00
Yorhel
fdc614126a browser.c: Display [imported] indication in title 2012-09-06 12:32:41 +02:00
Yorhel
37f390d241 dir_import.c: Don't throw an error when user aborted import 2012-09-06 09:47:00 +02:00
Yorhel
7d2cb84e70 Display "Loading..." instead of "Scanning..." when importing a file 2012-09-06 09:45:52 +02:00
Yorhel
c298e32942 Check that stdin is a tty when initializing ncurses 2012-09-06 09:33:58 +02:00
Yorhel
38b2c8f012 dir_import.c: Various fixes
- errors in item() didn't propagate properly
- empty [] and {} values weren't allowed
- fractional numbers weren't allowed
- parsing of escaped characters didn't ensure that enough data was in
  the buffer
- E() didn't propagate errors properly in all cases

I'll do some more testing later on, but the current code seems to be
working quite well already.
2012-09-05 17:46:44 +02:00