Patchwork posix: remove unixdomainserver class

login
register
mail settings
Submitter Yuya Nishihara
Date Dec. 13, 2015, 2:49 p.m.
Message ID <d43f8d4b12a79e66b135.1450018168@mimosa>
Download mbox | patch
Permalink /patch/12013/
State Accepted
Headers show

Comments

Yuya Nishihara - Dec. 13, 2015, 2:49 p.m.
# HG changeset patch
# User Yuya Nishihara <yuya@tcha.org>
# Date 1448090512 -32400
#      Sat Nov 21 16:21:52 2015 +0900
# Node ID d43f8d4b12a79e66b1350c3669f599a9a45b2ee8
# Parent  374b960b42acf96be105d8eb429fd041a30929c7
posix: remove unixdomainserver class

It's no longer used since the removal of the inotify extension.
Augie Fackler - Dec. 15, 2015, 6:15 p.m.
On Sun, Dec 13, 2015 at 11:49:28PM +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya@tcha.org>
> # Date 1448090512 -32400
> #      Sat Nov 21 16:21:52 2015 +0900
> # Node ID d43f8d4b12a79e66b1350c3669f599a9a45b2ee8
> # Parent  374b960b42acf96be105d8eb429fd041a30929c7
> posix: remove unixdomainserver class

Queued with delight. My favorite kind of patch: all removals!

>
> It's no longer used since the removal of the inotify extension.
>
> diff --git a/mercurial/posix.py b/mercurial/posix.py
> --- a/mercurial/posix.py
> +++ b/mercurial/posix.py
> @@ -15,7 +15,6 @@ import os
>  import pwd
>  import re
>  import select
> -import socket
>  import stat
>  import sys
>  import tempfile
> @@ -555,46 +554,6 @@ class cachestat(object):
>  def executablepath():
>      return None # available on Windows only
>
> -class unixdomainserver(socket.socket):
> -    def __init__(self, join, subsystem):
> -        '''Create a unix domain socket with the given prefix.'''
> -        super(unixdomainserver, self).__init__(socket.AF_UNIX)
> -        sockname = subsystem + '.sock'
> -        self.realpath = self.path = join(sockname)
> -        if os.path.islink(self.path):
> -            if os.path.exists(self.path):
> -                self.realpath = os.readlink(self.path)
> -            else:
> -                os.unlink(self.path)
> -        try:
> -            self.bind(self.realpath)
> -        except socket.error as err:
> -            if err.args[0] == 'AF_UNIX path too long':
> -                tmpdir = tempfile.mkdtemp(prefix='hg-%s-' % subsystem)
> -                self.realpath = os.path.join(tmpdir, sockname)
> -                try:
> -                    self.bind(self.realpath)
> -                    os.symlink(self.realpath, self.path)
> -                except (OSError, socket.error):
> -                    self.cleanup()
> -                    raise
> -            else:
> -                raise
> -        self.listen(5)
> -
> -    def cleanup(self):
> -        def okayifmissing(f, path):
> -            try:
> -                f(path)
> -            except OSError as err:
> -                if err.errno != errno.ENOENT:
> -                    raise
> -
> -        okayifmissing(os.unlink, self.path)
> -        if self.realpath != self.path:
> -            okayifmissing(os.unlink, self.realpath)
> -            okayifmissing(os.rmdir, os.path.dirname(self.realpath))
> -
>  def statislink(st):
>      '''check whether a stat result is a symlink'''
>      return st and stat.S_ISLNK(st.st_mode)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel

Patch

diff --git a/mercurial/posix.py b/mercurial/posix.py
--- a/mercurial/posix.py
+++ b/mercurial/posix.py
@@ -15,7 +15,6 @@  import os
 import pwd
 import re
 import select
-import socket
 import stat
 import sys
 import tempfile
@@ -555,46 +554,6 @@  class cachestat(object):
 def executablepath():
     return None # available on Windows only
 
-class unixdomainserver(socket.socket):
-    def __init__(self, join, subsystem):
-        '''Create a unix domain socket with the given prefix.'''
-        super(unixdomainserver, self).__init__(socket.AF_UNIX)
-        sockname = subsystem + '.sock'
-        self.realpath = self.path = join(sockname)
-        if os.path.islink(self.path):
-            if os.path.exists(self.path):
-                self.realpath = os.readlink(self.path)
-            else:
-                os.unlink(self.path)
-        try:
-            self.bind(self.realpath)
-        except socket.error as err:
-            if err.args[0] == 'AF_UNIX path too long':
-                tmpdir = tempfile.mkdtemp(prefix='hg-%s-' % subsystem)
-                self.realpath = os.path.join(tmpdir, sockname)
-                try:
-                    self.bind(self.realpath)
-                    os.symlink(self.realpath, self.path)
-                except (OSError, socket.error):
-                    self.cleanup()
-                    raise
-            else:
-                raise
-        self.listen(5)
-
-    def cleanup(self):
-        def okayifmissing(f, path):
-            try:
-                f(path)
-            except OSError as err:
-                if err.errno != errno.ENOENT:
-                    raise
-
-        okayifmissing(os.unlink, self.path)
-        if self.realpath != self.path:
-            okayifmissing(os.unlink, self.realpath)
-            okayifmissing(os.rmdir, os.path.dirname(self.realpath))
-
 def statislink(st):
     '''check whether a stat result is a symlink'''
     return st and stat.S_ISLNK(st.st_mode)