mirror of
https://github.com/vishapoberon/vipak.git
synced 2026-04-06 04:52:26 +00:00
don't know.
This commit is contained in:
parent
f2d06dd9a5
commit
0edfd99ca4
2 changed files with 98 additions and 88 deletions
133
IRC.Mod
133
IRC.Mod
|
|
@ -47,7 +47,6 @@ CONST
|
||||||
cbPublicMessage* = PROCEDURE (VAR msg, msgtype, user, ident, rcpt, host: ARRAY OF CHAR);
|
cbPublicMessage* = PROCEDURE (VAR msg, msgtype, user, ident, rcpt, host: ARRAY OF CHAR);
|
||||||
cbPublicMessageWithMention* = PROCEDURE(VAR msg, msgtype, user, ident, rcpt, host: ARRAY OF CHAR); (* rcpt is usually the room in case of public messages *)
|
cbPublicMessageWithMention* = PROCEDURE(VAR msg, msgtype, user, ident, rcpt, host: ARRAY OF CHAR); (* rcpt is usually the room in case of public messages *)
|
||||||
|
|
||||||
|
|
||||||
instance* = RECORD
|
instance* = RECORD
|
||||||
owner*, user*, nick*, host*, port*: chn;
|
owner*, user*, nick*, host*, port*: chn;
|
||||||
connection*: Internet.Socket;
|
connection*: Internet.Socket;
|
||||||
|
|
@ -60,7 +59,8 @@ CONST
|
||||||
|
|
||||||
|
|
||||||
VAR
|
VAR
|
||||||
eol* : ARRAY 3 OF CHAR;
|
eol- : ARRAY 3 OF CHAR;
|
||||||
|
debug: BOOLEAN;
|
||||||
|
|
||||||
PROCEDURE setLogging*(VAR inst: instance; state: BOOLEAN);
|
PROCEDURE setLogging*(VAR inst: instance; state: BOOLEAN);
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
@ -397,57 +397,6 @@ BEGIN
|
||||||
Strings.Delete(msg, 0, Strings.Length(nick) + 2);
|
Strings.Delete(msg, 0, Strings.Length(nick) + 2);
|
||||||
END cutMentionFromMessage;
|
END cutMentionFromMessage;
|
||||||
|
|
||||||
(* IntToStr routine taken from
|
|
||||||
https://github.com/romiras/Oberon-F-components/blob/master/Ott/Mod/IntStr.cp
|
|
||||||
and modified to work on 64bit system by dcwbrown,
|
|
||||||
in order to avoid using oocIntStr, which has many dependencies *)
|
|
||||||
PROCEDURE Reverse0 (VAR str : ARRAY OF CHAR; start, end : INTEGER);
|
|
||||||
(* Reverses order of characters in the interval [start..end]. *)
|
|
||||||
VAR
|
|
||||||
h : CHAR;
|
|
||||||
BEGIN
|
|
||||||
WHILE start < end DO
|
|
||||||
h := str[start]; str[start] := str[end]; str[end] := h;
|
|
||||||
INC(start); DEC(end)
|
|
||||||
END
|
|
||||||
END Reverse0;
|
|
||||||
|
|
||||||
PROCEDURE IntToStr*(int: LONGINT; VAR str: ARRAY OF CHAR);
|
|
||||||
(* Converts the value of `int' to string form and copies the possibly truncated
|
|
||||||
result to `str'. *)
|
|
||||||
VAR
|
|
||||||
b : ARRAY 21 OF CHAR;
|
|
||||||
s, e: INTEGER;
|
|
||||||
maxLength : SHORTINT; (* maximum number of digits representing a LONGINT value *)
|
|
||||||
BEGIN
|
|
||||||
IF SIZE(LONGINT) = 4 THEN maxLength := 11 END;
|
|
||||||
IF SIZE(LONGINT) = 8 THEN maxLength := 20 END;
|
|
||||||
(* build representation in string 'b' *)
|
|
||||||
IF int = MIN(LONGINT) THEN (* smallest LONGINT, -int is an overflow *)
|
|
||||||
IF SIZE(LONGINT) = 4 THEN
|
|
||||||
b := "-2147483648";
|
|
||||||
e := 11
|
|
||||||
ELSE (* SIZE(LONGINT) = 8 *)
|
|
||||||
b := "-9223372036854775808";
|
|
||||||
e := 20
|
|
||||||
END
|
|
||||||
ELSE
|
|
||||||
IF int < 0 THEN (* negative sign *)
|
|
||||||
b[0] := "-"; int := -int; s := 1
|
|
||||||
ELSE (* no sign *)
|
|
||||||
s := 0
|
|
||||||
END;
|
|
||||||
e := s; (* 's' holds starting position of string *)
|
|
||||||
REPEAT
|
|
||||||
b[e] := CHR(int MOD 10+ORD("0"));
|
|
||||||
int := int DIV 10;
|
|
||||||
INC(e)
|
|
||||||
UNTIL int = 0;
|
|
||||||
b[e] := 0X;
|
|
||||||
Reverse0(b, s, e-1);
|
|
||||||
END;
|
|
||||||
COPY(b, str) (* truncate output if necessary *)
|
|
||||||
END IntToStr;
|
|
||||||
|
|
||||||
PROCEDURE formTimeString(VAR str: ARRAY OF CHAR);
|
PROCEDURE formTimeString(VAR str: ARRAY OF CHAR);
|
||||||
VAR
|
VAR
|
||||||
|
|
@ -456,12 +405,12 @@ VAR
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
time.Now(year, month, day, hour, minute, second);
|
time.Now(year, month, day, hour, minute, second);
|
||||||
IntToStr(year, syear);
|
sh.IntToStr(year, syear);
|
||||||
IntToStr(month, smonth);
|
sh.IntToStr(month, smonth);
|
||||||
IntToStr(day, sday);
|
sh.IntToStr(day, sday);
|
||||||
IntToStr(hour, shour);
|
sh.IntToStr(hour, shour);
|
||||||
IntToStr(minute, sminute);
|
sh.IntToStr(minute, sminute);
|
||||||
IntToStr(second, ssecond);
|
sh.IntToStr(second, ssecond);
|
||||||
|
|
||||||
COPY(syear, str);
|
COPY(syear, str);
|
||||||
Strings.Append("-", str);
|
Strings.Append("-", str);
|
||||||
|
|
@ -484,36 +433,38 @@ VAR
|
||||||
str: ARRAY msgLen OF CHAR;
|
str: ARRAY msgLen OF CHAR;
|
||||||
tmp: ARRAY 16 OF CHAR;
|
tmp: ARRAY 16 OF CHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
sh.zeroStr(str);
|
IF inst.doLog THEN
|
||||||
Out.String("logging about: "); Out.String(username); Out.String(", "); Out.String(messagetype); Out.String(", "); Out.String(rcpt); Out.Ln;
|
sh.zeroStr(str);
|
||||||
i := 0; b := FALSE;
|
Out.String("logging about: "); Out.String(username); Out.String(", "); Out.String(messagetype); Out.String(", "); Out.String(rcpt); Out.Ln;
|
||||||
REPEAT
|
i := 0; b := FALSE;
|
||||||
Out.String("is "); Out.String(inst.channelList^[i].channel); Out.String("="); Out.String(rcpt); Out.String("?"); Out.Ln;
|
REPEAT
|
||||||
IF inst.channelList^[i].channel = rcpt THEN b := TRUE END;
|
Out.String("is "); Out.String(inst.channelList^[i].channel); Out.String("="); Out.String(rcpt); Out.String("?"); Out.Ln;
|
||||||
INC(i);
|
IF inst.channelList^[i].channel = rcpt THEN b := TRUE END;
|
||||||
UNTIL (i = LEN(inst.channelList^)) OR b;
|
INC(i);
|
||||||
IF b THEN Out.String("yes!") ELSE Out.String("no!") END; Out.Ln;
|
UNTIL (i = LEN(inst.channelList^)) OR b;
|
||||||
IF b OR (messagetype = msgPART) THEN (* we don't know from which channel user quits so we only write to log about it when he parts. *)
|
IF b THEN Out.String("yes!") ELSE Out.String("no!") END; Out.Ln;
|
||||||
DEC(i);
|
IF b OR (messagetype = msgPART) THEN (* we don't know from which channel user quits so we only write to log about it when he parts. *)
|
||||||
formTimeString(str);
|
DEC(i);
|
||||||
Strings.Append(username, str);
|
formTimeString(str);
|
||||||
IF messagetype = msgPRIVMSG THEN
|
Strings.Append(username, str);
|
||||||
tmp := ": ";
|
IF messagetype = msgPRIVMSG THEN
|
||||||
Strings.Append(tmp, str);
|
tmp := ": ";
|
||||||
Strings.Append(message, str);
|
Strings.Append(tmp, str);
|
||||||
ELSIF messagetype = msgJOIN THEN
|
Strings.Append(message, str);
|
||||||
tmp := " joined ";
|
ELSIF messagetype = msgJOIN THEN
|
||||||
Strings.Append (tmp, str);
|
tmp := " joined ";
|
||||||
Strings.Append (rcpt, str);
|
Strings.Append (tmp, str);
|
||||||
ELSIF (messagetype = msgPART) THEN
|
Strings.Append (rcpt, str);
|
||||||
tmp := " has quit";
|
ELSIF (messagetype = msgPART) THEN
|
||||||
Strings.Append(tmp, str);
|
tmp := " has quit";
|
||||||
|
Strings.Append(tmp, str);
|
||||||
|
END;
|
||||||
|
Out.String("writing to "); Out.String(rcpt); Out.String(" log: "); Out.String(str); Out.Ln;
|
||||||
|
Files.WriteString(inst.channelList^[i].rider, str);
|
||||||
|
Files.Set(inst.channelList^[i].rider, inst.channelList^[i].logfile, Files.Pos(inst.channelList^[i].rider)-1); Files.Write(inst.channelList^[i].rider, 0AX);
|
||||||
|
Files.Register(inst.channelList^[i].logfile);
|
||||||
END;
|
END;
|
||||||
Out.String("writing to "); Out.String(rcpt); Out.String(" log: "); Out.String(str); Out.Ln;
|
END; (* if do log *)
|
||||||
Files.WriteString(inst.channelList^[i].rider, str);
|
|
||||||
Files.Set(inst.channelList^[i].rider, inst.channelList^[i].logfile, Files.Pos(inst.channelList^[i].rider)-1); Files.Write(inst.channelList^[i].rider, 0AX);
|
|
||||||
Files.Register(inst.channelList^[i].logfile);
|
|
||||||
END;
|
|
||||||
END log;
|
END log;
|
||||||
|
|
||||||
PROCEDURE finalize*(VAR inst: instance);
|
PROCEDURE finalize*(VAR inst: instance);
|
||||||
|
|
@ -692,6 +643,12 @@ BEGIN
|
||||||
UNTIL ~b OR ~b2;
|
UNTIL ~b OR ~b2;
|
||||||
END Loop;
|
END Loop;
|
||||||
|
|
||||||
|
PROCEDURE setDebug*(state: BOOLEAN);
|
||||||
|
BEGIN
|
||||||
|
debug := state
|
||||||
|
END setDebug;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
eol[0] := LF; eol[1] := CR;
|
eol[0] := LF; eol[1] := CR;
|
||||||
|
debug := FALSE;
|
||||||
END IRC.
|
END IRC.
|
||||||
|
|
|
||||||
|
|
@ -187,4 +187,57 @@ BEGIN
|
||||||
RETURN pstrs
|
RETURN pstrs
|
||||||
END textToPstrings;
|
END textToPstrings;
|
||||||
|
|
||||||
|
(* IntToStr routine taken from
|
||||||
|
https://github.com/romiras/Oberon-F-components/blob/master/Ott/Mod/IntStr.cp
|
||||||
|
and modified to work on 64bit system by dcwbrown,
|
||||||
|
in order to avoid using oocIntStr, which has many dependencies *)
|
||||||
|
PROCEDURE Reverse0 (VAR str : ARRAY OF CHAR; start, end : INTEGER);
|
||||||
|
(* Reverses order of characters in the interval [start..end]. *)
|
||||||
|
VAR
|
||||||
|
h : CHAR;
|
||||||
|
BEGIN
|
||||||
|
WHILE start < end DO
|
||||||
|
h := str[start]; str[start] := str[end]; str[end] := h;
|
||||||
|
INC(start); DEC(end)
|
||||||
|
END
|
||||||
|
END Reverse0;
|
||||||
|
|
||||||
|
PROCEDURE IntToStr*(int: LONGINT; VAR str: ARRAY OF CHAR);
|
||||||
|
(* Converts the value of `int' to string form and copies the possibly truncated
|
||||||
|
result to `str'. *)
|
||||||
|
VAR
|
||||||
|
b : ARRAY 21 OF CHAR;
|
||||||
|
s, e: INTEGER;
|
||||||
|
maxLength : SHORTINT; (* maximum number of digits representing a LONGINT value *)
|
||||||
|
BEGIN
|
||||||
|
IF SIZE(LONGINT) = 4 THEN maxLength := 11 END;
|
||||||
|
IF SIZE(LONGINT) = 8 THEN maxLength := 20 END;
|
||||||
|
(* build representation in string 'b' *)
|
||||||
|
IF int = MIN(LONGINT) THEN (* smallest LONGINT, -int is an overflow *)
|
||||||
|
IF SIZE(LONGINT) = 4 THEN
|
||||||
|
b := "-2147483648";
|
||||||
|
e := 11
|
||||||
|
ELSE (* SIZE(LONGINT) = 8 *)
|
||||||
|
b := "-9223372036854775808";
|
||||||
|
e := 20
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
IF int < 0 THEN (* negative sign *)
|
||||||
|
b[0] := "-"; int := -int; s := 1
|
||||||
|
ELSE (* no sign *)
|
||||||
|
s := 0
|
||||||
|
END;
|
||||||
|
e := s; (* 's' holds starting position of string *)
|
||||||
|
REPEAT
|
||||||
|
b[e] := CHR(int MOD 10+ORD("0"));
|
||||||
|
int := int DIV 10;
|
||||||
|
INC(e)
|
||||||
|
UNTIL int = 0;
|
||||||
|
b[e] := 0X;
|
||||||
|
Reverse0(b, s, e-1);
|
||||||
|
END;
|
||||||
|
COPY(b, str) (* truncate output if necessary *)
|
||||||
|
END IntToStr;
|
||||||
|
|
||||||
|
|
||||||
END stringHelpers.
|
END stringHelpers.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue