/** * @file Prompt.cpp * @author apio (cloudapio.eu) * @brief Displays the shell prompt. * * @copyright Copyright (c) 2024, the Luna authors. * */ #include "Prompt.h" #include #include #include #include #include #include #include struct utsname g_sysinfo; const char* hostname = ""; const char* username = ""; char prompt_end = '$'; void setup_prompt() { // Set up everything to form a prompt. uname(&g_sysinfo); hostname = g_sysinfo.nodename; if (getuid() == 0) prompt_end = '#'; struct passwd* pw = getpwuid(getuid()); if (pw) { username = pw->pw_name; } else { username = getenv("USER"); } endpwent(); } Result display_prompt() { auto cwd = TRY(os::FileSystem::working_directory()); os::print("\x1b[%dm%s\x1b[m@\x1b[36m%s\x1b[m:\x1b[1;34m%s\x1b[m%c ", getuid() == 0 ? 31 : 35, username, hostname, cwd.chars(), prompt_end); return {}; }