xref: /aosp_15_r20/external/libwebm/webvtt/vttreader.cc (revision 103e46e4cd4b6efcf6001f23fa8665fb110abf8d)
1*103e46e4SHarish Mahendrakar // Copyright (c) 2012 The WebM project authors. All Rights Reserved.
2*103e46e4SHarish Mahendrakar //
3*103e46e4SHarish Mahendrakar // Use of this source code is governed by a BSD-style license
4*103e46e4SHarish Mahendrakar // that can be found in the LICENSE file in the root of the source
5*103e46e4SHarish Mahendrakar // tree. An additional intellectual property rights grant can be found
6*103e46e4SHarish Mahendrakar // in the file PATENTS.  All contributing project authors may
7*103e46e4SHarish Mahendrakar // be found in the AUTHORS file in the root of the source tree.
8*103e46e4SHarish Mahendrakar 
9*103e46e4SHarish Mahendrakar #include "webvtt/vttreader.h"
10*103e46e4SHarish Mahendrakar 
11*103e46e4SHarish Mahendrakar namespace libwebvtt {
12*103e46e4SHarish Mahendrakar 
VttReader()13*103e46e4SHarish Mahendrakar VttReader::VttReader() : file_(NULL) {}
14*103e46e4SHarish Mahendrakar 
~VttReader()15*103e46e4SHarish Mahendrakar VttReader::~VttReader() { Close(); }
16*103e46e4SHarish Mahendrakar 
Open(const char * filename)17*103e46e4SHarish Mahendrakar int VttReader::Open(const char* filename) {
18*103e46e4SHarish Mahendrakar   if (filename == NULL || file_ != NULL)
19*103e46e4SHarish Mahendrakar     return -1;
20*103e46e4SHarish Mahendrakar 
21*103e46e4SHarish Mahendrakar   file_ = fopen(filename, "rb");
22*103e46e4SHarish Mahendrakar   if (file_ == NULL)
23*103e46e4SHarish Mahendrakar     return -1;
24*103e46e4SHarish Mahendrakar 
25*103e46e4SHarish Mahendrakar   return 0;  // success
26*103e46e4SHarish Mahendrakar }
27*103e46e4SHarish Mahendrakar 
Close()28*103e46e4SHarish Mahendrakar void VttReader::Close() {
29*103e46e4SHarish Mahendrakar   if (file_) {
30*103e46e4SHarish Mahendrakar     fclose(file_);
31*103e46e4SHarish Mahendrakar     file_ = NULL;
32*103e46e4SHarish Mahendrakar   }
33*103e46e4SHarish Mahendrakar }
34*103e46e4SHarish Mahendrakar 
GetChar(char * c)35*103e46e4SHarish Mahendrakar int VttReader::GetChar(char* c) {
36*103e46e4SHarish Mahendrakar   if (c == NULL || file_ == NULL)
37*103e46e4SHarish Mahendrakar     return -1;
38*103e46e4SHarish Mahendrakar 
39*103e46e4SHarish Mahendrakar   const int result = fgetc(file_);
40*103e46e4SHarish Mahendrakar   if (result != EOF) {
41*103e46e4SHarish Mahendrakar     *c = static_cast<char>(result);
42*103e46e4SHarish Mahendrakar     return 0;  // success
43*103e46e4SHarish Mahendrakar   }
44*103e46e4SHarish Mahendrakar 
45*103e46e4SHarish Mahendrakar   if (ferror(file_))
46*103e46e4SHarish Mahendrakar     return -1;  // error
47*103e46e4SHarish Mahendrakar 
48*103e46e4SHarish Mahendrakar   if (feof(file_))
49*103e46e4SHarish Mahendrakar     return 1;  // EOF
50*103e46e4SHarish Mahendrakar 
51*103e46e4SHarish Mahendrakar   return -1;  // weird
52*103e46e4SHarish Mahendrakar }
53*103e46e4SHarish Mahendrakar 
54*103e46e4SHarish Mahendrakar }  // namespace libwebvtt
55