Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-2-2
Commits
dcb11e03
Commit
dcb11e03
authored
Feb 13, 2014
by
Francois Cartegnie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
addons: fsstorage: indirectly write catalog
Avoids corruption if anything goes bad
parent
6f966831
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
4 deletions
+18
-4
modules/misc/addons/fsstorage.c
modules/misc/addons/fsstorage.c
+18
-4
No files found.
modules/misc/addons/fsstorage.c
View file @
dcb11e03
...
...
@@ -526,6 +526,7 @@ static int WriteCatalog( addons_storage_t *p_storage,
{
addon_entry_t
*
p_entry
;
char
*
psz_file
;
char
*
psz_file_tmp
;
char
*
psz_tempstring
;
char
*
psz_userdir
=
config_GetUserDir
(
VLC_DATA_DIR
);
if
(
!
psz_userdir
)
return
VLC_ENOMEM
;
...
...
@@ -537,10 +538,17 @@ static int WriteCatalog( addons_storage_t *p_storage,
}
free
(
psz_userdir
);
if
(
asprintf
(
&
psz_file_tmp
,
"%s.tmp"
,
psz_file
)
<
1
)
{
free
(
psz_file
);
return
VLC_ENOMEM
;
}
char
*
psz_path
=
strdup
(
psz_file
);
if
(
!
psz_path
)
{
free
(
psz_file
);
free
(
psz_file_tmp
);
return
VLC_ENOMEM
;
}
...
...
@@ -550,14 +558,16 @@ static int WriteCatalog( addons_storage_t *p_storage,
*++
psz_buf
=
'\0'
;
/* ensure directory exists */
if
(
!
EMPTY_STR
(
psz_path
)
)
recursive_mkdir
(
VLC_OBJECT
(
p_storage
),
psz_path
);
free
(
psz_path
);
}
free
(
psz_path
);
FILE
*
p_catalog
=
vlc_fopen
(
psz_file
,
"wt"
);
free
(
psz_file
);
FILE
*
p_catalog
=
vlc_fopen
(
psz_file_tmp
,
"wt"
);
if
(
!
p_catalog
)
{
free
(
psz_file
);
free
(
psz_file_tmp
);
return
VLC_EGENERIC
;
}
/* write XML header */
fprintf
(
p_catalog
,
"<?xml version=
\"
1.0
\"
encoding=
\"
UTF-8
\"
?>
\n
"
);
...
...
@@ -625,6 +635,10 @@ static int WriteCatalog( addons_storage_t *p_storage,
vlc_mutex_unlock
(
&
p_entry
->
lock
);
}
vlc_rename
(
psz_file_tmp
,
psz_file
);
free
(
psz_file
);
free
(
psz_file_tmp
);
fprintf
(
p_catalog
,
"
\t
</addons>
\n
"
);
fprintf
(
p_catalog
,
"</videolan>
\n
"
);
fclose
(
p_catalog
);
...
...
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