#ifndef CLIB_UMS_PROTOS_H
#define CLIB_UMS_PROTOS_H

/*
 * clib/ums_protos.h
 *
 * ANSI C prototypes for ums.library functions
 *
 * $VER: ums_protos.h 10.3 (23.01.94)
 *
 */

#ifndef LIBRARIES_UMS_H
#include <libraries/ums.h>
#endif

/* Pre-V8 functions */
UMSUserAccount  UMSLogin             (char *,         char *);
void            UMSLogout            (UMSUserAccount);

/************************** OBSOLETE !!! **************************************
UMSError        UMSPutMsg            (UMSUserAccount, OldUMSMsg);
OldUMSMsg       UMSGetMsgHdr         (UMSUserAccount, UMSMsgNum);
UMSError        UMSGetMsgTxt         (UMSUserAccount, OldUMSMsg);
void            UMSFreeMsg           (UMSUserAccount, OldUMSMsg);
UMSMsgNum       UMSNextNew           (UMSUserAccount, UMSMsgNum);
UMSMsgNum       UMSSearchID          (UMSUserAccount, char *);
BOOL            UMSChangeID          (UMSUserAccount, UMSMsgNum,        char *);
UMSMsgNum       UMSChainUp           (UMSUserAccount, UMSMsgNum);
UMSMsgNum       UMSChainDn           (UMSUserAccount, UMSMsgNum);
UMSMsgNum       UMSChainRt           (UMSUserAccount, UMSMsgNum);
UMSMsgNum       UMSChainLt           (UMSUserAccount, UMSMsgNum);
void            UMSGetGlobal         (UMSUserAccount, char *,           char *);
void            UMSDumpConfig        (UMSUserAccount);
*************************** OBSOLETE !!! *************************************/

UMSError        UMSErrNum            (UMSUserAccount);
char           *UMSErrTxt            (UMSUserAccount);
BOOL            UMSDeleteMsg         (UMSUserAccount, UMSMsgNum);

/************************** OBSOLETE !!! **************************************
BOOL            UMSChangeAttributes  (UMSUserAccount, UMSMsgNum,        ULONG);
UMSMsgNum       UMSNextStatus        (UMSUserAccount, UMSMsgNum,        UMSSet, UMSSet);
UMSMsgNum       UMSSelectStatus      (UMSUserAccount, UMSSet,           UMSSet, UMSSet);
UMSMsgNum       UMSSelectGroup       (UMSUserAccount, UMSSet,           char *);
void            UMSSetStatus         (UMSUserAccount, UMSMsgNum,        UMSSet, UMSSet);
UMSMsgNum       UMSPrevStatus        (UMSUserAccount, UMSMsgNum,        UMSSet, UMSSet);
UMSMsgNum       UMSSelStatus         (UMSUserAccount, UMSSet,           UMSSet, UMSSet, UMSSet);
UMSMsgNum       UMSSelGroup          (UMSUserAccount, UMSSet,           UMSSet, char *);
UMSSet          UMSGetStatus         (UMSUserAccount, UMSMsgNum);
void            UMSFlush             (void);
WORD            UMSCleanMB           (void);
void            UMSQuit              (void);
*************************** OBSOLETE !!! *************************************/

/* V8 functions */
/************************** PRIVATE !!! ***************************************
void            UMSARexxQuery        (void);
*************************** PRIVATE !!! **************************************/

/* V9 functions */
/************************** OBSOLETE !!! **************************************
UMSPHandle      AllocUMSPattern      (char *,         BOOL);
void            FreeUMSPattern       (UMSPHandle);
BOOL            MatchUMSPattern      (UMSPHandle,     char *);
*************************** OBSOLETE !!! *************************************/

void            UMSExportedMsg       (UMSUserAccount, UMSMsgNum);
BOOL            UMSCannotExport      (UMSUserAccount, UMSMsgNum,        char *);
void            LogUMS               (UMSUserAccount, LONG,             char *, APTR *);
UMSUserAccount  UMSRLogin            (char *,         char *,           char *);
UMSMsgNum       WriteUMSMsg          (UMSUserAccount, struct TagItem *);
BOOL            ReadUMSMsg           (UMSUserAccount, struct TagItem *);
void            FreeUMSMsg           (UMSUserAccount, UMSMsgNum);
UMSMsgNum       UMSSelect            (UMSUserAccount, struct TagItem *);
UMSMsgNum       UMSSearch            (UMSUserAccount, struct TagItem *);
char           *ReadUMSConfig        (UMSUserAccount, struct TagItem *);
void            FreeUMSConfig        (UMSUserAccount, char *);
BOOL            WriteUMSConfig       (UMSUserAccount, struct TagItem *);

/************************** PRIVATE !!! ***************************************
LONG            UMSPrivateServerCall (LONG          , APTR);
*************************** PRIVATE !!! **************************************/

/* Varargs functions */
void            LogUms               (UMSUserAccount, LONG,             char *, APTR,   ...);
UMSMsgNum       WriteUMSMsgTags      (UMSUserAccount, Tag,              ...);
BOOL            ReadUMSMsgTags       (UMSUserAccount, Tag,              ...);
UMSMsgNum       UMSSelectTags        (UMSUserAccount, Tag,              ...);
UMSMsgNum       UMSSearchTags        (UMSUserAccount, Tag,              ...);
char           *ReadUMSConfigTags    (UMSUserAccount, Tag,              ...);
BOOL            WriteUMSConfigTags   (UMSUserAccount, Tag,              ...);

#endif
