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
18b66912
Commit
18b66912
authored
Oct 23, 2008
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winecfg: Store the Unix device if any in the drive configuration.
parent
eb65f6a2
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
41 additions
and
18 deletions
+41
-18
drive.c
programs/winecfg/drive.c
+26
-9
drivedetect.c
programs/winecfg/drivedetect.c
+10
-6
driveui.c
programs/winecfg/driveui.c
+2
-2
winecfg.h
programs/winecfg/winecfg.h
+3
-1
No files found.
programs/winecfg/drive.c
View file @
18b66912
...
...
@@ -93,19 +93,22 @@ long drive_available_mask(char letter)
return
result
;
}
BOOL
add_drive
(
char
letter
,
const
char
*
targetpath
,
const
WCHAR
*
label
,
DWORD
serial
,
DWORD
type
)
BOOL
add_drive
(
char
letter
,
const
char
*
targetpath
,
const
char
*
device
,
const
WCHAR
*
label
,
DWORD
serial
,
DWORD
type
)
{
int
driveIndex
=
letter_to_index
(
letter
);
if
(
drives
[
driveIndex
].
in_use
)
return
FALSE
;
WINE_TRACE
(
"letter == '%c', unixpath == '%s', label == %s, serial == %08x, type == %d
\n
"
,
letter
,
targetpath
,
wine_dbgstr_w
(
label
),
serial
,
type
);
WINE_TRACE
(
"letter == '%c', unixpath == %s, device == %s, label == %s, serial == %08x, type == %d
\n
"
,
letter
,
wine_dbgstr_a
(
targetpath
),
wine_dbgstr_a
(
device
),
wine_dbgstr_w
(
label
),
serial
,
type
);
drives
[
driveIndex
].
letter
=
toupper
(
letter
);
drives
[
driveIndex
].
unixpath
=
strdupA
(
targetpath
);
drives
[
driveIndex
].
label
=
strdupW
(
label
);
drives
[
driveIndex
].
device
=
device
?
strdupA
(
device
)
:
NULL
;
drives
[
driveIndex
].
label
=
label
?
strdupW
(
label
)
:
NULL
;
drives
[
driveIndex
].
serial
=
serial
;
drives
[
driveIndex
].
type
=
type
;
drives
[
driveIndex
].
in_use
=
TRUE
;
...
...
@@ -119,6 +122,8 @@ void delete_drive(struct drive *d)
{
HeapFree
(
GetProcessHeap
(),
0
,
d
->
unixpath
);
d
->
unixpath
=
NULL
;
HeapFree
(
GetProcessHeap
(),
0
,
d
->
device
);
d
->
device
=
NULL
;
HeapFree
(
GetProcessHeap
(),
0
,
d
->
label
);
d
->
label
=
NULL
;
d
->
serial
=
0
;
...
...
@@ -316,7 +321,7 @@ void load_drives(void)
c
=
targetpath
;
do
if
(
*
c
==
'\\'
)
*
c
=
'/'
;
while
(
*
c
++
);
add_drive
(
*
devices
,
targetpath
,
volname
,
serial
,
get_drive_type
(
devices
[
0
])
);
add_drive
(
*
devices
,
targetpath
,
NULL
,
volname
,
serial
,
get_drive_type
(
devices
[
0
])
);
len
-=
lstrlenW
(
devices
);
devices
+=
lstrlenW
(
devices
);
...
...
@@ -354,7 +359,7 @@ void load_drives(void)
buff
[
cnt
]
=
'\0'
;
WINE_TRACE
(
"found broken symlink %s -> %s
\n
"
,
path
,
buff
);
add_drive
(
'A'
+
i
,
buff
,
NULL
,
0
,
DRIVE_UNKNOWN
);
add_drive
(
'A'
+
i
,
buff
,
NULL
,
NULL
,
0
,
DRIVE_UNKNOWN
);
drivecount
++
;
}
...
...
@@ -388,16 +393,28 @@ void apply_drive_changes(void)
drives
[
i
].
modified
=
FALSE
;
len
=
sizeof
(
*
ioctl
);
if
(
drives
[
i
].
in_use
)
len
+=
strlen
(
drives
[
i
].
unixpath
)
+
1
;
if
(
drives
[
i
].
in_use
)
{
len
+=
strlen
(
drives
[
i
].
unixpath
)
+
1
;
if
(
drives
[
i
].
device
)
len
+=
strlen
(
drives
[
i
].
device
)
+
1
;
}
if
(
!
(
ioctl
=
HeapAlloc
(
GetProcessHeap
(),
0
,
len
)))
continue
;
ioctl
->
size
=
len
;
ioctl
->
letter
=
'a'
+
i
;
ioctl
->
device_offset
=
0
;
if
(
drives
[
i
].
in_use
)
{
char
*
ptr
=
(
char
*
)(
ioctl
+
1
);
ioctl
->
type
=
drives
[
i
].
type
;
ioctl
->
mount_point_offset
=
sizeof
(
*
ioctl
);
strcpy
(
(
char
*
)(
ioctl
+
1
),
drives
[
i
].
unixpath
);
strcpy
(
ptr
,
drives
[
i
].
unixpath
);
ioctl
->
mount_point_offset
=
ptr
-
(
char
*
)
ioctl
;
if
(
drives
[
i
].
device
)
{
ptr
+=
strlen
(
ptr
)
+
1
;
strcpy
(
ptr
,
drives
[
i
].
device
);
ioctl
->
device_offset
=
ptr
-
(
char
*
)
ioctl
;
}
}
else
{
...
...
programs/winecfg/drivedetect.c
View file @
18b66912
...
...
@@ -235,7 +235,7 @@ static void ensure_root_is_mapped(void)
{
if
(
!
drives
[
letter
-
'A'
].
in_use
)
{
add_drive
(
letter
,
"/"
,
NULL
,
0
,
DRIVE_FIXED
);
add_drive
(
letter
,
"/"
,
NULL
,
NULL
,
0
,
DRIVE_FIXED
);
WINE_TRACE
(
"allocated drive %c as the root drive
\n
"
,
letter
);
break
;
}
...
...
@@ -264,7 +264,7 @@ static void ensure_home_is_mapped(void)
{
if
(
!
drives
[
letter
-
'A'
].
in_use
)
{
add_drive
(
letter
,
home
,
NULL
,
0
,
DRIVE_FIXED
);
add_drive
(
letter
,
home
,
NULL
,
NULL
,
0
,
DRIVE_FIXED
);
WINE_TRACE
(
"allocated drive %c as the user's home directory
\n
"
,
letter
);
break
;
}
...
...
@@ -292,7 +292,7 @@ static void ensure_drive_c_is_mapped(void)
WCHAR
label
[
64
];
LoadStringW
(
GetModuleHandle
(
NULL
),
IDS_SYSTEM_DRIVE_LABEL
,
label
,
sizeof
(
label
)
/
sizeof
(
label
[
0
]));
add_drive
(
'C'
,
"../drive_c"
,
label
,
0
,
DRIVE_FIXED
);
add_drive
(
'C'
,
"../drive_c"
,
NULL
,
label
,
0
,
DRIVE_FIXED
);
}
else
{
...
...
@@ -330,7 +330,8 @@ int autodetect_drives(void)
{
char
letter
;
int
type
;
char
*
device
=
NULL
;
WINE_TRACE
(
"ent->mnt_dir=%s
\n
"
,
ent
->
mnt_dir
);
if
(
should_ignore_fstype
(
ent
->
mnt_type
))
continue
;
...
...
@@ -355,8 +356,11 @@ int autodetect_drives(void)
return
FALSE
;
}
WINE_TRACE
(
"adding drive %c for %s, type %s
\n
"
,
letter
,
ent
->
mnt_dir
,
ent
->
mnt_type
);
add_drive
(
letter
,
ent
->
mnt_dir
,
NULL
,
0
,
type
);
if
(
type
==
DRIVE_CDROM
)
device
=
ent
->
mnt_fsname
;
WINE_TRACE
(
"adding drive %c for %s, device %s, type %s
\n
"
,
letter
,
ent
->
mnt_dir
,
device
,
ent
->
mnt_type
);
add_drive
(
letter
,
ent
->
mnt_dir
,
device
,
NULL
,
0
,
type
);
/* working_mask is a map of the drive letters still available. */
working_mask
&=
~
DRIVE_MASK_BIT
(
letter
);
...
...
programs/winecfg/driveui.c
View file @
18b66912
...
...
@@ -315,9 +315,9 @@ static void on_add_click(HWND dialog)
WCHAR
label
[
64
];
LoadStringW
(
GetModuleHandle
(
NULL
),
IDS_SYSTEM_DRIVE_LABEL
,
label
,
sizeof
(
label
)
/
sizeof
(
label
[
0
]));
add_drive
(
new
,
"../drive_c"
,
label
,
0
,
DRIVE_FIXED
);
add_drive
(
new
,
"../drive_c"
,
NULL
,
label
,
0
,
DRIVE_FIXED
);
}
else
add_drive
(
new
,
"/"
,
NULL
,
0
,
DRIVE_UNKNOWN
);
else
add_drive
(
new
,
"/"
,
NULL
,
NULL
,
0
,
DRIVE_UNKNOWN
);
fill_drives_list
(
dialog
);
...
...
programs/winecfg/winecfg.h
View file @
18b66912
...
...
@@ -97,6 +97,7 @@ struct drive
{
char
letter
;
char
*
unixpath
;
char
*
device
;
WCHAR
*
label
;
DWORD
serial
;
DWORD
type
;
/* one of the DRIVE_ constants from winbase.h */
...
...
@@ -108,7 +109,8 @@ struct drive
#define DRIVE_MASK_BIT(B) (1 << (toupper(B) - 'A'))
long
drive_available_mask
(
char
letter
);
BOOL
add_drive
(
char
letter
,
const
char
*
targetpath
,
const
WCHAR
*
label
,
DWORD
serial
,
DWORD
type
);
BOOL
add_drive
(
char
letter
,
const
char
*
targetpath
,
const
char
*
device
,
const
WCHAR
*
label
,
DWORD
serial
,
DWORD
type
);
void
delete_drive
(
struct
drive
*
pDrive
);
void
apply_drive_changes
(
void
);
BOOL
browse_for_unix_folder
(
HWND
dialog
,
WCHAR
*
pszPath
);
...
...
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