static int /* O - 1 on success, 0 on failure */ save_rss(cups_array_t *rss, /* I - RSS messages */ const char *filename, /* I - File to save to */ const char *baseurl) /* I - Base URL */ { FILE *fp; /* File pointer */ _cups_rss_t *msg; /* Current message */ char date[1024]; /* Current date */ char *href; /* Escaped base URL */ if ((fp = fopen(filename, "w")) == NULL) { fprintf(stderr, "ERROR: Unable to create %s: %s\n", filename, strerror(errno)); return (0); } fchmod(fileno(fp), 0644); fputs("<?xml version=\"1.0\"?>\n", fp); fputs("<rss version=\"2.0\">\n", fp); fputs(" <channel>\n", fp); fputs(" <title>CUPS RSS Feed</title>\n", fp); href = xml_escape(baseurl); fprintf(fp, " <link>%s</link>\n", href); free(href); fputs(" <description>CUPS RSS Feed</description>\n", fp); fputs(" <generator>" CUPS_SVERSION "</generator>\n", fp); fputs(" <ttl>1</ttl>\n", fp); fprintf(fp, " <pubDate>%s</pubDate>\n", httpGetDateString2(time(NULL), date, sizeof(date))); for (msg = (_cups_rss_t *)cupsArrayLast(rss); msg; msg = (_cups_rss_t *)cupsArrayPrev(rss)) { fputs(" <item>\n", fp); fprintf(fp, " <title>%s</title>\n", msg->subject); fprintf(fp, " <description>%s</description>\n", msg->text); if (msg->link_url) fprintf(fp, " <link>%s</link>\n", msg->link_url); fprintf(fp, " <pubDate>%s</pubDate>\n", httpGetDateString2(msg->event_time, date, sizeof(date))); fprintf(fp, " <guid>%d</guid>\n", msg->sequence_number); fputs(" </item>\n", fp); } fputs(" </channel>\n", fp); fputs("</rss>\n", fp); return (!fclose(fp)); }
void cgiSetCookie(const char *name, /* I - Name */ const char *value, /* I - Value */ const char *path, /* I - Path (typically "/") */ const char *domain, /* I - Domain name */ time_t expires, /* I - Expiration date (0 for session) */ int secure) /* I - Require SSL */ { num_cookies = cupsAddOption(name, value, num_cookies, &cookies); printf("Set-Cookie: %s=%s;", name, value); if (path) printf(" path=%s;", path); if (domain) printf(" domain=%s;", domain); if (expires) { char date[256]; /* Date string */ printf(" expires=%s;", httpGetDateString2(expires, date, sizeof(date))); } if (secure) puts(" httponly; secure;"); else puts(" httponly;"); }