Init
Signed-off-by: Ari Archer <ari.web.xyz@gmail.com>
This commit is contained in:
commit
d64475d8c0
19
.clang-format
Normal file
19
.clang-format
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
BasedOnStyle: LLVM
|
||||
IndentWidth: 4
|
||||
SortIncludes: false
|
||||
AlignConsecutiveAssignments: true
|
||||
AlignConsecutiveBitFields: true
|
||||
AlignConsecutiveMacros: true
|
||||
AlignEscapedNewlines: true
|
||||
AllowShortCaseLabelsOnASingleLine: true
|
||||
AllowShortEnumsOnASingleLine: true
|
||||
AllowShortFunctionsOnASingleLine: true
|
||||
AllowShortLambdasOnASingleLine: true
|
||||
BinPackParameters: false
|
||||
IndentCaseBlocks: true
|
||||
IndentCaseLabels: true
|
||||
IndentExternBlock: true
|
||||
IndentGotoLabels: true
|
||||
---
|
||||
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
/clrz
|
||||
.ccls-cache
|
14
LICENSE
Normal file
14
LICENSE
Normal file
|
@ -0,0 +1,14 @@
|
|||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2022 Ari Archer <ari.web.xyz@gmail.com>
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
|
24
README.md
Normal file
24
README.md
Normal file
|
@ -0,0 +1,24 @@
|
|||
# Clrz
|
||||
|
||||
> Fancy clear
|
||||
|
||||
# Building
|
||||
|
||||
Run any compilation script with your selected
|
||||
(or custom) environment(s)
|
||||
|
||||
```bash
|
||||
$ . envs/reset.env && . envs/....
|
||||
$ ./com/....
|
||||
```
|
||||
|
||||
Or if it's a script, directly use it
|
||||
|
||||
# Versions
|
||||
|
||||
- C (C99)
|
||||
- POSIX sh
|
||||
|
||||
# License
|
||||
|
||||
Do whatever the fuck you want lmfao
|
26
com/clrz.99.c.sh
Executable file
26
com/clrz.99.c.sh
Executable file
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
set -e
|
||||
|
||||
main() {
|
||||
CC="${CC:-gcc}"
|
||||
CFLAGS="${CFLAGS:--std=c99}"
|
||||
SRC="${SRC:-./src/clrz.99.c}"
|
||||
SFLAGS="${SFLAGS:--R .comment -R .GCC.command.line -R .note.gnu.gold-version -R .note.gnu.build-id -R .note.ABI-tag -R .note -R .gnu.version --strip-debug --strip-unneeded}"
|
||||
|
||||
{
|
||||
echo ' * Compiling C code'
|
||||
echo " Source file: $SRC"
|
||||
echo " C compiler: $CC"
|
||||
echo " C Compiler Flags: $CFLAGS"
|
||||
echo " Strip: ${STRIP:-No}"
|
||||
echo " Strip flags: ${SFLAGS}"
|
||||
} >&2
|
||||
|
||||
set -x
|
||||
eval -- "$CC $SRC -o clrz $CFLAGS"
|
||||
[ "$STRIP" ] && eval -- "strip $SFLAGS clrz"
|
||||
set +x
|
||||
}
|
||||
|
||||
main "$@"
|
1
envs/clang.env
Normal file
1
envs/clang.env
Normal file
|
@ -0,0 +1 @@
|
|||
export CC='clang'
|
1
envs/debug.env
Normal file
1
envs/debug.env
Normal file
|
@ -0,0 +1 @@
|
|||
export CFLAGS='-g -g3 -O0 -fno-eliminate-unused-debug-types -std=c99 -D_DEBUG'
|
5
envs/prod.env
Normal file
5
envs/prod.env
Normal file
|
@ -0,0 +1,5 @@
|
|||
export CFLAGS="-Ofast -std=c99 -s -flto -march=native \
|
||||
-Wall -Wextra -Wpedantic -pedantic -pie -fPIE -Werror \
|
||||
-Wconversion -Wsign-conversion \
|
||||
-Wl,-z,relro,-z,now,-z,noexecstack"
|
||||
export STRIP='Yes'
|
1
envs/reset.env
Normal file
1
envs/reset.env
Normal file
|
@ -0,0 +1 @@
|
|||
unset CC CFLAGS STRIP
|
84
src/clrz.99.c
Normal file
84
src/clrz.99.c
Normal file
|
@ -0,0 +1,84 @@
|
|||
#ifndef _XOPEN_SOURCE
|
||||
#define _XOPEN_SOURCE 500
|
||||
#endif
|
||||
|
||||
/* *************
|
||||
* ANSI stuff
|
||||
*/
|
||||
|
||||
#define CSI "\033["
|
||||
|
||||
#define ANSI_CUR_SAVE CSI "s"
|
||||
#define ANSI_CUR_RES CSI "u"
|
||||
#define ANSI_CUR_HIDE CSI "?25l"
|
||||
#define ANSI_CUR_SHOW CSI "?25h"
|
||||
|
||||
#define ANSI_CLEAR CSI "2J" CSI "1;1H"
|
||||
|
||||
#define NONL(code) fputs(code, stdout)
|
||||
|
||||
/* *************
|
||||
* Config
|
||||
*/
|
||||
|
||||
#ifndef SLEEP_TIME
|
||||
#define SLEEP_TIME 15000
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define DP(msg) \
|
||||
fputs("[DEBUG] " msg "\n Press enter to continue....", stderr); \
|
||||
getchar();
|
||||
#else
|
||||
#define DP(msg)
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
static unsigned char clrz(void) {
|
||||
DP("Getting terminal size");
|
||||
|
||||
struct winsize ws;
|
||||
if (ioctl(1, TIOCGWINSZ, &ws) != 0) {
|
||||
perror("ioctl()");
|
||||
return 1;
|
||||
}
|
||||
|
||||
DP("Making a column");
|
||||
|
||||
char col[ws.ws_col];
|
||||
|
||||
for (unsigned short int idx = 0; idx < ws.ws_col; ++idx)
|
||||
col[idx] = ' ';
|
||||
|
||||
DP("Setting up cursor");
|
||||
|
||||
NONL(ANSI_CUR_HIDE);
|
||||
NONL(ANSI_CUR_SAVE);
|
||||
|
||||
DP("Filling up columns");
|
||||
|
||||
for (unsigned short int line = 0; line < ws.ws_row; ++line) {
|
||||
printf(CSI "%d;%dH", line, 0); // ANSI_CUP
|
||||
NONL(col);
|
||||
|
||||
#ifndef HAVE_BUFFERING
|
||||
fflush(stdout);
|
||||
#endif
|
||||
usleep(SLEEP_TIME);
|
||||
}
|
||||
|
||||
DP("Cleanup");
|
||||
|
||||
NONL(ANSI_CUR_RES);
|
||||
NONL(ANSI_CLEAR);
|
||||
NONL(ANSI_CUR_SHOW);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifndef CLRZ_H
|
||||
int main(void) { return clrz(); }
|
||||
#endif
|
22
src/clrz.sh
Executable file
22
src/clrz.sh
Executable file
|
@ -0,0 +1,22 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
set -e
|
||||
|
||||
main() {
|
||||
tput civis
|
||||
printf "\033[s"
|
||||
|
||||
for line in 0 $(seq "$(tput lines)"); do
|
||||
for col in 0 $(seq "$(tput cols)"); do
|
||||
tput cup "$line" "$col"
|
||||
printf ' '
|
||||
done
|
||||
done
|
||||
|
||||
printf "\033[u"
|
||||
clear
|
||||
|
||||
tput cnorm
|
||||
}
|
||||
|
||||
main "$@"
|
Loading…
Reference in a new issue