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 MahendrakarVttReader::VttReader() : file_(NULL) {} 14*103e46e4SHarish Mahendrakar ~VttReader()15*103e46e4SHarish MahendrakarVttReader::~VttReader() { Close(); } 16*103e46e4SHarish Mahendrakar Open(const char * filename)17*103e46e4SHarish Mahendrakarint 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 Mahendrakarvoid 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 Mahendrakarint 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