| Index: third_party/twisted_8_1/twisted/python/win32.py
|
| diff --git a/third_party/twisted_8_1/twisted/python/win32.py b/third_party/twisted_8_1/twisted/python/win32.py
|
| deleted file mode 100644
|
| index c409f0dfb297bc2706d866267462f7e799a08c22..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/python/win32.py
|
| +++ /dev/null
|
| @@ -1,160 +0,0 @@
|
| -# Copyright (c) 2001-2007 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -"""
|
| -Win32 utilities.
|
| -
|
| -See also twisted.python.shortcut.
|
| -"""
|
| -
|
| -import re
|
| -import exceptions
|
| -import os
|
| -
|
| -try:
|
| - import win32api
|
| - import win32con
|
| -except ImportError:
|
| - pass
|
| -
|
| -from twisted.python.runtime import platform
|
| -
|
| -# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/debug/base/system_error_codes.asp
|
| -ERROR_FILE_NOT_FOUND = 2
|
| -ERROR_PATH_NOT_FOUND = 3
|
| -ERROR_INVALID_NAME = 123
|
| -ERROR_DIRECTORY = 267
|
| -
|
| -def _determineWindowsError():
|
| - """
|
| - Determine which WindowsError name to export.
|
| - """
|
| - return getattr(exceptions, 'WindowsError', FakeWindowsError)
|
| -
|
| -class FakeWindowsError(OSError):
|
| - """
|
| - Stand-in for sometimes-builtin exception on platforms for which it
|
| - is missing.
|
| - """
|
| -
|
| -WindowsError = _determineWindowsError()
|
| -
|
| -# XXX fix this to use python's builtin _winreg?
|
| -
|
| -def getProgramsMenuPath():
|
| - """Get the path to the Programs menu.
|
| -
|
| - Probably will break on non-US Windows.
|
| -
|
| - @returns: the filesystem location of the common Start Menu->Programs.
|
| - """
|
| - if not platform.isWinNT():
|
| - return "C:\\Windows\\Start Menu\\Programs"
|
| - keyname = 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders'
|
| - hShellFolders = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE,
|
| - keyname, 0, win32con.KEY_READ)
|
| - return win32api.RegQueryValueEx(hShellFolders, 'Common Programs')[0]
|
| -
|
| -
|
| -def getProgramFilesPath():
|
| - """Get the path to the Program Files folder."""
|
| - keyname = 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion'
|
| - currentV = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE,
|
| - keyname, 0, win32con.KEY_READ)
|
| - return win32api.RegQueryValueEx(currentV, 'ProgramFilesDir')[0]
|
| -
|
| -_cmdLineQuoteRe = re.compile(r'(\\*)"')
|
| -_cmdLineQuoteRe2 = re.compile(r'(\\+)\Z')
|
| -def cmdLineQuote(s):
|
| - """
|
| - Internal method for quoting a single command-line argument.
|
| -
|
| - @param s: an unquoted string that you want to quote so that something that
|
| - does cmd.exe-style unquoting will interpret it as a single argument, even
|
| - if it contains spaces.
|
| -
|
| - @return: a quoted string.
|
| - """
|
| - quote = ((" " in s) or ("\t" in s) or ('"' in s)) and '"' or ''
|
| - return quote + _cmdLineQuoteRe2.sub(r"\1\1", _cmdLineQuoteRe.sub(r'\1\1\\"', s)) + quote
|
| -
|
| -def quoteArguments(arguments):
|
| - """
|
| - Quote an iterable of command-line arguments for passing to CreateProcess or
|
| - a similar API. This allows the list passed to C{reactor.spawnProcess} to
|
| - match the child process's C{sys.argv} properly.
|
| -
|
| - @param arglist: an iterable of C{str}, each unquoted.
|
| -
|
| - @return: a single string, with the given sequence quoted as necessary.
|
| - """
|
| - return ' '.join([cmdLineQuote(a) for a in arguments])
|
| -
|
| -
|
| -class _ErrorFormatter(object):
|
| - """
|
| - Formatter for Windows error messages.
|
| -
|
| - @ivar winError: A callable which takes one integer error number argument
|
| - and returns an L{exceptions.WindowsError} instance for that error (like
|
| - L{ctypes.WinError}).
|
| -
|
| - @ivar formatMessage: A callable which takes one integer error number
|
| - argument and returns a C{str} giving the message for that error (like
|
| - L{win32api.FormatMessage}).
|
| -
|
| - @ivar errorTab: A mapping from integer error numbers to C{str} messages
|
| - which correspond to those erorrs (like L{socket.errorTab}).
|
| - """
|
| - def __init__(self, WinError, FormatMessage, errorTab):
|
| - self.winError = WinError
|
| - self.formatMessage = FormatMessage
|
| - self.errorTab = errorTab
|
| -
|
| - def fromEnvironment(cls):
|
| - """
|
| - Get as many of the platform-specific error translation objects as
|
| - possible and return an instance of C{cls} created with them.
|
| - """
|
| - try:
|
| - from ctypes import WinError
|
| - except ImportError:
|
| - WinError = None
|
| - try:
|
| - from win32api import FormatMessage
|
| - except ImportError:
|
| - FormatMessage = None
|
| - try:
|
| - from socket import errorTab
|
| - except ImportError:
|
| - errorTab = None
|
| - return cls(WinError, FormatMessage, errorTab)
|
| - fromEnvironment = classmethod(fromEnvironment)
|
| -
|
| -
|
| - def formatError(self, errorcode):
|
| - """
|
| - Returns the string associated with a Windows error message, such as the
|
| - ones found in socket.error.
|
| -
|
| - Attempts direct lookup against the win32 API via ctypes and then
|
| - pywin32 if available), then in the error table in the socket module,
|
| - then finally defaulting to C{os.strerror}.
|
| -
|
| - @param errorcode: the Windows error code
|
| - @type errorcode: C{int}
|
| -
|
| - @return: The error message string
|
| - @rtype: C{str}
|
| - """
|
| - if self.winError is not None:
|
| - return self.winError(errorcode)[1]
|
| - if self.formatMessage is not None:
|
| - return self.formatMessage(errorcode)
|
| - if self.errorTab is not None:
|
| - result = self.errorTab.get(errorcode)
|
| - if result is not None:
|
| - return result
|
| - return os.strerror(errorcode)
|
| -
|
| -formatError = _ErrorFormatter.fromEnvironment().formatError
|
|
|