little patch

This commit is contained in:
Your Name 2025-06-08 21:55:26 +03:00
parent 77ade504f6
commit 8e401acc8c
3 changed files with 48 additions and 48 deletions

View file

@ -36,31 +36,31 @@ struct DB_STR *build_html_page(const struct CONFIG cfg, FILE *fp, const char *fi
/* Images */ /* Images */
size_t images = 0; size_t images = 0;
struct DB_STR *p = db; struct DB_STR *bckp = db;
while (p != NULL) { while (bckp != NULL) {
struct DB_STR *i = p->next; struct DB_STR *ptr = bckp->next;
if (strcmp(file, "index")) { if (strcmp(file, "index")) {
char flag = 1; char flag = 1;
for (size_t i = 0; i < p->size; i++) for (size_t i = 0; i < bckp->size; i++)
if (!strcmp(p->tags[i], file)) if (!strcmp(bckp->tags[i], file))
flag = 0; flag = 0;
if (flag) { if (flag) {
p = i; bckp = ptr;
continue; continue;
} }
} }
fprintf(fp, "<a href='%s'>\n<img src='%s' alt='%s'></a><br>\n%s<br>\n", p->filename, p->filename, p->filename, GetDate(cfg.date_fmt, p->birthtime)); fprintf(fp, "<a href='%s'>\n<img src='%s' alt='%s'></a><br>\n%s<br>\n", bckp->filename, bckp->filename, bckp->filename, GetDate(cfg.date_fmt, bckp->birthtime));
for (size_t i = 0; i < p->size; i++) for (size_t i = 0; i < bckp->size; i++)
fprintf(fp, " • <a href='%s.html'>%s</a>", p->tags[i], p->tags[i]); fprintf(fp, " • <a href='%s.html'>%s</a>", bckp->tags[i], bckp->tags[i]);
if (p->desc) if (bckp->desc)
fprintf(fp, " %s", p->desc); fprintf(fp, " %s", bckp->desc);
fputs("\n<br><br><br>\n", fp); fputs("\n<br><br><br>\n", fp);
p = i; bckp = ptr;
images++; images++;
if (images == cfg.posts_at_page) if (images == cfg.posts_at_page)
break; break;
@ -88,7 +88,7 @@ struct DB_STR *build_html_page(const struct CONFIG cfg, FILE *fp, const char *fi
} }
fprintf(fp, "\n</center></div>\n</body>\n</html>\n"); fprintf(fp, "\n</center></div>\n</body>\n</html>\n");
return p; return bckp;
} }
void build_html(const struct CONFIG cfg, const char *file, const struct UNIQ_TAGS ut, struct DB_STR *db) { void build_html(const struct CONFIG cfg, const char *file, const struct UNIQ_TAGS ut, struct DB_STR *db) {
@ -97,9 +97,9 @@ void build_html(const struct CONFIG cfg, const char *file, const struct UNIQ_TAG
/* Count pages */ /* Count pages */
size_t count = 0; size_t count = 0;
struct DB_STR *p = db; struct DB_STR *bckp = db;
while (p != NULL) { while (bckp != NULL) {
struct DB_STR *i = p->next; struct DB_STR *ptr = bckp->next;
if (count > cfg.posts_at_page) { if (count > cfg.posts_at_page) {
count = 0; count = 0;
@ -110,15 +110,15 @@ void build_html(const struct CONFIG cfg, const char *file, const struct UNIQ_TAG
count++; count++;
else { else {
for (size_t i = 0; i < p->size; i++) for (size_t i = 0; i < bckp->size; i++)
if (!strcmp(file, p->tags[i])) if (!strcmp(file, bckp->tags[i]))
count++; count++;
} }
p = i; bckp = ptr;
} }
p = db; bckp = db;
while (1) { while (1) {
char *new_path; char *new_path;
if (page == 0) if (page == 0)
@ -132,8 +132,8 @@ void build_html(const struct CONFIG cfg, const char *file, const struct UNIQ_TAG
return; return;
/* Builders */ /* Builders */
p = build_html_page(cfg, fp, file, ut, p, page, pages); bckp = build_html_page(cfg, fp, file, ut, bckp, page, pages);
if (p == NULL) { if (bckp == NULL) {
fclose(fp); fclose(fp);
break; break;
} }
@ -154,29 +154,29 @@ void build_xml(const struct CONFIG cfg, struct DB_STR *db) {
/* Content */ /* Content */
size_t count = 0; size_t count = 0;
struct DB_STR *p = db; struct DB_STR *bckp = db;
while (p) { while (bckp) {
struct DB_STR *i = p->next; struct DB_STR *ptr = bckp->next;
/* Post */ /* Post */
fprintf(fp, "\n<item>\n\t<title>%s</title>\n\t<link>%s%s%s</link>\n\t<guid>%s%s%s</guid>\n\t<pubDate>\n\t\t%s\t</pubDate>\n\t<description><![CDATA[\n\t\t<p><img src='%s%s%s' alt='plup'></p>\n\t\t<p>", fprintf(fp, "\n<item>\n\t<title>%s</title>\n\t<link>%s%s%s</link>\n\t<guid>%s%s%s</guid>\n\t<pubDate>\n\t\t%s\t</pubDate>\n\t<description><![CDATA[\n\t\t<p><img src='%s%s%s' alt='plup'></p>\n\t\t<p>",
p->filename, bckp->filename,
LINK, CHECK_URL(LINK), p->filename, LINK, CHECK_URL(LINK), bckp->filename,
LINK, CHECK_URL(LINK), p->filename, LINK, CHECK_URL(LINK), bckp->filename,
GetDate(cfg.date_fmt, p->birthtime), GetDate(cfg.date_fmt, bckp->birthtime),
LINK, CHECK_URL(LINK), p->filename); LINK, CHECK_URL(LINK), bckp->filename);
/* Tags */ /* Tags */
for (size_t i = 0; i < p->size; i++) for (size_t i = 0; i < bckp->size; i++)
fprintf(fp, "<a href='%s%s%s.html'> %s</a>&nbsp; ", fprintf(fp, "<a href='%s%s%s.html'> %s</a>&nbsp; ",
LINK, CHECK_URL(LINK), p->tags[i], LINK, CHECK_URL(LINK), bckp->tags[i],
p->tags[i]); bckp->tags[i]);
fputs("</p>\n\t]]></description>\n</item>", fp); fputs("</p>\n\t]]></description>\n</item>", fp);
if (count == cfg.max_posts) if (count == cfg.max_posts)
break; break;
p = i; bckp = ptr;
count++; count++;
} }
@ -189,35 +189,35 @@ char **uniq(struct DB_STR *db, size_t *uniq_size) {
if (uniq_tag == NULL) if (uniq_tag == NULL)
return NULL; return NULL;
struct DB_STR *p = db; struct DB_STR *bckp = db;
while (p != NULL) { while (bckp != NULL) {
struct DB_STR *i = p->next; struct DB_STR *ptr = bckp->next;
for (size_t i = 0; i < p->size; i++) { for (size_t i = 0; i < bckp->size; i++) {
if (p->tags == NULL) if (bckp->tags == NULL)
break; break;
char flag = 0; char flag = 0;
for (size_t j = 0; j < *uniq_size; j++) { for (size_t j = 0; j < *uniq_size; j++) {
if (!strcmp(p->tags[i], uniq_tag[j])) if (!strcmp(bckp->tags[i], uniq_tag[j]))
flag = 1; flag = 1;
} }
if (flag) if (flag)
continue; continue;
char **bckp = realloc(uniq_tag, sizeof(char *) * (*uniq_size + 1)); char **ut_bckp = realloc(uniq_tag, sizeof(char *) * (*uniq_size + 1));
if (bckp == NULL) { if (bckp == NULL) {
free(uniq_tag); free(uniq_tag);
return NULL; return NULL;
} }
uniq_tag = bckp; uniq_tag = ut_bckp;
uniq_tag[*uniq_size] = p->tags[i]; uniq_tag[*uniq_size] = bckp->tags[i];
(*uniq_size)++; (*uniq_size)++;
} }
p = i; bckp = ptr;
} }
return uniq_tag; return uniq_tag;

View file

@ -10,7 +10,7 @@
void free_db(struct DB_STR *db) { void free_db(struct DB_STR *db) {
while (db != NULL) { while (db != NULL) {
struct DB_STR *i = db->next; struct DB_STR *ptr = db->next;
if (db->filename != NULL) if (db->filename != NULL)
free(db->filename); free(db->filename);
@ -27,7 +27,7 @@ void free_db(struct DB_STR *db) {
} }
free(db); free(db);
db = i; db = ptr;
} }
} }

View file

@ -20,7 +20,7 @@ void help(void) {
char *gen_id(const char *filename) { char *gen_id(const char *filename) {
const char *alf = "qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM"; const char *alf = "qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM";
char *ext = strrchr(filename, '.'); const char *ext = strrchr(filename, '.');
if (ext == NULL) if (ext == NULL)
ext = ""; ext = "";
@ -216,7 +216,7 @@ int main(int argc, char **argv) {
ret = rebuild(cfg); ret = rebuild(cfg);
else if (!strcmp(argv[0], "version")) else if (!strcmp(argv[0], "version"))
printf("%s (8img) version: 2\nWritten under WTFPL License.\n", cfg.prog_name); printf("%s (8img) version: 2.0.1\nWritten under WTFPL License.\n", cfg.prog_name);
else else
help(); help();