+++ /dev/null
-%{
-#include "winsup.h"
-#include <sys/types.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <string.h>
-#include "devices.h"
-#include "sys/cygwin.h"
-#include "tty.h"
-#include "pinfo.h"
-#undef __GNUC__
-static unsigned int devhash (const char *, unsigned)
- __attribute__ ((regparm (2)));
-%}
-struct device;
-%%
-"/dev/tty", FH_TTY, "\\dev\\tty", 0, 0, 0, 0
-"/dev/ttys", FH_TTYS, "\\dev\\tty%d", 0, 255, 0, 0
-"/dev/console", FH_CONSOLE, "\\dev\\console", 0, 0, 0, 0
-"/dev/ttym", FH_TTYM, "\\dev\\ttym", 0, 255, 0, 0
-"/dev/ptmx", FH_PTYM, "\\dev\\ptmx", 0, 0, 0, 0
-"/dev/windows", FH_WINDOWS, "\\dev\\windows", 0, 0, 0, 0
-"/dev/dsp", FH_OSS_DSP, "\\dev\\dsp", 0, 0, 0, 0
-"/dev/conin", FH_CONIN, "conin", 0, 0, 0, 0
-"/dev/conout", FH_CONOUT, "conout", 0, 0, 0, 0
-"/dev/null", FH_NULL, "nul", 0, 0, 0, 0
-"/dev/zero", FH_ZERO, "\\dev\\zero", 0, 0, 0, 0
-"/dev/random", FH_RANDOM, "\\dev\\random", 0, 0, 0, 0
-"/dev/urandom", FH_URANDOM, "\\dev\\urandom", 0, 0, 0, 0
-"/dev/mem", FH_MEM, "\\dev\\mem", 0, 0, 0, 0
-"/dev/kmem", FH_KMEM, "\\dev\\mem", 0, 0, 0, 0
-"/dev/clipboard", FH_CLIPBOARD, "\\dev\\clipboard", 0, 0, 0, 0
-"/dev/port", FH_PORT, "\\dev\\port", 0, 0, 0, 0
-"/dev/com", FH_SERIAL, "\\.\\com%d", 1, 99
-"/dev/ttyS", FH_SERIAL, "\\.\\com%d", 0, 99, -1
-"/dev/pipe", FH_PIPE, "\\dev\\pipe", 0, 0, 0, 0
-"/dev/piper", FH_PIPER, "\\dev\\piper", 0, 0, 0, 0
-"/dev/pipew", FH_PIPEW, "\\dev\\pipew", 0, 0, 0, 0
-"/dev/fifo", FH_FIFO, "\\dev\\fifo", 0, 0, 0, 0
-"/dev/streamsocket", FH_SOCKET, "\\dev\\socket", 0, 0, 0, 0
-"/dev/tcp", FH_SOCKET, "\\dev\\socket", 0, 0, 0, 0
-"/dev/udp", FH_SOCKET, "\\dev\\socket", 0, 0, 0, 0
-"/dev/dgsocket", FH_SOCKET, "\\dev\\socket", 0, 0, 0, 0
-"/dev/st", FH_TAPE, "\\Device\\Tape%d", 0, 127
-"/dev/nst", FH_NTAPE, "\\Device\\Tape%d", 0, 127
-"/dev/fd", FH_FLOPPY, "\\Device\\Floppy%d", 0, 15
-"/dev/scd", FH_CDROM, "\\Device\\CdRom%d", 0, 15
-"/dev/sd", FH_SD, "\\Device\\Harddisk%d\\Partition%d", 'a', 'z', -'a', 16
-"/dev/tape", FH_TAPE, "\\Device\\Tape%d", 0, 127, 0, 0
-"/dev/ntape", FH_NTAPE, "\\Device\\Tape%d", 0, 127, 128, 0
-"\\\\.\\tape", FH_TAPE, "\\Device\\Tape%d", 0, 127, 0, 0
-"\\\\.\\ntape", FH_NTAPE, "\\Device\\Tape%d", 0, 127, 128, 0
-"\\\\.\\physicaldrive", FH_SD, "\\Device\\Harddisk%d\\Partition%d", 0, 224, 0, 16
-"/dev/rawdrive", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\a:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\b:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\c:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\d:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\e:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\f:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\g:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\h:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\i:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\j:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\k:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\l:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\m:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\n:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\o:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\p:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\q:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\r:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\s:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\t:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\u:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\v:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\w:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\x:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\y:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"\\\\.\\z:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"////.//tape", FH_TAPE, "//Device//Tape%d", 0, 127, 0, 0
-"////.//ntape", FH_NTAPE, "//Device//Tape%d", 0, 127, 128, 0
-"//./physicaldrive", FH_SD, "\\Device\\Harddisk%d\\Partition%d", 0, 224, 0, 16
-"//./a:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./b:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./c:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./d:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./e:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./f:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./g:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./h:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./i:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./j:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./k:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./l:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./m:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./n:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./o:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./p:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./q:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./r:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./s:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./t:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./u:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./v:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./w:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./x:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./y:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-"//./z:", FH_RAWDRIVE, "\\DosDevices\\%c:", 0, 0, 0, 0
-%%
-void
-device::parse (const char *s)
-{
- size_t len = strlen (s);
- const device *dev = lookup (s, len);
- unsigned unit = 0;
-
- if (!dev || !*dev)
- {
- size_t prior_len = len;
- while (len-- > 0 && isdigit (s[len]))
- continue;
- if (++len < prior_len)
- {
- dev = lookup (s, len);
- if (!dev || (!dev->upper && ! dev->devn == FH_TTY))
- dev = NULL;
- else
- {
- unsigned n = atoi (s + len);
- if (dev->devn == FH_TTY)
- dev = ttys_dev; // SIGH
- if (n >= dev->lower && n <= dev->upper)
- unit = n;
- }
- }
- }
-
- if (!dev || !*dev)
- devn = 0;
- else if (dev->devn == FH_TTY)
- tty_to_real_device ();
- else
- {
- *this = *dev;
- if (!setunit (unit))
- devn = 0;
- }
-}
-
-void
-device::init ()
-{
- /* nothing to do... yet */
-}
-
-void
-device::parse (_major_t major, _minor_t minor)
-{
- _dev_t dev = FHDEV (major, 0);
-
- devn = 0;
-
- unsigned i;
- for (i = 0; i < (sizeof (unit_devices) / sizeof (unit_devices[0])); i++)
- if (unit_devices[i]->devn == dev)
- {
- *this = *unit_devices[i];
- this->setunit (minor);
- goto out;
- }
-
- dev = FHDEV (major, minor);
- for (i = 0; i < (sizeof (uniq_devices) / sizeof (uniq_devices[0])); i++)
- if (uniq_devices[i]->devn == dev)
- {
- *this = *uniq_devices[i];
- break;
- }
-
-out:
- return;
-}
-
-void
-device::parse (_dev_t dev)
-{
- parse (_major (dev), _minor (dev));
-}
-
-void
-device::tty_to_real_device ()
-{
- if (!real_tty_attached (myself))
- *this = *console_dev;
- else
- {
- *this = *ttys_dev;
- setunit (myself->ctty);
- }
-}