xaizek / vifm (License: GPLv2+) (since 2018-12-07)
Vifm is a file manager with curses interface, which provides Vi[m]-like environment for managing objects within file systems, extended with some useful ideas from mutt.
Commit ddedf38ac9bc1961cab8df57236d90d8d197fc02

Fix file ignoring on overwrite all resolution
Non conflicting files were left in their original place.

Thanks to Stas Malavin.
Author: xaizek
Author date (UTC): 2014-05-16 18:11
Committer name: xaizek
Committer date (UTC): 2014-05-16 18:11
Parent(s): 463750b7aaadf9ea8074a21bba753d3e7d3bfb11
Signing key:
Tree: d6dfaf3cf177c389cf0a68f99afeffcecf009a75
File Lines added Lines deleted
ChangeLog 3 0
src/fileops.c 23 20
src/fileops.h 1 1
File ChangeLog changed (mode: 100644) (index ad7598eae..8496ca985)
13 13 Fixed navigation to menu items with full paths on Windows. Thanks to Fixed navigation to menu items with full paths on Windows. Thanks to
14 14 Robert Sarkozi. Robert Sarkozi.
15 15
16 Fixed following overwrite all option on file operation conflict
17 resolution. Thanks to Stas Malavin.
18
16 19 0.7.6 to 0.7.7-beta 0.7.6 to 0.7.7-beta
17 20
18 21 Added Ctrl-W z key to normal and view modes, which closes preview pane or Added Ctrl-W z key to normal and view modes, which closes preview pane or
File src/fileops.c changed (mode: 100644) (index 1370f5c9f..e659928f8)
... ... put_next(const char dest_name[], int override)
1372 1372 dest_name); dest_name);
1373 1373 chosp(dst_buf); chosp(dst_buf);
1374 1374
1375 if(path_exists(dst_buf) && !override)
1375 if(path_exists(dst_buf))
1376 1376 { {
1377 struct stat dst_st;
1378 put_confirm.allow_merge = lstat(dst_buf, &dst_st) == 0 &&
1379 S_ISDIR(dst_st.st_mode) && S_ISDIR(src_st.st_mode);
1380 prompt_what_to_do(dest_name);
1381 return 1;
1382 }
1383
1384 if(override)
1385 {
1386 struct stat dst_st;
1387 if(lstat(dst_buf, &dst_st) == 0 && (!put_confirm.merge ||
1388 S_ISDIR(dst_st.st_mode) != S_ISDIR(src_st.st_mode)))
1377 if(override)
1389 1378 { {
1390 if(perform_operation(OP_REMOVESL, NULL, dst_buf, NULL) != 0)
1379 struct stat dst_st;
1380 if(lstat(dst_buf, &dst_st) == 0 && (!put_confirm.merge ||
1381 S_ISDIR(dst_st.st_mode) != S_ISDIR(src_st.st_mode)))
1391 1382 { {
1392 return 0;
1383 if(perform_operation(OP_REMOVESL, NULL, dst_buf, NULL) != 0)
1384 {
1385 return 0;
1386 }
1387
1388 /* Schedule view update to reflect changes in UI. */
1389 request_view_update(put_confirm.view);
1390 }
1391 else
1392 {
1393 #ifndef _WIN32
1394 remove_last_path_component(dst_buf);
1395 #endif
1393 1396 } }
1394 1397 } }
1395 1398 else else
1396 1399 { {
1397 #ifndef _WIN32
1398 remove_last_path_component(dst_buf);
1399 #endif
1400 struct stat dst_st;
1401 put_confirm.allow_merge = lstat(dst_buf, &dst_st) == 0 &&
1402 S_ISDIR(dst_st.st_mode) && S_ISDIR(src_st.st_mode);
1403 prompt_what_to_do(dest_name);
1404 return 1;
1400 1405 } }
1401
1402 request_view_update(put_confirm.view);
1403 1406 } }
1404 1407
1405 1408 if(put_confirm.link) if(put_confirm.link)
File src/fileops.h changed (mode: 100644) (index fbf2581ef..c188b5537)
... ... typedef enum
34 34 /* Type of reaction on an error. */ /* Type of reaction on an error. */
35 35 typedef enum typedef enum
36 36 { {
37 ST_NONE, /* Show message in the status bar. */
37 ST_NONE, /* Ignore message. */
38 38 ST_STATUS_BAR, /* Show message in the status bar. */ ST_STATUS_BAR, /* Show message in the status bar. */
39 39 ST_DIALOG, /* Shows error dialog. */ ST_DIALOG, /* Shows error dialog. */
40 40 } }
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master