]> git.p6c8.net - devedit.git/blobdiff - modules/Command.pm
This line of code causes nothing but problems! I thought this was fixed long
[devedit.git] / modules / Command.pm
index 1d3b6e207e1dc3a5d8daaf8cebf13a91b93ecf12..5132a170e9448fd024482d3fd77a59fa0b8f61d6 100644 (file)
@@ -6,7 +6,7 @@ package Command;
 # Execute Dev-Editor's commands
 #
 # Author:        Patrick Canterino <patrick@patshaping.de>
 # Execute Dev-Editor's commands
 #
 # Author:        Patrick Canterino <patrick@patshaping.de>
-# Last modified: 2005-04-10
+# Last modified: 2005-04-15
 #
 
 use strict;
 #
 
 use strict;
@@ -29,8 +29,6 @@ use HTML::Entities;
 use Output;
 use Template;
 
 use Output;
 use Template;
 
-use Data::Dumper;
-
 my $script = encode_entities($ENV{'SCRIPT_NAME'});
 my $users  = eval('getpwuid(0)') && eval('getgrgid(0)');
 
 my $script = encode_entities($ENV{'SCRIPT_NAME'});
 my $users  = eval('getpwuid(0)') && eval('getgrgid(0)');
 
@@ -104,7 +102,7 @@ sub exec_show($$)
   return error($config->{'errors'}->{'no_dir_access'},$upper_path) unless(-r $physical && -x $physical);
 
   my $direntries = dir_read($physical);
   return error($config->{'errors'}->{'no_dir_access'},$upper_path) unless(-r $physical && -x $physical);
 
   my $direntries = dir_read($physical);
-  return error($config->{'dir_read_fail'},$upper_path,{DIR => encode_entities($virtual)}) unless($direntries);
+  return error($config->{'errors'}->{'dir_read_fail'},$upper_path,{DIR => encode_entities($virtual)}) unless($direntries);
 
   my $files = $direntries->{'files'};
   my $dirs  = $direntries->{'dirs'};
 
   my $files = $direntries->{'files'};
   my $dirs  = $direntries->{'dirs'};
@@ -181,7 +179,7 @@ sub exec_show($$)
    $ftpl->parse_if_block('link',-l $phys_path);
    $ftpl->parse_if_block('no_link',not -l $phys_path);
    $ftpl->parse_if_block('not_readable',not -r $phys_path);
    $ftpl->parse_if_block('link',-l $phys_path);
    $ftpl->parse_if_block('no_link',not -l $phys_path);
    $ftpl->parse_if_block('not_readable',not -r $phys_path);
-   $ftpl->parse_if_block('binary_file',-B $phys_path);
+   $ftpl->parse_if_block('binary',-B $phys_path);
    $ftpl->parse_if_block('readonly',not -w $phys_path);
 
    $ftpl->parse_if_block('viewable',(-r $phys_path && -T $phys_path && not $too_large) || -l $phys_path);
    $ftpl->parse_if_block('readonly',not -w $phys_path);
 
    $ftpl->parse_if_block('viewable',(-r $phys_path && -T $phys_path && not $too_large) || -l $phys_path);
@@ -294,7 +292,7 @@ sub exec_beginedit($$)
 
  # ... and show the editing form
 
 
  # ... and show the editing form
 
- my $content =  file_read($physical,1);
+ my $content =  file_read($physical);
  my $md5sum  =  md5_hex($$content);
  $$content   =~ s/\015\012|\012|\015/\n/g;
 
  my $md5sum  =  md5_hex($$content);
  $$content   =~ s/\015\012|\012|\015/\n/g;
 
@@ -362,14 +360,14 @@ sub exec_endedit($$)
 
   sysopen(FILE,$physical,O_RDWR | O_CREAT) or return error($config->{'errors'}->{'edit_failed'},$dir,{FILE => $virtual});
   file_lock(*FILE,LOCK_EX)                 or do { close(FILE); return error($config->{'errors'}->{'edit_failed'},$dir,{FILE => $virtual}) };
 
   sysopen(FILE,$physical,O_RDWR | O_CREAT) or return error($config->{'errors'}->{'edit_failed'},$dir,{FILE => $virtual});
   file_lock(*FILE,LOCK_EX)                 or do { close(FILE); return error($config->{'errors'}->{'edit_failed'},$dir,{FILE => $virtual}) };
