1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 12:17:34 +00:00

Add a /bin/clear that prints the clear terminal escape sequence.

It doesn't work yet, but it will!
This commit is contained in:
Andreas Kling 2018-10-27 17:39:08 +02:00
parent 8f91a47aeb
commit cc7e3519a6
6 changed files with 25 additions and 8 deletions

View file

@ -1,8 +1,10 @@
#define ALWAYS_INLINE inline __attribute__ ((always_inline))
typedef unsigned char byte; typedef unsigned char byte;
typedef unsigned short word; typedef unsigned short word;
typedef unsigned int dword; typedef unsigned int dword;
inline size_t strlen(const char* str) ALWAYS_INLINE size_t strlen(const char* str)
{ {
size_t len = 0; size_t len = 0;
while (*(str++)) while (*(str++))
@ -13,7 +15,7 @@ inline size_t strlen(const char* str)
static constexpr const char* h = "0123456789abcdef"; static constexpr const char* h = "0123456789abcdef";
template<typename PutChFunc> template<typename PutChFunc>
int printHex(PutChFunc putch, char*& bufptr, dword number, byte fields) ALWAYS_INLINE int printHex(PutChFunc putch, char*& bufptr, dword number, byte fields)
{ {
int ret = 0; int ret = 0;
byte shr_count = fields * 4; byte shr_count = fields * 4;
@ -26,7 +28,7 @@ int printHex(PutChFunc putch, char*& bufptr, dword number, byte fields)
} }
template<typename PutChFunc> template<typename PutChFunc>
int printNumber(PutChFunc putch, char*& bufptr, dword number, bool leftPad, bool zeroPad, dword fieldWidth) ALWAYS_INLINE int printNumber(PutChFunc putch, char*& bufptr, dword number, bool leftPad, bool zeroPad, dword fieldWidth)
{ {
dword divisor = 1000000000; dword divisor = 1000000000;
char ch; char ch;
@ -67,7 +69,7 @@ int printNumber(PutChFunc putch, char*& bufptr, dword number, bool leftPad, bool
} }
template<typename PutChFunc> template<typename PutChFunc>
int printString(PutChFunc putch, char*& bufptr, const char* str, bool leftPad, dword fieldWidth) ALWAYS_INLINE int printString(PutChFunc putch, char*& bufptr, const char* str, bool leftPad, dword fieldWidth)
{ {
size_t len = strlen(str); size_t len = strlen(str);
if (!fieldWidth) if (!fieldWidth)
@ -88,7 +90,7 @@ int printString(PutChFunc putch, char*& bufptr, const char* str, bool leftPad, d
template<typename PutChFunc> template<typename PutChFunc>
int printSignedNumber(PutChFunc putch, char*& bufptr, int number, bool leftPad, bool zeroPad, dword fieldWidth) ALWAYS_INLINE int printSignedNumber(PutChFunc putch, char*& bufptr, int number, bool leftPad, bool zeroPad, dword fieldWidth)
{ {
if (number < 0) { if (number < 0) {
putch(bufptr, '-'); putch(bufptr, '-');
@ -98,7 +100,7 @@ int printSignedNumber(PutChFunc putch, char*& bufptr, int number, bool leftPad,
} }
template<typename PutChFunc> template<typename PutChFunc>
int printfInternal(PutChFunc putch, char* buffer, const char*& fmt, char*& ap) ALWAYS_INLINE int printfInternal(PutChFunc putch, char* buffer, const char*& fmt, char*& ap)
{ {
const char *p; const char *p;

Binary file not shown.

View file

@ -12,6 +12,7 @@ cp ../Userland/false mnt/bin/false
cp ../Userland/hostname mnt/bin/hostname cp ../Userland/hostname mnt/bin/hostname
cp ../Userland/cat mnt/bin/cat cp ../Userland/cat mnt/bin/cat
cp ../Userland/uname mnt/bin/uname cp ../Userland/uname mnt/bin/uname
cp ../Userland/clear mnt/bin/clear
cp kernel.map mnt/ cp kernel.map mnt/
umount mnt umount mnt
sync sync

1
Userland/.gitignore vendored
View file

@ -11,3 +11,4 @@ true
hostname hostname
cat cat
uname uname
clear

View file

@ -10,7 +10,8 @@ OBJS = \
false.o \ false.o \
hostname.o \ hostname.o \
cat.o \ cat.o \
uname.o uname.o \
clear.o
APPS = \ APPS = \
id \ id \
@ -24,7 +25,8 @@ APPS = \
false \ false \
hostname \ hostname \
cat \ cat \
uname uname \
clear
ARCH_FLAGS = ARCH_FLAGS =
STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib
@ -80,6 +82,9 @@ cat: cat.o
uname: uname.o uname: uname.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a $(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
clear: clear.o
$(LD) -o $@ $(LDFLAGS) $< ../LibC/LibC.a
.cpp.o: .cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $< @echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<

8
Userland/clear.cpp Normal file
View file

@ -0,0 +1,8 @@
#include <LibC/stdio.h>
int main(int, char**)
{
printf("\033[3J\033[H\033[2J");
return 0;
}