FS2_Open
Open source remastering of the Freespace 2 engine
cfile.cpp File Reference
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include "cfile/cfile.h"
#include "cfile/cfilearchive.h"
#include "cfile/cfilesystem.h"
#include "osapi/osapi.h"
#include "parse/encrypt.h"

Go to the source code of this file.

Macros

#define _CFILE_INTERNAL
 
#define CFILE_STACK_MAX   8
 
#define MIN_NUM_PATH_COMPONENTS   3 /* Drive + directory + file */
 
#define CRC32_POLYNOMIAL   0xEDB88320
 
#define CF_CHKSUM_SAMPLE_SIZE   512
 

Functions

int cfile_init (const char *exe_dir, const char *cdrom_dir)
 Initialize the cfile system. Called once at application start. More...
 
void cfile_refresh ()
 
int cfile_push_chdir (int type)
 Push current directory onto a 'stack' and change to a new directory. More...
 
int cfile_chdir (const char *dir)
 Change to the specified directory. More...
 
int cfile_pop_dir ()
 
int cfile_flush_dir (int dir_type)
 
char * cf_add_ext (const char *filename, const char *ext)
 
int cf_delete (const char *filename, int path_type)
 Delete the specified file. More...
 
int cf_access (const char *filename, int dir_type, int mode)
 
int cf_exists (const char *filename, int dir_type)
 
int cf_exists_full (const char *filename, int dir_type)
 
int cf_exists_full_ext (const char *filename, int dir_type, const int num_ext, const char **ext_list)
 
int cf_rename (const char *old_name, const char *name, int dir_type)
 
void cf_create_directory (int dir_type)
 
int game_cd_changed ()
 
CFILE_cfopen (const char *source, int line, const char *file_path, const char *mode, int type, int dir_type, bool localize)
 
CFILE_cfopen_special (const char *source, int line, const char *file_path, const char *mode, const int size, const int offset, int dir_type)
 
CFILEctmpfile ()
 
int cfclose (CFILE *cfile)
 
int cf_is_valid (CFILE *cfile)
 
 if (cfile_block_index==-1)
 
 cf_init_lowlevel_read_code (cfp, 0, 0, 0)
 
int cf_get_dir_type (CFILE *cfile)
 
voidcf_returndata (CFILE *cfile)
 
void cf_set_version (CFILE *cfile, int version)
 
void cf_set_max_read_len (CFILE *cfile, size_t len)
 
float cfread_float (CFILE *file, int ver, float deflt)
 
int cfread_int (CFILE *file, int ver, int deflt)
 
uint cfread_uint (CFILE *file, int ver, uint deflt)
 
short cfread_short (CFILE *file, int ver, short deflt)
 
ushort cfread_ushort (CFILE *file, int ver, ushort deflt)
 
ubyte cfread_ubyte (CFILE *file, int ver, ubyte deflt)
 
void cfread_vector (vec3d *vec, CFILE *file, int ver, vec3d *deflt)
 
void cfread_angles (angles *ang, CFILE *file, int ver, angles *deflt)
 
char cfread_char (CFILE *file, int ver, char deflt)
 
void cfread_string (char *buf, int n, CFILE *file)
 
void cfread_string_len (char *buf, int n, CFILE *file)
 Read a fixed length string that is not null-terminated, with the length stored in file. More...
 
int cfwrite_float (float f, CFILE *file)
 
int cfwrite_int (int i, CFILE *file)
 
int cfwrite_uint (uint i, CFILE *file)
 
int cfwrite_short (short s, CFILE *file)
 
int cfwrite_ushort (ushort s, CFILE *file)
 
int cfwrite_ubyte (ubyte b, CFILE *file)
 
int cfwrite_vector (vec3d *vec, CFILE *file)
 
int cfwrite_angles (angles *ang, CFILE *file)
 
int cfwrite_char (char b, CFILE *file)
 
int cfwrite_string (const char *buf, CFILE *file)
 
int cfwrite_string_len (const char *buf, CFILE *file)
 Write a fixed length string (not including its null terminator), with the length stored in file. More...
 
int cfilelength (CFILE *cfile)
 
int cfwrite (const void *buf, int elsize, int nelem, CFILE *cfile)
 
int cfputc (int c, CFILE *cfile)
 
int cfputs (const char *str, CFILE *cfile)
 
int cfgetc (CFILE *cfile)
 
char * cfgets (char *buf, int n, CFILE *cfile)
 
ushort cf_add_chksum_short (ushort seed, ubyte *buffer, int size)
 
uint cf_add_chksum_long (uint seed, ubyte *buffer, int size)
 
int cf_chksum_pack (const char *filename, uint *chk_long, bool full)
 
int cf_chksum_short (const char *filename, ushort *chksum, int max_size, int cf_type)
 
int cf_chksum_short (CFILE *file, ushort *chksum, int max_size)
 
int cf_chksum_long (const char *filename, uint *chksum, int max_size, int cf_type)
 
int cf_chksum_long (CFILE *file, uint *chksum, int max_size)
 
int cflush (CFILE *cfile)
 

Variables

char Cfile_root_dir [CFILE_ROOT_DIRECTORY_LEN] = ""
 
cf_pathtype Pathtypes [CF_MAX_PATH_TYPES]
 
int cfile_inited = 0
 
Cfile_block Cfile_block_list [MAX_CFILE_BLOCKS]
 
 cfile_block_index = cfget_cfile_block()
 
 else
 
Cfile_blockcfbp = &Cfile_block_list[cfile_block_index]
 
 cfp = &Cfile_list[cfile_block_index]
 
cfp id = cfile_block_index
 
cfp version = 0
 
cfbp max_read_len = 0
 
cfbp fp = NULL
 
cfbp dir_type = type
 
cfbp source_file = source
 
cfbp line_num = line
 

Macro Definition Documentation

#define _CFILE_INTERNAL

Definition at line 11 of file cfile.cpp.

#define CF_CHKSUM_SAMPLE_SIZE   512

Definition at line 1611 of file cfile.cpp.

#define CFILE_STACK_MAX   8

Definition at line 92 of file cfile.cpp.

#define CRC32_POLYNOMIAL   0xEDB88320

Definition at line 1608 of file cfile.cpp.

#define MIN_NUM_PATH_COMPONENTS   3 /* Drive + directory + file */

Definition at line 140 of file cfile.cpp.

Function Documentation

CFILE* _cfopen ( const char *  source,
int  line,
const char *  file_path,
const char *  mode,
int  type,
int  dir_type,
bool  localize 
)

Definition at line 647 of file cfile.cpp.

CFILE* _cfopen_special ( const char *  source,
int  line,
const char *  file_path,
const char *  mode,
const int  size,
const int  offset,
int  dir_type 
)

Definition at line 802 of file cfile.cpp.

int cf_access ( const char *  filename,
int  dir_type,
int  mode 
)

Definition at line 497 of file cfile.cpp.

uint cf_add_chksum_long ( uint  seed,
ubyte buffer,
int  size 
)

Definition at line 1632 of file cfile.cpp.

ushort cf_add_chksum_short ( ushort  seed,
ubyte buffer,
int  size 
)

Definition at line 1614 of file cfile.cpp.

char* cf_add_ext ( const char *  filename,
const char *  ext 
)

Definition at line 458 of file cfile.cpp.

int cf_chksum_long ( const char *  filename,
uint chksum,
int  max_size,
int  cf_type 
)

Definition at line 1841 of file cfile.cpp.

int cf_chksum_long ( CFILE file,
uint chksum,
int  max_size 
)

Definition at line 1868 of file cfile.cpp.

int cf_chksum_pack ( const char *  filename,
uint chk_long,
bool  full 
)

Definition at line 1722 of file cfile.cpp.

int cf_chksum_short ( const char *  filename,
ushort chksum,
int  max_size,
int  cf_type 
)

Definition at line 1791 of file cfile.cpp.

int cf_chksum_short ( CFILE file,
ushort chksum,
int  max_size 
)

Definition at line 1818 of file cfile.cpp.

void cf_create_directory ( int  dir_type)

Definition at line 596 of file cfile.cpp.

int cf_delete ( const char *  filename,
int  path_type 
)

Delete the specified file.

Parameters
filenameName of file to delete
path_typePath type (CF_TYPE_xxx)
Returns
0 on failure, 1 on success

Definition at line 483 of file cfile.cpp.

int cf_exists ( const char *  filename,
int  dir_type 
)

Definition at line 514 of file cfile.cpp.

int cf_exists_full ( const char *  filename,
int  dir_type 
)

Definition at line 527 of file cfile.cpp.

int cf_exists_full_ext ( const char *  filename,
int  dir_type,
const int  num_ext,
const char **  ext_list 
)

Definition at line 536 of file cfile.cpp.

int cf_get_dir_type ( CFILE cfile)

Definition at line 1100 of file cfile.cpp.

cf_init_lowlevel_read_code ( cfp  ,
,
,
 
)
int cf_is_valid ( CFILE cfile)

Definition at line 935 of file cfile.cpp.

int cf_rename ( const char *  old_name,
const char *  name,
int  dir_type 
)

Definition at line 567 of file cfile.cpp.

void* cf_returndata ( CFILE cfile)

Definition at line 1110 of file cfile.cpp.

void cf_set_max_read_len ( CFILE cfile,
size_t  len 
)

Definition at line 1133 of file cfile.cpp.

void cf_set_version ( CFILE cfile,
int  version 
)

Definition at line 1124 of file cfile.cpp.

int cfclose ( CFILE cfile)

Definition at line 895 of file cfile.cpp.

int cfgetc ( CFILE cfile)

Definition at line 1548 of file cfile.cpp.

char* cfgets ( char *  buf,
int  n,
CFILE cfile 
)

Definition at line 1571 of file cfile.cpp.

int cfile_chdir ( const char *  dir)

Change to the specified directory.

Parameters
dirDirectory
Return values
0Success
1Failed to change to new directory's drive (Windows only)
2Failed to change to new directory

Definition at line 372 of file cfile.cpp.

int cfile_flush_dir ( int  dir_type)

Definition at line 394 of file cfile.cpp.

int cfile_init ( const char *  exe_dir,
const char *  cdrom_dir 
)

Initialize the cfile system. Called once at application start.

Parameters
exe_dirPath to a file (not a directory)
cdrom_dirPath to a CD drive mount point (may be NULL)
Returns
0 On success
1 On error

Definition at line 183 of file cfile.cpp.

int cfile_pop_dir ( )

Definition at line 381 of file cfile.cpp.

int cfile_push_chdir ( int  type)

Push current directory onto a 'stack' and change to a new directory.

The current directory is pushed onto a 'stack' so that it can be easily restored at a later time. The new directory is derived from type.

Parameters
typepath type (CF_TYPE_xxx)
Return values
-1'Stack' is full
0Success
1Failed to change to new directory's drive (Windows only)
2Failed to change to new directory

Definition at line 342 of file cfile.cpp.

void cfile_refresh ( )

Definition at line 248 of file cfile.cpp.

int cfilelength ( CFILE cfile)

Definition at line 1393 of file cfile.cpp.

int cflush ( CFILE cfile)

Definition at line 1895 of file cfile.cpp.

int cfputc ( int  c,
CFILE cfile 
)

Definition at line 1460 of file cfile.cpp.

int cfputs ( const char *  str,
CFILE cfile 
)

Definition at line 1504 of file cfile.cpp.

void cfread_angles ( angles ang,
CFILE file,
int  ver,
angles deflt 
)

Definition at line 1249 of file cfile.cpp.

char cfread_char ( CFILE file,
int  ver,
char  deflt 
)

Definition at line 1265 of file cfile.cpp.

float cfread_float ( CFILE file,
int  ver,
float  deflt 
)

Definition at line 1150 of file cfile.cpp.

int cfread_int ( CFILE file,
int  ver,
int  deflt 
)

Definition at line 1164 of file cfile.cpp.

short cfread_short ( CFILE file,
int  ver,
short  deflt 
)

Definition at line 1192 of file cfile.cpp.

void cfread_string ( char *  buf,
int  n,
CFILE file 
)

Definition at line 1278 of file cfile.cpp.

void cfread_string_len ( char *  buf,
int  n,
CFILE file 
)

Read a fixed length string that is not null-terminated, with the length stored in file.

Parameters
bufPre-allocated array to store string
nSize of pre-allocated array
fileFile to read from
Note
Appends NULL character to string (buf)

Definition at line 1291 of file cfile.cpp.

ubyte cfread_ubyte ( CFILE file,
int  ver,
ubyte  deflt 
)

Definition at line 1220 of file cfile.cpp.

uint cfread_uint ( CFILE file,
int  ver,
uint  deflt 
)

Definition at line 1178 of file cfile.cpp.

ushort cfread_ushort ( CFILE file,
int  ver,
ushort  deflt 
)

Definition at line 1206 of file cfile.cpp.

void cfread_vector ( vec3d vec,
CFILE file,
int  ver,
vec3d deflt 
)

Definition at line 1233 of file cfile.cpp.

int cfwrite ( const void buf,
int  elsize,
int  nelem,
CFILE cfile 
)

Definition at line 1414 of file cfile.cpp.

int cfwrite_angles ( angles ang,
CFILE file 
)

Definition at line 1350 of file cfile.cpp.

int cfwrite_char ( char  b,
CFILE file 
)

Definition at line 1361 of file cfile.cpp.

int cfwrite_float ( float  f,
CFILE file 
)

Definition at line 1304 of file cfile.cpp.

int cfwrite_int ( int  i,
CFILE file 
)

Definition at line 1310 of file cfile.cpp.

int cfwrite_short ( short  s,
CFILE file 
)

Definition at line 1322 of file cfile.cpp.

int cfwrite_string ( const char *  buf,
CFILE file 
)

Definition at line 1366 of file cfile.cpp.

int cfwrite_string_len ( const char *  buf,
CFILE file 
)

Write a fixed length string (not including its null terminator), with the length stored in file.

Parameters
bufString to write to file
fileFile to write to

Definition at line 1378 of file cfile.cpp.

int cfwrite_ubyte ( ubyte  b,
CFILE file 
)

Definition at line 1334 of file cfile.cpp.

int cfwrite_uint ( uint  i,
CFILE file 
)

Definition at line 1316 of file cfile.cpp.

int cfwrite_ushort ( ushort  s,
CFILE file 
)

Definition at line 1328 of file cfile.cpp.

int cfwrite_vector ( vec3d vec,
CFILE file 
)

Definition at line 1339 of file cfile.cpp.

CFILE* ctmpfile ( )

Definition at line 844 of file cfile.cpp.

int game_cd_changed ( )

Definition at line 171 of file fredstubs.cpp.

if ( cfile_block_index  = = -1)

Definition at line 1050 of file cfile.cpp.

Variable Documentation

Definition at line 1058 of file cfile.cpp.

cfile_block_index = cfget_cfile_block()

Definition at line 1049 of file cfile.cpp.

Cfile_block Cfile_block_list[MAX_CFILE_BLOCKS]

Definition at line 99 of file cfile.cpp.

int cfile_inited = 0

Definition at line 94 of file cfile.cpp.

char Cfile_root_dir[CFILE_ROOT_DIRECTORY_LEN] = ""

Definition at line 38 of file cfile.cpp.

return cfp = &Cfile_list[cfile_block_index]

Definition at line 1061 of file cfile.cpp.

cfbp dir_type = type

Definition at line 1069 of file cfile.cpp.

else
Initial value:
{
Definition: cfile.h:28
cfp
Definition: cfile.cpp:1061

Definition at line 1056 of file cfile.cpp.

cfbp fp = NULL

Definition at line 1065 of file cfile.cpp.

Definition at line 1062 of file cfile.cpp.

cfbp line_num = line

Definition at line 1072 of file cfile.cpp.

cfbp max_read_len = 0

Definition at line 1064 of file cfile.cpp.

Definition at line 49 of file cfile.cpp.

cfbp source_file = source

Definition at line 1071 of file cfile.cpp.

cfp version = 0

Definition at line 1063 of file cfile.cpp.