Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vsfilesystem.h File Reference
#include "config.h"
#include <stdio.h>
#include <string>
#include <vector>
#include <iostream>
#include <stdarg.h>
#include "gfx/vec.h"
#include "networking/const.h"
#include "pk3.h"
#include <gnuhash.h>

Go to the source code of this file.

Classes

class  VSFileSystem::VSFile
 

Namespaces

 VSFileSystem
 

Constant Groups

 VSFileSystem
 

Macros

#define DELIM   '/'
 
#define DELIMSTR   "/"
 

Typedefs

typedef vsUMap< string, VSError > VSFileSystem::FileLookupCache
 

Enumerations

enum  VSFileSystem::VSError {
  VSFileSystem::Shared, VSFileSystem::Ok, VSFileSystem::SocketError, VSFileSystem::FileNotFound,
  VSFileSystem::LocalPermissionDenied, VSFileSystem::RemotePermissionDenied, VSFileSystem::DownloadInterrupted, VSFileSystem::IncompleteWrite,
  VSFileSystem::IncompleteRead, VSFileSystem::EndOfFile, VSFileSystem::IsDirectory, VSFileSystem::BadFormat,
  VSFileSystem::Unspecified
}
 
enum  VSFileSystem::VSFileMode { VSFileSystem::ReadOnly, VSFileSystem::ReadWrite, VSFileSystem::CreateWrite }
 
enum  VSFileSystem::VSFileType {
  VSFileSystem::UniverseFile, VSFileSystem::SystemFile, VSFileSystem::CockpitFile, VSFileSystem::UnitFile,
  VSFileSystem::UnitSaveFile, VSFileSystem::TextureFile, VSFileSystem::SoundFile, VSFileSystem::PythonFile,
  VSFileSystem::MeshFile, VSFileSystem::CommFile, VSFileSystem::AiFile, VSFileSystem::SaveFile,
  VSFileSystem::AnimFile, VSFileSystem::VideoFile, VSFileSystem::VSSpriteFile, VSFileSystem::MissionFile,
  VSFileSystem::MusicFile, VSFileSystem::AccountFile, VSFileSystem::ZoneBuffer, VSFileSystem::JPEGBuffer,
  VSFileSystem::UnknownFile
}
 
enum  VSFileSystem::VSVolumeType { VSFileSystem::VSFSNone, VSFileSystem::VSFSSplit, VSFileSystem::VSFSBig }
 
enum  VSFileSystem::VSVolumeFormat { VSFileSystem::vfmtUNK, VSFileSystem::vfmtVSR, VSFileSystem::vfmtPK3 }
 

Functions

VegaConfigcreateVegaConfig (const char *file)
 
ObjSerial getUniqueSerial ()
 
void VSFileSystem::DisplayType (VSFileSystem::VSFileType type)
 
void VSFileSystem::DisplayType (VSFileSystem::VSFileType type, std::ostream &ostr)
 
int VSFileSystem::GetReadBytes (char *fmt, va_list ap)
 
VSError VSFileSystem::CachedFileLookup (FileLookupCache &cache, const string &file, VSFileType type)
 
FILE * VSFileSystem::vs_open (const char *filename, const char *mode)
 
size_t VSFileSystem::vs_read (void *ptr, size_t size, size_t nmemb, FILE *fp)
 
size_t VSFileSystem::vs_write (const void *ptr, size_t size, size_t nmemb, FILE *fp)
 
int VSFileSystem::vs_fseek (FILE *fp, long offset, int whence)
 
long VSFileSystem::vs_ftell (FILE *fp)
 
void VSFileSystem::vs_rewind (FILE *fp)
 
void VSFileSystem::vs_close (FILE *fp)
 
bool VSFileSystem::vs_feof (FILE *fp)
 
long VSFileSystem::vs_getsize (FILE *fp)
 
int VSFileSystem::vs_fprintf (FILE *fp, const char *format,...)
 
void VSFileSystem::vs_dprintf (char level, const char *format,...)
 
template<class A >
int VSFileSystem::vs_fscanf (FILE *fp, const char *format, A *a)
 
template<class A , class B >
int VSFileSystem::vs_fscanf (FILE *fp, const char *format, A *a, B *b)
 
template<class A , class B , class C >
int VSFileSystem::vs_fscanf (FILE *fp, const char *format, A *a, B *b, C *c)
 
template<class A , class B , class C , class D >
int VSFileSystem::vs_fscanf (FILE *fp, const char *format, A *a, B *b, C *c, D *d)
 
template<class A , class B , class C , class D , class E >
int VSFileSystem::vs_fscanf (FILE *fp, const char *format, A *a, B *b, C *c, D *d, E *e)
 
template<class A , class B , class C , class D , class E , class F >
int VSFileSystem::vs_fscanf (FILE *fp, const char *format, A *a, B *b, C *c, D *d, E *e, F *f)
 
std::string VSFileSystem::GetHashName (const std::string &name)
 
string VSFileSystem::GetHashName (const std::string &name, const class Vector &scale, int faction)
 
std::string VSFileSystem::GetSharedTextureHashName (const std::string &name)
 
std::string VSFileSystem::GetSharedSoundHashName (const std::string &name)
 
string VSFileSystem::GetSharedMeshHashName (const std::string &, const class Vector &scale, int faction)
 
std::string VSFileSystem::MakeSharedStarSysPath (const std::string &s)
 
std::string VSFileSystem::MakeSharedPath (const std::string &s)
 
std::string VSFileSystem::GetCorrectStarSysPath (const std::string &name, bool &autogenerated)
 
void VSFileSystem::InitPaths (string conf, string subdir)
 
void VSFileSystem::InitDataDirectory ()
 
void VSFileSystem::InitHomeDirectory ()
 
void VSFileSystem::LoadConfig (string subdir)
 
void VSFileSystem::InitMods ()
 
void VSFileSystem::ChangeToProgramDirectory (char *argv0)
 
void VSFileSystem::CreateDirectoryAbs (const char *filename)
 
void VSFileSystem::CreateDirectoryAbs (const string &filename)
 
void VSFileSystem::CreateDirectoryHome (const char *filename)
 
void VSFileSystem::CreateDirectoryHome (const string &filename)
 
void VSFileSystem::CreateDirectoryData (const char *filename)
 
void VSFileSystem::CreateDirectoryData (const string &filename)
 
bool VSFileSystem::DirectoryExists (const char *filename)
 
bool VSFileSystem::DirectoryExists (const string &filename)
 
int VSFileSystem::FileExists (const string &root, const char *filename, VSFileType type, bool lookinvolume)
 
int VSFileSystem::FileExists (const string &root, const string &filename, VSFileType type, bool lookinvolume)
 
int VSFileSystem::FileExistsHome (const char *filename, VSFileType type)
 
int VSFileSystem::FileExistsHome (const string &filename, VSFileType type)
 
int VSFileSystem::FileExistsData (const char *filename, VSFileType type)
 
int VSFileSystem::FileExistsData (const string &filename, VSFileType type)
 
VSError VSFileSystem::GetError (const char *str)
 
VSError VSFileSystem::LookForFile (VSFile &f, VSFileType type, VSFileMode mode)
 
VSError VSFileSystem::LookForFile (const string &file, VSFileType type, VSFileMode mode)
 
std::ostream & operator<< (std::ostream &ostr, VSFileSystem::VSError err)
 
std::ostream & operator<< (std::ostream &ostr, VSFileSystem::VSFileType type)
 
std::string nameof (VSFileSystem::VSFileType type)
 

Variables

char * CONFIGFILE
 
ObjSerial serial_seed
 
string VSFileSystem::HOMESUBDIR
 

Macro Definition Documentation

#define DELIM   '/'

Definition at line 23 of file vsfilesystem.h.

#define DELIMSTR   "/"

Definition at line 24 of file vsfilesystem.h.

Referenced by getCompilingName().

Function Documentation

VegaConfig* createVegaConfig ( const char *  file)

Definition at line 6 of file libserver.cpp.

Referenced by VSFileSystem::LoadConfig().

7 {
8  return new VegaConfig( file );
9 }
ObjSerial getUniqueSerial ( )

Definition at line 61 of file vsfilesystem.cpp.

References fprintf, MAXSERIAL, serial_seed, SERVER, usedSerial(), and usedSerials.

Referenced by Mission::call_unit_launch(), UniverseUtil::ComputeSystemSerials(), Unit::EjectCargo(), and Unit::Fire().

62 {
63  int offset = (SERVER ? 2 : 1);
64  size_t maxserial=(1<<(sizeof(ObjSerial)*8));
65  if (usedSerials.size()>=maxserial/3) {
66  static bool firstBadness=true;
67  if (firstBadness) {
68  fprintf(stderr,"Error recycling used serial since serial map is completely full at size %d\n",(int)usedSerials.size());
69  firstBadness=false;
70  }
71  return ((rand()%(maxserial/3-1))+1)*3;//OFFSET..set to emergency zero
72  }
73  std::map< ObjSerial, bool >::const_iterator iter;
74  ObjSerial ret;
75  do {
77  ret = serial_seed+offset;
78  } while ( ( iter = usedSerials.find( ret ) ) != usedSerials.end()
79  && (*iter).second );
80  usedSerial( ret, true );
81  return ret;
82 }
std::string nameof ( VSFileSystem::VSFileType  type)

Definition at line 1999 of file vsfilesystem.cpp.

References VSFileSystem::AccountFile, VSFileSystem::AiFile, VSFileSystem::AnimFile, CASE, VSFileSystem::CockpitFile, VSFileSystem::CommFile, VSFileSystem::MeshFile, VSFileSystem::MissionFile, VSFileSystem::MusicFile, VSFileSystem::PythonFile, VSFileSystem::SaveFile, VSFileSystem::SoundFile, VSFileSystem::SystemFile, VSFileSystem::TextureFile, VSFileSystem::UnitFile, VSFileSystem::UniverseFile, VSFileSystem::UnknownFile, VSFileSystem::VSSpriteFile, and VSFileSystem::ZoneBuffer.

Referenced by VSFileSystem::FileExists().

2000 {
2001 #define CASE( a ) \
2002 case a: \
2003  return #a; break;
2004  switch (type)
2005  {
2007  CASE( VSFileSystem::SystemFile )
2008  CASE( VSFileSystem::CockpitFile )
2009  CASE( VSFileSystem::UnitFile )
2010  CASE( VSFileSystem::PythonFile )
2011  CASE( VSFileSystem::TextureFile )
2012  CASE( VSFileSystem::SoundFile )
2013  CASE( VSFileSystem::MeshFile )
2014  CASE( VSFileSystem::CommFile )
2015  CASE( VSFileSystem::AiFile )
2016  CASE( VSFileSystem::SaveFile )
2017  CASE( VSFileSystem::AnimFile )
2018  CASE( VSFileSystem::VSSpriteFile )
2019  CASE( VSFileSystem::MissionFile )
2020  CASE( VSFileSystem::MusicFile )
2021  CASE( VSFileSystem::AccountFile )
2022  CASE( VSFileSystem::ZoneBuffer )
2023  CASE( VSFileSystem::UnknownFile )
2024  default:
2025  return "VSFileSystem::<undefined VSFileType>";
2026 
2027  break;
2028  }
2029 #undef CASE
2030 }
std::ostream& operator<< ( std::ostream &  ostr,
VSFileSystem::VSError  err 
)

Definition at line 151 of file vsnet_dloadenum.cpp.

References VSFileSystem::BadFormat, CASE, VSFileSystem::DownloadInterrupted, VSFileSystem::EndOfFile, VSFileSystem::FileNotFound, VSFileSystem::IncompleteRead, VSFileSystem::IncompleteWrite, VSFileSystem::IsDirectory, VSFileSystem::LocalPermissionDenied, VSFileSystem::Ok, VSFileSystem::RemotePermissionDenied, VSFileSystem::Shared, VSFileSystem::SocketError, and VSFileSystem::Unspecified.

152 {
153  switch (e)
154  {
155  case Ok:
156  ostr<<"Ok";
157  break;
158  case SocketError:
159  ostr<<"SocketError";
160  break;
161  case FileNotFound:
162  ostr<<"FileNotFound";
163  break;
165  ostr<<"LocalPermissionDenied";
166  break;
168  ostr<<"RemotePermissionDenied";
169  break;
170  case DownloadInterrupted:
171  ostr<<"DownloadInterrupted";
172  break;
173  default:
174  ostr<<"unknown";
175  break;
176  }
177  return ostr;
178 }
std::ostream& operator<< ( std::ostream &  ostr,
VSFileSystem::VSFileType  type 
)

Definition at line 1993 of file vsfilesystem.cpp.

References VSFileSystem::DisplayType().

1994 {
1995  VSFileSystem::DisplayType( type, ostr );
1996  return ostr;
1997 }

Variable Documentation

char* CONFIGFILE
ObjSerial serial_seed