Commit 674f9616 authored by Giorgos Korfiatis's avatar Giorgos Korfiatis
Browse files

Get info of actual path in windows

parent ae48b086
...@@ -22,6 +22,7 @@ import time ...@@ -22,6 +22,7 @@ import time
import filecmp import filecmp
import shutil import shutil
import errno import errno
import ctypes
from watchdog.observers import Observer from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler from watchdog.events import FileSystemEventHandler
...@@ -146,9 +147,29 @@ def local_path_changes(path, state, unhandled_equal=True): ...@@ -146,9 +147,29 @@ def local_path_changes(path, state, unhandled_equal=True):
return live_info return live_info
def get_actual_windows_path(path):
SIZE = 1024
buf = ctypes.create_unicode_buffer(SIZE)
rv = ctypes.windll.kernel32.GetShortPathNameW(path, buf, SIZE)
if rv == 0 or rv > SIZE:
raise ValueError('Error in computing short %s' % rv)
short = buf.value
rv = ctypes.windll.kernel32.GetLongPathNameW(short, buf, SIZE)
if rv == 0 or rv > SIZE:
raise ValueError('Error in computing long %s' % rv)
return buf.value
def get_live_info(path): def get_live_info(path):
if path is None: if path is None:
return {} return {}
if utils.iswin():
try:
actual_path = get_actual_windows_path(path)
if path != actual_path:
return {}
except ValueError:
return {}
stats, status = get_local_status(path) stats, status = get_local_status(path)
if status == LOCAL_MISSING: if status == LOCAL_MISSING:
return {} return {}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment