tx everybody for the very useful input!
Using ns_returnfp is (for several reasons) not an option for us.
Recompiling tcl using
--with-encoding utf-8
did not resolve the problem. This time I used AOLserver 4.5.1 /
tcl8.5.10.
I gave it a try since some of our users do upload files using tools
such as WINSCP. Since these files would also need to be accessible
through the ]project-open[ file manager, we need to come up
with a slightly more complex solution to detect files with special
chars.
./k
On 23/09/2011 1:32, Jeff Rogers wrote:
Another
thing you could do is to set tcl's default encoding to utf-8, so
that the filenames passed to Ns_ConnReturnFile are the same
encoding as what the core tcl commands do.
Set the default encoding with
encoding system utf-8
in some tcl file. It's possible this could have some side
effects.
I'm trying to figure out what needs to be patched in the server
for this to do the right thing, but encoding is a messy business.
-J
Jim Davidson wrote:
Howdy,
Looking at the code, ns_returnfile passes the filename through
to the
core Ns_ConnReturnFile without any of the care that core Tcl
does
handling filenames. You may be able to replace ns_returnfile
with
ns_returnfp, passing a file handle returned from Tcl's open
command
which should be smarter with filesystem encoding.
The downside is that would bypass some of the smarts within the
underlying Ns_ConnReturnFile used by ns_returnfile: It appears
to set
Last-Modified headers, optionally cache small files, mmap large
files,
etc. All this may not matter if you're doing one-shot type work,
e.g.,
returning a custom crafted file for just one user, just once.
-Jim
On Sep 22, 2011, at 3:27 PM, Peter Sadlon wrote:
Just a guess here, but by default, TCL
is compiled with Latin-1
encoding. This causes some issues when you are trying to do
certain
things in utf-8, even if you set all possible TCL config
variables to
use the UTF-8 charset. You could attempt to recompile TCL with
--with-encoding utf-8
But in the end, your final comment is correct, it is best to
encode
the filename, then you don't have to worry about a bunch of
special cases.
------------------------------------------------------------------------
Date: Thu, 22 Sep 2011 22:59:02 +0200
From: klaus.hofed...@project-open.com
<mailto:klaus.hofed...@project-open.com>
Subject: [AOLSERVER] Fwd: AOLserver 4.5.0 - ns_returnfile does
not
find file - file name contains special chars
To: AOLSERVER@LISTSERV.AOL.COM
<mailto:AOLSERVER@LISTSERV.AOL.COM>
Hi all
at ]project-open[ we currently use AOLserver 4.5.0 with
OpenACS
5.6.0 on CentOS release 5.3 (Final)
We suddenly encountered the problem that ns_returnfile can't
find a
file which filname contains special chars such as 'umlaute'
(ä, ö, etc.)
---
convmv tells me that the file name is utf-8 encoded.
---
Config.tcl has the standard settings:
ns_param HackContentType 1
ns_param DefaultCharset utf-8
ns_param HttpOpenCharset utf-8
ns_param OutputCharset utf-8
ns_param URLCharset utf-8
---
Following CentOS locale:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
---
File System is 'ext3'
---
Files have been created with " exec /bin/cp $filename
$dest_path" out of
a tcl file or using 'touch/emacs' on OS level. Same results.
---
We did have the problems using AOLserver 3.3
Anybody an idea what the cause might be?
Probably its better to always encode file names of
uploaded filesto avoid trouble when creating multi-plattform
applications.
Thanks for your support!
Klaus
--
AOLserver -http://www.aolserver.com/
To Remove yourself from this list, simply send an email to
<lists...@listserv.aol.com
<mailto:lists...@listserv.aol.com>> with
the body of "SIGNOFF AOLSERVER" in the email message. You can
leave
the Subject: field of your email blank.
-- AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to
<lists...@listserv.aol.com
<mailto:lists...@listserv.aol.com>> with
the body of "SIGNOFF AOLSERVER" in the email message. You can
leave
the Subject: field of your email blank.
-- AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to
<lists...@listserv.aol.com> with the body of "SIGNOFF
AOLSERVER" in the
email message. You can leave the Subject: field of your email
blank.
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to
<lists...@listserv.aol.com> with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave
the Subject: field of your email blank.
--
AOLserver - http://www.aolserver.com/
To Remove yourself from this list, simply send an email to <lists...@listserv.aol.com> with the
body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.
|