Inital Commit

This commit is contained in:
vx-clutch
2026-04-22 21:44:48 -04:00
commit 19d543f99d
16 changed files with 290 additions and 0 deletions

16
.clang-format Normal file
View File

@@ -0,0 +1,16 @@
IndentWidth: 8
TabWidth: 8
UseTab: Always
BreakBeforeBraces: Linux
AllowShortIfStatementsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortLoopsOnASingleLine: false
ColumnLimit: 80
IndentCaseLabels: false
PointerAlignment: Left
DerivePointerAlignment: false
SpaceAfterCStyleCast: false
AlignTrailingComments: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeParens: ControlStatements

15
LICENSE Normal file
View File

@@ -0,0 +1,15 @@
ISC License
Copyright (c) 2026 fSD
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

23
Makefile Normal file
View File

@@ -0,0 +1,23 @@
-include make.conf
BIN = tcpl
SRC = $(wildcard src/*.c)
SRC_OBJ = $(SRC:.c=.o)
LIB_SRC = $(wildcard lib/*.c)
LIB_OBJ = $(LIB_SRC:.c=.o)
all: $(BIN)
$(BIN): $(SRC_OBJ) $(LIB_OBJ)
$(LD) $(LDFLAGS) -o $@ $(SRC_OBJ) $(LIB_OBJ)
src/%.o: src/%.c
$(CC) $(CFLAGS) -I. -Iinclude -c $< -o $@
lib/%.o: lib/%.c
$(CC) $(CFLAGS) -I. -Iinclude -c $< -o $@
clean:
rm -f $(SRC_OBJ) $(LIB_OBJ) $(BIN)

1
README Normal file
View File

@@ -0,0 +1 @@
Read me, Read me

36
compile_commands.json Normal file
View File

@@ -0,0 +1,36 @@
[
{
"arguments": [
"/usr/lib64/ccache/cc",
"-Wextra",
"-Wall",
"-Os",
"-I.",
"-Iinclude",
"-c",
"-o",
"src/main.o",
"src/main.c"
],
"directory": "/home/owen/programming/tcpl",
"file": "/home/owen/programming/tcpl/src/main.c",
"output": "/home/owen/programming/tcpl/src/main.o"
},
{
"arguments": [
"/usr/lib64/ccache/cc",
"-Wextra",
"-Wall",
"-Os",
"-I.",
"-Iinclude",
"-c",
"-o",
"lib/print.o",
"lib/print.c"
],
"directory": "/home/owen/programming/tcpl",
"file": "/home/owen/programming/tcpl/lib/print.c",
"output": "/home/owen/programming/tcpl/lib/print.o"
}
]

4
doc/bugs Normal file
View File

@@ -0,0 +1,4 @@
Known bugs in tcpl(21 April 2026)
* Rare bug in x86_64 architecture prevents all users from
using this software.

11
include/tcpl/tcpl.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef TCPL_TCPL_H
#define TCPL_TCPL_H
/*
* This is a header file to be included into every source file that comprises
* this project.
* Do #include <tcpl/tcpl.h>
*/
#include <lib/print.h>
#endif

8
lib/print.c Normal file
View File

@@ -0,0 +1,8 @@
#include "print.h"
#include <stdio.h>
#include <tcpl/tcpl.h>
int tcpl_print(char* s)
{
return printf("%s: %s\n", arg0, s);
}

9
lib/print.h Normal file
View File

@@ -0,0 +1,9 @@
#ifndef TCPL_PRINT_H
#define TCPL_PRINT_H
/*
* Define the print functions for this project
*/
int tcpl_print(char* s);
#endif

11
make.conf Normal file
View File

@@ -0,0 +1,11 @@
# tcpl version
VERSION = 0.1
# paths
PREFIX = /usr/local
MANPREFIX = $(PREFIX)/share/man
CC = cc
LD = $(CC)
CFLAGS = -Wextra -Wall -Os
LDFLAGS = -s

26
man/tcpl.1 Normal file
View File

@@ -0,0 +1,26 @@
.TH "TCPL" 1
.SH NAME
\fBtcpl\fR \- test c project layout.
.PP
.SH SYNOPSIS
tcpl [OPTION]...
.PP
.SH DESCRIPTION
`tcpl' greets you in various ways.
.PP
-n, --name=STRING
your name goes here
.PP
--help print this help, then exit
.PP
--version
print version number, then exit
.PP
.SH AUTHOR
Written by vxc <vxclutch@proton.me>
.PP
.SH COPYRIGHT
Copyright © 2026 vxc
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

25
man/tcpl.md Normal file
View File

@@ -0,0 +1,25 @@
# NAME
tcpl - test c project layout.
# SYNOPSIS
tcpl [OPTION]...
# DESCRIPTION
`tcpl' greets you in various ways.
-n, --name=STRING
your name goes here
--help print this help, then exit
--version
print version number, then exit
# AUTHOR
Written by vxc <vxclutch@proton.me>
# COPYRIGHT
Copyright © 2026 vxc
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.

16
package/tcpl-0.1.ebuild Normal file
View File

@@ -0,0 +1,16 @@
EAPI = 8
DESCRIPTION = "Test C Project Layout" HOMEPAGE =
"https://fsdproject.org" SRC_URI =
"https://dl.fsdproject.org/tcpl-${PV}.tar.gz"
LICENSE = "BSD" SLOT = "0" KEYWORDS = "~amd64" IUSE = ""
DEPEND = "" RDEPEND = "${DEPEND}" BDEPEND = ""
src_compile(){emake}
src_install()
{
dobin tcpl dodoc README
}

11
src/main.c Normal file
View File

@@ -0,0 +1,11 @@
#include <libgen.h>
#include <tcpl/tcpl.h>
extern char* arg0;
int main(int argc, char** argv)
{
arg0 = basename(argv[0]);
tcpl_print("Hello, World!");
return 0;
}

BIN
src/main.o Normal file

Binary file not shown.

78
tools/md2man Executable file
View File

@@ -0,0 +1,78 @@
#!/bin/sh
set -eu
VERSION="v0.1"
file=$1
[ -f "$file" ] || exit 1
name=$(basename "$file" .md)
awk -v name="$name" '
BEGIN {
print ".TH \"" toupper(name) "\" 1"
in_name = 0
}
function esc(s) {
gsub(/\\/, "\\\\", s)
gsub(/^\./, "\\&.", s)
return s
}
function fmt(s) {
while (match(s, /`[^`]+`/)) {
pre = substr(s, 1, RSTART-1)
mid = substr(s, RSTART+1, RLENGTH-2)
post = substr(s, RSTART+RLENGTH)
s = pre "\\fB" mid "\\fR" post
}
return esc(s)
}
{
sub(/\r$/, "")
if ($0 ~ /^# /) {
section = substr($0, 3)
if (toupper(section) == "NAME") {
print ".SH NAME"
in_name = 1
} else {
print ".SH " toupper(esc(section))
in_name = 0
}
next
}
if ($0 ~ /^$/) {
print ".PP"
next
}
if (in_name) {
split($0, a, " - ")
if (length(a) > 1) {
print "\\fB" esc(a[1]) "\\fR \\- " esc(a[2])
} else {
print "\\fB" esc($0) "\\fR"
}
next
}
if ($0 ~ /^- /) {
sub(/^- /, "")
split($0, a, " ")
print ".TP"
print "\\fB" esc(a[1]) "\\fR"
if (length(a) > 1) {
print fmt(substr($0, length(a[1]) + 3))
}
next
}
print fmt($0)
}
' "$file"