summaryrefslogtreecommitdiffstats
path: root/mpeglib/lib/util/file/fileAccess.cpp
blob: 8eab864f6d13e0600a43094de4638733572b8d40 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
  simple file access interface.
  Copyright (C) 2001  Martin Vogt

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU Library General Public License as published by
  the Free Software Foundation.

  For more information look at the file COPYRIGHT in this package

 */



#include "fileAccess.h"


FileAccess::FileAccess() {
  file=NULL;
  length=0;
}


FileAccess::~FileAccess() {
  close();
}


int FileAccess::open(const char* path) {
  close();
  file=fopen(path,"rb");
  length=calcByteLength();
  return (file != NULL);
}


void FileAccess::close() {
  if (file != NULL) {
    fclose(file);
    file=NULL;
    length=0;
  }
}


int FileAccess::read(char* dest,int len) {
  int back=0;
  if (file != NULL) {
    back=fread(dest,1,len,file);
  } else {
    printf("FileAccess::read not open\n");
  }
  return back;
}
						
int FileAccess::eof() {
  int back=true;
  if (file != NULL) {
    back=feof(file);
  }
  return back;
}


int FileAccess::seek(long pos) {
  if (file == NULL) {
    return -1;
  }
  return fseek(file,pos,SEEK_SET);
}


long FileAccess::getBytePosition() {
  if (file == NULL) {
    return 0;
  }
  return ftell(file);
}


long FileAccess::getByteLength() {
  return length;
}

long FileAccess::calcByteLength() {
  if (file == NULL) {
    return 0;
  }
  long pos=getBytePosition();
  fseek(file,0,SEEK_END);
  long back=getBytePosition();
  fseek(file,pos,SEEK_SET);
  return back;
}