Hi again
  Editing an empty file and reading something into it doesn't set the
"changed" flag.  For example

$ true > foo
$ echo "word" > bar
$ ed foo
0
r bar
5
q
$

since the default file is still "foo", and the buffer now has
different contents from the disk file, this should probably refuse to
quit.

The fix seems to be in the main_loop command 'r' clause:

--- ed-1.5.orig/main_loop.c     2011-03-27 08:08:57.930673137 +0200
+++ ed-1.5/main_loop.c  2011-03-27 08:09:25.202673149 +0200
@@ -544,7 +544,7 @@
                 { set_error_msg( "No current filename" ); return ERR; }
               addr = read_file( fnp[0] ? fnp : def_filename, second_addr );
               if( addr < 0 ) return ERR;
-              if( addr && addr != last_addr() ) set_modified( true );
+              if( addr ) set_modified( true );
               break;
     case 's': if( !command_s( ibufpp, &gflags, addr_cnt, isglobal ) )
                 return ERR;

Sorry about all this mail - I'm reimplementing "ed" in another
language, so am involved in a lot of code inspection.

Cheers

    M

_______________________________________________
bug-ed mailing list
bug-ed@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-ed

Reply via email to