home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / comm / ums / SUMSTools.lha / UMS / Tools / SUMSTools / Source / sumstl.doc < prev    next >
Text File  |  1995-08-03  |  25KB  |  754 lines

  1. TITLE       : sumsset, sumsprint, sumswrite, sumsfolder, sumsdel, sumsexport
  2. AUTHORS     : Stefan Stuntz <stuntz@informatik.tu-muenchen.de>
  3. AUTHORS     : Bernhard Moellemann <zza@mhystic.hall.sub.org>
  4. AUTHORS     : Matthias Scheler <tron@lyssa.owl.de>
  5. AUTHORS     : Klaus Melchior <kmel@eifel.tng.oche.de>
  6. AUTHORS     : Oliver Oster <olio@informatik.uni-bremen.de>
  7. AUTHORS     : Ulrich Sibiller <uli@pizza.tynet.sub.org>
  8. COPYRIGHT   : Public Domain
  9. REQUIREMENTS: Kickstart 2.x, UMS release V10
  10.  
  11.  
  12.  
  13. HISTORY:
  14. --------
  15.  
  16. V1.0 (23-Aug-92) - Initial release
  17.  
  18.  
  19. V1.1 (30-Aug-92)
  20.  
  21. filters:   - corrected AGE filter.
  22. sumsset:   - modified screen output a little bit.
  23. sumsprint: - added "old" command line parameter.
  24. source:    - included full SAS/C source code. No comments, quick hack :)
  25.  
  26.  
  27. V1.2 (01-Sep-92)
  28.  
  29. sumsprint:  - "Netmail" is used for <Group> instead of an empty string.
  30.  
  31.  
  32. V2.0 (01-Sep-93)
  33.  
  34. - Adapted for UMS V10.
  35.  
  36. - Complete rewrite of the filter. It supports full boolean
  37.   argument parsing (with AND, OR and braces) now.
  38.   Attention: You will have to rewrite your scripts!
  39.  
  40. - Included pattern support.
  41.  
  42. - Please reread the docs, especially the filter part!
  43.  
  44.  
  45. V2.1 (16-Sep-93) [zza]
  46.  
  47. - Added UMS V10 fields Newsreader, Reply#? in sumsprint and sumswrite.
  48.  
  49. - Added support for printing status as characters.
  50.  
  51. - Fixed some minor bugs and enforcer hits.
  52.  
  53. - Added possibility to use every user flag for setting and filtering.
  54.  
  55.  
  56. V2.2 (02-Nov-93)
  57.  
  58. - Searching for MsgText was impossible.
  59.  
  60. - All tools were eating 24 bytes of memory.
  61.  
  62. - Fixed some filter parsing bugs.
  63.  
  64.  
  65. V2.3 (03-Nov-93)
  66.  
  67. - 2.2 was crap, please use 2.3 instead :-)
  68.  
  69. - Note: If you want to filter with the orphan bit, you have to enclose
  70.         it in quotes: 1> sumsset sysop "" *"orphan*"=1 ""
  71.  
  72.  
  73. V2.4 (03-Dec-93)
  74.  
  75. - Searching for Folder now possible [MS]
  76.  
  77. - wrote new tool "sumsfolder" [MS]
  78.  
  79.  
  80. V2.5 (03-Jan-94)
  81.  
  82. - all: Commandline is parsed with ReadArgs() [kmel]
  83.  
  84. - all: Added possibility to specify server [kmel]
  85.  
  86. - Added 'source/sumstl.rel' to generate release archive [kmel]
  87.  
  88. - umsfilter.c: Corrected date comparision, now the filter works like
  89.                you read, e.g.:  "Date>=01-Jan-94", all messages are
  90.                selected from the first of January upto now. [kmel]
  91.  
  92.  
  93. V2.6 (30-Jan-94)
  94.  
  95. - filter.c: Corrected misfeature with filter token, "AND" and "OR"
  96.             were also recognized in expressions, e.g.:
  97.             "group=adsp.networking" failed at 'netw or king' [kmel]
  98.  
  99.             Restrictions: Quotation marks '"' are still not
  100.                           recognized in filter strings
  101.  
  102. - date.c: Added new date formats "01.01.78", "1.1.78" [kmel]
  103.  
  104. - sumsprint.c: bumped to version 2.6 [kmel]
  105.  
  106. - sumsfolder.c: bumped to version 2.6 [kmel]
  107.  
  108. - all: Compiled with SASC 6.51 instead of DICE, now they should not
  109.        crash while using the filter expression 'group=""' [kmel]
  110.  
  111. - sumstl.rel: Changed, archive now includes "sumstl.readme" [kmel]
  112.  
  113.  
  114. V2.6a (13-Feb-94)
  115.  
  116. - all: Bug removed, array of cli arguments has to be cleared before
  117.        it is used. [kmel]
  118.  
  119.  
  120. V2.7 (05-Jul-94)
  121.  
  122. - umsfilter.c: fixed searching for constant expression on not indexed
  123.                header fields [MS]
  124.  
  125. - all: added support for LogicalToName, LogicalToAddr and RFCMsgNum [MS]
  126.  
  127. - all: reworked source codes and SAS/C Makefile, now V11 proof
  128.        "DMakefile" should be reworked, too. [MS]
  129.  
  130.  
  131. V2.7a (28-Jul-94)
  132.  
  133. - sumsfolder.c: only messages with View-, Read- and WriteAccess are
  134.                 modified now [MS]
  135.  
  136. V2.7b (04-Aug-94)
  137.  
  138. - DMakefile
  139.   sumstl.h
  140.   filter.h:  changed to add DICE compatibility. [olio]
  141.  
  142. - sumsfolder.c: now returns WARN (5) if no msgs matched
  143.                 the filter. Compiled with DICE 3.0. [olio]
  144.  
  145. V2.8 (01-Dec-94)
  146.  
  147. - sumswrite.c, sumsprint.c: added support for RfcAttr, FtnAttr, ZerAttr
  148.                             and MausAttr [MS]
  149. - sumsfolder.c, sumsset.c: added "Q=Quiet/S" option to suppress output
  150.                            of the filter [MS]
  151. - sumsset.c: added "FU=ForUser/K" option which specifies the user whose
  152.              flags are modified (user flags only of course) [MS]
  153.  
  154. V2.8a (01-Jan-95)
  155.  
  156. - sumsfolder.c, sumsset.c: added "T=Tiny/S" option to suppress output
  157.                            of the filter only, number of matching
  158.                            messages is still shown. This switch is
  159.                            overridden by "Q=Quiet". [US]
  160.  
  161. V2.9 (04-Jan-95)
  162.  
  163. - filter.c: supports scanning the Parked flag [MS]
  164. - sumsset.c: supports setting/clearing the Parked flag [MS]
  165. - sumsprint.c: fixed bug in error check [SS]
  166.  
  167. V2.10 (05-Mar-95) [zza]
  168.  
  169. - sumsdel.c: added
  170. - sumsset.c: warns if Deleted bit is set
  171. - sumstl.h: VERSION introduced for same version in all files
  172. - sumsprint.c: fixed access of arguments via argv
  173.                checking for CTRL-C in PrintMessage, too
  174.  
  175. V2.11 (03-Aug-95) [kmel]
  176.  
  177. - sumsexport.c: added [kmel]
  178. - new directory structure [kmel]
  179. - all: change CLI template to stop the problems with USER/A or
  180.        NAME/A [kmel]
  181. - umsfilter: ID_LENGTH, added new filter: TextLength, HeaderLength [SS]
  182. - all, sumstl.h: VERSION has information about the compiler [kmel]
  183. - all: Compiled with SASC 6.51, if compiling with Dice some
  184.        expressions produce an error [kmel]
  185.  
  186.  
  187. OVERVIEW:
  188. ---------
  189.  
  190. 'sumstl'  stands  for  "Stuntzi's UMS Tools"  and is a collection of six
  191. useful tools for the UMS message base system:
  192.  
  193. sumsprint  - extract certain messages from message base to a file.
  194. sumswrite  - create new messages.
  195. sumsset    - set certain bits on certain messages.
  196. sumsfolder - set folder on certain messages.
  197. sumsdel    - deletes certain messages
  198. sumsexport - exports certain messages in a UMS-specific format
  199.  
  200. With  the aid of these six tools, you can perform lots of actions,  such
  201. as automatic message archiving, automatic generation of return receipts,
  202. automatic message forwarding, areafix support, user filter, etc.
  203.  
  204. You  could  e.g.  select all messages about "MUI", extract them from the
  205. message  base  with  'sumsprint'  and forward them to a special MUI-Area
  206. with 'sumswrite'.
  207.  
  208. Or  you could select all messages from user "Martin Horneffer" and route
  209. them  via 'sumsprint' to a printer. Thus, you will have all his mumbling
  210. on a sheet of paper and can easily create some nice paper planes. :-)
  211.  
  212. If  you  are  a node that offers some kind of areafix, 'sumsprint' could
  213. extract  all  messages  to  user  "Areafix"  for further parsing with an
  214. areafix tool.
  215.  
  216. Do  you  need  some  kind  of  expire?   Just  select  all  messages  in
  217. 'fidonet.Amiga.ger'  that  are older than 30 days and set the Expire-Bit
  218. with 'sumsset'.
  219.  
  220. There are simply no limits!
  221.  
  222.  
  223.  
  224. LOGGING ON:
  225. -----------
  226.  
  227. Since  Stuntzi-Tools are mainly intended for automatic use within script
  228. files,  they  will only work from CLI.  All tools need a user name and a
  229. password and have the ability to set the server name.
  230.  
  231.  
  232.  
  233. FILTERING:
  234. ----------
  235.  
  236. Now  it's getting interesting.  Whenever a Stuntzi-Tool offers Filter as
  237. parameter, you must specify a filter-string which describes the messages
  238. that  this  Stuntzi-Tool  shall  work with.  Filter-strings consist of a
  239. boolean expression, e.g.  something like that:
  240.  
  241. ((age>10 AND group=fidonet.#?) OR (age>20 AND group=uucp.#?)) OR age>30
  242.  
  243. This  expression  would  select all fidonet messages older than 10 days,
  244. all  uucp  messages older than 20 days and all other messages older than
  245. 30 days.
  246.  
  247. To  be  a bit more specific, a filter expression consists of one or more
  248. conditions,  concatenated  with  "AND" or "OR" and grouped together with
  249. braces.
  250.  
  251. A  condition consists of a keyword, followed by some relation specifier,
  252. followed by some kind of data.
  253.  
  254. <condition> = <keyword> <relation> <parameter>
  255.  
  256. Keywords  are always bound to specific message fields, to global or user
  257. flags  or to message age or number.  Not all relations are valid for all
  258. keywords, have a look at the following table:
  259.  
  260. Keyword         Relations       Parameter Type      Sample
  261. --------------- --------------- ------------------- ------------------
  262. MsgText         = !=            string or pattern   MsgText=#?mui#?
  263. FromName        = !=            string or pattern
  264. FromAddr        = !=            string or pattern
  265. ToName          = !=            string or pattern   ToName="Hans Nase"
  266. ToAddr          = !=            string or pattern
  267. MsgID           = !=            string or pattern
  268. CreationDate    = !=            string or pattern
  269. ReceiveDate     = !=            string or pattern
  270. ReferID         = !=            string or pattern
  271. Group           = !=            string or pattern
  272. Subject         = !=            string or pattern
  273. Attributes      = !=            string or pattern
  274. Comments        = !=            string or pattern
  275. Organization    = !=            string or pattern
  276. Distribution    = !=            string or pattern
  277. Folder          = !=            string or pattern
  278.  
  279. Archive         = !=            1 or 0              Archive=1
  280. Junk            = !=            1 or 0
  281. PostPoned       = !=            1 or 0
  282. Selected        = !=            1 or 0
  283. Old             = !=            1 or 0              Old=0
  284. WriteAccess     = !=            1 or 0
  285. ReadAccess      = !=            1 or 0
  286. ViewAccess      = !=            1 or 0
  287. Owner           = !=            1 or 0
  288. UFlag0          = !=            1 or 0
  289. UFlag1          = !=            1 or 0
  290. ...             ....
  291. UFlagF          = !=            1 or 0
  292.  
  293. Deleted         = !=            1 or 0
  294. Expired         = !=            1 or 0
  295. Exported        = !=            1 or 0
  296. Orphan          = !=            1 or 0
  297. Link            = !=            1 or 0
  298. Hardlink        = !=            1 or 0
  299.  
  300. Age             = != < > <= >=  number of days      Age>25
  301. Date            = != < > <= >=  Amiga-DOS date      Date<=31-Dec-92
  302. MsgNum          = != < > <= >=  number of message   MsgNum=75
  303.  
  304. MsgLength       = != < > <= >=  number of bytes     MsgLength>50000
  305. HeaderLength    = != < > <= >=  number of bytes     HeaderLength<10
  306.  
  307.  
  308. Notes:
  309.  
  310. - All parameter and keyword strings are case insensitive.
  311.  
  312. - Spaces not within double quotes are ignored.
  313.  
  314. - Use the empty string for Mail/Netmail/PM; i.e.
  315.   FILTER="Group=*"*" ..."
  316.  
  317. - Using patterns will significantly slow down the filter operation.
  318.   You should always have conditions containing patterns executed
  319.   last to save time. If you e.g. would like to see all new mails
  320.   about MUI, you should use
  321.  
  322.   Old=0 AND Subject=*MUI*    instead of    Subject=*MUI* AND Old=0
  323.  
  324.   Thus, the filter will first throw away all old messages and
  325.   search for MUI only in the remaining part.
  326.  
  327. - If you want to have spaces in your parameter strings, you will have
  328.   to include them into double quotes: FromName = "Stefan Stuntz".
  329.   In a CLI command line, you need to prefix these double quotes
  330.   with an asterisk '*' to prevent the command line parser from
  331.   parsing them itself:
  332.  
  333.   sumsprint sysop "" "Group=uucp.#? AND FromName=*"Stefan Stuntz*""
  334.  
  335.   prints all mails that Stefan Stuntz wrote in usenet.
  336.  
  337. - Due to UMS bit handling, depth of braces is limited to maybe 5 or 6.
  338.  
  339.  
  340. Examples:
  341.  
  342.   Select all messages of group fidonet.amiga.ger:
  343.     Group=fidonet.Amiga.GER
  344.  
  345.   Select new messages for Joe Fake:
  346.     Old=0 AND ToName="Joe Fake"
  347.  
  348.   Select new netmails for Stefan Stuntz or S.Stunz or whatever:
  349.     Old=0 AND Group=*"*" AND ToName="#?Stun#?z#?"
  350.  
  351.   Select messages older than one month in fidonet.UMS.GER:
  352.     Group=fidonet.ums.ger AND Age>30
  353.  
  354.   Select all messages received 1992:
  355.     Date>=01-Jan-92 AND Date<=31-Dec-92
  356.  
  357.   Select messages 13,42,101,102,103 and 104:
  358.     MsgNum=13 OR MsgNum=32 OR (MsgNum>=101 AND MsgNum<=104)
  359.  
  360.   Select all messages greater than 50kByte:
  361.     TextLength>50000
  362.  
  363.  
  364.  
  365. SUMSPRINT:
  366. ----------
  367.  
  368. 'sumsprint' must be called with the following syntax:
  369.  
  370.  sumsprint U=User=Name/A,P=Password/A,FI=Filter/A,FO=Format,
  371.            FILE=Formatfile/K,O=SetOldFlag/S,B=Backwards/S,S=Server/K
  372.  
  373. User  name,  password  and filter (as always) were explained earlier, no
  374. more word about them, as option the server name.
  375.  
  376. Format  or  Formatfile  control  how  the message(s) shall appear on the
  377. screen.   You can either specify a format string directly in the command
  378. line  or  make  'sumsprint'  load the format string from a file by using
  379. "FILE=filename"  as  command  line argument.  In either case, the format
  380. string  may  consist  of any characters, including the following special
  381. sequences:
  382.  
  383. \n creates a line feed
  384. \r creates a carriage return
  385. \f creates a form feed
  386. \r creates a tab
  387. \< creates a '<' sign
  388. \> creates a '>' sign
  389. \e creates an escape (ascii 27)
  390. \\ creates a backslash '\'
  391. ^x creates a control-x (x & ~64) (x from A to Z)
  392.  
  393. Fields  of  the message can be included with a '<' char, followed by the
  394. name  of  the  field,  optionally followed by a comma and a printf-style
  395. formatting  string  for  this  field,  followed by a '>' char (template:
  396. <keyword[,fmt]>).  Valid keywords and their default formats are:
  397.  
  398. Keyword       Default      Meaning
  399.               Format
  400.  
  401. MsgText       %s           Complete message text
  402. QuoteText     >_           Quoted message text (format is quote string)
  403. FromName      %s           Name of author
  404. FromAddr      %s           Address of author
  405. ToName        %s           Name of receiver
  406. ToAddr        %s           Address of receiver
  407. Group         %s           Group this message belongs to
  408. Subject       %s           Subject field
  409. CreationDate  %s           Date of creation
  410. Attributes    %s           Attribute field
  411. Comments      %s           Comment field
  412. Organization  %s           Organization field
  413. Distribution  %s           Distribution field
  414. Newsreader    %s           Newsreader field
  415. ReplyName     %s           Name to reply to
  416. ReplyAddr     %s           Address to reply to
  417. ReplyGroup    %s           Group for followup
  418. MsgID         %s           Message-ID
  419. ReferID       %s           Reference-ID
  420. MsgNum        %ld          Number of this message
  421. ChainUp       %ld          Number of message higher in reply tree
  422. ChainDown     %ld          Number of message lower in reply tree
  423. ChainLeft     %ld          Number of a message on same reply level
  424. ChainRight    %ld          Number of a message on same reply level
  425. HardLink      %ld          Number of a hardlinked message
  426. SoftLink      %ld          Number of a softlinked message
  427. GlobalStatus  %08lx        Global status bits for this message
  428. UserStatus    %08lx        User status bits for this message
  429. LoginStatus   %08lx        Login status bits for this message
  430. CDate         %d-%b-%y %X  Parsed and localized creation date
  431. IDate         %d-%b-%y %X  Localized receive date
  432.  
  433. The  last  two items need a bit more explanation.  To use them, you will
  434. need locale.library >V38.  The format string is no printf-style here but
  435. may contain some other special characters that are replaced with strings
  436. containing  current date and time information.  For detailed explanation
  437. about  this  special characters see "autodocs/locale.doc" or appendix A.
  438. <IDate>  is  guaranteed  to  work, <CDate> may fail because the creation
  439. date  of  a  message  can  look  very  different  from system to system.
  440. Appendix  B  holds  information  about the date formats that 'sumsprint'
  441. knows.   If  the  format  is  unknown, <CDate,xxx> will automatically be
  442. replaced with <CreationDate,%s>.
  443.  
  444.  
  445. All keywords are case insensitive.  For example, the format string
  446.  
  447. "From: <FromName,%-20.20s> To: <ToName,%-20.20s> Flags: $<userflags>"
  448.  
  449. could generate something like
  450.  
  451. From: Stefan Stuntz        To: Martin Horneffer     Flags: $deadbeef
  452.  
  453. as  output.  Please remember the various possibilities that printf-style
  454. formatting  offers.  For more examples, refer to the #?.mfm files coming
  455. with  this archive.  If you neither specify Format or File=Formatfile in
  456. your command line, a default format will be used.
  457.  
  458.  
  459. To  read  the  Flags  without having ums.h in another window, there is a
  460. second format:
  461.  
  462. Each  flag  may  be  represented by a letter, indicating it is set, or a
  463. dash  if  it  is cleared.  This format is selected by the absence of the
  464. percent  sign in the first letter of the format.  For every flag bit you
  465. have  to  specify  either  the letter, which is printed when the flag is
  466. set, or a dash to suppress this flag.  If the character is uppercase the
  467. absence  of the flag is shown by a dash.  A lowercase character requests
  468. to ignore a cleared bit completely.
  469.  
  470. The  most right character is associated with the last significant bit of
  471. the flag word.  The format may contain less than 32 characters.  In this
  472. case the unset flags are ignored.
  473.  
  474. Behind  the flag characters may be a printf-like format string appended.
  475. It is recognized by the leading percent character.
  476.  
  477.  
  478. Example:
  479.  
  480. A message has the user status $0D40==Old,ReadAccess,ViewAccess,PostPoned
  481. and the global status         $0006==Exported,Expired.
  482.  
  483. With the format string
  484.  
  485. "From:  <FromName>\n
  486.  Status: user=<UserStatus,M---O-PJ----->  global=<GlobalStatus,--oexd>\n"
  487.                           ^^^^^^^^^                            ^^^^^^
  488.                           ||||||||Archive                      |||||Deleted
  489.                           |||||||Junk                          ||||Expired
  490.                           ||||||PostPoned                      |||Exported
  491.                           |||||Selected                        ||Orphan
  492.                           ||||Old                              |Link
  493.                           |||WriteAccess                       HardLink
  494.                           ||ReadAccess
  495.                           |ViewAccess
  496.                           Owner (My message)
  497.  
  498. the message shows up as
  499.  
  500. From:   Joe 'DAU' User
  501. Status: user=-O-P-  global=EX
  502.  
  503.  
  504. If  you  specify SetOldFlag, sumsprint will mark every read message as
  505. old.
  506.  
  507.  
  508. Notes:
  509.  
  510. - If you use "LANGUAGE: <language>" as the first line of your format file,
  511.   'sumsprint' will use this language for <CDate> and <IDate>.
  512.  
  513. - None  of  the  UMS  global,  user  or local status bits are affected. As
  514.   long as you don't specify SetOldFlag, printed messages won't become old.
  515.  
  516. - Messages  without  view  or  read  access  cannot  be printed.  For this
  517.   reason,  'sumsprint'  will always append "AND readaccess AND viewaccess"
  518.   to your filter string.
  519.  
  520.  
  521.  
  522. SUMSSET:
  523. --------
  524.  
  525. sumsset U=User=Name/A,P=Password/A,FI=Filter/A,SB=SetBits/A,CB=ClrBits,
  526.         S=Server/K,FU=ForUser/K,Q=Quiet/S
  527.  
  528. After  user  name, password and filter (as always), as option the server
  529. name.   'sumsset'  wants  you  to  specify  one or two bit spec strings.
  530. These  strings  determine,  which bits to set and which bits to clear on
  531. the selected messages.  A bit spec string may consist of one or more bit
  532. names seperated by comma, or just be empty.  Valid bit names are
  533.  
  534. Archive,   Junk,   PostPoned,  Selected,  Old,  WriteAccess  ReadAccess,
  535. ViewAccess,   Owner,   Deleted,  Expired,  Exported,  Orphan,  Link  and
  536. HardLink.
  537.  
  538. These  flags  are  either global or user flags.  Please refer to ums.doc
  539. for their specific meaning. SysOp's may also modify flags of other users
  540. via the "ForUser" option.
  541.  
  542. Examples:
  543.  
  544.   Expire area fidonet.AMIGA.GER:
  545.     sumsset SysOp ss "Group=fidonet.AMIGA.GER" EXPIRED
  546.     CleanUMS
  547.  
  548.   Mark all message from "Roland Schwefel" as new:
  549.     sumsset SysOp ss "FromName=*"Roland Schwefel*"" "" OLD
  550.  
  551.   Bad-User-Filter:
  552.     sumsset SysOp ss "FromName=*"Otto Nervbert*"" "" OLD,EXPIRED
  553.  
  554.   Give user "Joe" access to one of your mails:
  555.     sumsset SysOp ss "MsgNum=42" ReadAccess,ViewAccess FORUSER "Joe"
  556.  
  557. Notes:
  558.  
  559. - Be  careful  with this command.  You can do some very bad things to your
  560.   message base!
  561.  
  562. - Setting the deleted-bit has no effect. You can only delete messages
  563.   with sumsdel.
  564.  
  565.  
  566.  
  567. SUMSWRITE:
  568. ----------
  569.  
  570. sumswrite U=User=Name/A,P=Password/A,S=Server/K
  571.  
  572. 'sumswrite'  only  needs  these  two  standard parameters, as option the
  573. server name.  The message to write will be read from standard input.  It
  574. must  contain  some field names followed by an optional "=", followed by
  575. the  fields contents, then a line with one or more "-", then the message
  576. text.  Valid field names are:
  577.  
  578. Field Name     Field Type   Comments/Examples
  579.  
  580. ToName         string       Stefan Stuntz
  581. ToAddr         string       2:246/46.10@fidonet
  582. Group          string       de.comm.software.ums
  583. Subject        string       MUI bug report
  584. Organization   string
  585. Distribution   string
  586. Comments       string
  587. ReferID        string
  588. Attributes     string
  589. CreationDate   string
  590. AutoBounce     boolean      message will be bounced if invalid
  591. NoUpdate       boolean      message will be new
  592. FromName       string       only valid for importer
  593. FromAddr       string       only valid for importer
  594. MsgID          string       normally created by MBP
  595. MsgDate        date         only used to restore backups
  596. MsgNum         number       only useful to create links
  597. ReceiveDate    string       normally created by MBP
  598. ChainUp        number       rarely used
  599. HardLink       number       rarely used
  600. SoftLink       number       rarely used
  601. HdrFill        number       rarely used
  602. TxtFill        number       rarely used
  603.  
  604. A  boolean  field's  parameter  can be "true" or "false" or empty, which
  605. will  force  a this field to be true.  A date field must contain a valid
  606. date specification.  See appendix B for known date formats.
  607.  
  608. Please  refer  to UMS documentation for detailed documentation about the
  609. meaning  of  these fields.  Depending on your account status, you may or
  610. may not use some of them.  'sumswrite' will show you an error message if
  611. something fails.
  612.  
  613. Of  course,  you needn't specify all these fields.  A small message file
  614. could look like
  615.  
  616. ToName Stefan Stuntz
  617. Subject Test
  618. --------------------
  619. Hello Stefan!
  620. How are you?
  621. Bye.
  622.  
  623. wich will create a locale private message to "Stefan Stuntz".
  624.  
  625.  
  626.  
  627. SUMSFOLDER:
  628. -----------
  629.  
  630. sumsfolder U=User=Name/A,P=Password/A,FI=Filter/A,FO=Folder/A,S=Server/K,
  631.            Q=Quiet/S
  632.  
  633. After user name, password and filter (as always), 'sumsfolder' wants you
  634. to  specify  a  folder  name.   This name determine, in which folder the
  635. selected messages will be put.  As option specify the server name.
  636. If no messages matched the filter sumsfolder returns WARN (5).
  637.  
  638.  
  639. Example:
  640.  
  641. Put all mails from "Matthias Scheler" in folder "tron":
  642.  
  643. sumsfolder SysOp ... "Group=*"*" AND FromName=*"Matthias Scheler*"" "tron"
  644.  
  645.  
  646.  
  647. SUMSDEL:
  648. --------
  649.  
  650. sumsset U=User=Name/A,P=Password/A,FI=Filter/A,S=Server/K,Q=Quiet/S
  651.  
  652. Specify user name, password, filter and the optional server as usual.
  653. Then 'sumsdel' just deletes the messages specified in 'Filter'. That
  654. means that nobody is able to access them. The messages are physically
  655. removed with CleanUMS. Note, that you can't remove foreign messages
  656. unless you have the sysop-flag set.
  657.  
  658. Examples:
  659.  
  660.   Delete all Messages with the subject "Make money fast":
  661.  
  662.     sumsdel Sysop ... "Subject=*"Make money fast*""
  663.     CleanUMS
  664.  
  665.  
  666.  
  667. SUMSEXPORT:
  668. --------
  669.  
  670. sumsexport U=User=Name/A,P=Password/A,FI=Filter/A,E=SetExportedFlag/S,
  671.            B=Backwards/S,S=Server/K";
  672.  
  673. Specify user name, password, filter and as option the server name. To
  674. mark the exported messages as Exported switch 'SetExportedFlag' on.
  675. 'Backwards' reverses the export sequence.
  676. SUMSExport exports messages to stdout in a UMS-specific format. To
  677. import use "Import" by Martin Horneffer, available in any UMS
  678. distribution.
  679. If no messages matched the filter sumsexport returns WARN (5).
  680.  
  681. Examples:
  682.  
  683. - Export all messages the sysop has written today:
  684.  
  685.   sumsexport Sysop ... "age=0 & Owner=1" >Store:mail_today.exp
  686.  
  687.  
  688. APPENDIX A - Date specifiers:
  689. -----------------------------
  690.  
  691. %a - abbreviated weekday name
  692. %A - weekday name
  693. %b - abbreviated month name
  694. %B - month name
  695. %c - same as "%a %b %d %H:%M:%S %Y"
  696. %C - same as "%a %b %e %T %Z %Y"
  697. %d - day number with leading 0s
  698. %D - same as "%m/%d/%y"
  699. %e - day number with leading spaces
  700. %h - abbreviated month name
  701. %H - hour using 24-hour style with leading 0s
  702. %I - hour using 12-hour style with leading 0s
  703. %j - julian date
  704. %m - month number with leading 0s
  705. %M - the number of minutes with leading 0s
  706. %n - insert a linefeed
  707. %p - AM or PM strings
  708. %q - hour using 24-hour style
  709. %Q - hour using 12-hour style
  710. %r - same as "%I:%M:%S %p"
  711. %R - same as "%H:%M"
  712. %S - number of seconds with leadings 0s
  713. %t - insert a tab character
  714. %T - same as "%H:%M:%S"
  715. %U - week number, taking Sunday as first day of week
  716. %w - weekday number
  717. %W - week number, taking Monday as first day of week
  718. %x - same as "%m/%d/%y"
  719. %X - same as "%H:%M:%S"
  720. %y - year using two digits with leading 0s
  721. %Y - year using four digits with leading 0s
  722.  
  723.  
  724.  
  725. APPENDIX B - Known date formats:
  726. --------------------------------
  727.  
  728. "01 Jan 91  11:22:33"    Fido
  729. "01 Jan 91  11:22"       Fido without seconds
  730. "Wed 13 Jan 86 02:34"    Fido SEAdog
  731. "JJMMTThhmm"             Z-Netz
  732. "01-Jan-78 10:11:12"     AmigaDOS
  733. "1.1.78    10:11:12"     AmigaDOS, Style Guide German
  734. "01.01.78  10:11:12"     AmigaDOS, Style Guide German, leading 0s
  735.  
  736. When  none of these formats matches, 'sumsprint' tries to parse the date
  737. with some more or less complex algorithms.  This may or may not succeed.
  738. If you want to see another date format supported, just let me know.
  739.  
  740.  
  741.  
  742. APPENDIX C - How to reach the original author:
  743. ----------------------------------------------
  744.  
  745. Questions, comments, suggestions, bug reports, flames, gifts, etc.
  746. welcome. Send them to
  747.  
  748. Stefan Stuntz
  749. Eduard-Spranger-Straße 7
  750. 80935 München
  751. Germany
  752.  
  753. E-Mail: stuntz@informatik.tu-muenchen.de
  754.