This message is sent to widgets'owner when widget's focus state is
changed.
Find file dialog: fix initial draw of ignore directories input line.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
find.c: In function 'found_num_update':
find.c:373:44: error: format '%ld' expects argument of type 'long int', but argument 4 has type 'long unsigned int' [-Werror=format=]
g_snprintf (buffer, sizeof (buffer), _("Found: %ld"), matches);
^
find.c: In function 'do_search':
find.c:1306:51: error: format '%zd' expects argument of type 'signed size_t', but argument 4 has type 'size_t {aka long unsigned int}' [-Werror=format=]
"Finished (ignored %zd directories)",
^
find.c:1305:51: error: format '%zd' expects argument of type 'signed size_t', but argument 4 has type 'size_t {aka long unsigned int}' [-Werror=format=]
ngettext ("Finished (ignored %zd directory)",
^
file.c:2526:41: error: format '%zd' expects argument of type 'signed size_t', but argument 3 has type 'size_t {aka long unsigned int}' [-Werror=format=]
label_set_textv (dsm->count_size, _("Directories: %zd, total size: %s"),
^
Signed-off-by: Andreas Mohr <and@gmx.li>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* DLG_FULLSCREEN: move and rename to WPOS_FULLSCREEN.
* DLG_CENTER: move and rename to WPOS_CENTER.
* DLG_TRYUP: move and rename to WPOS_TRYUP.
* WDialog::fullscreen: remove, use WPOS_FULLSCREEN instead.
* WDialog::compact: new field. Use instead of DLG_COMPACT.
* WDialog:🎏 remove.
* dlg_flags_t: remove.
* dlg_create: add new agruments: pos_flags, compact. Remove
argument: flags.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If "Content" input field is empty, don't search for content.
Also disable all content related checkboxes in this case.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
mc_search_new() parameter orignial_len use once only.
Factor out into own function mc_search_new_len().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Find_parameter() allocate start_dir but object will never freed.
Testcase: search file.
(Found by LeakSanitizer.)
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
src/filemanager/file.c (do_search): the algorithm executes mc_stat() on
a file (directory) and checks number of links. It assumes number of
links minus 2 is number of subdirectories available for recursive
search. While that assumption is valid on probably all Linux
filesystems, it is not valid on mounted Samba shares. For these, number
of links (as reported by stat or seen by 'ls -l') is not 1 for most
files and 2+ for directories, but zero for all files and directories
within the share (I guess that is how the kenrel samba module works
...). Therefore the optimization (that may limit the recursion) done by
subdirs_left breaks the recursive search.
Also this patch fixes recursive search on NFS shares provided by Windows
2012R2 NFS service (ticket #3202).
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
When pressing F4 to start the editor, a "+1" argument is passed to open
the file at the first line.
For some editor this is absolutely unnecessary since they open the file
there anyways. For some others (at least "joe", but probably others too)
this is harmful: joe has a convenience feature that by default it opens
the file where it was last open, unless of course overridden from
command line. Currently mc forces joe to open the file at the first
line, although opening it where it was last open would be much more
desired.
The right solution would be to consult mc.lib only when opening the
viewer/editor through the "word search in files (M-?)" feature, and
not when F3/F4 is pressed on a file, in the latter case $VIEWER or
$EDITOR should simply be launched with the filename but no additional
parameters.
Initial step: minor refactoring:
(do_edit_at_line): rename to edit_file_at_line.
(edit_file_at_line): changed type of arguments from int to gboolean.
(view_file_at_line): likewise.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Use GQueue instead of GList to store listbox entries.
g_list_append() function is slow because it uses g_list_last()
internally to traverse from the beginning to the end of a list, so
forming a list of results has O(n*n) complexity instead of O(n).
GQueue contains pointers to head and tail of list and list length.
So in this case we don't need seach end of list every time when we
want append listbox entry to the listbox.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Optimization is based on examining file size and time of the last status
update. This is synchronous and is based on assumption that relatively
small files are quickly processed even on slow hardware so if refresh
timeout expires during their processing, the delay couldn't be noticed
by human. Therefore only rather big files have to be reported
unconditionally, and others - only if there is a match in this file or
if timeout expires.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Gets rid of get_line_at() function that was called only at one place and
was tightly coupled with caller function. It allows to perform some
minor optimizations, and as a result improve search time by 8%.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
...if file encoding and locale are different.
Example: locale is KOI8-R, file encoding is UTF-8. Note: those encodings
are not same.
File content is following (in Russian):
йцукен
Йцукен
The difference is in first line char only: Й (lowercase letter) and й
(uppercase letter). The search of Ê gives the result Й independently of
case sensitivity. й isn't found.
If switch "All charsets" on, nothing is found.
The main idea of fix is modification of search API to allow set of search
pattern charset and use if within search engine.
Old API:
mc_search_new (pattern, pattern_len);
New API:
mc_search_new (pattern, pattern_len, pattern_charset);
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>