#include #include #include #include #include #define STATUS_FILE "/var/lib/lowmem" #define TEMPLATE_FILE_EXTENSION ".templates" #define TEMPLATE_LINE_MAX_LENGTH 10000 /* languagechooser/country-name is * very very long */ #define FILENAME_LENGTH 256 #define TAG_LENGTH 30 #define LANG_TO_KEEP "en" char tags_to_remove[][TAG_LENGTH] = { "Default-", "Description-", "Choices-", "Indices-" }; int trimtemplate(char *filename) { int ignore = 0; FILE *fd = NULL; FILE *tmpfd = NULL; char template_line[TEMPLATE_LINE_MAX_LENGTH]; char tmpfilename[FILENAME_LENGTH]; int i=0; int nbr_tags = sizeof(tags_to_remove)/TAG_LENGTH; char tag_to_keep[TAG_LENGTH]; if ((fd = fopen(filename, "r")) == NULL) { perror("unable to open template file"); return 0; } snprintf(tmpfilename, FILENAME_LENGTH,"%s.%s", filename,"tmp"); if ((tmpfd = fopen(tmpfilename, "w")) == NULL) { perror("unable to open temp file"); return 0; } ignore = 0; /* parse template file */ while (fgets(template_line, TEMPLATE_LINE_MAX_LENGTH, fd) != NULL) { if (ignore == 1 && strstr(template_line, " ") == template_line) { continue; } ignore = 0; for( i=0; id_name, TEMPLATE_FILE_EXTENSION) != NULL) { snprintf(abs_path_file_name, FILENAME_LENGTH,"%s/%s",dir,dit->d_name); if (trimtemplate(abs_path_file_name) == 0) { return 0; } } } if (closedir(dip) == -1) { return 0; } return 1; } if (S_ISREG(buf.st_mode)) { char *filename = NULL; filename = argv[1]; if (trimtemplate(filename) == 0) { return 0; } return 1; } return 0; }