You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by "Graham Dumpleton (JIRA)" <ji...@apache.org> on 2005/01/19 11:41:17 UTC

[jira] Created: (MODPYTHON-4) Bug in setting up of config_dir from Handler directives.

Bug in setting up of config_dir from Handler  directives.
---------------------------------------------------------

         Key: MODPYTHON-4
         URL: http://issues.apache.org/jira/browse/MODPYTHON-4
     Project: mod_python
        Type: Bug
    Versions: 3.1.3    
 Environment: Win32
    Reporter: Graham Dumpleton
    Priority: Minor


The problem is that mod_python doesn't seem to take into account that the
directory is given to it by Apache in POSIX directory naming convention.
Instead, because mod_python knows it is on Win32, it looks for a trailing '\'
and since it doesn't see one, because it is actually '/', it goes and adds a '\'.

The code in mod_python.c is:

static void *python_create_dir_config(apr_pool_t *p, char *dir)  
{
 
    py_config *conf = python_create_config(p);
 
    /* make sure directory ends with a slash */
    if (dir && (dir[strlen(dir) - 1] != SLASH)) 
        conf->config_dir = apr_pstrcat(p, dir, SLASH_S, NULL);
    else
        conf->config_dir = apr_pstrdup(p, dir);
 
    return conf;
}

It should in this case ignore whether it is on Win32 and instead use:

static void *python_create_dir_config(apr_pool_t *p, char *dir)  
{
 
    py_config *conf = python_create_config(p);
 
    /* make sure directory ends with a slash */
    if (dir && (dir[strlen(dir) - 1] != '/')) 
        conf->config_dir = apr_pstrcat(p, dir, "/", NULL);
    else
        conf->config_dir = apr_pstrdup(p, dir);
 
    return conf;
}

Code change not personally tested as don't have Win32 machine.

See thread on mailing list for full discussion of issue.

  http://www.modpython.org/pipermail/mod_python/2004-November/016784.html



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


Re: [jira] Commented: (MODPYTHON-4) Bug in setting up of config_dir from Handler directives.

Posted by "Gregory (Grisha) Trubetskoy" <gr...@apache.org>.
No reason to keep it around if it's not used anywhere.

I wonder why SLASH was there in the first place... perhaps from apache 
1.3...


On Wed, 19 Jan 2005, Nicolas Lehuen (JIRA) wrote:

