Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
fc93ff35
Commit
fc93ff35
authored
Feb 07, 2009
by
Francois Gouget
Committed by
Alexandre Julliard
Feb 09, 2009
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
shell32: Get rid of TRASH_ELEMENT and TRASH_DisposeElement().
The latter was unused while the former did not seem very useful.
parent
59c00d55
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
22 additions
and
47 deletions
+22
-47
recyclebin.c
dlls/shell32/recyclebin.c
+2
-2
trash.c
dlls/shell32/trash.c
+19
-40
xdg.h
dlls/shell32/xdg.h
+1
-5
No files found.
dlls/shell32/recyclebin.c
View file @
fc93ff35
...
...
@@ -311,7 +311,7 @@ static HRESULT WINAPI RecycleBin_GetDisplayNameOf(IShellFolder2 *This, LPCITEMID
WIN32_FIND_DATAW
data
;
TRACE
(
"(%p, %p, %x, %p)
\n
"
,
This
,
pidl
,
uFlags
,
pName
);
TRASH_UnpackItemID
(
&
pidl
->
mkid
,
NULL
,
&
data
);
TRASH_UnpackItemID
(
&
pidl
->
mkid
,
&
data
);
pName
->
uType
=
STRRET_WSTR
;
pName
->
u
.
pOleStr
=
StrDupW
(
PathFindFileNameW
(
data
.
cFileName
));
if
(
pName
->
u
.
pOleStr
==
NULL
)
...
...
@@ -414,7 +414,7 @@ static HRESULT WINAPI RecycleBin_GetDetailsOf(IShellFolder2 *iface, LPCITEMIDLIS
if
(
iColumn
==
COLUMN_NAME
)
return
RecycleBin_GetDisplayNameOf
(
iface
,
pidl
,
SHGDN_NORMAL
,
&
pDetails
->
str
);
TRASH_UnpackItemID
(
&
pidl
->
mkid
,
NULL
,
&
data
);
TRASH_UnpackItemID
(
&
pidl
->
mkid
,
&
data
);
switch
(
iColumn
)
{
case
COLUMN_DATEDEL
:
...
...
dlls/shell32/trash.c
View file @
fc93ff35
...
...
@@ -320,24 +320,18 @@ BOOL TRASH_TrashFile(LPCWSTR wszPath)
* bucket name - currently only an empty string meaning the home bucket is supported
* trash file name - a NUL-terminated string
*/
st
ruct
tagTRASH_ELEMENT
st
atic
HRESULT
TRASH_CreateSimplePIDL
(
LPCSTR
filename
,
const
WIN32_FIND_DATAW
*
data
,
LPITEMIDLIST
*
pidlOut
)
{
TRASH_BUCKET
*
bucket
;
LPSTR
filename
;
};
static
HRESULT
TRASH_CreateSimplePIDL
(
const
TRASH_ELEMENT
*
element
,
const
WIN32_FIND_DATAW
*
data
,
LPITEMIDLIST
*
pidlOut
)
{
LPITEMIDLIST
pidl
=
SHAlloc
(
2
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
+
lstrlenA
(
element
->
filename
)
+
1
+
2
);
LPITEMIDLIST
pidl
=
SHAlloc
(
2
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
+
lstrlenA
(
filename
)
+
1
+
2
);
*
pidlOut
=
NULL
;
if
(
pidl
==
NULL
)
return
E_OUTOFMEMORY
;
pidl
->
mkid
.
cb
=
(
USHORT
)(
2
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
+
lstrlenA
(
element
->
filename
)
+
1
);
pidl
->
mkid
.
cb
=
(
USHORT
)(
2
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
+
lstrlenA
(
filename
)
+
1
);
pidl
->
mkid
.
abID
[
0
]
=
0
;
memcpy
(
pidl
->
mkid
.
abID
+
1
,
data
,
sizeof
(
WIN32_FIND_DATAW
));
pidl
->
mkid
.
abID
[
1
+
sizeof
(
WIN32_FIND_DATAW
)]
=
0
;
lstrcpyA
((
LPSTR
)(
pidl
->
mkid
.
abID
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
),
element
->
filename
);
*
(
USHORT
*
)(
pidl
->
mkid
.
abID
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
+
lstrlenA
(
element
->
filename
)
+
1
)
=
0
;
lstrcpyA
((
LPSTR
)(
pidl
->
mkid
.
abID
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
),
filename
);
*
(
USHORT
*
)(
pidl
->
mkid
.
abID
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
+
lstrlenA
(
filename
)
+
1
)
=
0
;
*
pidlOut
=
pidl
;
return
S_OK
;
}
...
...
@@ -346,17 +340,15 @@ static HRESULT TRASH_CreateSimplePIDL(const TRASH_ELEMENT *element, const WIN32_
* TRASH_UnpackItemID [Internal]
*
* DESCRIPTION:
* Extract the information stored in an Item ID. The TRASH_ELEMENT
* identifies the element in the Trash. The WIN32_FIND_DATA contains the
* information about the original file. The data->ftLastAccessTime contains
* Extract the information stored in an Item ID. The WIN32_FIND_DATA contains
* the information about the original file. The data->ftLastAccessTime contains
* the deletion time
*
* PARAMETER(S):
* [I] id : the ID of the item
* [O] element : the trash element this item id contains. Can be NULL if not needed
* [O] data : the WIN32_FIND_DATA of the original file. Can be NULL is not needed
*/
HRESULT
TRASH_UnpackItemID
(
LPCSHITEMID
id
,
TRASH_ELEMENT
*
element
,
WIN32_FIND_DATAW
*
data
)
HRESULT
TRASH_UnpackItemID
(
LPCSHITEMID
id
,
WIN32_FIND_DATAW
*
data
)
{
if
(
id
->
cb
<
2
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
2
)
return
E_INVALIDARG
;
...
...
@@ -367,22 +359,10 @@ HRESULT TRASH_UnpackItemID(LPCSHITEMID id, TRASH_ELEMENT *element, WIN32_FIND_DA
if
(
data
!=
NULL
)
*
data
=
*
(
WIN32_FIND_DATAW
*
)(
id
->
abID
+
1
);
if
(
element
!=
NULL
)
{
element
->
bucket
=
home_trash
;
element
->
filename
=
StrDupA
((
LPCSTR
)(
id
->
abID
+
1
+
sizeof
(
WIN32_FIND_DATAW
)
+
1
));
if
(
element
->
filename
==
NULL
)
return
E_OUTOFMEMORY
;
}
return
S_OK
;
}
void
TRASH_DisposeElement
(
TRASH_ELEMENT
*
element
)
{
SHFree
(
element
->
filename
);
}
static
HRESULT
TRASH_GetDetails
(
const
TRASH_ELEMENT
*
element
,
WIN32_FIND_DATAW
*
data
)
static
HRESULT
TRASH_GetDetails
(
const
TRASH_BUCKET
*
bucket
,
LPCSTR
filename
,
WIN32_FIND_DATAW
*
data
)
{
LPSTR
path
=
NULL
;
XDG_PARSED_FILE
*
parsed
=
NULL
;
...
...
@@ -393,21 +373,21 @@ static HRESULT TRASH_GetDetails(const TRASH_ELEMENT *element, WIN32_FIND_DATAW *
HRESULT
ret
=
S_FALSE
;
LPWSTR
original_dos_name
;
int
suffix_length
=
lstrlenA
(
trashinfo_suffix
);
int
filename_length
=
lstrlenA
(
element
->
filename
);
int
files_length
=
lstrlenA
(
element
->
bucket
->
files_dir
);
int
path_length
=
max
(
lstrlenA
(
element
->
bucket
->
info_dir
),
files_length
);
int
filename_length
=
lstrlenA
(
filename
);
int
files_length
=
lstrlenA
(
bucket
->
files_dir
);
int
path_length
=
max
(
lstrlenA
(
bucket
->
info_dir
),
files_length
);
path
=
SHAlloc
(
path_length
+
filename_length
+
1
);
if
(
path
==
NULL
)
return
E_OUTOFMEMORY
;
wsprintfA
(
path
,
"%s%s"
,
element
->
bucket
->
files_dir
,
element
->
filename
);
wsprintfA
(
path
,
"%s%s"
,
bucket
->
files_dir
,
filename
);
path
[
path_length
+
filename_length
-
suffix_length
]
=
0
;
/* remove the '.trashinfo' */
if
(
lstat
(
path
,
&
stats
)
==
-
1
)
{
ERR
(
"Error accessing data file for trashinfo %s (errno=%d)
\n
"
,
element
->
filename
,
errno
);
ERR
(
"Error accessing data file for trashinfo %s (errno=%d)
\n
"
,
filename
,
errno
);
goto
failed
;
}
wsprintfA
(
path
,
"%s%s"
,
element
->
bucket
->
info_dir
,
element
->
filename
);
wsprintfA
(
path
,
"%s%s"
,
bucket
->
info_dir
,
filename
);
fd
=
open
(
path
,
O_RDONLY
);
if
(
fd
==
-
1
)
{
...
...
@@ -536,15 +516,14 @@ HRESULT TRASH_EnumItems(LPITEMIDLIST **pidls, int *count)
for
(
i
=
0
;
i
<
ti_count
;
i
++
)
{
WIN32_FIND_DATAW
data
;
TRASH_ELEMENT
elem
;
LPCSTR
filename
;
elem
.
bucket
=
home_trash
;
elem
.
filename
=
DPA_GetPtr
(
tinfs
,
i
);
if
(
FAILED
(
err
=
TRASH_GetDetails
(
&
elem
,
&
data
)))
filename
=
DPA_GetPtr
(
tinfs
,
i
);
if
(
FAILED
(
err
=
TRASH_GetDetails
(
home_trash
,
filename
,
&
data
)))
goto
failed
;
if
(
err
==
S_FALSE
)
continue
;
if
(
FAILED
(
err
=
TRASH_CreateSimplePIDL
(
&
elem
,
&
data
,
&
(
*
pidls
)[
pos
])))
if
(
FAILED
(
err
=
TRASH_CreateSimplePIDL
(
filename
,
&
data
,
&
(
*
pidls
)[
pos
])))
goto
failed
;
pos
++
;
}
...
...
dlls/shell32/xdg.h
View file @
fc93ff35
...
...
@@ -37,14 +37,10 @@ XDG_PARSED_FILE *XDG_ParseDesktopFile(int fd);
char
*
XDG_GetStringValue
(
XDG_PARSED_FILE
*
file
,
const
char
*
group_name
,
const
char
*
value_name
,
DWORD
dwFlags
);
void
XDG_FreeParsedFile
(
XDG_PARSED_FILE
*
file
);
/* implemented in trash.c */
typedef
struct
tagTRASH_ELEMENT
TRASH_ELEMENT
;
BOOL
TRASH_CanTrashFile
(
LPCWSTR
wszPath
);
BOOL
TRASH_TrashFile
(
LPCWSTR
wszPath
);
HRESULT
TRASH_UnpackItemID
(
LPCSHITEMID
id
,
TRASH_ELEMENT
*
element
,
WIN32_FIND_DATAW
*
data
);
HRESULT
TRASH_UnpackItemID
(
LPCSHITEMID
id
,
WIN32_FIND_DATAW
*
data
);
HRESULT
TRASH_EnumItems
(
LPITEMIDLIST
**
pidls
,
int
*
count
);
void
TRASH_DisposeElement
(
TRASH_ELEMENT
*
element
);
HRESULT
XDG_UserDirLookup
(
const
char
*
const
*
xdg_dirs
,
const
unsigned
int
num_dirs
,
char
***
out_ptr
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment