Timothe Litt 66e00b9900 Backlog of work since 2016
Too much to list all, but includes (in no particular order):
 - Cleanup for 64-bit builds, MSVC warnings.
 - Structured help
 - Help file compiler.
 - Supports volsets, writes/create work.
 - Support for I18n in messages, help.
 - Makefiles.
 - Initialize volume/volset
 - Command line editing/history

Builds and works on Linux and Windows (VS).
Not recently built or tested on other platforms, but
not intentinonally broken.
2022-10-10 11:00:20 -04:00

69 lines
2.5 KiB
C

/* Device.h Definitions for device routines */
/*
* This is part of ODS2 written by Paul Nankervis,
* email address: Paulnank@au1.ibm.com
* ODS2 is distributed freely for all members of the
* VMS community to use. However all derived works
* must maintain comments in their source to acknowledge
* the contributions of the original author and
* subsequent contributors. This is free software; no
* warranty is offered, and while we believe it to be useful,
* you use it at your own risk.
*/
#ifndef _DEVICE_H
#define _DEVICE_H
#ifdef _WIN32
#include <windows.h> /* HANDLE */
#endif
#include <stdio.h>
#include <sys/types.h>
#include "access.h"
#include "cache.h"
#include "ods2.h"
#include "phyio.h"
struct DEV { /* Device information */
struct CACHE cache;
struct VCB *vcb; /* Pointer to volume (if mounted) */
options_t access; /* Device mount options (e.g., /Write) */
void *context; /* Context for implementation */
#ifdef _WIN32
short drive; /* Drive no. (0=A, 1=B, 2=C, ...) */
unsigned bytespersector; /* Device physical sectorsize (bytes) */
unsigned blockspersector; /* Device physical sectorsize (blocks) */
union {
struct { /* Device uses Win32 APIs for physical I/O */
HANDLE handle; /* Win32 I/O handle */
} Win32;
struct { /* Device uses ASPI APIs for physical I/O */
short dtype; /* ASPI disk type */
short bus; /* ASPI device bus */
short id; /* ASPI device id */
} ASPI;
} API;
unsigned last_sector; /* Last sector no read (still in buffer) */
#else
int handle; /* Device physical I/O handle */
#endif
#if defined(_WIN32) || defined(USE_VHD)
char *IoBuffer; /* Pointer to a buffer for the device */
#endif
struct disktype *disktype; /* Structure defining virtual disk geometry */
phy_iord_t devread; /* Device read function */
phy_iowr_t devwrite; /* Device write function */
off_t eofptr; /* End of file on virtual files */
char devnam[1]; /* Device name */
};
vmscond_t device_lookup( size_t devlen, char *devnam, int create,
struct DEV **retdev );
void device_done( struct DEV *dev );
#endif /* # ifndef _DEVICE_H */