/*
* $Id: xfsapi.h,v 1.85 1994/10/4 17:33:25 xfs Exp $
* $Source: /home/xfs/project/win/RCS/xfsapi.h,v $
*
* XFSAPI.H - Interface to XFSLIB.DLL & XFSFMX.DLL
* Borland C++ Version
*
* Copyright (C) 1994 Robert Juhasz
*/
#ifndef _XFSAPI_H
#define _XFSAPI_H
#include <windows.h>
// Mount defaults
#define MOUNT_MAX_RSIZE 1280
#define MOUNT_MAX_WSIZE 1280
#define MOUNT_MAX_FWSIZE 8192 // for XFS IPF
#define MOUNT_DEF_RETRY 4
// MOUNT flags
#define MOUNT_OPT_RO 1 // read-only
#define MOUNT_OPT_MAP 2 // 8+3 mapping
#define MOUNT_OPT_UPPER 4 // uppercase mapping (for CD-ROMS's)
#define MOUNT_DEF_OPT MOUNT_OPT_MAP // my default option
// XfsFMXCall calls
#define CM_MOUNT 1 // FMX mount
#define CM_UMOUNT 2 // FMX umount
#define CM_LOGIN 3 // FMX login
#define CM_LOGOUT 4 // FMX logout
#define CM_INFO 5 // FMX info
// Error codes
// inet
#define ECONN (-1) // can't connect (generic)
#define ENETUNREACH (-2) // network unreachable
#define EHOSTUNREACH (-3) // host unreachable
#define EPROTUNREACH (-4) // unknown protocol
#define EPORTUNREACH (-5) // unknown port
#define ESOCK (-10) // bad socket descriptor
#define ENOSOCK (-11) // out of socket descriptors
#define ETIMEO (-12) // connection timeout
// arp
#define EARPTIMEO (-51) // ARP timeout
#define EARPUNREACH (-52) // local host not responding
// host
#define EHOSTIO (-200) // 'hosts' file not found
#define EHOSTNOENT (-201) // host not found
// (u)mount
#define EMOUNT (-300) // can't mount/umount(given by server)
// pcnfsd
#define EPCACCES (-400) // authentication failure
#define EPCNOPRN (-401) // unknow printer
#define EPCFAIL (-402) // failed initialization
// portmap
#define EPMPORT (-500) // port not found
// DPMI
#define EDOSMEM (-600) // can't allocate lower DOS mem
// Redirector (positive values)
#define EDUP 0x55 // Duplicate redirections
#define EDRIVE 0x0f // Drive/device invalid
#define EMEM 0x08 // insuficient memory in redirector
#define EFUNC 0x01 // invalid operation
// Mount options struct
typedef struct tagTMOUNTOPT
{
UINT timeo; // seconds, for printers only
UINT rsize;
UINT wsize;
UINT retry;
UINT flags;
} MOUNTOPT;
typedef MOUNTOPT FAR* LPMOUNTOPT;
// XFS Host info
typedef struct tagTXFSINFO
{
WORD version; // XFS version, eg. 0x0177 for 1.77 or 0x8177 for 1.77IPF
char hostname[64]; // Host name
LONG ip_addr; // Hostname's IP address
LONG sm_addr; // Subnet mask
LONG gw_addr; // Gateway IP address
LONG pc_addr; // PCNFSD IP address
char username[64]; // User name
WORD uid; // User ID
WORD gid; // Group ID
WORD umask; // File creation mask
} XFSINFO;
typedef XFSINFO FAR* LPXFSINFO;
#ifdef __cplusplus
extern "C" {
#endif
// XFSLIB
BOOL WINAPI XfsInstalled(VOID);
int WINAPI XfsMountDrive(LPSTR localdrive, LPSTR host, LPSTR filesystem, LPMOUNTOPT options);
int WINAPI XfsMountPrinter(LPSTR localdrive, LPSTR host, LPSTR printer, LPMOUNTOPT options);
int WINAPI XfsUmount(LPSTR localdrive);
int WINAPI XfsFlush(LPSTR printer);
int WINAPI XfsLogin(LPSTR localdrive, LPSTR host, LPSTR name, LPSTR password);
VOID WINAPI XfsLogout(LPSTR localdrive);
VOID WINAPI XfsNetStat(LPXFSINFO info);
WORD WINAPI XfsUmask(WORD mask);
UINT WINAPI WGetRedirection(UINT index, LPSTR device, LPSTR resource );
// XFSFMX
LONG WINAPI InitFMX(VOID);
LONG WINAPI XfsFMXCall( HWND Handle, WORD call);
VOID WINAPI DoneFMX(VOID);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif