"Aric Stewart" <[EMAIL PROTECTED]> wrote:

+    if (fs)
+    {
+        FileTimeToDosDateTime( &(stffile->ftLastWriteTime),
+                          &fs->uFileDate, &fs->uFileTime);
+            fs->dwFileSize = stffile->nFileSizeLow;
+            fs->uFileAttribs = (WORD)stffile->dwFileAttributes;
+
+        memcpy(fs->szNames, name_buff, name_len);
+        TRACE("-- Set Value: %s\n",debugstr_a(fs->szNames));
+    }

Indentation above is not consistent.

LPITEMIDLIST _ILCreateFromFindDataW( WIN32_FIND_DATAW *wfd )
{
-    /* FIXME: should make unicode PIDLs */
-    WIN32_FIND_DATAA fda;
+    char    buff[MAX_PATH + 14 +1]; /* see WIN32_FIND_DATA */
+    char *  pbuff = buff;
+    size_t  len, len1, wlen, alen;
+    LPITEMIDLIST pidl;
+    PIDLTYPE type;
+
+    if (!wfd)
+        return NULL;
+
+    TRACE("(%s, %s)\n",debugstr_w(wfd->cAlternateFileName), 
debugstr_w(wfd->cFileName));
+
+    /* prepare buffer with both names */
+    len = WideCharToMultiByte(CP_ACP,0,wfd->cFileName,-1,NULL,0,NULL,NULL) + 1;
+    WideCharToMultiByte(CP_ACP,0,wfd->cFileName,-1, pbuff, len, NULL, NULL);
+    pbuff += len;

Looks like 2 WideCharToMultiByte calls can be replaced by 1.

+
+    len1 = WideCharToMultiByte(CP_ACP,0,wfd->cAlternateFileName,-1, NULL, 0, 
NULL, NULL) +1;
+    WideCharToMultiByte(CP_ACP,0,wfd->cAlternateFileName,-1, pbuff, len1, 
NULL, NULL);
+    alen = len + len1;

Same here.

+
+    type = (wfd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? PT_FOLDER : 
PT_VALUE;
+
+    /*
+     * FileStruct already has one byte for the first name, so use len - 1 in
+     * size calculation
+     */
+    wlen = lstrlenW(wfd->cFileName);
+ pidl = _ILAlloc(type, sizeof(FileStruct) + (alen - 1) + (alen & 0x1) + + sizeof(FileStructW) + wlen * sizeof(WCHAR) + sizeof(WORD)) ;

What (alen & 0x1) is for?

--
Dmitry.


Reply via email to