mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 05:57:44 +00:00
Shell: Build prompt based on the PROMPT environment variable if present
This commit is contained in:
parent
1828d9eadd
commit
8262c1e662
1 changed files with 42 additions and 4 deletions
|
@ -55,6 +55,8 @@ static int run_command(const String&);
|
|||
|
||||
static String prompt()
|
||||
{
|
||||
auto* ps1 = getenv("PROMPT");
|
||||
if (!ps1) {
|
||||
if (g.uid == 0)
|
||||
return "# ";
|
||||
|
||||
|
@ -64,6 +66,42 @@ static String prompt()
|
|||
return builder.to_string();
|
||||
}
|
||||
|
||||
StringBuilder builder;
|
||||
for (char* ptr = ps1; *ptr; ++ptr) {
|
||||
if (*ptr == '\\') {
|
||||
++ptr;
|
||||
if (!*ptr)
|
||||
break;
|
||||
switch (*ptr) {
|
||||
case 'X':
|
||||
builder.append("\033]0;");
|
||||
break;
|
||||
case 'a':
|
||||
builder.append(0x07);
|
||||
break;
|
||||
case 'e':
|
||||
builder.append(0x1b);
|
||||
break;
|
||||
case 'u':
|
||||
builder.append(g.username);
|
||||
break;
|
||||
case 'h':
|
||||
builder.append(g.hostname);
|
||||
break;
|
||||
case 'w':
|
||||
builder.append(g.cwd);
|
||||
break;
|
||||
case 'p':
|
||||
builder.append(g.uid == 0 ? '#' : '$');
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
builder.append(*ptr);
|
||||
}
|
||||
return builder.to_string();
|
||||
}
|
||||
|
||||
static int sh_pwd(int, char**)
|
||||
{
|
||||
printf("%s\n", g.cwd.characters());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue