feat: update c files

This commit is contained in:
retoor 2025-12-13 05:45:50 +01:00
parent 166092bd6f
commit 0f61b50a76
3 changed files with 63 additions and 46 deletions

View File

@ -2,6 +2,14 @@
## Version 0.2.0 - 2025-12-13
The rtop tool now includes updated C source code. This improves the tool's functionality and performance.
**Changes:** 2 files, 97 lines
**Languages:** C (97 lines)
## Version 0.1.0 - 2025-12-13
The application now includes a CPU tab with core usage and temperature details. Users can view memory, process, network, disk, and filesystem statistics, along with improved memory detail views.

BIN
rtop

Binary file not shown.

View File

@ -48,6 +48,7 @@ static void print_help(const char *program) {
printf("\nNavigation:\n");
printf(" Left/Right arrows Switch tabs\n");
printf(" 1-5 Jump to tab\n");
printf(" ESC Pause (for copy/paste)\n");
printf(" q Quit\n");
}
@ -76,6 +77,7 @@ int main(int argc, char *argv[]) {
double rotate_interval = 0.0;
int sort_by_mem = 0;
int current_tab = TAB_CPU;
int paused = 0;
static struct option long_options[] = {
{"delay", required_argument, 0, 'd'},
@ -148,56 +150,58 @@ int main(int argc, char *argv[]) {
double rotate_elapsed = 0.0;
while (running) {
system_info_update(&sys);
cpu_info_update(&cpu, refresh_interval);
memory_info_update(&mem, refresh_interval);
process_list_update(&procs, mem.total, refresh_interval, cpu.num_cores);
network_info_update(&net, refresh_interval);
disk_info_update(&disk, refresh_interval);
filesystem_info_update(&fs);
if (!paused) {
system_info_update(&sys);
cpu_info_update(&cpu, refresh_interval);
memory_info_update(&mem, refresh_interval);
process_list_update(&procs, mem.total, refresh_interval, cpu.num_cores);
network_info_update(&net, refresh_interval);
disk_info_update(&disk, refresh_interval);
filesystem_info_update(&fs);
if (sort_by_mem) {
process_list_sort_by_mem(&procs);
} else {
process_list_sort_by_cpu(&procs);
}
if (rotate_interval > 0) {
rotate_elapsed += refresh_interval;
if (rotate_elapsed >= rotate_interval) {
current_tab = (current_tab + 1) % TAB_COUNT;
rotate_elapsed = 0.0;
if (sort_by_mem) {
process_list_sort_by_mem(&procs);
} else {
process_list_sort_by_cpu(&procs);
}
if (rotate_interval > 0) {
rotate_elapsed += refresh_interval;
if (rotate_elapsed >= rotate_interval) {
current_tab = (current_tab + 1) % TAB_COUNT;
rotate_elapsed = 0.0;
}
}
terminal_get_size(&term);
terminal_buffer_clear(&term);
terminal_buffer_append(&term, "\033[2J\033[H");
display_header(&term, &sys);
display_tabs(&term, current_tab);
switch (current_tab) {
case TAB_CPU:
display_cpu_detail(&term, &cpu);
break;
case TAB_MEMORY:
display_memory_detail(&term, &mem, &procs);
break;
case TAB_NETWORK:
display_network_detail(&term, &net);
break;
case TAB_DISK:
display_disk_detail(&term, &disk, &fs);
break;
case TAB_PROCESS:
display_process_detail(&term, &procs);
break;
}
display_footer(&term, refresh_interval);
terminal_buffer_flush(&term);
}
terminal_get_size(&term);
terminal_buffer_clear(&term);
terminal_buffer_append(&term, "\033[2J\033[H");
display_header(&term, &sys);
display_tabs(&term, current_tab);
switch (current_tab) {
case TAB_CPU:
display_cpu_detail(&term, &cpu);
break;
case TAB_MEMORY:
display_memory_detail(&term, &mem, &procs);
break;
case TAB_NETWORK:
display_network_detail(&term, &net);
break;
case TAB_DISK:
display_disk_detail(&term, &disk, &fs);
break;
case TAB_PROCESS:
display_process_detail(&term, &procs);
break;
}
display_footer(&term, refresh_interval);
terminal_buffer_flush(&term);
fd_set fds;
FD_ZERO(&fds);
FD_SET(STDIN_FILENO, &fds);
@ -210,15 +214,20 @@ int main(int argc, char *argv[]) {
int key = read_key();
if (key == 'q' || key == 'Q') {
running = 0;
} else if (key == 27) {
paused = 1;
} else if (key == 1003) {
current_tab = (current_tab + 1) % TAB_COUNT;
rotate_elapsed = 0.0;
paused = 0;
} else if (key == 1004) {
current_tab = (current_tab - 1 + TAB_COUNT) % TAB_COUNT;
rotate_elapsed = 0.0;
paused = 0;
} else if (key >= '1' && key <= '5') {
current_tab = key - '1';
rotate_elapsed = 0.0;
paused = 0;
}
}
}