Commit Graph

6570 Commits

Author SHA1 Message Date
Andrew Borodin
1719f3383f (user_menu_cmd): remove unused variable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-10-08 13:02:24 +03:00
Andrew Borodin
4b1cdccb48 Ticket #4595: tar: fix comparison of integer expressions of different signedness.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-10-08 13:02:17 +03:00
Andrew Borodin
9d462b135c (decode_time): initialize variable.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-10-08 13:02:17 +03:00
Andrew Borodin
d7b85ed9c9 Ticket #4593: tar: fix compilation on systems w/o stdckdint.h.
* lib/intprops.h: new file.
  * src/vfs/tar/tar-internal.h: include intprops.h, remove macros
    defined there.
  * src/vfs/tar/tar-sparse.c: remove macro, defined in intprops.h.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-10-08 13:02:17 +03:00
Andrew Borodin
aa4e5019f9 (mcview_display_hex): refactor, fix coding style.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
918d386172 src/vfs/cpio/cpio.c: fix coding style.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
a92de91616 (setup__is_cfg_group_must_panel_config): fix coding style.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
4b49c82198 (check_format_var): fix coding stile.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
51ff7dc13c (copy_file_file): handling "Abort" button on chown/chmod/chattr error.
The "Abort" buton must interrupt the copy/move of a directory
mot a file only.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
6e95a0be43 src/filemanager/chattr.c: fix coding style.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
b0ce42e55b (chattrboxes_rename): reduce variable scope.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
602a2edf60 (files_error): fix coding style.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
03a1a9c95b (show_version): add output of uintmax_t size.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
54d4dfc534 (spell_dialog_spell_suggest_show): refactoring.
Reduce variable scope. Get rid of extra NULL check: g_strdup() handles
NULL correctly. Remove intermediate variable.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
80f7a162c3 tar: avoid need for base64_init and extra table.
Simplify the code by assuming C99 initializers.

  * (base_64_digits): Remove; no longer needed.
  * (base64_map): Now a constant. Initialized statically,
    and with invalid entries being 0 not 64, and with valid
    entries being 1 greater than before.
  * (tar_base64_init): Remove; only use removed.
  * (tar_from_header): Adjust to new values in base64_map.

Sync with GNU tar 43231ae554d0dacbcc32e2d0fe574c9d0e183258.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
aadedc361d (tar_from_header): reword to avoid a cast to unsigned char.
Sync with GNU tar b201a3742162adcb2cf1e9618c4c4f4db0d239ae.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
b6483b8a47 tar: avoid casts in tar_checksum.
* (tar_checksum): recode to avoid casts.
  * (tar_from_header): likewise.

Sync with GNU tar 1521d3dae01f91606c639eb745ea565ef723e38d.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:14 +03:00
Andrew Borodin
7d8deb89c8 tar: prefer stoint to strtoul and variants.
When parsing numbers prefer using strtosysint() (renamed stoint)
to using strtoul() and its variants.
This is simpler and faster and likely more reliable than
relying on quirks of the system strtoul() etc,
and it standardizes how tar deals with parsing integers.
Among other things, the C standard and POSIX don't specify
what strtol() does to errno when conversions cannot be performed,
and it requires strtoul() to support "-" before unsigned numbers.

  * (stoint): rename from strtosysint, move to tar-internal.c and add
    a gboollean * argument for reporting overflow.  All callers changed.
  * (decode_num): prefer stoint() to strtol() etc. Don't rely on
    errno == EINVAL as the standards don't guarantee it.
  * (decode_signed_num): likewise.
  * (decode_record): likewise.
  * (sparse_map_decoder): likewise.
  * (decode_timespec): Simplify by using ckd_sub() rather than checking
    for overflow by hand.
  * tar-sparse.c: remove include of errno.h, it's no lomger used.
  * tar-xheader.c: likewise

