- dont free at end (not needed in our case).
- use 0 and 1 instead of EXIT_SUCCESS, EXIT_FAILURE.
- use err (from err.h) instead of custom die().
This commit is contained in:
Hiltjo Posthuma 2015-01-02 15:32:45 +01:00
parent bcd1e1972d
commit f5be0d36c5
8 changed files with 41 additions and 106 deletions

View File

@ -1,4 +1,5 @@
#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <limits.h>
#include <stdio.h>
@ -18,36 +19,21 @@ static FILE *fpcontent = NULL;
static char *line = NULL;
static struct feed *feeds = NULL;
/* print error message to stderr */
static void
die(const char *s)
{
fprintf(stderr, "sfeed_frames: %s\n", s);
exit(EXIT_FAILURE);
}
static void
cleanup(void)
{
if(fpmenu) {
if(fpmenu)
fclose(fpmenu);
fpmenu = NULL;
}
if(fpitems) {
if(fpitems)
fclose(fpitems);
fpitems = NULL;
}
if(fpindex) {
if(fpindex)
fclose(fpindex);
fpindex = NULL;
}
if(fpcontent) {
if(fpcontent)
fclose(fpcontent);
fpcontent = NULL;
}
free(line); /* free line */
line = NULL;
feedsfree(feeds); /* free feeds linked-list */
fpmenu = NULL;
fpitems = NULL;
fpindex = NULL;
fpcontent = NULL;
}
/* print text, ignore tabs, newline and carriage return etc
@ -126,17 +112,17 @@ main(int argc, char *argv[])
/* write main index page */
if(snprintf(dirpath, sizeof(dirpath), "%s/index.html", basepath) <= 0)
die("snprintf() format error");
err(1, "snprintf");
if(!(fpindex = fopen(dirpath, "w+b")))
die("can't write index.html");
err(1, "fopen");
if(snprintf(dirpath, sizeof(dirpath), "%s/menu.html", basepath) <= 0)
die("snprintf() format error");
err(1, "snprintf");
if(!(fpmenu = fopen(dirpath, "w+b")))
die("can't write menu.html");
err(1, "fopen: can't write menu.html");
if(snprintf(dirpath, sizeof(dirpath), "%s/items.html", basepath) <= 0)
die("snprintf() format error");
err(1, "snprintf");
if(!(fpitems = fopen(dirpath, "w+b")))
die("can't write items.html");
err(1, "fopen");
fputs("<html><head><link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\" />"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /></head>"
"<body class=\"frame\"><div id=\"items\">", fpitems);
@ -159,20 +145,17 @@ main(int argc, char *argv[])
continue;
if(snprintf(dirpath, sizeof(dirpath), "%s/%s", basepath, name) <= 0)
die("snprintf() format error");
err(1, "snprintf");
/* directory doesn't exist: try to create it. */
if(stat(dirpath, &st) == -1) {
if(mkdir(dirpath, S_IRWXU) == -1) {
fprintf(stderr, "sfeed_frames: can't make directory '%s': %s\n",
dirpath, strerror(errno));
exit(EXIT_FAILURE);
}
if(mkdir(dirpath, S_IRWXU) == -1)
err(1, "sfeed_frames: can't make directory '%s'", dirpath);
}
strlcpy(reldirpath, name, sizeof(reldirpath));
strlcpy(reldirpath, name, sizeof(reldirpath)); /* TODO: check truncation */
if(!(f = calloc(1, sizeof(struct feed))))
die("can't allocate enough memory");
err(1, "calloc");
if(totalfeeds) { /* end previous one. */
fputs("</table>\n", fpitems);
@ -185,7 +168,7 @@ main(int argc, char *argv[])
}
/* write menu link if new. */
if(!(fcur->name = strdup(feedname)))
die("can't allocate enough memory");
err(1, "strdup");
if(fields[FieldFeedName][0] != '\0') {
fputs("<h2 id=\"", fpitems);
printfeednameid(fcur->name, fpitems);
@ -202,9 +185,9 @@ main(int argc, char *argv[])
if(!(namelen = makepathname(fields[FieldTitle], name, sizeof(name))))
continue;
if(snprintf(filepath, sizeof(filepath), "%s/%s.html", dirpath, name) <= 0)
die("snprintf() format error");
err(1, "snprintf");
if(snprintf(relfilepath, sizeof(relfilepath), "%s/%s.html", reldirpath, name) <= 0)
die("snprintf() format error");
err(1, "snprintf");
/* file doesn't exist yet and has write access */
if(access(filepath, F_OK) != 0 && (fpcontent = fopen(filepath, "w+b"))) {
@ -303,5 +286,5 @@ main(int argc, char *argv[])
"</frameset>\n"
"</html>", fpindex);
return EXIT_SUCCESS;
return 0;
}

View File

