Пример #1
0
char *
__mrss_download_file (nxml_t * nxml, char *fl, size_t * size,
		      mrss_error_t * error, CURLcode * code)
{
  char *buffer;

  if (code)
    *code = CURLE_OK;

  switch (nxml_download_file (nxml, fl, &buffer, size))
    {
    case NXML_OK:
      return buffer;

    case NXML_ERR_DOWNLOAD:

      if (code)
	*code = nxml_curl_error (nxml, NXML_ERR_DOWNLOAD);

      *error = MRSS_ERR_DOWNLOAD;
      return NULL;

    default:
      *error = MRSS_ERR_POSIX;
      return NULL;
    }
}
Пример #2
0
nxml_error_t
nxml_parse_url (nxml_t * nxml, char *url)
{
  nxml_error_t err;
  char *buffer;
  size_t size;

  if (!url || !nxml)
    return NXML_ERR_DATA;

  if ((err = nxml_download_file (nxml, url, &buffer, &size)) != NXML_OK)
    return err;

  if (nxml->file)
    free (nxml->file);

  if (!(nxml->file = strdup (url)))
    {
      nxml_empty (nxml);
      return NXML_ERR_POSIX;
    }

  nxml->size = size;

  nxml_empty (nxml);

  err = __nxml_parse_buffer (nxml, buffer, size);

  free (buffer);

  return err;
}