#define THEME_ITEMS 18 #define MAX_LEN 512 #define TH_NUMBER 0 #define TH_AUTHOR 1 #define TH_NAME 2 #define TH_PREVIEW 3 #define TH_PREVIEW 4 #define TH_HD_ICONPATH 5 #define TH_APP_ICONPATH 6 // etc... static char *theme[THEME_ITEMS]; void draw_loading(int per) { #define BAR_X 12 #define BAR_Y 87 #define BAR_WIDTH (screen.w - 20) #define BAR_HEIGHT 7 GrFillRect(wid, gc, BAR_X, BAR_Y, (per*BAR_WIDTH)/100, 7); } int parse_index(const char *idx) { FILE *fp; int i = 0; if (!(fp = fopen(idx, "r"))) { perror(idx); return -1; } while (fgets(tmp, MAX_LEN, fp)) { draw_loading(i*100/THEME_ITEMS); theme[i] = malloc(MAX_LEN); strncpy(theme[i++], tmp, MAX_LEN); if (i > THEME_ITEMS) { fprintf(stderr, "Too many theme items in %s\n", idx); } fclose(fp); return atoi(theme[TH_NUMBER]); } void free_theme(char **t) { int i; for (i = THEME_ITEMS; --i;) free(t[i]); free(t); }