#include <string.h> /* strdup() */
#include <vlc_plugin.h>
#include <vlc_cpu.h>
+#include <errno.h>
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
#include "config/configuration.h"
-#include "vlc_charset.h"
+#include <vlc_fs.h>
#include "modules/modules.h"
dir, CACHENAME_VALUES ) == -1 )
return;
msg_Dbg( obj, "removing plugins cache file %s", path );
- utf8_unlink( path );
+ vlc_unlink( path );
free( path );
}
msg_Dbg( p_this, "loading plugins cache file %s", psz_filename );
- file = utf8_fopen( psz_filename, "rb" );
+ file = vlc_fopen( psz_filename, "rb" );
if( !file )
{
msg_Warn( p_this, "cannot read %s (%m)",
free (filename);
return;
}
+ msg_Dbg (p_this, "saving plugins cache %s", filename);
- FILE *file = utf8_fopen (tmpname, "wb");
+ FILE *file = vlc_fopen (tmpname, "wb");
if (file == NULL)
- goto error;
+ {
+ if (errno != EACCES && errno != ENOENT)
+ msg_Warn (p_this, "cannot create %s (%m)", tmpname);
+ goto out;
+ }
- msg_Dbg (p_this, "saving plugins cache %s", tmpname);
if (CacheSaveBank (file, pp_cache, n))
- goto error;
+ {
+ msg_Warn (p_this, "cannot write %s (%m)", tmpname);
+ clearerr (file);
+ fclose (file);
+ vlc_unlink (tmpname);
+ goto out;
+ }
#ifndef WIN32
- utf8_rename (tmpname, filename); /* atomically replace old cache */
+ vlc_rename (tmpname, filename); /* atomically replace old cache */
fclose (file);
#else
- utf8_unlink (filename);
+ vlc_unlink (filename);
fclose (file);
- utf8_rename (tmpname, filename);
+ vlc_rename (tmpname, filename);
#endif
- return; /* success! */
-
-error:
- msg_Warn (p_this, "cannot write %s (%m)", tmpname);
+out:
free (filename);
free (tmpname);
- if (file != NULL)
- {
- clearerr (file);
- fclose (file);
- }
}
static int CacheSaveConfig (FILE *, const module_t *);