dbusev.c + ncdu 1.9 release

This commit is contained in:
Yorhel 2012-09-27 22:17:15 +02:00
parent fa28f26d69
commit 8341fb9341
9 changed files with 265 additions and 98 deletions

View file

@ -1,8 +1,8 @@
=pod
Most of the things I write are simple perl/shell scripts or programs that only
serve the purpose of learning something new. This page is a listing of those I
thought might be of interest to others as well.
I write a lot of miscellaneous little perl/shell scripts and micro-libraries
for the purpose of getting something done. This page is a listing of those I
thought might be of useful to others as well.
=head2 bbcode.c
@ -64,3 +64,15 @@ L<Example output|http://s.blicky.net/2012/ncdc-share-report.html>.
Download: L<0.3|http://p.blicky.net/h25z8>
(L<0.2|http://p.blicky.net/6yx2d>, L<0.1|http://p.blicky.net/ab4lm>).
=head2 dbusev.c
September 2012. This is a small C library to use
L<libdbus|http://www.freedesktop.org/wiki/Software/dbus> with
L<libev|http://software.schmorp.de/pkg/libev.html>. It will register IO
watchers, timeout handlers, a dispatch function and a wakeup function on behalf
of libdbus. You may have to ensure that the right headers are being included in
dbusev.c, in my case the "global.h" does that.
Download: L<dbusev.c|http://g.blicky.net/neoglobster.git/tree/src/dbusev.c> and
L<dbusev.h|http://g.blicky.net/neoglobster.git/tree/src/dbusev.h>.

View file

@ -7,7 +7,7 @@ In theory, the following instructions should work everywhere:
=over
=item * Install the required dependencies: ncurses, bzip2, sqlite3, glib2 and gnutls,
=item * Install the required dependencies: ncurses, bzip2, zlib, sqlite3, glib2 and gnutls,
=item * Download and extract the source tarball from the L<homepage|http://dev.yorhel.nl/ncdc>,

View file

@ -14,7 +14,7 @@ to run in any minimal POSIX-like environment with ncurses installed.
=item Latest version
1.8 ([dllink ncdu-1.8.tar.gz download]
1.9 ([dllink ncdu-1.9.tar.gz download]
- L<changes|http://dev.yorhel.nl/ncdu/changes>
- L<mirror|https://sourceforge.net/projects/ncdu/files/ncdu/>)

View file

@ -1,96 +1,120 @@
1.9 - 2012-09-27
- Added option to dump scanned directory information to a file (-o)
- Added option to load scanned directory information from a file (-f)
- Added multiple scan and load interfaces (-0,-1,-2)
- Fit loading and error windows to the terminal width (#13)
- Fix symlink resolving bug (#18)
- Fix path display when scanning an empty directory (#15)
- Fix hang when terminal is resized to a too small size while loading
- Use top-level automake build
- Remove useless AUTHORS, INSTALL and NEWS files
- ncdu.1 now uses POD as source format
1.8 - 2011-11-03
- Use hash table to speed up hard link detection
- Added read-only option (-r)
- Use KiB instead of kiB (#3399279)
- Use hash table to speed up hard link detection
- Added read-only option (-r)
- Use KiB instead of kiB (#3399279)
1.7 - 2010-08-13
- List the detected hard links in file info window
- Count the size of a hard linked file once for each directory it appears in
- Fixed crash on browsing dirs with a small window size (#2991787)
- Fixed buffer overflow when some directories can't be scanned (#2981704)
- Fixed segfault when launched on a nonexistant directory (#3012787)
- Fixed segfault when root dir only contains hidden files
- Improved browsing performance
- More intuitive multi-page browsing
- Display size graph by default
- Various minor fixes
- List the detected hard links in file info window
- Count the size of a hard linked file once for each directory it appears in
- Fixed crash on browsing dirs with a small window size (#2991787)
- Fixed buffer overflow when some directories can't be scanned (#2981704)
- Fixed segfault when launched on a nonexistant directory (#3012787)
- Fixed segfault when root dir only contains hidden files
- Improved browsing performance
- More intuitive multi-page browsing
- Display size graph by default
- Various minor fixes
1.6 - 2009-10-23
- Implemented hard link detection
- Properly select the next item after deletion
- Removed reliance of dirfd()
- Fixed non-void return in void delete_process()
- Fixed several tiny memory leaks
- Return to previously opened directory on failed recalculation
- Properly display MiB units instead of MB (IEEE 1541 - bug #2831412)
- Link to ncursesw when available
- Improved support for non-ASCII characters
- VIM keybindings for browsing through the tree (#2788249, #1880622)
- Implemented hard link detection
- Properly select the next item after deletion
- Removed reliance of dirfd()
- Fixed non-void return in void delete_process()
- Fixed several tiny memory leaks
- Return to previously opened directory on failed recalculation
- Properly display MiB units instead of MB (IEEE 1541 - bug #2831412)
- Link to ncursesw when available
- Improved support for non-ASCII characters
- VIM keybindings for browsing through the tree (#2788249, #1880622)
1.5 - 2009-05-02
- Fixed incorrect apparent size on directory refresh
- Browsing keys now work while file info window is displayed
- Current directory is assumed when no directory is specified
- Size graph uses the apparent size if that is displayed
- Items are ordered by displayed size rather than disk usage
- Removed switching between powers of 1000/1024
- Don't rely on the availability of suseconds_t
- Correctly handle paths longer than PATH_MAX
- Fixed various bugs related to rpath()
- Major code rewrite
- Fixed line width when displaying 100%
- Fixed incorrect apparent size on directory refresh
- Browsing keys now work while file info window is displayed
- Current directory is assumed when no directory is specified
- Size graph uses the apparent size if that is displayed
- Items are ordered by displayed size rather than disk usage
- Removed switching between powers of 1000/1024
- Don't rely on the availability of suseconds_t
- Correctly handle paths longer than PATH_MAX
- Fixed various bugs related to rpath()
- Major code rewrite
- Fixed line width when displaying 100%
1.4 - 2008-09-10
- Removed the startup window
- Filenames ending with a tidle (~) will now also be hidden with the 'h'-key
- Fixed buffer overflow when supplying a path longer than PATH_MAX (patch by Tobias Stoeckmann)
- Used S_BLKSIZE instead of a hardcoded block size of 512
- Fixed display of disk usage and apparent sizes
- Updated ncdu -h
- Included patches for Cygwin
- Cursor now follows the selected item
- Added spaces around path (debian #472194)
- Fixed segfault on empty directory (debian #472294)
- A few code rewrites and improvements
- Removed the startup window
- Filenames ending with a tidle (~) will now also
be hidden with the 'h'-key
- Fixed buffer overflow when supplying a path longer
than PATH_MAX (patch by Tobias Stoeckmann)
- Used S_BLKSIZE instead of a hardcoded block size of 512
- Fixed display of disk usage and apparent sizes
- Updated ncdu -h
- Included patches for Cygwin
- Cursor now follows the selected item
- Added spaces around path (debian #472194)
- Fixed segfault on empty directory (debian #472294)
- A few code rewrites and improvements
1.3 - 2007-08-05
- Added 'r'-key to refresh the current directory
- Removed option to calculate apparent size: both the disk usage and the apparent size are calculated.
- Added 'a'-key to switch between showing apparent size and disk usage.
- Added 'i'-key to display information about the selected item.
- Small performance improvements
- configure checks for ncurses.h (bug #1764304)
- Added 'r'-key to refresh the current directory
- Removed option to calculate apparent size: both
the disk usage and the apparent size are calculated.
- Added 'a'-key to switch between showing apparent
size and disk usage.
- Added 'i'-key to display information about the
selected item.
- Small performance improvements
- configure checks for ncurses.h (bug #1764304)
1.2 - 2007-07-24
- Fixed some bugs on cygwin
- Added du-like exclude patterns
- Fixed bug #1758403: large directories work fine now
- Rewrote a large part of the code
- Fixed a bug with wide characters
- Performance improvements when browsing large dir
- Fixed some bugs on cygwin
- Added du-like exclude patterns
- Fixed bug #1758403: large directories work fine now
- Rewrote a large part of the code
- Fixed a bug with wide characters
- Performance improvements when browsing large dirs
1.1 - 2007-04-30
- Deleting files and directories is now possible from within ncdu.
- The key for sorting directories between files has changed to 't' instead of 'd'.
The 'd'-key is now used for deleting files.
- Deleting files and directories is now possible from
within ncdu.
- The key for sorting directories between files has
changed to 't' instead of 'd'. The 'd'-key is now
used for deleting files.
1.0 - 2007-04-06
- First stable release
- Small code cleanup
- Added a key to toggle between sorting dirs before files and dirs between files
- Added graphs and percentages to the directory browser (can be enabled or disabled with the 'g'-key)
- First stable release
- Small code cleanup
- Added a key to toggle between sorting dirs before
files and dirs between files
- Added graphs and percentages to the directory
browser (can be enabled or disabled with the 'g'-key)
0.3 - 2007-03-04
- When browsing back to the previous directory, the directory you're getting
back from will be selected.
- Added directory scanning in quiet mode to save bandwidth on remote connections.
- When browsing back to the previous directory, the
directory you're getting back from will be selected.
- Added directory scanning in quiet mode to save
bandwidth on remote connections.
0.2 - 2007-02-26
- Fixed compliance with some operating systems: replaced realpath() with with my own
implementation, and gettimeofday() is not required anymore (but still highly recommended)
- Added a warning for terminals smaller than 60x16
- Mountpoints (or any other directory pointing to another filesystem) are now considered to be
directories rather than files.
- Fixed POSIX compliance: replaced realpath() with my
own implementation, and gettimeofday() is not
required anymore (but highly recommended)
- Added a warning for terminals smaller than 60x16
- Mountpoints (or any other directory pointing to
another filesystem) are now considered to be
directories rather than files.
0.1 - 2007-02-21
- Initial version
- Initial version

View file

@ -1,5 +1,3 @@
.TH ncdu 1 "Nov 3, 2011" "ncdu-1.8" "ncdu manual"
=head1 NAME
B<ncdu> - NCurses Disk Usage
@ -18,35 +16,106 @@ provides a fast way to see what directories are using your disk space.
=head1 OPTIONS
=head2 Mode Selection
=over
=item -h
Print a short help message.
=item -q
Quiet mode. While calculating disk space, ncdu will update the screen 10 times
a second by default, this will be decreased to once every 2 seconds in quiet
mode. Use this feature to save bandwidth over remote connections.
=item -r
Read-only mode. This will disable the built-in file deletion feature.
Print a short help message and quit.
=item -v
Print version.
Print ncdu version and quit.
=item -f I<FILE>
Load the given file, which has earlier been created with the C<-o> option. If
I<FILE> is equivalent to C<->, the file is read from standard input.
For the sake of preventing a screw-up, the current version of ncdu will assume
that the directory information in the imported file does not represent the
filesystem on which the file is being imported. That is, the refresh and file
deletion options in the browser will be disabled.
=item I<dir>
Scan the given directory.
=item -o I<FILE>
Export all necessary information to I<FILE> instead of opening the browser
interface. If I<FILE> is C<->, the data is written to standard output. See the
examples section below for some handy use cases.
Be warned that the exported data may grow quite large when exporting a
directory with many files. 10.000 files will get you an export in the order of
600 to 700 KiB uncompressed, or a little over 100 KiB when compressed with
gzip. This scales linearly, so be prepared to handle a few tens of megabytes
when dealing with millions of files.
=back
=head2 Interface options
=over
=item -0
Don't give any feedback while scanning a directory or importing a file, other
than when a fatal error occurs. Ncurses will not be initialized until the scan
is complete. When exporting the data with C<-o>, ncurses will not be
initialized at all. This option is the default when exporting to standard
output.
=item -1
Similar to C<-0>, but does give feedback on the scanning progress with a single
line of output. This option is the default when exporting to a file.
In some cases, the ncurses browser interface which you'll see after the
scan/import is complete may look garbled when using this option. If you're not
exporting to a file, C<-2> is probably a better choice.
=item -2
Provide a full-screen ncurses interface while scanning a directory or importing
a file. This is the only interface that provides feedback on any non-fatal
errors while scanning.
=item -q
Quiet mode. While scanning or importing the directory, ncdu will update the
screen 10 times a second by default, this will be decreased to once every 2
seconds in quiet mode. Use this feature to save bandwidth over remote
connections. This option has no effect when C<-0> is used.
=item -r
Read-only mode. This will disable the built-in file deletion feature. This
option has no effect when C<-o> is used, because there will not be a browser
interface in that case. It has no effect when C<-f> is used, either, because
the deletion feature is disabled in that case anyway.
=back
=head2 Scan Options
These options affect the scanning progress, and have no effect when importing
directory information from a file.
=over
=item -x
Only count files and directories on the same filesystem as the specified
I<dir>.
Do not cross filesystem boundaries, i.e. only count files and directories on
the same filesystem as the directory being scanned.
=item --exclude I<PATTERN>
Exclude files that match I<PATTERN>. This argument can be added multiple times
to add more patterns.
Exclude files that match I<PATTERN>. The files will still be displayed by
default, but are not counted towards the disk usage statistics. This argument
can be added multiple times to add more patterns.
=item -X I<FILE>, --exclude-from I<FILE>
@ -127,6 +196,47 @@ Quit
=back
=head1 EXAMPLES
To scan and browse the directory you're currently in, all you need is a simple:
ncdu
If you want to scan a full filesystem, your root filesystem, for example, then
you'll want to use C<-x>:
ncdu -x /
Since scanning a large directory may take a while, you can scan a directory and
export the results for later viewing:
ncdu -1xo- / | gzip >export.gz
# ...some time later:
zcat export.gz | ncdu -f-
To export from a cron job, make sure to replace C<-1> with C<-0> to suppress
any unnecessary output.
You can also export a directory and browse it once scanning is done:
ncdu -o- | tee export.file | ./ncdu -f-
The same is possible with gzip compression, but is a bit kludgey:
ncdu -o- | gzip | tee export.gz | gunzip | ./ncdu -f-
To scan a system remotely, but browse through the files locally:
ssh -C user@system ncdu -o- / | ./ncdu -f-
The C<-C> option to ssh enables compression, which will be very useful over
slow links. Remote scanning and local viewing has two major advantages when
compared to running ncdu directly on the remote system: You can browse through
the scanned directory on the local system without any network latency, and ncdu
does not keep the entire directory structure in memory when exporting, so you
won't consume much memory on the remote system.
=head1 HARD LINKS
Every disk usage analysis utility has its own way of (not) counting hard links.