fixed rss builder

This commit is contained in:
Your Name 2025-02-20 13:43:56 +03:00
parent b7420af3ad
commit eac855aebb
2 changed files with 12 additions and 19 deletions

View File

@ -13,7 +13,7 @@
/* RSS generator */ /* RSS generator */
#define LINK "mygallery.com" #define LINK "my_gallery.com"
#define XML_FILE "index.xml" #define XML_FILE "index.xml"
#define LANGUAGE "en-US" #define LANGUAGE "en-US"

29
img.c
View File

@ -8,6 +8,8 @@
#include <time.h> #include <time.h>
#include "config.h" #include "config.h"
#define CHECK_URL(x) ( (sizeof(x) > 2 && x[sizeof(x) - 2] == '/') ? "" : "/" )
struct DB_STR { struct DB_STR {
char *filename; char *filename;
@ -402,30 +404,21 @@ void build_xml(const char *file, struct DB_STR *db) {
while (p) { while (p) {
struct DB_STR *i = p->next; struct DB_STR *i = p->next;
/* Link to file */
size_t size = sizeof(LINK) + strlen(p->filename) + 1;
char *new_link = malloc(size + 1);
if (new_link == NULL) {
fprintf(stdout, "8img: malloc: %s: %s\n", p->filename, strerror(errno));
continue;
}
if (LINK[sizeof(LINK) - 1] == '/')
snprintf(new_link, size, "%s%s", LINK, p->filename);
else
snprintf(new_link, size, "%s/%s", LINK, p->filename);
/* Post */ /* Post */
fprintf(fp, "\n<item>\n\t<title>%s</title>\n\t<link>%s</link>\n\t<guid>%s</guid>\n\t<pubDate>\n\t\t%s\t</pubDate>\n\t<description><![CDATA[\n\t\t<p><img src='%s' alt='plup'></p>\n\t\t<p>", p->filename, new_link, new_link, ctime(&p->stat.st_ctime), new_link); 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,
LINK, CHECK_URL(LINK), p->filename,
LINK, CHECK_URL(LINK), p->filename,
ctime(&p->stat.st_ctime),
LINK, CHECK_URL(LINK), p->filename);
/* Tags */ /* Tags */
for (size_t i = 0; i < p->size; i++) for (size_t i = 0; i < p->size; i++)
fprintf(fp, "<a href='%s.html'> %s</a>&nbsp; ", p->tags[i], p->tags[i]); fprintf(fp, "<a href='%s%s%s.html'> %s</a>&nbsp; ",
LINK, CHECK_URL(LINK), p->tags[i],
p->tags[i]);
fputs("</p>\n\t]]></description>\n</item>", fp); fputs("</p>\n\t]]></description>\n</item>", fp);
free(new_link);
if (count == MAX_POST_COUNT) if (count == MAX_POST_COUNT)
break; break;