Exemplo n.º 1
0
/**
 * @brief entry point; calls do_parse_params and do_location
 *
 * @param argc number of arguments
 * @param argv the arguments
 *
 * @returns EXIT_SUCCESS, EXIT_FAILURE
 */
int main(int argc, char *argv[]) {
  params_t *params;

  program_name = argv[0];

  /* honor the system locale */
  if (!setlocale(LC_ALL, "")) {
    fprintf(stderr, "%s: setlocale() failed\n", program_name);
  }

  params = calloc(1, sizeof(*params));

  if (!params) {
    fprintf(stderr, "%s: calloc(): %s\n", program_name, strerror(errno));
    return EXIT_FAILURE;
  }

  if (do_parse_params(argc, argv, params) != EXIT_SUCCESS) {
    do_free_params(params);
    return EXIT_FAILURE;
  }

  if (params->help) {
    do_help();
    do_free_params(params);
    return EXIT_SUCCESS;
  }

  if (do_location(params) != EXIT_SUCCESS) {
    do_free_params(params);
    return EXIT_FAILURE;
  }

  do_free_params(params);

  return EXIT_SUCCESS;
}
Exemplo n.º 2
0
/*! \brief
 * Duplicate linked list of parameters
 */
static inline int do_duplicate_params(param_t **_n, param_t *_p, int _shm)
{
	param_t *last, *ptr, *t;

	if(!_n) {
		LM_ERR("Invalid parameter value\n");
		return -1;
	}

	last = 0;
	*_n = 0;
	ptr = _p;
	while(ptr) {
		if(_shm) {
			t = (param_t *)shm_malloc(sizeof(param_t));
		} else {
			t = (param_t *)pkg_malloc(sizeof(param_t));
		}
		if(!t) {
			LM_ERR("No more memory (%d)\n", _shm);
			goto err;
		}
		memcpy(t, ptr, sizeof(param_t));
		t->next = 0;

		if(!*_n)
			*_n = t;
		if(last)
			last->next = t;
		last = t;

		ptr = ptr->next;
	}
	return 0;

err:
	do_free_params(*_n, _shm);
	return -2;
}
Exemplo n.º 3
0
/*
 * Free linked list of parameters
 */
void shm_free_params(param_t* _p)
{
	do_free_params(_p, 1);
}
Exemplo n.º 4
0
/*
 * Free linked list of parameters
 */
void free_params(param_t* _p)
{
	do_free_params(_p, 0);
}