|
|
/*++
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 ***********************/
|