diff --git a/.gitignore b/.gitignore
index ad9f5f6..133de78 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,5 +4,8 @@ cosmopolitan
feuille
feuille.com
+feuille.com.dbg
cgi/feuille.cgi
+
+.ccls-cache
diff --git a/Makefile b/Makefile
index b5878a6..be133e4 100644
--- a/Makefile
+++ b/Makefile
@@ -10,18 +10,21 @@ TARGET$(COSMO) = feuille
SRC = feuille.c util.c server.c bin.c
OBJ = $(SRC:%.c=%.o)
+
all: $(TARGET) feuille.1 cgi
run: $(TARGET)
./$(TARGET)
+
clean:
@printf "%-8s $(OBJ)\n" "rm"
@rm -f $(OBJ)
distclean:
- @printf "%-8s feuille feuille.com $(OBJ)\n" "rm"
- @rm -f feuille feuille.com $(OBJ)
+ @printf "%-8s feuille feuille.com feuille.com.dbg $(OBJ)\n" "rm"
+ @rm -f feuille feuille.com feuille.com.dbg $(OBJ)
+
install: $(TARGET) feuille.1
@echo "installing executable file to $(PREFIX)/bin"
@@ -34,37 +37,44 @@ install: $(TARGET) feuille.1
@cp -f feuille.1 $(MAN)/man1
@chmod 644 $(MAN)/man1/feuille.1
-uninstall: $(PREFIX)/bin/$(TARGET) $(MAN)/man1/feuille.1
+uninstall:
@echo "removing executable file from $(PREFIX)/bin"
@rm -f "$(PREFIX)/bin/$(TARGET)"
@echo "removing manpage from $(MAN)/man1"
@rm -f $(MAN)/man1/feuille.1
-feuille.1: feuille.1.md config.mk
- @printf "%-8s feuille.1.md -o feuille.1\n" "pandoc"
- @sed "s/{VERSION}/$(VERSION)/g" feuille.1.md | pandoc -s -t man -o feuille.1
+# manpage
+feuille.1: feuille.1.md config.mk
+ @printf "%-8s $@.md -o $@\n" "pandoc"
+ @sed "s/{VERSION}/$(VERSION)/g" $@.md | pandoc -s -t man -o $@
+
+# standard libc
feuille: $(OBJ)
- @printf "%-8s $(OBJ) -o feuille\n" "$(CC)"
- @$(CC) $(OBJ) -o feuille $(LDFLAGS)
+ @printf "%-8s $(OBJ) -o $@\n" "$(CC)"
+ @$(CC) $(OBJ) -o $@ $(LDFLAGS)
# cosmopolitan libc
-feuille.com: cosmopolitan feuille
- @printf "%-8s feuille -o feuille.com\n" "objcopy"
- @objcopy -S -O binary feuille feuille.com
-
cosmopolitan:
@if [ ! -d cosmopolitan ]; then \
printf "%-8s https://justine.lol/cosmopolitan/cosmopolitan-amalgamation-2.2.zip\n" "curl" ;\
curl -sO "https://justine.lol/cosmopolitan/cosmopolitan-amalgamation-2.2.zip" ;\
\
printf "%-8s cosmopolitan-amalgamation-2.2.zip\n" "unzip" ;\
- unzip -qf cosmopolitan-amalgamation-2.2.zip -d cosmopolitan ;\
+ unzip -q cosmopolitan-amalgamation-2.2.zip -d cosmopolitan ;\
\
rm -rf cosmopolitan-amalgamation-* ;\
fi
+feuille.com.dbg: $(OBJ)
+ @printf "%-8s $(OBJ) -o $@\n" "$(CC)"
+ @$(CC) $(OBJ) -o $@ $(LDFLAGS)
+
+feuille.com: cosmopolitan feuille.com.dbg
+ @printf "%-8s $@.dbg -o $@\n" "objcopy"
+ @objcopy -S -O binary $@.dbg $@
+
# CGI script
ADDR = 127.0.0.1
PORT = 9999
@@ -73,9 +83,9 @@ cgi: cgi/feuille.cgi
cgi/feuille.cgi: cgi/feuille.cgi.c
@printf "%-8s cgi/feuille.cgi.c -o cgi/feuille.cgi\n" "$(CC)"
- @$(CC) cgi/feuille.cgi.c -o cgi/feuille.cgi -std=c99 -O3 -static -Wall -Wextra \
- -DADDR=\"$(ADDR)\" -DPORT=$(PORT) \
- $(INCS) $(LIBS)
+ @$(CC) $@.c -o $@ -std=c99 -O3 -static -Wall -Wextra \
+ -DADDR=\"$(ADDR)\" -DPORT=$(PORT) \
+ $(INCS) $(LIBS)
.SUFFIXES: .c .o
.c.o:
diff --git a/README.md b/README.md
index 71f0379..edcf858 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,7 @@ code quality, and security.
Table of Contents
- Usage
+ - Description
-
Installation
@@ -132,7 +133,8 @@ That sould be it. Have fun!
## Description
* Focuses on speed,
- * Multi-threaded (using `fork`)
+ * Handles multiple requests at once (using a pool of `fork`'ed
+ workers)
* Only does what it needs to do
* code quality,
@@ -159,7 +161,7 @@ That sould be it. Have fun!
* Works on nearly all POSIX-compliant OSes
* Can be run in the background and as a service
* IPv6-enabled
-* Now with 100% more (Cosmopolitan libc)[http://justine.lol/cosmopolitan/] support!
+* Now with 100% more [Cosmopolitan libc](http://justine.lol/cosmopolitan/) support!
## Installation
@@ -196,11 +198,11 @@ $ sudo make install
```
You can also build using the
-(Cosmopolitan libc)[http://justine.lol/cosmopolitan/], which will
+[Cosmopolitan libc](http://justine.lol/cosmopolitan/), which will
make an executable capable of running on Linux, OpenBSD, FreeBSD,
Mac... out of the box. To do so, build with the `COSMO` flag.
-It will produce `feuille` and `feuille.com`, the former being the
-debug binary, and the former the portable one.
+It will produce `feuille.com.dbg` and `feuille.com`, the former being
+the debug binary, and the latter the portable one.
If you wish to make a debug build, you can set `DEBUG` to whatever
comes to your mind.
diff --git a/arg.h b/arg.h
index 9c4d1bb..fef64f7 100644
--- a/arg.h
+++ b/arg.h
@@ -31,8 +31,7 @@
* by 20h
*/
-#ifndef _ARG_H_
-#define _ARG_H_
+#pragma once
#ifndef COSMOPOLITAN
#include
@@ -79,5 +78,3 @@ extern char *argv0;
(brk_ = 1, (argv[0][i_+1] != '\0')?\
(&argv[0][i_+1]) :\
(argc--, argv++, argv[0])))
-
-#endif
diff --git a/bin.h b/bin.h
index fddb7f0..dbb9a0c 100644
--- a/bin.h
+++ b/bin.h
@@ -11,8 +11,7 @@
* .
*/
-#ifndef _BIN_H_
-#define _BIN_H_
+#pragma once
#include "feuille.h"
@@ -21,5 +20,3 @@ int write_paste(char *, unsigned long, char *);
char *generate_id(int);
char *create_url(char *);
-
-#endif
diff --git a/config.mk b/config.mk
index d6b25f7..48af386 100644
--- a/config.mk
+++ b/config.mk
@@ -1,5 +1,5 @@
# feuille version
-VERSION = 2.1.0
+VERSION = 2.1.4
# paths (customize them to fit your system)
PREFIX = /usr/local
@@ -41,4 +41,4 @@ CFLAGS$(DEBUG) = -O3 -Wall -Wextra -Wno-sign-compare $(CCFLAGS)
LDFLAGS$(DEBUG) = -s $(CLDFLAGS)
# static build (uncomment)
-#LD_FLAGS += -static
+#LDFLAGS += -static
diff --git a/feuille.1 b/feuille.1
index f90ddb6..5906b17 100644
--- a/feuille.1
+++ b/feuille.1
@@ -14,7 +14,7 @@
. ftr VB CB
. ftr VBI CBI
.\}
-.TH "feuille" "1" "November 2022" "feuille 2.1.0" ""
+.TH "feuille" "1" "November 2022" "feuille 2.1.4" ""
.hy
.SH NAME
.PP
@@ -45,7 +45,7 @@ The difference is minimal, no need to worry about it.
Default: \f[V]131072\f[R]B (128KiB)
.TP
\f[B]-f\f[R]
-Makes \f[B]feuille\f[R] run in the forground.
+Makes \f[B]feuille\f[R] run in the foreground.
Default: disabled
.TP
\f[B]-h\f[R]
diff --git a/feuille.1.md b/feuille.1.md
index aecc491..2664d5a 100644
--- a/feuille.1.md
+++ b/feuille.1.md
@@ -30,7 +30,7 @@ and IPv6 addresses (won't work on OpenBSD).
: Default: `131072`B (128KiB)
**-f**
-: Makes **feuille** run in the forground.
+: Makes **feuille** run in the foreground.
: Default: disabled
**-h**
diff --git a/feuille.c b/feuille.c
index 27d2b94..6e2fc28 100644
--- a/feuille.c
+++ b/feuille.c
@@ -41,20 +41,20 @@ char *argv0;
/* default settings */
Settings settings = {
- .address = "0.0.0.0",
- .url = "http://localhost",
- .output = "/var/www/feuille",
- .user = "www",
+ .address = "0.0.0.0",
+ .url = "http://localhost",
+ .output = "/var/www/feuille",
+ .user = "www",
- .id_length = 4,
- .worker_count = 4,
- .port = 9999,
- .timeout = 2,
- .max_size = 1048576, /* = 1MiB = 1024 * 1024 */
- .buffer_size = 131072, /* = 128KiB = 1024 * 128 */
+ .id_length = 4,
+ .worker_count = 4,
+ .port = 9999,
+ .timeout = 2,
+ .max_size = 1048576, /* = 1MiB = 1024 * 1024 */
+ .buffer_size = 131072, /* = 128KiB = 1024 * 128 */
- .verbose = 0,
- .foreground = 0
+ .verbose = 0,
+ .foreground = 0
};
/* functions declarations */
@@ -389,11 +389,11 @@ int main(int argc, char *argv[])
if (setgid(gid) != 0 || getgid() != gid)
die(1, "could not switch to group for user `%s'.\n", settings.user);
- #ifndef COSMOPOLITAN
+#ifndef COSMOPOLITAN
/* initgroups doesn't work on cosmopolitan libc yet */
if (initgroups(settings.user, gid) != 0)
die(1, "could not initialize other groups for user `%s'.\n", settings.user);
- #endif
+#endif
/* switching user */
if (setuid(uid) != 0 || getuid() != uid)
diff --git a/feuille.h b/feuille.h
index fa87e0c..4894ada 100644
--- a/feuille.h
+++ b/feuille.h
@@ -11,8 +11,7 @@
* .
*/
-#ifndef _FEUILLE_H_
-#define _FEUILLE_H_
+#pragma once
typedef struct Settings {
char *address;
@@ -32,5 +31,3 @@ typedef struct Settings {
} Settings;
extern Settings settings;
-
-#endif
diff --git a/server.h b/server.h
index d72b18a..48e6796 100644
--- a/server.h
+++ b/server.h
@@ -11,8 +11,7 @@
* .
*/
-#ifndef _SERVER_H_
-#define _SERVER_H_
+#pragma once
#include "feuille.h"
@@ -23,5 +22,3 @@ void close_connection(int);
unsigned long read_paste(int, char **);
int send_response(int, char *);
-
-#endif
diff --git a/util.h b/util.h
index f074d15..5daeff1 100644
--- a/util.h
+++ b/util.h
@@ -11,11 +11,8 @@
* .
*/
-#ifndef _UTIL_H_
-#define _UTIL_H_
+#pragma once
void die(int, char *, ...);
void error(char *, ...);
void verbose(int, char *, ...);
-
-#endif