windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/gopher/gdspace.h
2020-09-26 16:20:57 +08:00

270 lines
6.9 KiB
C

/*++
Copyright (c) 1994 Microsoft Corporation
Module Name :
gdspace.h
Abstract:
Defines the APIs used for gopher space administration.
Author:
Murali R. Krishnan ( MuraliK ) 06-Dec-1994
Project:
Gopher Space Admin DLL
Revision History:
--*/
# ifndef _GDSPACE_H_
# define _GDSPACE_H_
# ifdef __cplusplus
extern "C" {
# endif // __cplusplus
/************************************************************
* Include Headers
************************************************************/
//
// Make sure you include all standard windows.h files for predefined types
//
/***************************************************
* NOTE: ( Dec 6, 1994)
* Present implementation only allows ASCII information
* in the tag file.
* The Gopher protocol does not support UNICODE as of now.
* hence the tag file information will live to be ASCII.
*
* Gs_ prefix is used to mean Gopher Space.
***************************************************/
/************************************************************
* Symbolic Constants
************************************************************/
//
// Symbolic Constants (single character) used to identify gopher object types
// Included here for common use by server, adminUI, and gopher space admin
// GOBJ_ Prefix used to identify Gopher OBJect
//
# define GOBJ_TEXT '0' // Text Object
# define GOBJ_DIRECTORY '1' // Directory listing
# define GOBJ_ERROR '3' // Error object
# define GOBJ_SEARCH '7' // Content Search Item
# define GOBJ_BINARY '9' // Binary information
# define GOBJ_IMAGES ':' // Bit Images
# define GOBJ_MOVIES ';' // Movie Information
# define GOBJ_SOUND '<' // Sound information
# define GOBJ_HTML 'h' // HTML docs
# define GOBJ_PC_ITEM '5' // this is a pc file
# define GOBJ_GIF 'g' // this is a gif item
# define GOBJ_MAC_BINHEX_ITEM '4' // BinHex'ed Macintosh File
# define GOBJ_TELNET '8' // TelNet Link
typedef char GOBJ_TYPE; // Type for "gopher object type"
typedef GOBJ_TYPE * LPGOBJ_TYPE;
/*++
Following are a few unsupported Gopher Object Types:
Type Explanation
> 2 A CSO phone-book server
> 6 A Unix uuencoded file
> c A calendar or calendar of events
> i An in-line text that is not an item
> m A BSD format mbox file
> P A PDF document
> T A tn3270 mainframe session
> + A redundant server.
>And have seen occasional (or conflicting) references for:
> e ????
> I Another kind of image file????
# define GOBJ_TELNET '8' // Telnet session
--*/
# include "fsconst.h"
# define INVALID_PORT_NUMBER ( 0)
# ifndef COMPILE_GOPHER_SERVER_DLL
//
// include following APIs only when we deal with
// compilation of dlls that are not part of the main gopher server dll.
//
//
// Define an opaque handle for Gopher Tag file information
//
typedef PVOID HGDTAG;
# define INVALID_HGDTAG_VALUE ( NULL)
//
// Define an opaque handle for iterating thru
// the attributes for Gopher+ Tag file
//
typedef PVOID HGD_ATTRIB_ITERATOR;
typedef HGD_ATTRIB_ITERATOR * LPHGD_ATTRIB_ITERATOR;
# define INVALID_HGD_ATTRIB_ITERATOR_VALUE ( NULL)
HGDTAG
GsOpenTagInformation(
IN LPCTSTR lpszDirectory, // directory of the file
IN LPCTSTR lpszFileName, // name of the file
IN BOOL fDirectory,
IN BOOL fCreate, // TRUE if new file to be created
IN DWORD dwFileSystem
);
DWORD
GsWriteTagInformation(
IN OUT HGDTAG hgdTag // Gopher Tag handle
);
DWORD
GsCloseTagInformation(
IN OUT HGDTAG * hgdTag // Gopher Tag handle
);
DWORD
GsSetGopherInformation(
IN OUT HGDTAG hgdTag, // Gopher Tag handle
IN GOBJ_TYPE gobjType, // Type of gopher object
IN LPCSTR lpszFriendlyName // friendly name of the gopher object
);
DWORD
GsSetLinkInformation(
IN OUT HGDTAG hgdTag, // Gopher Tag handle,
IN LPCSTR lpszSelector, // Gopher selector or Search expression
IN LPCSTR lpszHostName, // == NULL ==> current host
IN DWORD dwPortNumber // == 0 ==> current server port
);
DWORD
GsSetAdminAttribute(
IN OUT HGDTAG hgdTag, // Gopher Tag handle
IN LPCSTR lpszAdminName, // == NULL ==> current administrator
IN LPCSTR lpszAdminEmail // == NULL ==> current admin's email
);
//
// Call following API GsSetAttribute()
// for all Gopher+ attributes, except "VIEWS" and "ADMIN"
//
DWORD
GsSetAttribute(
IN OUT HGDTAG hgdTag,
IN LPCSTR lpszAttributeName,
IN LPCSTR lpszAttributeValue
);
BOOL
IsValidGopherType( IN GOBJ_TYPE gobjType);
DWORD
GsGetGopherInformation(
IN HGDTAG hgdTag, // Gopher Tag handle
OUT LPGOBJ_TYPE lpGobjType, // pointer to contain GOBJ_TYPE
OUT LPSTR lpszBuffer, // ptr to buffer to contain friendly name
IN OUT LPDWORD lpcbBuffer, // ptr to location containing no. of bytes
OUT LPBOOL lpfLink // return TRUE if link or search file.
);
DWORD
GsGetLinkInformation(
IN OUT HGDTAG hgdTag, // Gopher Tag handle,
OUT LPSTR lpszSelectorBuffer,// pointer to buffer to contain selector
IN OUT LPDWORD lpcbSelector, // count of bytes for selector
OUT LPSTR lpszHostName, // pointer to buffer containing hostname
IN OUT LPDWORD lpcbHostName, // count of bytes for host name
OUT LPDWORD lpdwPortNumber // server port number
);
DWORD
GsGetAdminAttribute(
IN OUT HGDTAG hgdTag, // Gopher Tag handle
OUT LPSTR lpszAdminName, // == NULL ==> current administrator
IN OUT LPDWORD lpcbAdminName, // count of bytes for admin name
OUT LPSTR lpszAdminEmail, // == NULL ==> current admin's email
IN OUT LPDWORD lpcbAdminEmail // count of bytes for admin email
);
//
// Call following API GsSetAttribute()
// for all Gopher+ attributes, except "VIEWS" and "ADMIN"
//
DWORD
GsStartFindAttribute(
IN OUT HGDTAG hgdTag,
OUT LPHGD_ATTRIB_ITERATOR lphgdAttribIter
);
DWORD
GsFindNextAttribute(
IN OUT HGD_ATTRIB_ITERATOR hgdAttribIter,
OUT LPSTR lpszAttributeName,
IN OUT LPDWORD lpcbAttributeName,
OUT LPSTR lpszAttributeValue,
IN OUT LPDWORD lpcbAttributeValue
);
DWORD
GsFindCloseAttribute(
IN OUT LPHGD_ATTRIB_ITERATOR lphgdAttribIter
);
# endif // COMPILE_GOPHER_SERVER_DLL
# ifdef __cplusplus
};
# endif // __cplusplus
# endif // _GDSPACE_H_
/************************ End of File ***********************/