Sync with GNU tar d1e72a536f26188230a147d948b9057714fd0b6b.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
5bb5442cd1 src/vfs/tar/tar-xheader.c: indentation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
465d8b962a (blocking_factor, record_size): change type.
Don't limit blocking factor to INT_MAX.
Prefer signed type for record_size.
Do not exceed IDX_MAX or SSIZE_MAX for record_size;
the SSIZE_MAX limit is needed so that "read" calls behave sensibly.

Sync with GNU tar 3ffe2eb0738504aabee0d3b4d0c03e01739b9d6c.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
20b617a8ab tar: avoid strtoul().
This is part of the general trend to prefer signed integer types,
to allow better runtime checking with -fsanitize=undefined etc.

  * (struct tar_stat_info): ue intmax_t, not unsigned, for sparse major
    and minor.
  * (tar_sparse_major): likewise.
  * (tar_sparse_minor): likewise.

Sync with GNU tar 4642cd04edbd57414e004920fa4976d9f3be6206.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
79b10fc8a7 (tar_from_header): ckd_mul() and ckd_add() rather than doing it by hand.
(LG_64): Remove; no longer used.

Sync with GNU tar 414f635d8bba4c8894855040b1e6b77b07dc07bd.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
b9e7ab2f08 (pax_decode_header): use SIZE_MAX.
Sync with GNU tar 281e03ec6ccb9e6da134f8f6b9a9ff51c42f5737.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
c9288158bc (tar_from_header): minor width cleanup.
Use UINTMAX_WIDTH rather than computing it by hand.

Sync with GNU tar fbc60c2334326fc2f748226abe76190ecf39a26b.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
2aeff547ca tar: include stdckdint.h via tar-internal.h.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
ed99e93019 src/vrs/tar/tar-sparse.c: prefer stdckdint.h to intprops.h.
* (oldgnu_add_sparse): prefer ckd_add and ckd_mul to the intprops.h
    equivalents, since stdckdint.h is now standard.
  * (pax_decode_header): likewise.

Remove macros defined in lib/intprops-internal.h.

Sync with GNU tar a9372cf08a05723b2a06efff3402077598138238.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
730fdef61d (tar_read_header): simplify read_header overflow checking.
Use ckd_add instead of doing overflow checking by hand.
Although the old code was correct on all practical hosts,
the new code is simpler and works even on weird hosts
where SIZE_MAX <= INT_MAX.

Sync with GNU tar 8a3fc529729acf38276b27f6b7bc50962dfab799.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
40c912b9b7 (tar_xheader_read): cleaner overflow checking.
Prefer ckd_add() to doing overflow checking by hand.

Sync with GNU tar 927d67855e2e83b6b06eb9095f65e4e695d6af7e.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
9e44b293f4 (from_header): use ckd_mul().
Sync with GNU tar c6a5af16ba0ceff08b58d8a26cdbed2b300ccd0a.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
c87a4a8db5 src/vfs/tar/tar-internal.c: clarify includes.
Don't include stdint.h, since inttypes.h includes it.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
92bb95998e src/filemanager/filenot.c: remove useless code.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:07:13 +03:00
Andrew Borodin
0780ef2970 Refactoring of file and directory delete routines.
* (file_progress_show_deleting): take 'vfs_path_t *' instead of 'char *'.
  * (try_erase_dir): likewise.
  * (erase_file): sync with new file_progress_show_deleting().
  * (recursive_erase): sync with new file_progress_show_deleting() and
    try_erase_dir().
  * (erase_dir_iff_empty): likewise.
  * (erase_dir): likewise.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:05:58 +03:00
