src/allmydata/util/iputil.py: loosen regexps and ensure that 'LANG=en_US.UTF-8' is...
authordavid-sarah <david-sarah@jacaranda.org>
Thu, 20 Jan 2011 08:48:27 +0000 (00:48 -0800)
committerdavid-sarah <david-sarah@jacaranda.org>
Thu, 20 Jan 2011 08:48:27 +0000 (00:48 -0800)
src/allmydata/util/iputil.py

index efec11c9a3cc3d3df2b64033ff10609fabbf63c2..5b328c5c0e24bc5a147c5c931d64975d8d301301 100644 (file)
@@ -176,12 +176,12 @@ _win32_re = re.compile('^\s*\d+\.\d+\.\d+\.\d+\s.+\s(?P<address>\d+\.\d+\.\d+\.\
 
 # These work in Redhat 6.x and Debian 2.2 potato
 _linux_path = '/sbin/ifconfig'
-_linux_re = re.compile('^\s*inet addr:(?P<address>\d+\.\d+\.\d+\.\d+)\s.+$', flags=re.M|re.I|re.S)
+_linux_re = re.compile('^\s*inet \w*:?(?P<address>\d+\.\d+\.\d+\.\d+)\s.+$', flags=re.M|re.I|re.S)
 
 # NetBSD 1.4 (submitted by Rhialto), Darwin, Mac OS X
 _netbsd_path = '/sbin/ifconfig'
 _netbsd_args = ('-a',)
-_netbsd_re = re.compile('^\s+inet (?P<address>\d+\.\d+\.\d+\.\d+)\s.+$', flags=re.M|re.I|re.S)
+_netbsd_re = re.compile('^\s+inet \w*:?(?P<address>\d+\.\d+\.\d+\.\d+)\s.+$', flags=re.M|re.I|re.S)
 
 # Irix 6.5
 _irix_path = '/usr/etc/ifconfig'
@@ -232,7 +232,8 @@ def _synchronously_find_addresses_via_config():
         return []
 
 def _query(path, args, regex):
-    p = subprocess.Popen([path] + list(args), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    env = {'LANG': 'en_US.UTF-8'}
+    p = subprocess.Popen([path] + list(args), stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env)
     (output, err) = p.communicate()
 
     addresses = []