/*++

Copyright (c) 1990  Microsoft Corporation

Module Name:

    token.h

Abstract:

    Flags and prototypes for GetToken.C

Author:

    Danny Glasser (dannygl) June 1989

Revision History:

    02 May 1991 rfirth
        32-bit version

--*/

//
// Non-component types: bits 0 through 2
//

#define TOKEN_TYPE_EOS              0x00000001L     // '\0'
#define TOKEN_TYPE_SLASH            0x00000002L     // '/' or '\\'
#define TOKEN_TYPE_COLON            0x00000004L     // ':'

//
// Component-based types: bits 31 through 11
//

#define TOKEN_TYPE_COMPONENT        0x80000000L     // path component
#define TOKEN_TYPE_WILDCARD         0x40000000L     // '?' and/or '*'
#define TOKEN_TYPE_WILDONE          0x20000000L     // "*"
#define TOKEN_TYPE_DOT              0x10000000L     // "."
#define TOKEN_TYPE_DOTDOT           0x08000000L     // ".."
#define TOKEN_TYPE_DRIVE            0x04000000L     // [A-Za-z]
#define TOKEN_TYPE_COMPUTERNAME     0x02000000L     // computername
#define TOKEN_TYPE_LPT              0x01000000L     // LPT[1-9]
#define TOKEN_TYPE_COM              0x00800000L     // COM[1-9]
#define TOKEN_TYPE_AUX              0x00400000L
#define TOKEN_TYPE_PRN              0x00200000L
#define TOKEN_TYPE_CON              0x00100000L
#define TOKEN_TYPE_NUL              0x00080000L
#define TOKEN_TYPE_DEV              0x00040000L
#define TOKEN_TYPE_SEM              0x00020000L
#define TOKEN_TYPE_SHAREMEM         0x00010000L
#define TOKEN_TYPE_QUEUES           0x00008000L
#define TOKEN_TYPE_PIPE             0x00004000L
#define TOKEN_TYPE_MAILSLOT         0x00002000L
#define TOKEN_TYPE_COMM             0x00001000L
#define TOKEN_TYPE_PRINT            0x00000800L

//
// Undefined types: bits 3 through 10
//

#define TOKEN_TYPE_UNDEFINED        0x000007F8L

//
// Useful combinations
//

#define TOKEN_TYPE_SYSNAME  (TOKEN_TYPE_SEM | TOKEN_TYPE_SHAREMEM \
                 | TOKEN_TYPE_QUEUES | TOKEN_TYPE_PIPE \
                 | TOKEN_TYPE_COMM | TOKEN_TYPE_PRINT)

#define TOKEN_TYPE_LOCALDEVICE  (TOKEN_TYPE_LPT | TOKEN_TYPE_COM \
                 | TOKEN_TYPE_AUX | TOKEN_TYPE_PRN \
                 | TOKEN_TYPE_CON | TOKEN_TYPE_NUL)

extern
DWORD
GetToken(
        LPTSTR  pszBegin,
        LPTSTR* ppszEnd,
        LPDWORD pflTokenType,
        DWORD   flFlags
        );

//
// Flags for GetToken()
//

#define GTF_8_DOT_3 0x00000001L

#define GTF_RESERVED    (~(GTF_8_DOT_3))

//
// IMPORTANT -  These variables are defined in the NETAPI.DLL global
//              data segment under OS/2.  Under DOS we need to define
//              them here.
//

#ifdef DOS3
extern USHORT   cbMaxPathLen;
extern USHORT   cbMaxPathCompLen;
#endif