void
on_btn_save_clicked(Etk_Object *object, void *data)
{
  Cover_Entry *ce;
  Eet_File *ef;
  Eina_List *list;
  char *cover_file;

  list = cover_changed;
  asprintf(&cover_file, "%s/.e/apps/emphasis/cover.eet", getenv("HOME"));
  ef = eet_open(cover_file, EET_FILE_MODE_READ_WRITE);
  if (!ef)
    {
      fprintf(stderr, "can't open %s\n", cover_file);
      free(cover_file);
      return;
    }

  while (cover_changed)
    {
      ce = eina_list_data_get(cover_changed);
      eet_write(ef, ce->key, ce->path, strlen(ce->path)+1, 0);
      eet_clearcache();
      free(ce->key);
      free(ce->path);
      free(ce);
      cover_changed = eina_list_next(cover_changed);
    }
  eina_list_free(list);
  eet_close(ef);
  free(cover_file);
}
示例#2
0
static void
dump(Efreet_Icon_Theme *theme)
{
    Eet_File *ef;
    unsigned int count = 0;
    double start, avg;
    char **keys;
    int num, i;

    start = ecore_time_get();
    ef = eet_open(efreet_icon_cache_file(theme->name.internal), EET_FILE_MODE_READ);
    printf("open: %s %f\n", theme->name.internal, ecore_time_get() - start);

    start = ecore_time_get();
    keys = eet_list(ef, "*", &num);
    printf("list: %s %f\n", theme->name.internal, ecore_time_get() - start);
    if (!keys) return;

    start = ecore_time_get();
    for (i = 0; i < num; i++)
    {
        Efreet_Cache_Icon *icon;
        unsigned int j;

        icon = eet_data_read(ef, efreet_icon_edd(), keys[i]);
        if (!icon) continue;

        for (j = 0; j < icon->icons_count; ++j)
            count += icon->icons[j]->paths_count;
    }
    free(keys);

    start = ecore_time_get() - start;
    avg = 0;
    if (count > 0)
        avg = start / count;
    printf("read: %s - %u paths (time: %f) (avg %f)\n", theme->name.internal, count, start, avg);
    eet_close(ef);
    eet_clearcache();
}
示例#3
0
char *
emphasis_cover_db_add(const char *artist, const char *album, 
                      void *cover, int size)
{
  Eet_File *ef;
  FILE *cover_file;
  char *cover_path;
  char *config_path;
  char *key;

  asprintf(&config_path, "%s/.e/apps/emphasis/cover.eet", getenv("HOME"));
  if (access(config_path, F_OK))
    {
      ef = eet_open(config_path, EET_FILE_MODE_WRITE);
      if (!ef)
        {
          fprintf(stderr, "Can't write %s\n", config_path);
          return NULL;
        }
    }
  else
    {
      ef = eet_open(config_path, EET_FILE_MODE_READ_WRITE);
      if (!ef)
        {
          fprintf(stderr, "Can't read write %s\n", config_path);
          return NULL;
        }
    }

  asprintf(&key, "/%s/%s", artist, album);
  if (cover)
    {
      asprintf(&cover_path, "%s/.e/apps/emphasis/%s-%s.jpg", 
               getenv("HOME"), artist, album);
      cover_file = fopen(cover_path, "wb");
      if (!cover_file)
        {
          fprintf(stderr,
                  "Cover: Unable to open the file \"%s\" to save the cover\n",
                  cover_path);
          free(cover_path);
          return NULL;
        }
      fwrite(cover, size, sizeof(char), cover_file);
      fclose(cover_file);
      eet_write(ef, key, cover_path, (strlen(cover_path)+1) * sizeof(char), 0);
      eet_clearcache();
    }
  else
    {
      asprintf(&cover_path, "not found");
      eet_write(ef, key, cover_path, (strlen(cover_path)+1) * sizeof(char), 0);
      eet_clearcache();
      free(cover_path);
      cover_path = NULL;
    }

  eet_close(ef);

  free(config_path);
  free(key);
  free(cover);
  return cover_path;
}