bmv

Batch move
Log | Files | Refs | README

commit d30cdb930cf585d78231fb78eea295588bb30764
Author: Jacob R. Edwards <jacob@jacobedwards.org>
Date:   Sat,  8 Apr 2023 10:24:27 -0700

Add README explaining what the project will be

Diffstat:
AREADME | 24++++++++++++++++++++++++
1 file changed, 24 insertions(+), 0 deletions(-)

diff --git a/README b/README @@ -0,0 +1,24 @@ +This is the bmv ("Batch Move") project. + +bmv ("Batch Move") is a program which takes two lists of names (in +the form of two files of line delimited names) and moves each name +from the first list to it's corresponding name in the second list. + +While the process cannot be atomic to my knowledge (with the syscalls +commonly provided), this program attempts to either succeed fully, +or fail fully; never halfway. It does this by first link(2)ing each +file to it's new name, then by removing all the old references +unless an error ocurrs during the process in which case it instead +removes the new references. One issue I can see with this method +is that if permissions change during the operation, the process may +be forced to stop midway. + +This program may provide an option to separate names by nul bytes +so as to fully support any valid filename the system does. It may +also provide an option to create any missing directories before the +link(3) occurs, or this feature may be handed off to a separate +program. + +pmv ("Pipe Move") is another program included in the project. It +takes only a single list and uses it along with a filter to produce +a second list, providing both to bmv.