mirror of https://code.videolan.org/videolan/vlc
vlc_fopen: fix append mode
In append mode, all write operations must occur at the end of the file. Nevertheless the initial read offset is the beginning of the file.
This commit is contained in:
parent
19cc40ec00
commit
7834663b7d
|
@ -51,7 +51,6 @@
|
|||
FILE *vlc_fopen (const char *filename, const char *mode)
|
||||
{
|
||||
int rwflags = 0, oflags = 0;
|
||||
bool append = false;
|
||||
|
||||
for (const char *ptr = mode; *ptr; ptr++)
|
||||
{
|
||||
|
@ -63,8 +62,7 @@ FILE *vlc_fopen (const char *filename, const char *mode)
|
|||
|
||||
case 'a':
|
||||
rwflags = O_WRONLY;
|
||||
oflags |= O_CREAT;
|
||||
append = true;
|
||||
oflags |= O_CREAT | O_APPEND;
|
||||
break;
|
||||
|
||||
case 'w':
|
||||
|
@ -92,12 +90,6 @@ FILE *vlc_fopen (const char *filename, const char *mode)
|
|||
if (fd == -1)
|
||||
return NULL;
|
||||
|
||||
if (append && (lseek (fd, 0, SEEK_END) == -1))
|
||||
{
|
||||
close (fd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
FILE *stream = fdopen (fd, mode);
|
||||
if (stream == NULL)
|
||||
close (fd);
|
||||
|
|
Loading…
Reference in New Issue