-  binmode(FILE);
 
   my $md5 = new Digest::MD5;
   $md5->addfile(*FILE);
 
 
   my $md5 = new Digest::MD5;
   $md5->addfile(*FILE);
 
-  my $md5_new = $md5->hexdigest;
+  my $md5file = $md5->hexdigest;
+  my $md5data = md5_hex($content);
 
 
-  if($md5_new ne $md5sum && not $cgi->param('saveas'))
+  if($md5file ne $md5sum && $md5data ne $md5file && not $cgi->param('saveas'))
   {
    # The file changed meanwhile
 
   {
    # The file changed meanwhile
 
@@ -382,7 +380,7 @@ sub exec_endedit($$)
    $tpl->fillin('DIR',$dir);
    $tpl->fillin('URL',equal_url($config->{'httproot'},$virtual));
    $tpl->fillin('SCRIPT',$script);
    $tpl->fillin('DIR',$dir);
    $tpl->fillin('URL',equal_url($config->{'httproot'},$virtual));
    $tpl->fillin('SCRIPT',$script);
-   $tpl->fillin('MD5SUM',$md5_new);
+   $tpl->fillin('MD5SUM',$md5file);
    $tpl->fillin('CONTENT',encode_entities($content));
 
    $tpl->parse_if_block('error',1);
    $tpl->fillin('CONTENT',encode_entities($content));
 
    $tpl->parse_if_block('error',1);
@@ -394,16 +392,15 @@ sub exec_endedit($$)
   }
   else
   {
   }
   else
   {
-   # The file was saved successfully!
-
-   seek(FILE,0,0);
-   truncate(FILE,0);
+   if($md5data ne $md5file)
+   {
+    seek(FILE,0,0);
+    truncate(FILE,0);
 
 
-   print FILE $content;
+    print FILE $content;
+   }
 
    $output = devedit_reload({command => 'show', file => $dir});
 
    $output = devedit_reload({command => 'show', file => $dir});
-
-   #return error($config->{'errors'}->{'edit_failed'},$dir,{FILE => $virtual});
   }
 
   close(FILE);
   }
 
   close(FILE);
@@ -527,8 +524,8 @@ sub exec_upload($$)
    return error($config->{'errors'}->{'file_exists'},$virtual,{FILE => $file_virt})    unless($cgi->param('overwrite'));
   }
 
    return error($config->{'errors'}->{'file_exists'},$virtual,{FILE => $file_virt})    unless($cgi->param('overwrite'));
   }
 
-  my $ascii     = $cgi->param('ascii');
-  my $handle    = $cgi->upload('uploaded_file');
+  my $ascii  = $cgi->param('ascii');
+  my $handle = $cgi->upload('uploaded_file');
 
   return error($config->{'errors'}->{'invalid_upload'},$virtual) unless($handle);
 
 
   return error($config->{'errors'}->{'invalid_upload'},$virtual) unless($handle);
 
@@ -648,8 +645,8 @@ sub exec_rename($$)
  my $dir            = upper_path($virtual);
  my $new_physical   = $data->{'new_physical'};
 
  my $dir            = upper_path($virtual);
  my $new_physical   = $data->{'new_physical'};
 
- return error($config->{'errors'}->{'rename_root'},'/')                if($virtual eq '/');
- return error($config->{'errors'}->{'no_rename'},$dir)                 unless(-w upper_path($physical));
+ return error($config->{'errors'}->{'rename_root'},'/') if($virtual eq '/');
+ return error($config->{'errors'}->{'no_rename'},$dir)  unless(-w upper_path($physical));
 
  if($new_physical)
  {
 
  if($new_physical)
  {

patrick-canterino.de