>     [ http://issues.apache.org/jira/browse/MODPYTHON-4?page=comments#action_57787 ]
>
> Nicolas Lehuen commented on MODPYTHON-4:
> ----------------------------------------
>
> I have checked that the SLASH and SLASH_S macros, defined in mod_python.h, are not used elsewhere. So what I propose is that we just remove the #ifdef WIN32 block at lines 94-100 of mod_python.h and just define SLASH and SLASH_S inconditionnaly :
>
> Index: mod_python.h
> ===================================================================
> --- mod_python.h	(revision 125635)
> +++ mod_python.h	(working copy)
> @@ -91,13 +91,12 @@
> #define MODULENAME "mod_python.apache"
> #define INITFUNC "init"
> #define MAIN_INTERPRETER "main_interpreter"
> -#ifdef WIN32
> -#define SLASH '\\'
> -#define SLASH_S "\\"
> -#else
> +
> +/** Note : as Apache give POSIX paths, there is no need to
> +    differentiate here between UNIX and WIN32 path separators */
> #define SLASH '/'
> #define SLASH_S "/"
> -#endif
> +
> /* used in python_directive_handler */
> #define SILENT 0
> #define NOTSILENT 1
>
> Does everybody else agree ?
>
>
>> Bug in setting up of config_dir from Handler  directives.
>> ---------------------------------------------------------
>>
>>          Key: MODPYTHON-4
>>          URL: http://issues.apache.org/jira/browse/MODPYTHON-4
>>      Project: mod_python
>>         Type: Bug
>>     Versions: 3.1.3
>>  Environment: Win32
>>     Reporter: Graham Dumpleton
>>     Priority: Minor
>
>>
>> The problem is that mod_python doesn't seem to take into account that the
>> directory is given to it by Apache in POSIX directory naming convention.
>> Instead, because mod_python knows it is on Win32, it looks for a trailing '\'
>> and since it doesn't see one, because it is actually '/', it goes and adds a '\'.
>> The code in mod_python.c is:
>> static void *python_create_dir_config(apr_pool_t *p, char *dir)
>> {
>>
>>     py_config *conf = python_create_config(p);
>>
>>     /* make sure directory ends with a slash */
>>     if (dir && (dir[strlen(dir) - 1] != SLASH))
>>         conf->config_dir = apr_pstrcat(p, dir, SLASH_S, NULL);
>>     else
>>         conf->config_dir = apr_pstrdup(p, dir);
>>
>>     return conf;
>> }
>> It should in this case ignore whether it is on Win32 and instead use:
>> static void *python_create_dir_config(apr_pool_t *p, char *dir)
>> {
>>
>>     py_config *conf = python_create_config(p);
>>
>>     /* make sure directory ends with a slash */
>>     if (dir && (dir[strlen(dir) - 1] != '/'))
>>         conf->config_dir = apr_pstrcat(p, dir, "/", NULL);
>>     else
>>         conf->config_dir = apr_pstrdup(p, dir);
>>
>>     return conf;
>> }
>> Code change not personally tested as don't have Win32 machine.
>> See thread on mailing list for full discussion of issue.
>>   http://www.modpython.org/pipermail/mod_python/2004-November/016784.html
>
> --
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the administrators:
>   http://issues.apache.org/jira/secure/Administrators.jspa
> -
> If you want more information on JIRA, or have a bug to report see:
>   http://www.atlassian.com/software/jira
>

[jira] Commented: (MODPYTHON-4) Bug in setting up of config_dir from Handler directives.

Posted by "Nicolas Lehuen (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/MODPYTHON-4?page=comments#action_57787 ]
     
Nicolas Lehuen commented on MODPYTHON-4:
----------------------------------------

I have checked that the SLASH and SLASH_S macros, defined in mod_python.h, are not used elsewhere. So what I propose is that we just remove the #ifdef WIN32 block at lines 94-100 of mod_python.h and just define SLASH and SLASH_S inconditionnaly :

Index: mod_python.h
===================================================================
--- mod_python.h	(revision 125635)
+++ mod_python.h	(working copy)
@@ -91,13 +91,12 @@
 #define MODULENAME "mod_python.apache"
 #define INITFUNC "init"
 #define MAIN_INTERPRETER "main_interpreter"
-#ifdef WIN32
-#define SLASH '\\'
-#define SLASH_S "\\"
-#else
+
+/** Note : as Apache give POSIX paths, there is no need to
+    differentiate here between UNIX and WIN32 path separators */
 #define SLASH '/'
 #define SLASH_S "/"
-#endif
+
 /* used in python_directive_handler */
 #define SILENT 0
 #define NOTSILENT 1

Does everybody else agree ?


> Bug in setting up of config_dir from Handler  directives.
> ---------------------------------------------------------
>
>          Key: MODPYTHON-4
>          URL: http://issues.apache.org/jira/browse/MODPYTHON-4
>      Project: mod_python
>         Type: Bug
>     Versions: 3.1.3
>  Environment: Win32
>     Reporter: Graham Dumpleton
>     Priority: Minor

>
> The problem is that mod_python doesn't seem to take into account that the
> directory is given to it by Apache in POSIX directory naming convention.
> Instead, because mod_python knows it is on Win32, it looks for a trailing '\'
> and since it doesn't see one, because it is actually '/', it goes and adds a '\'.
> The code in mod_python.c is:
> static void *python_create_dir_config(apr_pool_t *p, char *dir)  
> {
>  
>     py_config *conf = python_create_config(p);
>  
>     /* make sure directory ends with a slash */
>     if (dir && (dir[strlen(dir) - 1] != SLASH)) 
>         conf->config_dir = apr_pstrcat(p, dir, SLASH_S, NULL);
>     else
>         conf->config_dir = apr_pstrdup(p, dir);
>  
>     return conf;
> }
> It should in this case ignore whether it is on Win32 and instead use:
> static void *python_create_dir_config(apr_pool_t *p, char *dir)  
> {
>  
>     py_config *conf = python_create_config(p);
>  
>     /* make sure directory ends with a slash */
>     if (dir && (dir[strlen(dir) - 1] != '/')) 
>         conf->config_dir = apr_pstrcat(p, dir, "/", NULL);
>     else
>         conf->config_dir = apr_pstrdup(p, dir);
>  
>     return conf;
> }
> Code change not personally tested as don't have Win32 machine.
> See thread on mailing list for full discussion of issue.
>   http://www.modpython.org/pipermail/mod_python/2004-November/016784.html

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


[jira] Closed: (MODPYTHON-4) Bug in setting up of config_dir from Handler directives.

Posted by "Graham Dumpleton (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/MODPYTHON-4?page=all ]
     
Graham Dumpleton closed MODPYTHON-4:
------------------------------------


> Bug in setting up of config_dir from Handler  directives.
> ---------------------------------------------------------
>
>          Key: MODPYTHON-4
>          URL: http://issues.apache.org/jira/browse/MODPYTHON-4
>      Project: mod_python
>         Type: Bug
>     Versions: 3.1.3
>  Environment: Win32
>     Reporter: Graham Dumpleton
>     Assignee: Nicolas Lehuen
>     Priority: Minor
>      Fix For: 3.2.7

>
> The problem is that mod_python doesn't seem to take into account that the
> directory is given to it by Apache in POSIX directory naming convention.
> Instead, because mod_python knows it is on Win32, it looks for a trailing '\'
> and since it doesn't see one, because it is actually '/', it goes and adds a '\'.
> The code in mod_python.c is:
> static void *python_create_dir_config(apr_pool_t *p, char *dir)  
> {
>  
>     py_config *conf = python_create_config(p);
>  
>     /* make sure directory ends with a slash */
>     if (dir && (dir[strlen(dir) - 1] != SLASH)) 
>         conf->config_dir = apr_pstrcat(p, dir, SLASH_S, NULL);
>     else
>         conf->config_dir = apr_pstrdup(p, dir);
>  
>     return conf;
> }
> It should in this case ignore whether it is on Win32 and instead use:
> static void *python_create_dir_config(apr_pool_t *p, char *dir)  
> {
>  
>     py_config *conf = python_create_config(p);
>  
>     /* make sure directory ends with a slash */
>     if (dir && (dir[strlen(dir) - 1] != '/')) 
>         conf->config_dir = apr_pstrcat(p, dir, "/", NULL);
>     else
>         conf->config_dir = apr_pstrdup(p, dir);
>  
>     return conf;
> }
> Code change not personally tested as don't have Win32 machine.
> See thread on mailing list for full discussion of issue.
>   http://www.modpython.org/pipermail/mod_python/2004-November/016784.html

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Resolved: (MODPYTHON-4) Bug in setting up of config_dir from Handler directives.

Posted by "Nicolas Lehuen (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/MODPYTHON-4?page=history ]
     
Nicolas Lehuen resolved MODPYTHON-4:
------------------------------------

      Assign To: Nicolas Lehuen
     Resolution: Fixed
    Fix Version: 3.1.4