[LON-CAPA-cvs] cvs: loncom(version_2_11_X) / loncron
raeburn
raeburn at source.lon-capa.org
Sun Jul 28 19:52:11 EDT 2024
raeburn Sun Jul 28 23:52:11 2024 EDT
Modified files: (Branch: version_2_11_X)
/loncom loncron
Log:
- For 2.11
Backport 1.132, 1.133
Index: loncom/loncron
diff -u loncom/loncron:1.103.2.15 loncom/loncron:1.103.2.16
--- loncom/loncron:1.103.2.15 Wed Jul 10 04:11:41 2024
+++ loncom/loncron Sun Jul 28 23:52:11 2024
@@ -2,7 +2,7 @@
# Housekeeping program, started by cron, loncontrol and loncron.pl
#
-# $Id: loncron,v 1.103.2.15 2024/07/10 04:11:41 raeburn Exp $
+# $Id: loncron,v 1.103.2.16 2024/07/28 23:52:11 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1306,9 +1306,17 @@
if (!-e $bash_www_cnf) {
system("touch $bash_www_cnf");
if (open(my $cfh,'>',$bash_www_cnf)) {
- print $cfh "set enable-bracketed-paste off\n";
+ print $cfh <<'END';
+$if R
+ set enable-bracketed-paste off
+$endif
+
+$if maxima
+ set enable-bracketed-paste off
+$endif
+END
close($cfh);
- $result = "Updated $bash_www_cnf";
+ $result = "Updated $bash_www_cnf so enable-bracketed-paste is off for R bash shell";
} else {
$result = "Could not open $bash_www_cnf to add 'set enable-bracketed-paste to off'";
}
@@ -1318,39 +1326,91 @@
chown($wwwuid,$wwwgid,$bash_www_cnf);
}
} else {
- my ($bracketed_paste_on,$bracketed_paste_off, at preserve);
+ my (%bracketed_paste_on,%bracketed_paste_off, at preserve,$condition);
+ $condition = '';
if (open(my $cfh,'<',$bash_www_cnf)) {
while (my $line=<$cfh>) {
chomp($line);
+ if ($line =~ /^\$if\s+(\w+)\s*$/) {
+ if ($1 eq 'R') {
+ $condition = 'r';
+ } elsif ($1 eq 'maxima') {
+ $condition = 'maxima';
+ } else {
+ $condition = 'other';
+ }
+ } elsif ($line =~ /^\$endif\s*$/) {
+ $condition = '';
+ }
if ($line =~ /^\s*set\s+enable\-bracketed\-paste\s+(off|on)\s*$/) {
if ($1 eq 'off') {
- $bracketed_paste_off = 1;
+ if ($condition ne '') {
+ $bracketed_paste_off{$condition} = 1;
+ } else {
+ $bracketed_paste_off{all} = 1;
+ }
+ push(@preserve,$line);
} else {
- $bracketed_paste_on = 1;
+ if ($condition ne '') {
+ $bracketed_paste_on{$condition} = 1;
+ if (($condition eq 'r') || ($condition eq 'maxima')) {
+ push(@preserve,' set enable-bracketed-paste off');
+ } else {
+ push(@preserve,$line);
+ }
+ } else {
+ $bracketed_paste_on{all} = 1;
+ push(@preserve,$line);
+ }
}
} else {
push(@preserve,$line);
}
}
close($cfh);
- if ($bracketed_paste_on || !$bracketed_paste_off) {
- if (open(my $cfh,'>',$bash_www_cnf)) {
- print $cfh "set enable-bracketed-paste off\n";
- if (@preserve) {
- foreach my $entry (@preserve) {
- print $cfh "$entry\n";
- }
+ } else {
+ $result = "Could not open $bash_www_cnf to check if a value is included for 'enable-bracketed-paste'.";
+ }
+ if (($bracketed_paste_on{r} || $bracketed_paste_on{maxima}) ||
+ (!exists($bracketed_paste_off{r}) && !exists($bracketed_paste_on{r}) &&
+ !exists($bracketed_paste_off{maxima}) && !exists($bracketed_paste_on{maxima}))) {
+ if (open(my $cfh,'>',$bash_www_cnf)) {
+ if (@preserve) {
+ foreach my $entry (@preserve) {
+ print $cfh "$entry\n";
+ }
+ if (!exists($bracketed_paste_off{r}) && !exists($bracketed_paste_on{r})) {
+print $cfh <<'END';
+$if R
+ set enable-bracketed-paste off
+$endif
+END
+ }
+ if (!exists($bracketed_paste_off{r}) && !exists($bracketed_paste_on{r})) {
+print $cfh <<'END';
+$if maxima
+ set enable-bracketed-paste off
+$endif
+END
}
- close($cfh);
- $result = "Updated $bash_www_cnf";
} else {
- $result = "Could not open $bash_www_cnf to add 'set enable-bracketed-paste to off'";
+print $cfh <<'END';
+$if R
+ set enable-bracketed-paste off
+$endif
+
+$if maxima
+ set enable-bracketed-paste off
+$endif
+END
}
+ close($cfh);
+ $result = "Updated $bash_www_cnf";
} else {
- $result = "No action needed; $bash_www_cnf already includes 'set enable-bracketed-paste to off'";
+ $result = "Could not open $bash_www_cnf to add 'set enable-bracketed-paste to off'";
}
} else {
- $result = "Could not open $bash_www_cnf to check if a value is included for 'enable-bracketed-paste'.";
+ $result = "No action needed; $bash_www_cnf already includes 'set enable-bracketed-paste to off'";
}
}
return $result;
@@ -1550,8 +1610,18 @@
my ($bracketed_warning,$check_bracketed_paste) = &check_bash_settings();
if ($check_bracketed_paste) {
&log($fh,'<hr /><a name="bashconf" /><h2>bash readline config</h2><h3>Bracketed Paste</h3>'.
- '<p>Distros using bash readline library 8.1 or later need bracketed paste disabled for www, so R commands sent to lon daemon will be processed.</p>');
- if ($bracketed_warning) {
+ '<p>Distros using bash readline library 8.1 or later need bracketed paste disabled for the R bash shell for the www user so R commands sent to lonr daemon will be processed.</p>');
+ my $bash_www_cnf = '/home/www/.inputrc';
+ my $non_empty_conffile;
+ unless ($bracketed_warning) {
+ if (-e $bash_www_cnf) {
+ my $filesize = (stat($bash_www_cnf))[7];
+ if ($filesize > 0) {
+ $non_empty_conffile = 1;
+ }
+ }
+ }
+ if (($bracketed_warning) || ($non_empty_conffile)) {
my $bash_update = &set_bracketed_paste_off();
if ($bash_update) {
&log($fh,'<p>'.$bash_update.'</p>'."\n");
More information about the LON-CAPA-cvs
mailing list