#ifndef LIBRARIES_MULTIUSER_H
#define LIBRARIES_MULTIUSER_H
/*
**      $Filename: libraries/multiuser.h $
**      $Release: 0.2ß $
**      $Revision: 39.0 $
**
**      multiuser.library definitions
**
**      (C) Copyright 1993 Geert Uytterhoeven
**      All Rights Reserved
*/

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif  /* EXEC_TYPES_H */

#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif  /* EXEC_LISTS_H */

#ifndef EXEC_LIBRARIES_H
#include <exec/libraries.h>
#endif  /* EXEC_LIBRARIES_H */

#ifndef LIBRARIES_DOS_H
#include <libraries/dos.h>
#endif  /* LIBRARIES_DOS_H */

#ifndef GRAPHICS_TEXT_H
#include <graphics/text.h>
#endif  /* GRAPHICS_TEXT_H */

#ifndef UTILITY_TAGITEM_H
#include <utility/tagitem.h>
#endif  /* UTILITY_TAGITEM_H */


#define MULTIUSERNAME      "multiuser.library"
#define MULTIUSERVERSION   39


#define muUSERIDSIZE    (32)           /* Maximum size for a UserID */
#define muPASSWORDSIZE  (32)           /* Maximum size for a Password */
#define muUSERNAMESIZE  (220)          /* Maximum size for a User Name */
#define muHOMEDIRSIZE   (256)          /* Maximum size for a Home Directory */


   /*
    *    Reserved users/groups
    *
    *		WARNING: a uid may NOT be zero, a gid may be zero
    */

#define muOWNER_NOBODY  (0x00000000)   /* no rights */
#define muOWNER_SYSTEM  (0xffffffff)   /* always owner */

#define muMASK_UID      (0xffff0000)   /* Mask for uid bits */
#define muMASK_GID      (0x0000ffff)   /* Mask for gid bits */


   /*
    *    Tags for muLogoutA()/muLoginA()
    */

#define muT_Input       (TAG_USER+1)   /* filehandle - default is Input() */
#define muT_Output      (TAG_USER+2)   /* filehandle - default is Output() */
#define muT_Graphical   (TAG_USER+3)   /* boolean - default is FALSE */
#define muT_PubScrName  (TAG_USER+4)   /* name of public screen */
#define muT_Task			(TAG_USER+5)	/* name of a task */
#define muT_Own			(TAG_USER+6)	/* make a task of this user */
#define muT_Global		(TAG_USER+7)	/* change it for all tasks on the */
													/* same level as this one */
#define muT_Quiet			(TAG_USER+8)	/* For muLogOutA(), don't give a */
													/* login prompt, simply logout */

   /*
    *    User Information Structure
    *
    *    For future compatibility, you should ALWAYS use muAllocUserInfo()
    *    to allocate this structure. NEVER do it by yourself!!
    */

struct muUserInfo {
   char UserID[muUSERIDSIZE];
   UWORD uid;
   UWORD gid;
   char UserName[muUSERNAMESIZE];
   char HomeDir[muHOMEDIRSIZE];
};


   /*
    *    KeyTypes for muGetUserInfo
    */

#define muKeyType_First    0
#define muKeyType_Next     1
#define muKeyType_UserID   2  /* Case-sensitive */
#define muKeyType_uid      3
#define muKeyType_gid      4
#define muKeyType_gidNext  5
#define muKeyType_UserName 6  /* Case-insensitive */


#endif  /* LIBRARIES_MULTIUSER_H */
