home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 35 Internet
/
35-Internet.zip
/
pofamu.zip
/
POFAMU.INF
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1998-08-23
|
10KB
|
263 lines
ΓòÉΓòÉΓòÉ 1. PMMAIL Offline Folder Archive and Maintenance Utility (ALPHA) ΓòÉΓòÉΓòÉ
This program is for the 'offline' maintenance of PMMAIL folders, meaning that
PMMAIL should not be running when it is invoked. It is designed for
user-programmers; i.e., not for the GUI-bred. The program is directed almost
entirely from a control file.
The program allows the user to specify selection criteria for mail messages
using the fields maintained by PMMAIL in its index files. These criteria are
assigned Reserved Names by POFAMU such as From_name, From_addr and are used to
form boolean expressions. These expressions are assigned user identifiers
called Spec-names. These Spec-names are used to assign specified actions to
selected groups of messages.
ΓòÉΓòÉΓòÉ 2. Installation ΓòÉΓòÉΓòÉ
This isn't a GUI program, so I haven't considered building a desktop object for
it, as part of installation. Just copy POFAMU.EXE to any directory in your
PATH statement. You might want to copy a program template to the desktop and
build an object that references your 'daily' control file in the Parameters
field.
Using any ASCII text editor, edit your control file and place it in the working
directory referenced by the new program object.
You might want to add the invocation to your 'chron' or 'alarm clock' program
if you are running round the clock.
INFO-ZIP and UNZIP are required for operation of the Archive function.
ΓòÉΓòÉΓòÉ 3. Control File ΓòÉΓòÉΓòÉ
Using the configuration and rules information in the control file specified in
the invocation argument, manipulate the PMMail folders therein described.
ΓòÉΓòÉΓòÉ 3.1. Keywords ΓòÉΓòÉΓòÉ
Control file statements have the form of keyword = value, one per line. The
operands of these statements are case insensitive, treated as upper-case, when
not within a quoted string.
Order IS important, since the Basedir entry is required prior to any Account or
Folder statements. Whitespace is the only delimiter for tokens within these
statements. Tabs and blanks constitute (normal) whitespace.
Only interlinear (# in 1st char) comments are allowed.
Possible statement keywords:
Mode
CheckOut, Run, or Force, defaults to CheckOut. CheckOut allows the
user to test his/her control file prior to use.
Logmode
Audit or Silent or Warn or Debug - how verbose the output, defaults
to 'Audit'.
Base
like e:\southsde\pmmail - your root PMMail directory; This is a
required parameter. The directory where pmmail.exe is stored.
specname
boolex << relop '{' boolex > relop boolex '}' > specnames
Account
"Internal Account-Name". Begin processing the specified account.
PMMAIL has a habit of corrupting the account name by shifting a
control character into the the first character position of the name.
If you receive an "Invalid Account" error, view ACCT.INI with a
binary editor and check out the characters beginning x'80' offset
from the string 'DACCTNAME'. Include this character within the
quoted string for account-name.
All following specifications until the next Account keyword will
apply to this account.
Folder
"Internal Folder-Name" Nested folders are designated via multiple
strings; i.e. "Friends" "Joe". All statements following this one
apply to this folder. These statements will all be of the form:
'action' = specification-name-list
ΓòÉΓòÉΓòÉ 3.2. Selection Criteria ΓòÉΓòÉΓòÉ
The boolean expressions used by POFAMU are of the form:
Reserved Word Operator Constant
The Reserved words are:
Subject
The subject line as stored in the FOLDER.BAG file. If the specified
constant string is a case-insensitive substring of this Subject line
than it is considered equal ('=').
From_name
The name (if any) in the From: line of the header. If the specified
constant string is a case-insensitive substring of this From_name,
than it is considered equal ('=').
From_addr
The email address (if any) in the From: line of the header. If the
specified constant string is a case-insensitive substring of this
From_addr, than it is considered equal ('=').
To_addr
The email address (if any) in the To: line of the header. If the
specified constant string is a case-insensitive substring of this
To_addr, than it is considered equal ('=').
To_name
The email address (if any) in the To: line of the header. If the
specified constant string is a case-insensitive substring of this
To_name, than it is considered equal ('=').
Status
The constants for comparison must be Read, Unread, Replied, or Sent.
This is the current FOLDER.BAG state of the message.
Size
The constants for size comparison must be numbers of bytes, without a
'k' or 'm' suffix.
Age
This value means the age in hours of the message. The difference
between the current date/time and date/time stored in FOLDER.BAG. The
suffix 'd' or 'h' is mandatory.
ΓòÉΓòÉΓòÉ 3.3. Action Statements ΓòÉΓòÉΓòÉ
Actions are of the form:
action-name = specname <..specname> <Account-specifier>
The built-in actions are Move, Delete, Archive, and Copy.
Archive = specname <..specname>
Messages meeting the criteria of any of the
specification names are ZIP-moved into the file
POFAMU.ZIP in the affected folder directory. The
message file is deleted. A file POFAMU.BAG within the
POFAMU.ZIP file is in standard PMMAIL index format.
Delete = specname <..specname>
Messages meeting the criteria of ANY of the
specification names in the list
Move = specname account-name
Messages meeting the criteria of the single
specification are moved to the specified account and
folder. If account-name is given as '=', then the
current account is assumed.
Copy = specname account-name
Copy is not implemented currently.
It is highly recommended that you test any new or modified control files with
Mode = CheckOut before using Mode = Run. If fact, you might want to leave the
Mode command out of your control file altogether. When you truly want to
commit the changes, use Run as the second command line argument.
ΓòÉΓòÉΓòÉ 3.4. Syntax ΓòÉΓòÉΓòÉ
account-name ::: PMMail internal account name | '=' (for current account)
folder-name ::: PMMail internal folder name
time_val ::: number || tqal
tqal ::: 'd' or 'h' days or hours
boolex ::: key_id operator comparator
operator ::: '=' or '>' or '<' or '<>'
comparator ::: "string" or number
relop ::: 'AND' or 'OR'
key_id ::: Age or From_addr or From_name or Status or Size or To_addr or
To_name or Subject
'OR' logic has not yet been tested. So don't expect it to work.
( For Status, the 'number' may be 'Unread', 'Read', 'Replied' , 'Sent', or
0, 1, 2, or 3 )
ΓòÉΓòÉΓòÉ 4. Command Line ΓòÉΓòÉΓòÉ
Invoke the program like so%colon.
pofamu control-file-path <runmode>
Control-file-path is mandatory. Runmode is optional and overrides the value
in the control file.
ΓòÉΓòÉΓòÉ 5. Sample Control File ΓòÉΓòÉΓòÉ
# initial test configuration file
#
# Base directory for PMMAIL folders
# must specify where to start looking
Base = e
Hale_3day = { From_name = "Haley Landers" } AND { Age > 3d }
Golden_3day = { From_name = "Dave Goldenbugle" } AND { Age > 3d }
Rick_3day = { From_name = "Rick G. Shepherd" } AND { Age > 3d }
THE_author = { From_name = "Mark Hessling" }
Humor = From_name = "west@ib"
Weekold = Age > 7d
TwoWeekOld = Age > 14d
MonthOld = Age > 30d
# We have two accounts that are actively in use
Account = "Dave's Mail"
Folder = "Trash"
Move = Bobs_3day = "Friends" "Bob"
Move = Paul_3day = "Friends" "Bash"
Move = Hale_3day = "Friends" "Hale"
Move = Golden_3day = "Friends" "Goldenbugle"
Move = Rick_3day = "Friends" "Rick"
Move = THE_author = "Programming" "Hessling"
Move = Humor = "Humor"
Delete = TwoWeekOld
Folder = "Sent Mail"
Delete = MonthOld
Folder = "Programming" "MVS-OE"
Archive = Weekold
Account = "Trish's Mail"
Folder = "Trash"
Delete = TwoWeekOld
ΓòÉΓòÉΓòÉ 6. Problem Diagnosis ΓòÉΓòÉΓòÉ
Beginning with version 1.9, if an exception occurs during operation, POFAMU
will output a short message and produce a file M2DUMP.000 in the 'Base'
directory for PMMAIL. If the reason for the exception isn't apparent, zip this
file and PMMAIL/Attach it to a message sent to the author.
ΓòÉΓòÉΓòÉ 7. Author ΓòÉΓòÉΓòÉ
This code is the work of :
Dave Serls
Internet: dave@dashs.denver.co.us