Advertisement
Guest User

Untitled

a guest
Jul 6th, 2010
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.93 KB | None | 0 0
  1. --- a/wine/dlls/kernel32/volume.c       2010-05-11 01:33:18.000000000 +0300
  2. +++ b/wine/dlls/kernel32/volume.c       2010-06-30 00:36:16.000000000 +0300
  3. @@ -1602,16 +1602,66 @@
  4.          volumepathname[2] = '\\';
  5.          volumepathname[3] = 0;
  6.          return TRUE;
  7.      }
  8.      return FALSE;
  9.  }
  10.  
  11.  /***********************************************************************
  12. + *           GetVolumePathNamesForVolumeNameA   (KERNEL32.@)
  13. + */
  14. +BOOL WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR volumename, LPSTR volumepathname, DWORD buflen, PDWORD returnlen)
  15. +{
  16. +
  17. +    DWORD available_drives = GetLogicalDrives();
  18. +    char letter;
  19. +    int count = 0;
  20. +    char volumename2string[50];
  21. +    LPSTR volumename2 = volumename2string;
  22. +    char pstr[4] = {'A', ':', '\\', 0};
  23. +    LPCSTR pathstring = pstr;
  24. +
  25. +
  26. +    FIXME("(%s, %p, %d, %p), stub!\n", debugstr_a(volumename), volumepathname, buflen, returnlen);
  27. +    
  28. +    memset(volumepathname, 0, buflen);
  29. +    for (letter='A'; letter<='Z'; letter++)
  30. +    {
  31. +        memset(volumename2string, 0, sizeof(volumename2string));
  32. +        if (available_drives && (1<<(letter-'A')))
  33. +           {
  34. +               pstr[0] = letter;
  35. +               if( (GetVolumeNameForVolumeMountPointA(pathstring, volumename2, 50)) && (!strncmp(volumename, volumename2, 50)))
  36. +               //if getvolumename... succeeds and the names match
  37. +                   {
  38. +                           if ((count+4) <= (buflen-1)) //don't append the string if we don't have enough buffer space
  39. +                           {
  40. +                               snprintf(&volumepathname[count], 4, "%c:\\", letter);
  41. +                               volumepathname[count+3] = 0;
  42. +                           }
  43. +                           count += 4;
  44. +                   }
  45. +              
  46. +           }
  47. +
  48. +    }
  49. +    *returnlen = count;
  50. +    if (count > (buflen-1))
  51. +    {
  52. +        SetLastError(ERROR_MORE_DATA);
  53. +       return FALSE;
  54. +    }
  55. +    if (count == 0)
  56. +        return FALSE;
  57. +
  58. +    return TRUE;
  59. +}
  60. +
  61. +/***********************************************************************
  62.   *           GetVolumePathNamesForVolumeNameW   (KERNEL32.@)
  63.   */
  64.  BOOL WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR volumename, LPWSTR volumepathname, DWORD buflen, PDWORD returnlen)
  65.  {
  66.      FIXME("(%s, %p, %d, %p), stub!\n", debugstr_w(volumename), volumepathname, buflen, returnlen);
  67.      SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
  68.      return FALSE;
  69.  }
  70.  
  71.  
  72. --- a/wine/dlls/kernel32/kernel32.spec  2010-05-11 01:33:18.000000000 +0300
  73. +++ b/wine/dlls/kernel32/kernel32.spec  2010-06-24 13:26:08.000000000 +0300
  74. @@ -671,5 +671,5 @@
  75.  @ stdcall GetVolumePathNameA(str ptr long)
  76.  @ stdcall GetVolumePathNameW(wstr ptr long)
  77. -# @ stub GetVolumePathNamesForVolumeNameA
  78. +@ stdcall GetVolumePathNamesForVolumeNameA(str ptr long ptr)
  79.  @ stdcall GetVolumePathNamesForVolumeNameW(wstr ptr long ptr)
  80.  @ stdcall GetWindowsDirectoryA(ptr long)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement