GPAK  1.0.0
A general-purpose archive library

◆ gpak_close()

GPAK_API int gpak_close ( gpak_t _pak)
Brief Description:\n Closes a G-PAK archive.

This function closes the specified G-PAK archive and deallocates any associated resources.

Parameters
_pakA pointer to the gpak_t to close.
Returns
An integer value indicating success (0) or failure (-1).

Definition at line 290 of file gpak.c.

291 {
292  if (_pak != NULL)
293  {
294  if (_pak->stream_ != NULL)
295  {
296  // Recalculate header
297 
298  if ((_pak->mode_ & GPAK_MODE_CREATE) || (_pak->mode_ & GPAK_MODE_UPDATE))
299  {
300  if (_pak->mode_ & GPAK_MODE_CREATE)
301  {
304  }
305 
306  _gpak_archivate_file_tree(_pak);
307  }
308 
310 
311  _update_pak_header(_pak);
312  fclose(_pak->stream_);
313  }
314 
315  free(_pak->dictionary_);
316  free(_pak);
317  return _gpak_make_error(_pak, GPAK_ERROR_OK);
318  }
319 
320  return -1;
321 }
GPAK_API void filesystem_tree_delete(filesystem_tree_node_t *_root)
GPAK_API int32_t _gpak_compressor_generate_dictionary(gpak_t *_pak)
@ GPAK_HEADER_COMPRESSION_ZST
Definition: gpak_data.h:36
@ GPAK_MODE_CREATE
Definition: gpak_data.h:207
@ GPAK_MODE_UPDATE
Definition: gpak_data.h:209
@ GPAK_ERROR_OK
Definition: gpak_data.h:155
gpak_header_compression_algorithm_t compression_
Definition: gpak_data.h:113
char * dictionary_
Definition: gpak_data.h:262
struct filesystem_tree_node * root_
Definition: gpak_data.h:260
FILE * stream_
Definition: gpak_data.h:259
int mode_
Definition: gpak_data.h:257
pak_header_t header_
Definition: gpak_data.h:258

References _gpak_compressor_generate_dictionary(), gpak_header::compression_, gpak::dictionary_, filesystem_tree_delete(), GPAK_ERROR_OK, GPAK_HEADER_COMPRESSION_ZST, GPAK_MODE_CREATE, GPAK_MODE_UPDATE, gpak::header_, gpak::mode_, gpak::root_, and gpak::stream_.

Referenced by gpak_open().