Andrew Borodin
4e9f4b97cb (user_menu_cmd): port to GPtrArray.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:05:58 +03:00
Andrew Borodin
bb4e152c59 (extract_line): optionally return the lengh of the line.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:05:58 +03:00
Andrew Borodin
bb5b35be9e (user_menu_cmd): refactoring.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:05:58 +03:00
Andrew Borodin
5288f994c4 (user_file_menu_cmd): move to src/usermenu.h and make inline.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-10-05 15:05:58 +03:00
Andrew Borodin
f4ef5c64a4 (edit_draw_this_line): fix printable character recognition in 8-bit locales when displaying UTF-8
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-10-05 11:49:26 +02:00
Yury V. Zaytsev
ffd6fd11f7 ydiff: fix -Wdiscarded-qualifiers warning
```
../../../src/diffviewer/ydiff.c:613:17: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
  613 |         next_ch = g_utf8_next_char (str);
```

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-10-05 11:49:26 +02:00
Yury V. Zaytsev
f84099512e extfs helpers: remove usage of local, instead use subshell to isolate variables
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-10-05 11:49:26 +02:00
Yury V. Zaytsev
50976cec62 shell: replace which with command -v for speed and POSIX compatibility
https://stackoverflow.com/a/677212/5132088

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-09-11 08:45:25 +02:00
Yury V. Zaytsev
d081bc68aa main: remove O_EXCL for wd-file since creation is now managed by wrapper
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-09-03 07:39:25 +02:00
Gabriel Vlasiu
66bfefbf1a Ticket #4580: mceditor: segfault on new file creation.
(edit_init): fix NULL dereference.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-08-29 21:04:40 +03:00
Yury V. Zaytsev
876555035a Ticket #4576: fix visual glitches by avoiding g_module_close on NULL while loading libaspell
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-08-25 17:35:54 +02:00
Andrew Borodin
5e64cc637f (file_op_context_create_ui): apply callback to the "Abort" button
...to keep the file progress dialog visible.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-08-20 22:01:52 +03:00
Johannes Altmanninger
c249980ed3 subshell: ensure compatibility with fish 3.8
The upcoming fish 3.8 will add a feature flag to officially deprecate
"%self," see

8d71eef1da

Unfortunately this can cause mc+fish to break for users who configured
fish with "set -U fish_features all" which opts into any new feature
flag, thus disabling %self expansion.

Prevent this potential breakage by using the recommended "$fish_pid",
which was introduced in fish 3.0.0 (December 2018).

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-08-07 09:50:28 +02:00
Yury V. Zaytsev
5b335920aa Ticket #3960: remove mmap support in file comparison
It's not working on AIX, but more importantly doesn't offer any benefits in
terms of speed, and we have a fallback anyways.

https://lists.gnu.org/archive/html/autoconf/2024-07/msg00006.html

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-07-30 21:11:21 +02:00
Yury V. Zaytsev
0749b6d2d3 aspell: fix -Wdeprecated-declarations for g_module_build_path
```
../../../src/editor/spell.c:177:26: warning: 'g_module_build_path' is deprecated [-Wdeprecated-declarations]
    spell_module_fname = g_module_build_path (NULL, "libaspell");
                         ^
/opt/homebrew/Cellar/glib/2.80.4/include/glib-2.0/gmodule.h:141:1: note: 'g_module_build_path' has been explicitly marked deprecated here
GMODULE_DEPRECATED_IN_2_76
```

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-07-28 21:46:26 +02:00
slowpeek
db77fd5a0c Ticket #4559: extfs: u7z: bug with nested dirs in mkdir action.
The -w option sets the working directory for the temporary archive 7-zip
builds when modifying an existing one. The option cant be used to set
the base path inside an archive when adding something into it.

When adding something to a 7z archive by its absolute path, 7zip only
uses the last part of the path by default. E.g. `7z a 1.7z
/tmp/a/b/date.txt` would add date.txt to the root dir inside the
archive. If we wanted the file to be under `a/b/` inside the archive as
well, it should be `7z a 1.7z /tmp/a`.

Closes MidnightCommander/mc#202.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2024-07-28 14:53:57 +03:00
Yury V. Zaytsev
0cfccd5882 filemanager: use correct type for results of read in mmap fallback
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-07-28 10:00:52 +02:00
Yury V. Zaytsev
eb1375b65d vfs: implement support for all known stat formats and centralize handling
Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
2024-07-28 10:00:52 +02:00