static gboolean metadata_file_write(gchar *path, const GList *keywords, const gchar *comment) { SecureSaveInfo *ssi; ssi = secure_open(path); if (!ssi) return FALSE; secure_fprintf(ssi, "#%s comment (%s)\n\n", GQ_APPNAME, VERSION); secure_fprintf(ssi, "[keywords]\n"); while (keywords && secsave_errno == SS_ERR_NONE) { const gchar *word = keywords->data; keywords = keywords->next; secure_fprintf(ssi, "%s\n", word); } secure_fputc(ssi, '\n'); secure_fprintf(ssi, "[comment]\n"); secure_fprintf(ssi, "%s\n", (comment) ? comment : ""); secure_fprintf(ssi, "#end\n"); return (secure_close(ssi) == 0); }
static gboolean cache_sim_write_similarity(SecureSaveInfo *ssi, CacheData *cd) { guint x, y; guint8 buf[3 * 32]; if (!cd || !cd->similarity || !cd->sim || !cd->sim->filled) return FALSE; secure_fprintf(ssi, "SimilarityGrid[32 x 32]="); for (y = 0; y < 32; y++) { guint s = y * 32; guint8 *avg_r = &cd->sim->avg_r[s]; guint8 *avg_g = &cd->sim->avg_g[s]; guint8 *avg_b = &cd->sim->avg_b[s]; guint n = 0; for (x = 0; x < 32; x++) { buf[n++] = avg_r[x]; buf[n++] = avg_g[x]; buf[n++] = avg_b[x]; } secure_fwrite(buf, sizeof(buf), 1, ssi); } secure_fputc(ssi, '\n'); return TRUE; }