mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 02:08:11 +00:00
Shell: Add "umask" builtin for reading/writing the shell's umask.
This commit is contained in:
parent
c1b025b5a6
commit
c838a2e652
1 changed files with 24 additions and 0 deletions
|
@ -121,6 +121,26 @@ static int sh_history(int, char**)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int sh_umask(int argc, char** argv)
|
||||||
|
{
|
||||||
|
if (argc == 1) {
|
||||||
|
mode_t old_mask = umask(0);
|
||||||
|
printf("%#o\n", old_mask);
|
||||||
|
umask(old_mask);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (argc == 2) {
|
||||||
|
unsigned mask;
|
||||||
|
int matches = sscanf(argv[1], "%o", &mask);
|
||||||
|
if (matches == 1) {
|
||||||
|
umask(mask);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("usage: umask <octal-mask>\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static bool handle_builtin(int argc, char** argv, int& retval)
|
static bool handle_builtin(int argc, char** argv, int& retval)
|
||||||
{
|
{
|
||||||
if (argc == 0)
|
if (argc == 0)
|
||||||
|
@ -145,6 +165,10 @@ static bool handle_builtin(int argc, char** argv, int& retval)
|
||||||
retval = sh_history(argc, argv);
|
retval = sh_history(argc, argv);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(argv[0], "umask")) {
|
||||||
|
retval = sh_umask(argc, argv);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue