RetroFetch: Add a silly neofetch-like program.

The idea is to print out various system info suitable for screenshots. :^)
This commit is contained in:
Andreas Kling 2019-05-13 04:54:48 +02:00
parent 43604bf71a
commit b7166385de
Notes: sideshowbarker 2024-07-19 14:09:36 +09:00
6 changed files with 119 additions and 0 deletions

View file

@ -0,0 +1,21 @@
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    
                    

3
Demos/RetroFetch/.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
RetroFetch
*.o
*.d

21
Demos/RetroFetch/Makefile Normal file
View file

@ -0,0 +1,21 @@
include ../../Makefile.common
OBJS = main.o
APP = RetroFetch
DEFINES += -DUSERLAND
all: $(APP)
$(APP): $(OBJS)
$(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lc
.cpp.o:
@echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $<
-include $(OBJS:%.o=%.d)
clean:
@echo "CLEAN"; rm -f $(APP) $(OBJS) *.d

71
Demos/RetroFetch/main.cpp Normal file
View file

@ -0,0 +1,71 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <AK/Assertions.h>
static void moveto(int row, int column)
{
printf("\033[%d;%dH", row, column);
fflush(stdout);
}
int main()
{
printf("\033[3J\033[H\033[2J");
fflush(stdout);
int fd = open("/res/serenity.ansi.txt", O_RDONLY);
if (fd < 0) {
perror("open");
return 0;
}
for (;;) {
char buffer[BUFSIZ];
int nread = read(fd, buffer, sizeof(buffer));
if (nread < 0) {
perror("read");
return 1;
}
if (nread == 0)
break;
int nwritten = write(STDOUT_FILENO, buffer, nread);
if (nwritten < 0) {
perror("write");
return 1;
}
ASSERT(nwritten == nread);
}
close(fd);
printf("\n");
printf("\033[s");
char hostname[128];
int rc = gethostname(hostname, sizeof(hostname));
if (rc < 0) {
perror("gethostname");
return 1;
}
int column = 42;
moveto(3, column);
printf("%s@%s\n", getlogin(), hostname);
moveto(4, column);
printf("\033[34;1mOS:\033[0m Serenity\n");
moveto(5, column);
printf("\033[34;1mKernel:\033[0m ");
fflush(stdout);
system("uname -nrm");
moveto(6, column);
printf("\033[34;1mUptime:\033[0m ");
fflush(stdout);
system("uptime");
printf("\033[u\n");
return 0;
}

View file

@ -50,6 +50,8 @@ $make_cmd -C ../Shell clean && \
$make_cmd -C ../Shell && \
$make_cmd -C ../Demos/HelloWorld clean && \
$make_cmd -C ../Demos/HelloWorld && \
$make_cmd -C ../Demos/RetroFetch clean && \
$make_cmd -C ../Demos/RetroFetch && \
$make_cmd clean &&\
$make_cmd && \
sudo ./sync.sh

View file

@ -80,6 +80,7 @@ ln -s Shell mnt/bin/sh
cp -v kernel.map mnt/
cp -v ../Demos/HelloWorld/HelloWorld mnt/bin/HelloWorld
ln -s HelloWorld mnt/bin/hw
cp -v ../Demos/RetroFetch/RetroFetch mnt/bin/RetroFetch
# Run local sync script, if it exists
if [ -f sync-local.sh ]; then