@ -1,4 +1,5 @@
#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@ -11,22 +12,6 @@ static int showsidebar = 1; /* show sidebar ? */
static struct feed *feeds = NULL; /* start of feeds linked-list. */
static char *line = NULL;
static void
cleanup(void)
{
free(line); /* free line */
line = NULL;
feedsfree(feeds); /* free feeds linked-list */
}
/* print error message to stderr */
static void
die(const char *s)
{
fprintf(stderr, "sfeed_html: %s\n", s);
exit(EXIT_FAILURE);
}
int
main(void)
{
@ -37,7 +22,6 @@ main(void)
time_t parsedtime, comparetime;
size_t size = 0;
atexit(cleanup);
comparetime = time(NULL) - (3600 * 24); /* 1 day is old news */
fputs(
"<!DOCTYPE HTML>\n"
@ -50,7 +34,7 @@ main(void)
stdout);
if(!(fcur = calloc(1, sizeof(struct feed))))
die("can't allocate enough memory");
err(1, "calloc");
feeds = fcur;
while(parseline(&line, &size, fields, FieldLast, '\t', stdin) > 0) {
@ -63,7 +47,7 @@ main(void)
/* first of feed section or new feed section. */
if(!totalfeeds || (fcur && strcmp(fcur->name, fields[FieldFeedName]))) {
if(!(f = calloc(1, sizeof(struct feed))))
die("can't allocate enough memory");
err(1, "calloc");
/*f->next = NULL;*/
if(totalfeeds) { /* end previous one. */
fputs("</table>\n", stdout);
@ -82,7 +66,7 @@ main(void)
/* TODO: memcpy and make fcur->name static? */
if(!(fcur->name = strdup(fields[FieldFeedName])))
die("can't allocate enough memory");
err(1, "strdup");
if(fields[FieldFeedName][0] != '\0') {
fputs("<h2 id=\"", stdout);
@ -153,5 +137,5 @@ main(void)
fprintf(stdout, "%lu", totalnew);
fputs(")</title>\n</html>", stdout);
return EXIT_SUCCESS;
return 0;
}

View File

@ -74,7 +74,6 @@ int
main(void)
{
xmlparser_init(&parser, stdin);
parser.xmltagstart = xml_handler_start_element;
parser.xmltagend = xml_handler_end_element;
parser.xmlattr = xml_handler_attr;
@ -91,5 +90,6 @@ main(void)
" # feed <name> <feedurl> <basesiteurl> [encoding]\n", stdout);
xmlparser_parse(&parser);
fputs("}\n", stdout);
return EXIT_SUCCESS;
return 0;
}

View File

@ -34,7 +34,5 @@ main(void)
printlink(fields[FieldLink], fields[FieldFeedUrl], stdout);
putchar('\n');
}
free(line);
line = NULL;
return EXIT_SUCCESS;
return 0;
}

View File

@ -1,4 +1,5 @@
#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@ -10,22 +11,6 @@
static struct feed *feeds = NULL; /* start of feeds linked-list. */
static char *line = NULL;
static void
cleanup(void)
{
free(line); /* free line */
line = NULL;
feedsfree(feeds); /* free feeds linked-list */
}
/* print error message to stderr */
static void
die(const char *s)
{
fprintf(stderr, "sfeed_stats: %s\n", s);
exit(EXIT_FAILURE);
}
int
main(void)
{
@ -36,11 +21,10 @@ main(void)
time_t parsedtime, comparetime, timenewest = 0;
size_t size = 0;
atexit(cleanup);
comparetime = time(NULL) - (3600 * 24); /* 1 day is old news */
if(!(fcur = calloc(1, sizeof(struct feed))))
die("can't allocate enough memory");
err(1, "calloc");
feeds = fcur;
while(parseline(&line, &size, fields, FieldLast, '\t', stdin) > 0) {
@ -52,7 +36,7 @@ main(void)
/* first of feed section or new feed section. */
if(!totalfeeds || (fcur && strcmp(fcur->name, fields[FieldFeedName]))) {
if(!(f = calloc(1, sizeof(struct feed))))
die("can't allocate enough memory");
err(1, "calloc");
if(totalfeeds) { /* end previous one. */
fcur->next = f;
fcur = f;
@ -73,7 +57,7 @@ main(void)
/* TODO: memcpy and make fcur->name static? */
if(!(fcur->name = strdup(fields[FieldFeedName])))
die("can't allocate enough memory");
err(1, "strdup");
totalfeeds++;
}
@ -95,5 +79,5 @@ main(void)
printf(" ================================\n");
printf("%c %-20.20s [%4lu/%-4lu] %s\n", totalnew > 0 ? 'N' : ' ', "Total:",
totalnew, totalitems, timenewestformat);
return EXIT_SUCCESS;
return 0;
}

View File

@ -86,5 +86,5 @@ main(int argc, char *argv[])
xmlparser_parse(&x);
return found > 0 ? EXIT_SUCCESS : EXIT_FAILURE;
return found > 0 ? 0: 1;
}

View File

@ -15,7 +15,7 @@ xmltagstart(XMLParser *p, const char *tag, size_t taglen)
/* optimization: try to find processing instruction at start */
if(tags > 3)
exit(EXIT_FAILURE);
exit(1);
isxmlpi = (!strncasecmp(tag, "?xml", taglen)) ? 1 : 0;
tags++;
}
@ -47,7 +47,7 @@ xmlattr(XMLParser *p, const char *tag, size_t taglen, const char *name,
putc(tolower((int)*value), stdout);
putchar('\n');
}
exit(EXIT_SUCCESS);
exit(0);
}
}
@ -63,5 +63,5 @@ main(void)
xmlparser_parse(&x);
return EXIT_FAILURE;
return 1;
}

14
util.c
View File

@ -97,20 +97,6 @@ printhtmlencoded(const char *s, FILE *fp) {
}
}
void
feedsfree(struct feed *f)
{
struct feed *next = NULL;
for(; f; f = next) {
next = f->next;
f->next = NULL;
free(f->name);
f->name = NULL;
free(f);
}
}
void
printutf8pad(FILE *fp, const char *s, size_t len, int pad)
{