bug-tar
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-tar] [paxutils: PATCH v2 1/4] lib: check if dev_name is a drive let


From: KO Myung-Hun
Subject: [Bug-tar] [paxutils: PATCH v2 1/4] lib: check if dev_name is a drive letter
Date: Thu, 14 Jan 2016 13:13:35 +0900

From: KO Myung-Hun <address@hidden>

On OS/2, 'x:' is a drive letter not a remote device.

* lib/rmt.h (_remdev): Check if dev_name is a drive letter.
(_drivedev): New.
---
 lib/rmt.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/rmt.h b/lib/rmt.h
index ff10e7c..da46119 100644
--- a/lib/rmt.h
+++ b/lib/rmt.h
@@ -35,10 +35,19 @@ extern bool force_local_option;
    Distributed File System (DFS).  However, when --force-local, a
    filename is never remote.  */
 
+#ifdef __OS2__
+# define _drivedev(dev_name) \
+  ((((dev_name)[0] >= 'a' && (dev_name)[0] <= 'z') || \
+    ((dev_name)[0] >= 'A' && (dev_name)[0] <= 'Z')) && ((dev_name)[1] == ':'))
+#else
+# define _drivedev(dev_name) 0
+#endif
+
 #define _remdev(dev_name) \
   (!force_local_option && (rmt_dev_name__ = strchr (dev_name, ':')) \
    && rmt_dev_name__ > (dev_name) \
-   && ! memchr (dev_name, '/', rmt_dev_name__ - (dev_name)))
+   && ! memchr (dev_name, '/', rmt_dev_name__ - (dev_name)) \
+   && ! _drivedev(dev_name))
 
 #define _isrmt(fd) \
   ((fd) >= __REM_BIAS)
-- 
2.7.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]