From 276e7a7d02a5b9a951cb41209b9cb4817e7193ea Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Tue, 26 Jan 2010 20:58:40 +0000 Subject: Windows wants UNC names for COM ports >9 (legacy COM ports only work with one digit) As UNC also works for smaller names, just retarget all requests for dev=COMx on win32 to \\.\COMx. Tested with large and small COM port numbers on XP. Corresponding to flashrom svn r883. Signed-off-by: Patrick Georgi Acked-by: Carl-Daniel Hailfinger --- serial.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'serial.c') diff --git a/serial.c b/serial.c index 0fbe029..4d49e08 100644 --- a/serial.c +++ b/serial.c @@ -105,7 +105,15 @@ fdtype sp_openserport(char *dev, unsigned int baud) { #ifdef _WIN32 HANDLE fd; - fd = CreateFile(dev, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + char* dev2 = dev; + if ((strlen(dev) > 3) && (tolower(dev[0])=='c') && (tolower(dev[1])=='o') && (tolower(dev[2])=='m')) { + dev2 = malloc(strlen(dev)+5); + strcpy(dev2, "\\\\.\\"); + strcpy(dev2+4, dev); + } + fd = CreateFile(dev2, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + if (dev2 != dev) + free(dev2); if (fd == INVALID_HANDLE_VALUE) { sp_die("Error: cannot open serial port"); } -- cgit v1.1