I actually copied that particular bit of code from OFS.Container. How was it fixed there? That's probably how it should be fixed in LocalFS. --jfarr ----- Original Message ----- From: "Michael Best" <mbest@emergence.com> To: <zope@zope.org> Sent: Friday, November 09, 2001 3:15 PM Subject: [Zope] LocalFS and 2.4.x
I was having no luck running LocalFS in 2.4
As a result I looked at the source code, and after some experimentation discovered that ts_regex which comes from ts_regex in the Zope distribution was causing this product to fail.
As regex is depricated in the Python 2.1, will a replacement to ts_regex be written, or ts_regex modified? I was under the impression that ts_ meant Thread Safe. Perhaps re in Python 2.1 is thread safe already and so it would be okay to use it?
I prepared a patch to make it work, but I don't know if there are any hidden caveats and I should follow a different approach?
Here is a basic diff, with a patch as an attachment.
< import AccessControl, re
import AccessControl, ts_regex
< bad_id=re.compile('[^a-zA-Z0-9-_~,. ]').search #TS
bad_id=ts_regex.compile('[^a-zA-Z0-9-_~,. ]').search #TS
< if bad_id(id) != None:
if bad_id(id) != -1:
--------------------------------------------------------------------------------
--- LocalFS.py Fri Nov 9 15:58:22 2001 +++ LocalFS.py.orig Fri Nov 9 15:57:17 2001 @@ -44,7 +44,7 @@
import sys, os, string, re, stat, urllib, glob, errno, time, tempfile import App, Globals, Acquisition, Persistence, OFS -import AccessControl, re +import AccessControl, ts_regex from App.Extensions import getObject from webdav.NullResource import NullResource from ZPublisher.HTTPResponse import HTTPResponse @@ -400,7 +400,7 @@ if id == os.curdir or id == os.pardir or id[0] == '_': return 0 return 1
-bad_id=re.compile('[^a-zA-Z0-9-_~,. ]').search #TS +bad_id=ts_regex.compile('[^a-zA-Z0-9-_~,. ]').search #TS
def absattr(attr): if callable(attr): return attr() @@ -556,7 +556,7 @@ # only check that the id string contains no illegal chars. if not id: raise 'Bad Request', 'No id was specified' - if bad_id(id) != None: + if bad_id(id) != -1: raise 'Bad Request', ( 'The id %s contains characters illegal in filenames.' % id) if id[0]=='_': raise 'Bad Request', (