* httpd.c: implementation of httpd.h.
*/
-#define _GNU_SOURCE
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <errno.h>
-#include <assert.h>
-#include <unistd.h>
-#include <pwd.h>
-#include <ctype.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <fcntl.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netinet/in.h>
-#include <syslog.h>
-
-#include "malloc.h"
+#include "agedu.h"
+#include "alloc.h"
#include "html.h"
#include "httpd.h"
{
return dupfmt("HTTP/1.1 %s %s\r\n"
"Date: %D\r\n"
- "Server: agedu\r\n"
+ "Server: " PNAME "\r\n"
"Connection: close\r\n"
"%s"
"Content-Type: text/html; charset=US-ASCII\r\n"
return dupfmt("HTTP/1.1 200 OK\r\n"
"Date: %D\r\n"
"Expires: %D\r\n"
- "Server: agedu\r\n"
+ "Server: " PNAME "\r\n"
"Connection: close\r\n"
"Content-Type: %s\r\n"
"\r\n"
/* Restore the request to the way we received it. */
*z2 = c2;
*z1 = c1;
- text = dupfmt("<code>agedu</code> received the HTTP request"
+ text = dupfmt("<code>" PNAME "</code> received the HTTP request"
" \"<code>%h</code>\", which contains no URL.",
line);
ret = http_error("400", "Bad request", NULL, text);
}
if (!magic_access && !auth_correct) {
- if (auth_string && !auth_provided) {
+ if (auth_string) {
ret = http_error("401", "Unauthorized",
- "WWW-Authenticate: Basic realm=\"agedu\"\r\n",
- "Please authenticate to view these pages.");
+ "WWW-Authenticate: Basic realm=\""PNAME"\"\r",
+ "\nYou must authenticate to view these pages.");
} else {
ret = http_error("403", "Forbidden", NULL,
"This is a restricted-access set of pages.");
socklen_t addrlen;
struct html_config cfg = *incfg;
- cfg.format = "%lu";
+ cfg.format = "%.0lu";
/*
* Establish the listening socket and retrieve its port
if (dcfg->basicauthdata) {
userpass = dcfg->basicauthdata;
} else {
- sprintf(username, "agedu");
+ strcpy(username, PNAME);
rname = "/dev/urandom";
fd = open(rname, O_RDONLY);
if (fd < 0) {
if (authmask != HTTPD_AUTH_NONE)
printf("Web server is unauthenticated\n");
} else {
- fprintf(stderr, "agedu: authentication method not supported\n");
+ fprintf(stderr, PNAME ": authentication method not supported\n");
exit(1);
}
if (!dcfg->address) {
*/
while (1) {
fd_set rfds, wfds;
- int i, j, maxfd, ret;
+ int i, j;
+ SELECT_TYPE_ARG1 maxfd;
+ int ret;
#define FD_SET_MAX(fd, set, max) \
do { FD_SET((fd),(set)); (max) = ((max)<=(fd)?(fd)+1:(max)); } while(0)
}
nfds = i;
- ret = select(maxfd, &rfds, &wfds, NULL, NULL);
+ ret = select(maxfd, SELECT_TYPE_ARG234 &rfds,
+ SELECT_TYPE_ARG234 &wfds, SELECT_TYPE_ARG234 NULL,
+ SELECT_TYPE_ARG5 NULL);
if (ret <= 0) {
if (ret < 0 && (errno != EINTR)) {
fprintf(stderr, "select: %s", strerror(errno));