libamxo  4.3.4
Object Definition Language (ODL) parsing
amxo_save.h File Reference

Go to the source code of this file.

Functions

int amxo_parser_save (amxo_parser_t *pctx, const char *filename, amxd_object_t *object, uint32_t depth, amxc_var_t *config, bool append)
 
int amxo_parser_save_config (amxo_parser_t *pctx, const char *filename, amxc_var_t *config, bool append)
 
int amxo_parser_save_object (amxo_parser_t *pctx, const char *filename, amxd_object_t *object, bool append)
 

Function Documentation

◆ amxo_parser_save()

int amxo_parser_save ( amxo_parser_t pctx,
const char *  filename,
amxd_object_t *  object,
uint32_t  depth,
amxc_var_t *  config,
bool  append 
)

Definition at line 700 of file amxo_save.c.

705  {
706  int retval = -1;
707  int fd = -1;
708  amxc_string_t buffer;
709 
710  if(GETP_ARG(&pctx->config, "odl.buffer-size") != NULL) {
711  buffer_size = GETP_INT32(&pctx->config, "odl.buffer-size");
712  }
713  amxc_string_init(&buffer, buffer_size + 1024);
714 
715  when_null(pctx, exit);
716  when_str_empty(filename, exit);
717 
718  indentation = 0;
719  pctx->status = amxd_status_ok;
720  fd = amxo_parser_open_file(pctx, filename, append);
721  when_true(fd < 0, exit);
722  if((config != NULL) && (amxc_var_type_of(config) == AMXC_VAR_ID_HTABLE)) {
723  retval = amxo_parser_save_config_options(fd, config, &buffer);
724  when_true(retval < 0, exit);
725  }
726 
727  if(object != NULL) {
728  retval = amxo_parser_save_tree(fd, object, depth, &buffer);
729  when_true(retval < 0, exit);
730  }
731 
732  amxo_parser_flush_buffer(fd, &buffer);
733 
734 exit:
735  if(fd >= 0) {
736  if(retval < 0) {
737  amxo_parser_remove_file(pctx, filename, fd);
738  } else {
739  amxo_parser_close_file(pctx, filename, fd);
740  }
741  } else {
742  retval = -1;
743  }
744  amxc_string_clean(&buffer);
745  return retval;
746 }
static int amxo_parser_save_config_options(int fd, amxc_var_t *config, amxc_string_t *buffer)
Definition: amxo_save.c:332
static int indentation
Definition: amxo_save.c:85
static int amxo_parser_flush_buffer(int fd, amxc_string_t *buffer)
Definition: amxo_save.c:121
static int amxo_parser_save_tree(int fd, amxd_object_t *object, uint32_t depth, amxc_string_t *buffer)
Definition: amxo_save.c:648
static int amxo_parser_open_file(amxo_parser_t *pctx, const char *filename, bool append)
Definition: amxo_save.c:179
static size_t buffer_size
Definition: amxo_save.c:84
static int amxo_parser_close_file(amxo_parser_t *pctx, const char *filename, int fd)
Definition: amxo_save.c:680
static void amxo_parser_remove_file(amxo_parser_t *pctx, const char *filename, int fd)
Definition: amxo_save.c:670
config
amxc_var_t config
Definition: amxo_types.h:250
amxd_status_t status
Definition: amxo_types.h:258

◆ amxo_parser_save_config()

int amxo_parser_save_config ( amxo_parser_t pctx,
const char *  filename,
amxc_var_t *  config,
bool  append 
)

Definition at line 748 of file amxo_save.c.

751  {
752  return amxo_parser_save(pctx, filename, NULL, 0, config, append);
753 }
int amxo_parser_save(amxo_parser_t *pctx, const char *filename, amxd_object_t *object, uint32_t depth, amxc_var_t *config, bool append)
Definition: amxo_save.c:700

◆ amxo_parser_save_object()

int amxo_parser_save_object ( amxo_parser_t pctx,
const char *  filename,
amxd_object_t *  object,
bool  append 
)

Definition at line 755 of file amxo_save.c.

758  {
759  return amxo_parser_save(pctx, filename, object, UINT32_MAX, NULL, append);
760 }