about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2013-09-23 05:26:16 +0000
committerEric Wong <normalperson@yhbt.net>2013-09-23 05:26:16 +0000
commit2118e3aa78ebbd91b9d10ec524186820cbfa9c50 (patch)
treecccce81bf566d628f26e332e353f5b4d1e4359a9
parentdfb00324795c2a1c8bbe8d191b3a610e508b1032 (diff)
downloaddtas-2118e3aa78ebbd91b9d10ec524186820cbfa9c50.tar.gz
We must not assume the temporary file remains in place while
$EDITOR/$VISUAL is running, as it is common for editors to rename
over a file to atomically replace existing files.
-rwxr-xr-xbin/dtas-sinkedit3
-rwxr-xr-xbin/dtas-sourceedit6
2 files changed, 4 insertions, 5 deletions
diff --git a/bin/dtas-sinkedit b/bin/dtas-sinkedit
index 93a4fe9..8a42a7b 100755
--- a/bin/dtas-sinkedit
+++ b/bin/dtas-sinkedit
@@ -18,8 +18,7 @@ orig = YAML.load(buf)
 tmp.write(buf << DTAS_DISCLAIMER)
 cmd = "#{editor} #{tmp.path}"
 system(cmd) or abort "#{cmd} failed: #$?"
-tmp.rewind
-sink = YAML.load(tmp.read)
+sink = YAML.load(File.read(tmp.path))
 
 cmd = %W(sink ed #{name})
 update_cmd_env(cmd, orig, sink)
diff --git a/bin/dtas-sourceedit b/bin/dtas-sourceedit
index 0c8aeb5..87d16ee 100755
--- a/bin/dtas-sourceedit
+++ b/bin/dtas-sourceedit
@@ -22,16 +22,16 @@ abort(buf) if buf =~ /\AERR/
 orig = YAML.load(buf)
 
 if st_in.file? || st_in.pipe?
-  tmp = $stdin
+  buf = $stdin.read
 else
   tmp = tmpyaml
   tmp.write(buf << DTAS_DISCLAIMER)
   cmd = "#{editor} #{tmp.path}"
   system(cmd) or abort "#{cmd} failed: #$?"
-  tmp.rewind
+  buf = File.read(tmp.path)
 end
 
-source = YAML.load(tmp.read)
+source = YAML.load(buf)
 cmd = %W(source ed #{name})
 update_cmd_env(cmd, orig, source)