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:
parent
8f91a47aeb
commit
cc7e3519a6
6 changed files with 25 additions and 8 deletions
|
@ -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.
|
@ -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
1
Userland/.gitignore
vendored
|
@ -11,3 +11,4 @@ true
|
||||||
hostname
|
hostname
|
||||||
cat
|
cat
|
||||||
uname
|
uname
|
||||||
|
clear
|
||||||
|
|
|
@ -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
8
Userland/clear.cpp
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#include <LibC/stdio.h>
|
||||||
|
|
||||||
|
int main(int, char**)
|
||||||
|
{
|
||||||
|
printf("\033[3J\033[H\033[2J");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue