home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------------------------
- :Program. SelectMail
- :Contents. selects all messages addressed to a certain user
- :Author. Martin Horneffer [mh]
- :Address. Snail Mail: EMail:
- :Address. Warmweiherstraße 18 UUCP: mh@umshq.adsp.sub.org
- :Address. D-5100 Aachen FIDO: 2:242/7.9
- :History. v?.? [mh] 15-Apr-92
- :History. v1.0 [kai] 04-Apr-93 adepted to new interfaces
- :Copyright. Public Domain
- :Language. Oberon
- :Translator. AMIGA OBERON v3.01d
- :Imports. ums, MHArgs
- ------------------------------------------------------------------------ *)
- MODULE SelectMail;
-
- IMPORT ums, MHArgs, io, u:Utility, sys:SYSTEM, NoGuru;
-
- VAR
- login : LONGINT;
- cfg : MHArgs.Config;
- name,pwd,sname: ARRAY 256 OF CHAR;
-
- result : LONGINT;
-
- PROCEDURE CheckErr();
- VAR err: INTEGER; txt:ums.STRPTR;
- BEGIN
- err := ums.ErrNum( login );
- IF err # ums.ok THEN
- io.WriteString("UMS-error:");
- io.WriteInt( err, 3);
- io.WriteString(", '");
- txt := ums.ErrTxt( login );
- io.WriteString(txt^);
- io.WriteString("'\n");
- HALT(20);
- END;
- END CheckErr;
-
- BEGIN
- cfg := MHArgs.OpenConfig( "NAME/A,PASSWORD/A,SELECT-NAME","Select Mail 1.0 - © 4.4.1992 by Martin Horneffer\n"
- "Select messages addressed to a certain user.\n\n"
- "name, password : your name and password for UMS.\n"
- " select-name : select all messages that are addressed to this user.\n"
- " This is done by the 'to'-field as well as by threads.\n"
- " Default is same as 'name'\n"
- "\o$VER: SelectMail 1.0 (4.4.93)\n\r", NIL);
-
- IF cfg = NIL THEN HALT(20) END;
- IF cfg.GetString( "NAME", name) & cfg.GetString( "PASSWORD", pwd) THEN
- IF ~cfg.GetString( "SELECT-NAME", sname) THEN sname := name END;
-
- login := ums.Login( name, pwd);
- IF login = 0 THEN
- io.WriteString("login failure\n");
- ELSE
-
- (* NOTE: since we just logged in all local flags are cleared. *)
- (* Usually you'll have to clear them by hand before using. *)
-
-
- (* set local flag 0 on all new messages *)
-
- io.WriteString("looking for new messages: ");
- result := ums.UMSSelectTags( login,
- ums.tagSelMask, LONGSET{ums.ViewAccess,ums.postPoned,ums.Old},
- ums.tagSelMatch, LONGSET{ums.ViewAccess},
-
- ums.tagSelWriteLocal, 1,
- ums.tagSelSet, LONGSET{0},
- ums.tagSelUnset, LONGSET{},
- u.done);
- io.WriteInt( result, 1); io.WriteString(" found.\n");
- CheckErr();
-
-
- (* set local flag 1 on all messages with matching TONAME *)
-
- io.WriteString("selecting by name: ");
- result := ums.UMSSelectTags( login,
- ums.tagToName, sys.ADR(sname),
-
- ums.tagSelWriteLocal, 1,
- ums.tagSelSet, LONGSET{1},
- ums.tagSelUnset, LONGSET{},
- ums.tagSelQuick, 1,
- u.done);
- io.WriteInt( result, 1); io.WriteString(" selected.\n");
- CheckErr();
-
- (* set local flag 4 for the new ones amongst them *)
-
- io.WriteString(" new messages amongst these: ");
- result := ums.UMSSelectTags( login,
- ums.tagSelReadLocal, 1,
- ums.tagSelMask, LONGSET{0,1},
- ums.tagSelMatch, LONGSET{0,1},
-
- ums.tagSelWriteLocal, 1,
- ums.tagSelSet, LONGSET{4},
- ums.tagSelUnset, LONGSET{},
- ums.tagSelQuick, 1,
- u.done);
- io.WriteInt( result, 1); io.WriteString(".\n");
- CheckErr();
-
-
- (* set local flag 2 on all messages with matching FROMNAME *)
-
- io.WriteString("looking for messages written by you: ");
- result := ums.UMSSelectTags( login,
- ums.tagFromName, sys.ADR(sname),
-
- ums.tagSelWriteLocal, 1,
- ums.tagSelSet, LONGSET{2},
- ums.tagSelUnset, LONGSET{},
- ums.tagSelQuick, 1,
- u.done);
- io.WriteInt( result, 1); io.WriteString(" found.\n");
- CheckErr();
-
- (* set local flag 3 on all replies to messages with flag 2 *)
-
- io.WriteString("selecting replies to your msgs: ");
- result := ums.UMSSelectTags( login,
- ums.tagSelReadLocal, 1,
- ums.tagSelParent, 1,
- ums.tagSelMask, LONGSET{2},
- ums.tagSelMatch, LONGSET{2},
-
- ums.tagSelWriteLocal, 1,
- ums.tagSelSet, LONGSET{3},
- ums.tagSelUnset, LONGSET{},
- ums.tagSelQuick, 1,
- u.done);
- io.WriteInt( result, 1); io.WriteString(" selected.\n");
- CheckErr();
-
- (* set local flag 4 for the new ones amongst them *)
-
- io.WriteString(" new messages amongst these: ");
- result := ums.UMSSelectTags( login,
- ums.tagSelReadLocal, 1,
- ums.tagSelMask, LONGSET{0,3},
- ums.tagSelMatch, LONGSET{0,3},
-
- ums.tagSelWriteLocal, 1,
- ums.tagSelSet, LONGSET{4},
- ums.tagSelUnset, LONGSET{},
- ums.tagSelQuick, 1,
- u.done);
- io.WriteInt( result, 1); io.WriteString(".\n");
- CheckErr();
-
-
- (* set user-flag 7 on all messages with local flag 4 set *)
-
- io.WriteString("totally selected: ");
- result := ums.UMSSelectTags( login,
- ums.tagSelReadLocal, 1,
- ums.tagSelMask, LONGSET{4},
- ums.tagSelMatch, LONGSET{4},
-
- ums.tagSelSet, LONGSET{ums.selected},
- ums.tagSelUnset, LONGSET{},
- u.done);
- io.WriteInt( result, 1); io.WriteString(".\n");
- CheckErr();
-
- END;
- END;
-
- CLOSE
- IF login # 0 THEN ums.Logout(login) END;
- END SelectMail.
-