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:
A | README | | | 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.