# Execute Dev-Editor's commands
#
# Author: Patrick Canterino <patrick@patshaping.de>
-# Last modified: 2004-12-10
+# Last modified: 2004-12-13
#
use strict;
my $file_phys = $physical."/".$filename;
my $file_virt = $virtual.$filename;
+ return error($config->{'errors'}->{'in_use'},$virtual,{FILE => $file_virt}) if($data->{'uselist'}->in_use($file_virt));
return error($config->{'errors'}->{'file_exists'},$virtual,{FILE => $file_virt}) if(-e $file_phys && not $cgi->param('overwrite'));
my $ascii = $cgi->param('ascii');
my $physical = $data->{'physical'};
my $virtual = $data->{'virtual'};
my $dir = upper_path($virtual);
- my $cgi = $data->{'cgi'};
- my $mode = $cgi->param('mode');
- my $group = $cgi->param('group');
- if($users)
- {
- # System supports user and groups
+ return error($config->{'errors'}->{'no_users'},$dir,{FILE => $virtual}) unless($users);
+ return error($config->{'errors'}->{'chprop_root'},"/") if($virtual eq "/");
+ return error($config->{'errors'}->{'not_owner'},$dir,{FILE => $virtual}) unless(-o $physical);
+ return error($config->{'errors'}->{'in_use'},$dir,{FILE => $virtual}) if($data->{'uselist'}->in_use($virtual));
- if($virtual ne "/")
+ my $cgi = $data->{'cgi'};
+ my $mode = $cgi->param('mode');
+ my $group = $cgi->param('group');
+
+ if($mode || $group)
+ {
+ if($mode)
{
- # Not the root directory
+ # Change the mode
- if(-o $physical)
- {
- # We own this file
-
- if($mode || $group)
- {
- if($mode)
- {
- # Change the mode
-
- chmod(oct($mode),$physical);
- }
-
- if($group)
- {
- # Change the group using the `chgrp` system command
-
- return error($config->{'errors'}->{'invalid_group'},$dir,{GROUP => encode_entities($group)}) unless($group =~ /^[a-z0-9_]+[a-z0-9_-]*$/i);
- system("chgrp",$group,$physical);
- }
-
- return devedit_reload({command => 'show', file => $dir});
- }
- else
- {
- # Display the form
-
- my @stat = stat($physical);
- my $mode = $stat[2];
- my $gid = $stat[5];
-
- my $tpl = new Template;
- $tpl->read_file($config->{'templates'}->{'chprop'});
-
- # Insert file properties into the template
-
- $tpl->fillin("MODE_OCTAL",substr(sprintf("%04o",$mode),-4));
- $tpl->fillin("MODE_STRING",mode_string($mode));
- $tpl->fillin("GID",$gid);
-
- if(my $group = getgrgid($gid))
- {
- $tpl->fillin("GROUP",encode_entities($group));
- $tpl->parse_if_block("group_detected",1);
- }
- else
- {
- $tpl->parse_if_block("group_detected",0);
- }
-
- # Insert other information
-
- $tpl->fillin("FILE",$virtual);
- $tpl->fillin("DIR",$dir);
- $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
- $tpl->fillin("SCRIPT",$script);
-
- my $output = header(-type => "text/html");
- $output .= $tpl->get_template;
-
- return \$output;
- }
- }
- else
- {
- return error($config->{'errors'}->{'not_owner'},$dir,{FILE => $virtual});
- }
+ chmod(oct($mode),$physical);
}
- else
+
+ if($group)
{
- return error($config->{'errors'}->{'chprop_root'},"/");
+ # Change the group using the `chgrp` system command
+
+ return error($config->{'errors'}->{'invalid_group'},$dir,{GROUP => encode_entities($group)}) unless($group =~ /^[a-z0-9_]+[a-z0-9_-]*$/i);
+ system("chgrp",$group,$physical);
}
+
+ return devedit_reload({command => 'show', file => $dir});
}
else
{
- return error($config->{'errors'}->{'no_users'},$dir,{FILE => $virtual});
+ # Display the form
+
+ my @stat = stat($physical);
+ my $mode = $stat[2];
+ my $gid = $stat[5];
+
+ my $tpl = new Template;
+ $tpl->read_file($config->{'templates'}->{'chprop'});
+
+ # Insert file properties into the template
+
+ $tpl->fillin("MODE_OCTAL",substr(sprintf("%04o",$mode),-4));
+ $tpl->fillin("MODE_STRING",mode_string($mode));
+ $tpl->fillin("GID",$gid);
+
+ if(my $group = getgrgid($gid))
+ {
+ $tpl->fillin("GROUP",encode_entities($group));
+ $tpl->parse_if_block("group_detected",1);
+ }
+ else
+ {
+ $tpl->parse_if_block("group_detected",0);
+ }
+
+ # Insert other information
+
+ $tpl->fillin("FILE",$virtual);
+ $tpl->fillin("DIR",$dir);
+ $tpl->fillin("URL",equal_url($config->{'httproot'},$virtual));
+ $tpl->fillin("SCRIPT",$script);
+
+ my $output = header(-type => "text/html");
+ $output .= $tpl->get_template;
+
+ return \$output;
}
}