summaryrefslogtreecommitdiff
path: root/sys/lib/python/hgext/hgwebfs.py
diff options
context:
space:
mode:
authorOri Bernstein <ori@eigenstate.org>2021-06-14 00:00:37 +0000
committerOri Bernstein <ori@eigenstate.org>2021-06-14 00:00:37 +0000
commita73a964e51247ed169d322c725a3a18859f109a3 (patch)
tree3f752d117274d444bda44e85609aeac1acf313f3 /sys/lib/python/hgext/hgwebfs.py
parente64efe273fcb921a61bf27d33b230c4e64fcd425 (diff)
python, hg: tow outside the environment.
they've served us well, and can ride off into the sunset.
Diffstat (limited to 'sys/lib/python/hgext/hgwebfs.py')
-rw-r--r--sys/lib/python/hgext/hgwebfs.py105
1 files changed, 0 insertions, 105 deletions
diff --git a/sys/lib/python/hgext/hgwebfs.py b/sys/lib/python/hgext/hgwebfs.py
deleted file mode 100644
index 9ae26b959..000000000
--- a/sys/lib/python/hgext/hgwebfs.py
+++ /dev/null
@@ -1,105 +0,0 @@
-''' webfs support '''
-
-import mercurial.url
-import re
-import os
-
-class Webconn:
- def __init__(self, mnt, req):
- while True:
- try:
- self.open(mnt, req)
- return
- except IOError, e:
- try:
- errstr = e.strerror
- params = errstr[errstr.index("needkey ")+8:]
- if params.find("!password?") < 0:
- raise e
- if os.spawnl(os.P_WAIT, "/boot/factotum", "getkey", "-g", params) != 0:
- raise e
- except:
- raise e
-
- def open(self, mnt, req):
- if type(req) == str:
- self.url = req
- else:
- self.url = req.get_full_url()
- if self.url[0:5] == 'file:':
- path = self.url[5:]
- while path[0:2] == '//':
- path = path[1:]
- self.dir = '/dev/null'
- self.body = open(path, 'r', 0)
- return
- ctl = open(mnt+'/clone', 'r+', 0)
- try:
- self.dir = mnt+'/'+ctl.readline().rstrip('\n')
- ctl.seek(0)
- ctl.write('url '+self.url)
- m = 'User-Agent: mercurial/proto-1.0\r\n';
- ctl.seek(0)
- ctl.write('headers '+m)
- for h in req.headers:
- ctl.seek(0)
- ctl.write('headers '+h+': '+req.headers[h]+'\r\n')
-
- if req.has_data():
- data = req.get_data()
- post = open(self.dir+'/postbody', 'w', 0);
- try:
- data.seek(0)
- while True:
- buf = data.read(4096)
- if len(buf) == 0:
- break
- post.write(buf)
- finally:
- post.close()
- self.body = open(self.dir+'/body', 'r', 0)
- finally:
- ctl.close()
-
- def read(self, amt=-1):
- return self.body.read(amt);
-
- def close(self):
- self.body.close()
- self.body = None
- self.dir = None
-
- def geturl(self):
- return self.url
-
- def getheader(self, key):
- name = re.sub(r'[^a-z]+', '', key.lower())
- try:
- f = open(self.dir+'/'+name, 'r', 0)
- try:
- hdr = f.read()
- finally:
- f.close()
- return hdr
- except:
- return None
-
-class Webopener:
- def __init__(self):
- self.handlers = []
-
- def add_handler(self, handler):
- return
-
- def open(self, req, data=None):
- return Webconn('/mnt/web', req)
-
- def close(self):
- pass
-
-
-def webopener(ui, authinfo=None):
- return Webopener();
-
-mercurial.url.has_https = 1
-mercurial.url.opener = webopener