Exemplo n.º 1
0
static char *
get_path_name (const char *hex_name, char *path_name, size_t path_size)
{
  char  *path;
  size_t size = snprintf (path_name, path_size, "%s%s%s%s",
                          _datadir, FILE_SEP_STR, hex_name,
                          ".xml");

  if (size > -1 || size < path_size)
    return path_name;

  if (size > -1)
    path_size = size + 1;
  else
    path_size *= 2;

  if (0 == path_size)
    path_size = 512;

  path = t_realloc (path_name, path_size, char);
  if (!path)
    {
      delete (path_name);
      return NULL;
    }
  path_name = path;

  return get_path_name (hex_name, path_name, path_size);
}
Exemplo n.º 2
0
char* get_app_path(char*  buf, int buflen)
{
#ifdef WIN32
	GetModuleFileName(NULL, buf, buflen);
#elif defined(LINUX)
	readlink("/proc/self/exe", buf, buflen);
#endif
	REGULAR_PATH(buf);


	return get_path_name(buf, buf, buflen);
}
Exemplo n.º 3
0
/*! \brief  Attempts to merge model information from a data file.
 */
static SANE_Status
_model_info_merge_file (_model_info_t *self)
{
  xmlDocPtr doc = NULL;

  char  *path_name = NULL;
  char  *hex_name  = NULL;

  require (self);

  hex_name = fw_name_to_hex (self->fw_name);

  if (!hex_name) return SANE_STATUS_NO_MEM;

  path_name = get_path_name (hex_name, NULL, 0);
  delete (hex_name);            /* no longer needed */

  if (!path_name) return SANE_STATUS_NO_MEM;

  log_data ("%s", path_name);

  doc = xmlReadFile (path_name, NULL,
                     XML_PARSE_NOERROR | XML_PARSE_NOWARNING);
  delete (path_name);           /* no longer needed */

  if (doc)
    {
      _model_info_merge_data (self, xmlDocGetRootElement (doc));
      xmlFreeDoc (doc);
    }
  else
    {
      xmlErrorPtr p = xmlGetLastError ();
      if (p) err_minor ("%s", p->message);
    }

  return SANE_STATUS_GOOD;
}