Esempio n. 1
0
static Eina_Bool
_etui_epub_opf_is_valid(Etui_Provider_Data *pd)
{
    char buf[PATH_MAX];
    Eina_File *f;

    snprintf(buf, sizeof(buf), "%s/%s", pd->doc.path, pd->container.content_file);
    buf[sizeof(buf) - 1] = '\0';
    f = eina_file_open(buf, EINA_FALSE);
    if (!f)
        return EINA_FALSE;

    if (!eina_simple_xml_parse((const char *)eina_file_map_all(f, EINA_FILE_POPULATE),
                               eina_file_size_get(f),
                               EINA_TRUE,
                               _etui_epub_opf_parse_cb, pd))
    {
        eina_file_close(f);
        return EINA_FALSE;
    }

    eina_file_close(f);

    return EINA_TRUE;
}
int
main(void)
{
   FILE *file;
   long size;

   eina_init();

   //1. Open XML File
   file = fopen("exia.xml", "rb");

   if (!file) return 0;

   fseek(file, 0, SEEK_END);
   size = ftell(file);
   fseek(file, 0, SEEK_SET);

   //2. Read XML File
   char *buffer = malloc(size);
   if (!buffer)
     {
        fclose(file);
        return 0;
     }

   fread(buffer, 1, size, file);

   //3. Start Parsing XML
   eina_simple_xml_parse(buffer, size, EINA_FALSE, _xml_tag_parse_cb, NULL);

   fclose(file);
   free(buffer);

   return 0;
}
Esempio n. 3
0
int
main(int argc, char **argv)
{
   char *xml_buf = NULL;
   DBus_Object *obj = NULL;
   char *prefix = NULL, *interface = NULL, *output = NULL;
   Eina_Bool quit_option = EINA_FALSE;
   int arg_index;
   Ecore_Getopt_Value values[] = {
      ECORE_GETOPT_VALUE_STR(prefix),
      ECORE_GETOPT_VALUE_STR(interface),
      ECORE_GETOPT_VALUE_STR(output),
      ECORE_GETOPT_VALUE_BOOL(quit_option),
      ECORE_GETOPT_VALUE_BOOL(quit_option),
      ECORE_GETOPT_VALUE_BOOL(quit_option),
      ECORE_GETOPT_VALUE_BOOL(quit_option),
      ECORE_GETOPT_VALUE_NONE
   };

   eina_init();

   arg_index = ecore_getopt_parse(&optdesc, values, argc, argv);
   if (arg_index == -1)
     {
        printf("Error: parsing arguments.\n");
        return -1;
     }
   if (quit_option)
     return 0;
   if (argc <= arg_index)
     {
        printf("Error: Missing file name.\n");
        return -1;
     }

   if (!file_read(argv[arg_index], &xml_buf))
     {
        printf("Error reading file.\n");
        goto end;
     }

   if (!eina_simple_xml_parse(xml_buf, strlen(xml_buf), EINA_TRUE,
                              parser, &obj))
     {
        printf("Error: could not parse XML\n");
        goto end;
     }

   source_client_generate(obj, prefix, interface, output);
   util_h_write();

end:
   if (obj)
     object_free(obj);

   free(xml_buf);
   eina_shutdown();
   return 0;
}
Esempio n. 4
0
static Eina_Bool
_etui_epub_ncx_is_valid(Etui_Provider_Data *pd)
{
    char buf[PATH_MAX];
    Etui_Epub_Opf_Manifest_Item *item;
    Eina_File *f;
    char *oebps_dir;

    if (!pd->opf.toc_id)
        return EINA_FALSE;

    item = eina_hash_find(pd->opf.manifest, pd->opf.toc_id);
    if (!item)
        return EINA_FALSE;

    oebps_dir = strdup(pd->container.content_file);
    if (!oebps_dir)
        return EINA_FALSE;

    snprintf(buf, sizeof(buf), "%s/%s/%s", pd->doc.path, dirname(oebps_dir), item->href);
    buf[sizeof(buf) - 1] = '\0';
    free(oebps_dir);
    f = eina_file_open(buf, EINA_FALSE);
    if (!f)
    {
        return EINA_FALSE;
    }

    pd->ncx.current_depth = -1;

    if (!eina_simple_xml_parse((const char *)eina_file_map_all(f, EINA_FILE_POPULATE),
                               eina_file_size_get(f),
                               EINA_TRUE,
                               _etui_epub_ncx_parse_cb, pd))
    {
        eina_file_close(f);
        return EINA_FALSE;
    }

    eina_file_close(f);

    return EINA_TRUE;
}
Esempio n. 5
0
EAPI Eina_Simple_XML_Node_Root *
eina_simple_xml_node_load(const char *buf, unsigned buflen, Eina_Bool strip)
{
   Eina_Simple_XML_Node_Root *root;
   struct eina_simple_xml_node_load_ctxt ctx;

   if (!buf) return NULL;

   root = eina_mempool_malloc(_eina_simple_xml_tag_mp, sizeof(*root));
   if (!root) return NULL;

   memset(root, 0, sizeof(*root));
   EINA_MAGIC_SET(&root->base, EINA_MAGIC_SIMPLE_XML_TAG);
   root->base.type = EINA_SIMPLE_XML_NODE_ROOT;

   ctx.root = root;
   ctx.current = root;
   eina_simple_xml_parse(buf, buflen, strip, _eina_simple_xml_node_parse, &ctx);

   return root;
}
Esempio n. 6
0
static void _parse(EMap_Route *route)
{
   if(!route) return;
   if(!route->type == EMAP_TRACK_TYPE_GPX) return;

   DBG("[Start] Load GPX file %s", route->gpx.file);

   FILE *f = fopen(route->gpx.file, "rb");
   if (f)
   {
      long sz;

      fseek(f, 0, SEEK_END);
      sz = ftell(f);
      if (sz > 0)
      {
         char *buf;

         fseek(f, 0, SEEK_SET);
         buf = malloc(sz);
         if (buf)
         {
            size_t n = fread(buf, 1, sz, f);
            eina_simple_xml_parse(buf, n, EINA_TRUE, _parser_cb, route);

            free(buf);
         }
      }
      fclose(f);
   }
   else
   {
      ERR("can't open the file %s", route->gpx.file);
      return ;
   }

   DBG("[Done] Load GPX file %s", route->gpx.file);
}