summaryrefslogtreecommitdiffstats
path: root/private/mvdm/softpc.new/host/inc/host_hfx.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/mvdm/softpc.new/host/inc/host_hfx.h')
-rw-r--r--private/mvdm/softpc.new/host/inc/host_hfx.h238
1 files changed, 238 insertions, 0 deletions
diff --git a/private/mvdm/softpc.new/host/inc/host_hfx.h b/private/mvdm/softpc.new/host/inc/host_hfx.h
new file mode 100644
index 000000000..82e56a761
--- /dev/null
+++ b/private/mvdm/softpc.new/host/inc/host_hfx.h
@@ -0,0 +1,238 @@
+/*
+ * VPC-XT Revision 1.0
+ *
+ * Title : host_hfx.h
+ *
+ * Description : Host dependent definitions for HFX.
+ *
+ * Author : J. Koprowski + L. Dworkin
+ *
+ * Notes :
+ *
+ * Mods :
+ */
+
+#ifdef SCCSID
+/* static char SccsID[]="@(#)host_hfx.h 1.7 2/13/91 Copyright Insignia Solutions Ltd."; */
+#endif
+
+#ifdef HFX
+#ifndef PROD
+/*
+ * Unix error codes used for debugging purposes.
+ */
+static char *ecode[]={
+"EOK", /* 0 /* Not an error */
+"EPERM", /* 1 /* Not super-user */
+"ENOENT", /* 2 /* No such file or directory */
+"ESRCH", /* 3 /* No such process */
+"EINTR", /* 4 /* interrupted system call */
+"EIO", /* 5 /* I/O error */
+"ENXIO", /* 6 /* No such device or address */
+"E2BIG", /* 7 /* Arg list too long */
+"ENOEXEC", /* 8 /* Exec format error */
+"EBADF", /* 9 /* Bad file number */
+"ECHILD", /* 10 /* No children */
+"EAGAIN", /* 11 /* No more processes */
+"ENOMEM", /* 12 /* Not enough core */
+"EACCES", /* 13 /* Permission denied */
+"EFAULT", /* 14 /* Bad address */
+"ENOTBLK", /* 15 /* Block device required */
+"EBUSY", /* 16 /* Mount device busy */
+"EEXIST", /* 17 /* File exists */
+"EXDEV", /* 18 /* Cross-device link */
+"ENODEV", /* 19 /* No such device */
+"ENOTDIR", /* 20 /* Not a directory */
+"EISDIR", /* 21 /* Is a directory */
+"EINVAL", /* 22 /* Invalid argument */
+"ENFILE", /* 23 /* File table overflow */
+"EMFILE", /* 24 /* Too many open files */
+"ENOTTY", /* 25 /* Not a typewriter */
+"ETXTBSY", /* 26 /* Text file busy */
+"EFBIG", /* 27 /* File too large */
+"ENOSPC", /* 28 /* No space left on device */
+"ESPIPE", /* 29 /* Illegal seek */
+"EROFS", /* 30 /* Read only file system */
+"EMLINK", /* 31 /* Too many links */
+"EPIPE", /* 32 /* Broken pipe */
+"EDOM", /* 33 /* Math arg out of domain of func */
+"ERANGE", /* 34 /* Math result not representable */
+"ENOMSG", /* 35 /* No message of desired type */
+"EIDRM", /* 36 /* Identifier removed */
+"ECHRNG", /* 37 /* Channel number out of range */
+"EL2NSYNC", /* 38 /* Level 2 not synchronized */
+"EL3HLT", /* 39 /* Level 3 halted */
+"EL3RST", /* 40 /* Level 3 reset */
+"ELNRNG", /* 41 /* Link number out of range */
+"EUNATCH", /* 42 /* Protocol driver not attached */
+"ENOCSI", /* 43 /* No CSI structure available */
+"EL2HLT", /* 44 /* Level 2 halted */
+"EDEADLK", /* 45 /* Deadlock condition. */
+"ENOLCK", /* 46 /* No record locks available. */
+
+"EOK", /* 47 /* Not an error */
+"EOK", /* 48 /* Not an error */
+"EOK", /* 49 /* Not an error */
+
+"EBADE", /* 50 /* invalid exchange */
+"EBADR", /* 51 /* invalid request descriptor */
+"EXFULL", /* 52 /* exchange full */
+"ENOANO", /* 53 /* no anode */
+"EBADRQC", /* 54 /* invalid request code */
+"EBADSLT", /* 55 /* invalid slot */
+"EDEADLOCK", /* 56 /* file locking deadlock error */
+"EBFONT", /* 57 /* bad font file fmt */
+
+"EOK", /* 58 /* Not an error */
+"EOK", /* 59 /* Not an error */
+
+"ENOSTR", /* 60 /* Device not a stream */
+"ENODATA", /* 61 /* no data (for no delay io) */
+"ETIME", /* 62 /* timer expired */
+"ENOSR", /* 63 /* out of streams resources */
+"ENONET", /* 64 /* Machine is not on the network */
+"ENOPKG", /* 65 /* Package not installed */
+"EREMOTE", /* 66 /* The object is remote */
+"ENOLINK", /* 67 /* the link has been severed */
+"EADV", /* 68 /* advertise error */
+"ESRMNT", /* 69 /* srmount error */
+"ECOMM", /* 70 /* Communication error on send */
+"EPROTO", /* 71 /* Protocol error */
+"EOK", /* 72 /* Not an error */
+"EOK", /* 73 /* Not an error */
+"EMULTIHOP", /* 74 /* multihop attempted */
+"EOK", /* 75 /* Not an error */
+"EDOTDOT", /* 76 /* Cross mount point (not really error)*/
+"EBADMSG", /* 77 /* trying to read unreadable message */
+"EOK", /* 78 /* Not an error */
+"EOK", /* 79 /* Not an error */
+"ENOTUNIQ", /* 80 /* given log. name not unique */
+"EBADFD", /* 81 /* f.d. invalid for this operation */
+"EREMCHG", /* 82 /* Remote address changed */
+"ELIBACC", /* 83 /* Can't access a needed shared lib. */
+"ELIBBAD", /* 84 /* Accessing a corrupted shared lib. */
+"ELIBSCN", /* 85 /* .lib section in a.out corrupted. */
+"ELIBMAX", /* 86 /* Attempting to link in too many libs. */
+"ELIBEXEC", /* 87 /* Attempting to exec a shared library. */
+};
+#endif
+
+/*
+ * Return values from host_map_file function.
+ */
+
+/*
+ * Returned if a match was required and was successful.
+ */
+#define FILE_MATCH 0
+/*
+ * Returned if a match was required and failed.
+ */
+#define MATCH_FAIL 1
+/*
+ * Returned if no match was required and no mapping took place.
+ */
+#define NAME_LEGAL 2
+/*
+ * Returned if no match was required and mapping took place.
+ */
+#define NAME_MAPPED 3
+
+/*
+ * Tables for conversion from base forty one to legal DOS characters.
+ */
+#define HOST_CHAR_TABLE1 "!#$%&@^_~0123456789XYZADFGHIJKLMNOPQRSUVW"
+#define HOST_CHAR_TABLE2 "!#$%&@^_~0123456789ABCDFGHJKLMNPQRTUVWXYZ"
+#define HOST_CHAR_TABLE3 "!#$%&@^_~0123456789ADFGHIJKLMNOPQRSUVWXYZ"
+
+/*
+ * Illegal file name specification. This is the name
+ * used when a host filename is completely illegal under
+ * DOS.
+ */
+#define ILLEGAL_NAME "ILLEGAL"
+#define ILLEGAL_NAME_LENGTH 7
+/*
+ * Codes passed to host_validate_path function.
+ */
+/*
+ * HFX_NEW_FILE indicates that the path may be mapped, but not the filename
+ * itself. In this case the last field is not validated, but is simply
+ * concatenated to the host name generated.
+ */
+#define HFX_NEW_FILE 0
+/*
+ * HFX_OLD_FILE indicates that the file concerned may already exist
+ * and require mapping. Thus, checks are made to see if the last field
+ * exists, doing a directory search for mapped names if necessary.
+ */
+#define HFX_OLD_FILE 1
+/*
+ * HFX_PATH_ONLY acts in the same way as HFX_NEW_FILE except that the
+ * final name field is not concatenated to the host name output.
+ * In the current version the path will be output with a slash as the final
+ * character.
+ */
+#define HFX_PATH_ONLY 2
+/*
+ * External function declarations.
+ */
+extern boolean host_file_search();
+extern word host_gen_err();
+
+#ifndef access
+#include <io.h> /* IO.H contains define of access to _acccess */
+#endif
+
+#define host_access access
+
+#define host_opendir opendir
+#define host_readdir readdir
+#define host_closedir closedir
+#define host_malloc malloc
+#define host_free free
+#define host_getpid getpid
+
+/*
+ * Global variable external references.
+ */
+/* extern char *hfx_root[]; */
+extern char *get_hfx_root IPT1(half_word, hfx_entry);
+
+/*
+ * Directory type definitions.
+ */
+ #define HOST_DIR int /*ADE*/
+ typedef struct hfx_found_dir_entry
+ {
+ half_word attr;
+ char *host_name;
+ char *dos_name;
+ int direntry;
+ struct hfx_found_dir_entry *next;
+ } HFX_FOUND_DIR_ENT;
+
+/* This is a base structure defined in the host
+ * include file due to the dependence on the host
+ * specific HOST_DIR type
+ */
+typedef struct hfx_direntry
+{
+ HOST_DIR *dir;
+ char *name;
+ char *template;
+ int direntry;
+ HFX_FOUND_DIR_ENT *found_list_head;
+ boolean first_find;
+ struct hfx_direntry *next;
+ struct hfx_direntry *last;
+} HFX_DIR;
+
+
+/*
+ * Host maximum file name length including path. N.B. This may
+ * need increasing.
+ */
+#define MAX_PATHLEN 256
+
+#endif /* HFX */