cleanup
- 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:
parent
bcd1e1972d
commit
f5be0d36c5
|
@ -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;
|
||||
}
|
||||
|
|
26
sfeed_html.c
26
sfeed_html.c
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -34,7 +34,5 @@ main(void)
|
|||
printlink(fields[FieldLink], fields[FieldFeedUrl], stdout);
|
||||
putchar('\n');
|
||||
}
|
||||
free(line);
|
||||
line = NULL;
|
||||
return EXIT_SUCCESS;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -86,5 +86,5 @@ main(int argc, char *argv[])
|
|||
|
||||
xmlparser_parse(&x);
|
||||
|
||||
return found > 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
return found > 0 ? 0: 1;
|
||||
}
|
||||
|
|
|
@ -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
14
util.c
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue