X-Git-Url: https://git.p6c8.net/selfforum.git/blobdiff_plain/ba659b53059e637777865e646f0f2a6fb7f2988e..2427a7a4ff1fe48d61d649a0c1618f3528a95231:/selfforum-cgi/shared/Encode/Posting.pm
diff --git a/selfforum-cgi/shared/Encode/Posting.pm b/selfforum-cgi/shared/Encode/Posting.pm
index b12420f..80c414b 100644
--- a/selfforum-cgi/shared/Encode/Posting.pm
+++ b/selfforum-cgi/shared/Encode/Posting.pm
@@ -2,7 +2,7 @@
# ====================================================
# Autor: n.d.p. / 2001-01-07
-# lm : n.d.p. / 2001-01-08
+# lm : n.d.p. / 2001-02-25
# ====================================================
# Funktion:
# Spezielle Codierung eines Postingtextes
@@ -12,15 +12,14 @@ use strict;
package Encode::Posting;
-use vars qw(@ISA @EXPORT);
+use vars qw(@EXPORT);
use Encode::Plain; $Encode::Plain::utf8 = 1;
# ====================================================
# Funktionsexport
# ====================================================
-require Exporter;
-@ISA = qw(Exporter);
+use base qw(Exporter);
@EXPORT = qw(encoded_body answer_field message_field);
################################
@@ -49,7 +48,7 @@ sub encoded_body ($;$) {
# normaler Link
$posting =~ s{\[link:\s*
- ((?:ftp:// # hier beginnt $1
+ ((?:ftp:// # hier beginnt $1
| https?://
| about:
| view-source:
@@ -60,14 +59,14 @@ sub encoded_body ($;$) {
| telnet://
| wais://
| prospero://
- | \.\.?/ # relativ auf dem server
- | / # absolut auf dem server
- | (?:[a-zA-Z.\d]+)?\?? # im forum
- ) [^\s<'()\[\]]+ # auf jeden Fall kein \s und kein ] etc.
- ) # hier ist $1 zuende
- \s*(?:\]|(\s|\(|\)|
)) # der Begrenzer (\s, ] oder Zeilenende)
+ | \.\.?/ # relativ auf dem server
+ | / # absolut auf dem server
+ | (?:[a-zA-Z.\d]+)?\?? # im forum
+ ) [^\s<'()\[\]]+ # auf jeden Fall kein \s und kein ] etc.
+ ) # hier ist $1 zuende
+ \s*(?:\]|(\s|&(?!amp;)|\(|\)|
)) # der Begrenzer (\s, ] oder Zeilenende)
}
- {$1$2}gix; # und der Link
+ {$1$2}gix; # und der Link
# javascript-links extra
my $klammer1='\((?:[^)])*\)';
@@ -76,27 +75,27 @@ sub encoded_body ($;$) {
my $klammer4="\\((?:$klammer3|(?:[^)])*)\\)";
$posting =~ s{\[link:\s*
- (javascript: # hier beginnt $1
+ (javascript: # hier beginnt $1
(?:
- $klammer4 # Klammern bis Verschachtelungstiefe 4 (sollte reichen?)
- | '[^\'\\]*(?:\\.[^\'\\]*)*' # mit ' quotierter String, J.F. sei gedankt
- # im String sind Escapes zugelassen (also auch \')
- # damit werden (korrekt gesetzte) Javascript-Links moeglich
- | [^\s<()'\]]+)+ # auf jeden Fall kein \s und kein ] (ausser im String)
- ) # hier ist $1 zuende
- \s*(?:\s|\]|(\(|\)|
)) # der Begrenzer (\s, ] oder Zeilenende)
+ $klammer4 # Klammern bis Verschachtelungstiefe 4 (sollte reichen?)
+ | '[^\'\\]*(?:\\.[^\'\\]*)*' # mit ' quotierter String, J.F. sei gedankt
+ # im String sind Escapes zugelassen (also auch \')
+ # damit werden (korrekt gesetzte) Javascript-Links moeglich
+ | [^\s<()'\]]+)+ # auf jeden Fall kein \s und kein ] (ausser im String)
+ ) # hier ist $1 zuende
+ \s*(?:\s|\]|(\(|\)|&(?!amp;)|
)) # der Begrenzer (\s, ] oder Zeilenende)
}
- {$1$2}gix; # und der Link
+ {$1$2}gix; # und der Link
# images
$posting =~ s{\[image:\s*
((?:https?://
- | \.\.?/ # relativ auf dem server
- | / # absolut auf dem server
- | (?:[a-zA-Z.\d]+)?\?? # im forum
- ) [^\s<'()\[\]]+ # auf jeden Fall kein \s und kein ] etc.
- ) # hier ist $1 zuende
- \s*(?:\]|(\s|\(|\)|
)) # der Begrenzer (\s, ] oder Zeilenende)
+ | \.\.?/ # relativ auf dem server
+ | / # absolut auf dem server
+ | (?:[a-zA-Z.\d]+)?\?? # im forum
+ ) [^\s<'()\[\]]+ # auf jeden Fall kein \s und kein ] etc.
+ ) # hier ist $1 zuende
+ \s*(?:\]|(\s|\(|\)|&(?!amp;)|
)) # der Begrenzer (\s, ] oder Zeilenende)
}
{$2}gix; # und das Bild
@@ -113,13 +112,13 @@ sub encoded_body ($;$) {
| telnet://
| wais://
| prospero://
- | \.\.?/ # relativ auf dem server
- | / # absolut auf dem server
- | [a-zA-Z\d]+(?:\.html?|/) # im forum (koennen eh nur threads oder verweise
- # auf tiefere verzeichnisse sein)
- )[^\s<'()\]]+ # auf jeden Fall kein \s und kein ] etc. (s.o.)
- ) # hier ist $1 zuende
- \s*(?:\]|(\s|\(|\)|
)) # der Begrenzer (\s, ] oder Zeilenende)
+ | \.\.?/ # relativ auf dem server
+ | / # absolut auf dem server
+ | [a-zA-Z\d]+(?:\.html?|/) # im forum (koennen eh nur threads oder verweise
+ # auf tiefere verzeichnisse sein)
+ )[^\s<'()\]]+ # auf jeden Fall kein \s und kein ] etc. (s.o.)
+ ) # hier ist $1 zuende
+ \s*(?:\]|(\s|\(|\)|&(?!amp;)|
)) # der Begrenzer (\s, ] oder Zeilenende)
}
{$2}gix;
@@ -152,7 +151,7 @@ sub answer_field ($$) {
my $qchar = $params -> {quoteChars};
- $area =~ s/(?:^|(
))(?!
)/$1\177/g if ($params -> {quoteArea}); # Antwortfeld quoten?!
+ $area =~ s/(?:^|(
))(?!
)/$1 || '' . "\177"/eg if ($params -> {quoteArea}); # Antwortfeld quoten?!
$area =~ s/\177/$qchar/g; # normalisierte Quotes jedenfalls in Chars umsetzen
# HTML-Zeug zurueckuebersetzen
@@ -199,7 +198,7 @@ sub message_field ($$) {
foreach $line (split (/
/,$posting)) { # Zeilenweise gucken,
($q) = ($line =~ /^(\177+)/g); # wieviele
- $level = length ($q); # Quotingchars am Anfang stehen
+ $level = length ($q or ''); # Quotingchars am Anfang stehen
if ($level != $last_level) { # wenn sich was verandert...
# ... dann TU ETWAS!