270 lines
6.9 KiB
C
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 ***********************/
|