[ 
https://issues.apache.org/jira/browse/THRIFT-955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12920780#action_12920780
 ] 

Jeff Whiting commented on THRIFT-955:
-------------------------------------

Looking at main.cc you see the following code:

{noformat}

/**
 * MinGW doesn't have realpath, so use fallback implementation in that case,
 * otherwise this just calls through to realpath
 */
char *saferealpath(const char *path, char *resolved_path) {
#ifdef MINGW
  char buf[MAX_PATH];
  char* basename;
  DWORD len = GetFullPathName(path, MAX_PATH, buf, &basename);
  if (len == 0 || len > MAX_PATH - 1){
    strcpy(resolved_path, path);
  } else {
    CharLowerBuff(buf, len);
    strcpy(resolved_path, buf);
  }

  // Replace backslashes with forward slashes so the
  // rest of the code behaves correctly.
  size_t resolved_len = strlen(resolved_path);
  for (size_t i = 0; i < resolved_len; i++) {
    if (resolved_path[i] == '\\') {
      resolved_path[i] = '/';
    }
  }
  return resolved_path;
#else
  return realpath(path, resolved_path);
#endif
}

{noformat}

The code calls CharLowerBuff(buf, len); which would lowercase the entire path. 
I can't think of any reason to lowercase the result of GetFullPathName as that 
function should have returned to you the correct path with the correct case.  I 
haven't tested removing that line of code but I bet it would fix this bug. 

> Thrift compiler for Windows uses lowercase names and directories which is 
> inconsistent with compiling on other platforms
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-955
>                 URL: https://issues.apache.org/jira/browse/THRIFT-955
>             Project: Thrift
>          Issue Type: Bug
>          Components: PHP - Compiler
>    Affects Versions: 0.5
>         Environment: Windows 7 64 bit. Using thrift compiler for windows 
> found at: http://incubator.apache.org/thrift/download/
>            Reporter: Jeff Whiting
>
> Using thrift compiler 0.5.0 for windows found at: 
> http://incubator.apache.org/thrift/download/ the compiler produces lowercase 
> files and paths rather than honoring the capitalization of the thrift file.  
> However using the compiler on other platforms (I've tested OS X 
> specifically), or an older compiler for windows found on the wiki, the name 
> follows the capitalization of the thrift file.
> Windows compiler now compiling AdminService.thrift you get:
> ./gen-php/adminservice/adminservice_constants.php
> ./gen-php/adminservice/adminservice_types.php
> ./gen-php/adminservice/AdminService.php
> What you get on other OSes and what you used to get on older versions of 
> windows compiler:
> ./gen-php/AdminService/AdminService_constants.php
> ./gen-php/AdminService/AdminService_types.php
> ./gen-php/AdminService/AdminService.php
> This is an inconsistency that can cause lots of headaches for developers when 
> they are in a mixed environment using both windows and other OSes to compile 
> thrift files.  It makes it easy to get the wrong case and can cause problems 
> for a case sensitive file system.  It seems that the compiler should behave 
> the same regardless of the platform.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to