This repository has been archived by the owner on Jul 18, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Mattias Andrée <[email protected]>
- Loading branch information
Showing
19 changed files
with
211 additions
and
1,771 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,9 @@ | ||
_/ | ||
/bin/ | ||
/obj/ | ||
.* | ||
!.git* | ||
*~ | ||
\#*\# | ||
*.swo | ||
*.swp | ||
*.bak | ||
*\#* | ||
*.o | ||
*.out | ||
*.gch | ||
*.su | ||
*.ps | ||
*.dvi | ||
*.info | ||
|
||
/orphan-reaper | ||
/orphan-reaper.test | ||
/reapd | ||
/reapd.test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,236 +1,51 @@ | ||
# Copying and distribution of this file, with or without modification, | ||
# are permitted in any medium without royalty provided the copyright | ||
# notice and this notice are preserved. This file is offered as-is, | ||
# without any warranty. | ||
.POSIX: | ||
|
||
CONFIGFILE = config.mk | ||
include $(CONFIGFILE) | ||
|
||
# The package path prefix, if you want to install to another root, set DESTDIR to that root. | ||
PREFIX = /usr | ||
# The binary path excluding prefix. | ||
BIN = /bin | ||
# The library binary path excluding prefix. | ||
LIBEXEC = /libexec | ||
# The resource path excluding prefix. | ||
DATA = /share | ||
# The binary path including prefix. | ||
BINDIR = $(PREFIX)$(BIN) | ||
# The library binary path including prefix. | ||
LIBEXECDIR = $(PREFIX)$(LIBEXEC) | ||
# The resource path including prefix. | ||
DATADIR = $(PREFIX)$(DATA) | ||
# The generic documentation path including prefix | ||
DOCDIR = $(DATADIR)/doc | ||
# The info manual documentation path including prefix | ||
INFODIR = $(DATADIR)/info | ||
# The man page documentation path including prefix | ||
MANDIR = $(DATADIR)/man | ||
# The man page section 1 path including prefix | ||
MAN1DIR = $(MANDIR)/man1 | ||
# The license base path including prefix. | ||
LICENSEDIR = $(DATADIR)/licenses | ||
|
||
|
||
# The name of the package as it should be installed. | ||
PKGNAME = orphan-reaper | ||
# The name of the command as it should be installed. | ||
COMMAND = orphan-reaper | ||
|
||
|
||
# Flags to compile with. | ||
USER_FLAGS = $(CFLAGS) $(LDFLAGS) $(CPPFLAGS) | ||
WARN = -Wall -Wextra -pedantic | ||
OPTIMISE = -O3 | ||
DEFS = -D'LIBEXECDIR="$(LIBEXECDIR)"' | ||
C_FLAGS = $(OPTIMISE) $(WARN) $(DEFS) $(USER_FLAGS) | ||
|
||
|
||
|
||
# Build rules. | ||
|
||
.PHONY: default | ||
default: command info shell | ||
|
||
.PHONY: all | ||
all: command doc shell | ||
|
||
# Build rules for the command. | ||
|
||
.PHONY: command | ||
command: bin/orphan-reaper bin/reapd | ||
|
||
bin/%: src/%.c | ||
mkdir -p bin | ||
$(CC) $(C_FLAGS) -o $@ $< | ||
|
||
# Build rules for documentation. | ||
|
||
.PHONY: doc | ||
doc: info pdf dvi ps | ||
|
||
.PHONY: info | ||
info: bin/orphan-reaper.info | ||
bin/%.info: doc/info/%.texinfo doc/info/fdl.texinfo | ||
@mkdir -p bin | ||
makeinfo $< | ||
mv $*.info $@ | ||
|
||
.PHONY: pdf | ||
pdf: bin/orphan-reaper.pdf | ||
bin/%.pdf: doc/info/%.texinfo doc/info/fdl.texinfo | ||
@mkdir -p obj/pdf bin | ||
cd obj/pdf ; yes X | texi2pdf ../../$< | ||
mv obj/pdf/$*.pdf $@ | ||
|
||
.PHONY: dvi | ||
dvi: bin/orphan-reaper.dvi | ||
bin/%.dvi: doc/info/%.texinfo doc/info/fdl.texinfo | ||
@mkdir -p obj/dvi bin | ||
cd obj/dvi ; yes X | $(TEXI2DVI) ../../$< | ||
mv obj/dvi/$*.dvi $@ | ||
|
||
.PHONY: ps | ||
ps: bin/orphan-reaper.ps | ||
bin/%.ps: doc/info/%.texinfo doc/info/fdl.texinfo | ||
@mkdir -p obj/ps bin | ||
cd obj/ps ; yes X | texi2pdf --ps ../../$< | ||
mv obj/ps/$*.ps $@ | ||
|
||
# Build rules for shell auto-completion. | ||
|
||
.PHONY: shell | ||
shell: bash zsh fish | ||
|
||
.PHONY: bash | ||
bash: bin/orphan-reaper.bash | ||
bin/orphan-reaper.bash: src/completion | ||
@mkdir -p bin | ||
auto-auto-complete bash --output $@ --source $< | ||
|
||
.PHONY: zsh | ||
zsh: bin/orphan-reaper.zsh | ||
bin/orphan-reaper.zsh: src/completion | ||
@mkdir -p bin | ||
auto-auto-complete zsh --output $@ --source $< | ||
|
||
.PHONY: fish | ||
fish: bin/orphan-reaper.fish | ||
bin/orphan-reaper.fish: src/completion | ||
@mkdir -p bin | ||
auto-auto-complete fish --output $@ --source $< | ||
all: orphan-reaper reapd orphan-reaper.test reapd.test | ||
|
||
.o: | ||
$(CC) -o $@ $^ $(LDFLAGS) | ||
|
||
# Install rules. | ||
orphan-reaper.o: orphan-reaper.c arg.h | ||
$(CC) -c -o $@ orphan-reaper.c $(CFLAGS) $(CPPFLAGS) $(DEFS) | ||
|
||
.PHONY: install | ||
install: install-base install-info install-man install-shell | ||
orphan-reaper.test.o: orphan-reaper.c arg.h | ||
$(CC) -c -o $@ orphan-reaper.c $(CFLAGS) $(CPPFLAGS) -DTEST | ||
|
||
.PHONY: install-all | ||
install-all: install-base install-doc install-shell | ||
reapd.o: reapd.c | ||
$(CC) -c -o $@ reapd.c $(CFLAGS) $(CPPFLAGS) $(DEFS) | ||
|
||
# Install base rules. | ||
reapd.test.o: reapd.c | ||
$(CC) -c -o $@ reapd.c $(CFLAGS) $(CPPFLAGS) -DTEST | ||
|
||
.PHONY: install-base | ||
install-base: install-command install-copyright | ||
check: orphan-reaper.test reapd.test | ||
test $$(./orphan-reaper.test sh -c 'true & true & true &' | wc -l) = 4 | ||
|
||
.PHONY: install-command | ||
install-command: bin/orphan-reaper bin/reapd | ||
install -dm755 -- "$(DESTDIR)$(BINDIR)" | ||
install -dm755 -- "$(DESTDIR)$(LIBEXECDIR)" | ||
install -m755 bin/orphan-reaper -- "$(DESTDIR)$(BINDIR)/$(COMMAND)" | ||
install -m755 bin/reapd -- "$(DESTDIR)$(LIBEXECDIR)/reapd" | ||
install: orphan-reaper reapd | ||
mkdir -p -- "$(DESTDIR)$(PREFIX)/bin" | ||
mkdir -p -- "$(DESTDIR)$(LIBEXECDIR)" | ||
mkdir -p -- "$(DESTDIR)$(PREFIX)/share/licenses/orphan-reaper" | ||
mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man1" | ||
cp -- orphan-reaper "$(DESTDIR)$(PREFIX)/bin/" | ||
cp -- reapd "$(DESTDIR)$(LIBEXECDIR)/" | ||
cp -- LICENSE "$(DESTDIR)$(PREFIX)/share/licenses/orphan-reaper/" | ||
cp -- orphan-reaper.1 "$(DESTDIR)$(MANPREFIX)/man1/orphan-reaper.1" | ||
|
||
.PHONY: install-copyright | ||
install-copyright: install-copying install-license | ||
|
||
.PHONY: install-copying | ||
install-copying: | ||
install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)" | ||
install -m644 COPYING -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING" | ||
|
||
.PHONY: install-license | ||
install-license: | ||
install -dm755 -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)" | ||
install -m644 LICENSE -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE" | ||
|
||
# Install documentation. | ||
|
||
.PHONY: install-doc | ||
install-doc: install-info install-pdf install-ps install-dvi install-man | ||
|
||
.PHONY: install-info | ||
install-info: bin/orphan-reaper.info | ||
install -dm755 -- "$(DESTDIR)$(INFODIR)" | ||
install -m644 $< -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info" | ||
|
||
.PHONY: install-pdf | ||
install-pdf: bin/orphan-reaper.pdf | ||
install -dm755 -- "$(DESTDIR)$(DOCDIR)" | ||
install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf" | ||
|
||
.PHONY: install-ps | ||
install-ps: bin/orphan-reaper.ps | ||
install -dm755 -- "$(DESTDIR)$(DOCDIR)" | ||
install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps" | ||
|
||
.PHONY: install-dvi | ||
install-dvi: bin/orphan-reaper.dvi | ||
install -dm755 -- "$(DESTDIR)$(DOCDIR)" | ||
install -m644 $< -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi" | ||
|
||
.PHONY: install-man | ||
install-man: | ||
install -dm755 -- "$(DESTDIR)$(MAN1DIR)" | ||
install -m644 doc/man/orphan-reaper.1 -- "$(DESTDIR)$(MAN1DIR)/$(COMMAND).1" | ||
|
||
# Install shell auto-completion. | ||
|
||
.PHONY: install-shell | ||
install-shell: install-bash install-zsh install-fish | ||
|
||
.PHONY: install-bash | ||
install-bash: bin/orphan-reaper.bash | ||
install -dm755 -- "$(DESTDIR)$(DATADIR)/bash-completion/completions" | ||
install -m644 $< -- "$(DESTDIR)$(DATADIR)/bash-completion/completions/$(COMMAND)" | ||
|
||
.PHONY: install-zsh | ||
install-zsh: bin/orphan-reaper.zsh | ||
install -dm755 -- "$(DESTDIR)$(DATADIR)/zsh/site-functions" | ||
install -m644 $< -- "$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(COMMAND)" | ||
|
||
.PHONY: install-fish | ||
install-fish: bin/orphan-reaper.fish | ||
install -dm755 -- "$(DESTDIR)$(DATADIR)/fish/completions" | ||
install -m644 $< -- "$(DESTDIR)$(DATADIR)/fish/completions/$(COMMAND).fish" | ||
|
||
|
||
# Uninstall rules. | ||
|
||
.PHONY: uninstall | ||
uninstall: | ||
-rm -- "$(DESTDIR)$(BINDIR)/$(COMMAND)" | ||
-rm -- "$(DESTDIR)$(LIBEXECDIR)/reapd" | ||
-rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/COPYING" | ||
-rm -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)/LICENSE" | ||
-rmdir -- "$(DESTDIR)$(LICENSEDIR)/$(PKGNAME)" | ||
-rm -- "$(DESTDIR)$(INFODIR)/$(PKGNAME).info" | ||
-rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).pdf" | ||
-rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).ps" | ||
-rm -- "$(DESTDIR)$(DOCDIR)/$(PKGNAME).dvi" | ||
-rm -- "$(DESTDIR)$(MAN1DIR)/$(COMMAND).1" | ||
-rm -- "$(DESTDIR)$(DATADIR)/fish/completions/$(COMMAND).fish" | ||
-rmdir -- "$(DESTDIR)$(DATADIR)/fish/completions" | ||
-rmdir -- "$(DESTDIR)$(DATADIR)/fish" | ||
-rm -- "$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(COMMAND)" | ||
-rmdir -- "$(DESTDIR)$(DATADIR)/zsh/site-functions" | ||
-rmdir -- "$(DESTDIR)$(DATADIR)/zsh" | ||
-rm -- "$(DESTDIR)$(DATADIR)/bash-completion/completions/$(COMMAND)" | ||
-rmdir -- "$(DESTDIR)$(DATADIR)/bash-completion/completions" | ||
-rmdir -- "$(DESTDIR)$(DATADIR)/bash-completion" | ||
|
||
-rm -f -- "$(DESTDIR)$(PREFIX)/bin/orphan-reaper" | ||
-rm -f -- "$(DESTDIR)$(LIBEXECDIR)/reapd" | ||
-rmdir -- "$(DESTDIR)$(LIBEXECDIR)" | ||
-rm -rf -- "$(DESTDIR)$(PREFIX)/share/licenses/orphan-reaper" | ||
-rm -f -- "$(DESTDIR)$(MANPREFIX)/man1/orphan-reaper.1" | ||
|
||
# Clean rules. | ||
|
||
.PHONY: clean | ||
clean: | ||
-rm -rf obj bin | ||
-rm -rf -- *.o orphan-reaper reapd orphan-reaper.test reapd.test | ||
|
||
SUFFIXES: .o | ||
|
||
.PHONY: all check install uninstall clean |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* | ||
* Copy me if you can. | ||
* by 20h | ||
*/ | ||
|
||
#ifndef ARG_H__ | ||
#define ARG_H__ | ||
|
||
extern char *argv0; | ||
|
||
/* use main(int argc, char *argv[]) */ | ||
#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ | ||
argv[0] && argv[0][1];\ | ||
argc--, argv++) {\ | ||
char argc_;\ | ||
char **argv_;\ | ||
int brk_;\ | ||
if (argv[0][0] == '-') {\ | ||
if (argv[0][1] == '-' && argv[0][2] == '\0') {\ | ||
argv++;\ | ||
argc--;\ | ||
break;\ | ||
}\ | ||
for (brk_ = 0, argv[0]++, argv_ = argv;\ | ||
argv[0][0] && !brk_;\ | ||
argv[0]++) {\ | ||
if (argv_ != argv)\ | ||
break;\ | ||
argc_ = argv[0][0];\ | ||
switch (argc_) | ||
|
||
#define ARGEND }\ | ||
} else {\ | ||
break;\ | ||
}\ | ||
} | ||
|
||
#endif |
Oops, something went wrong.