| 123456789101112131415161718192021222324252627 |
- package main
- import (
- "fmt"
- "os"
- "strconv"
- "syscall"
- )
- // 显示或设置umask
- func cmd_umask(fields []string, stdin *os.File, stdout *os.File, stderr *os.File) {
- if len(fields) > 2 { // 最多1个参数
- panic("umask: too many arguments")
- }
- if len(fields) == 1 { // 如果没有参数
- old := syscall.Umask(022) // 修改并保存旧umask
- syscall.Umask(old) // 修改成旧umask,保持不变
- fmt.Fprintf(stdout, "%04o\n", old) // 输出umask
- } else {
- new, err := strconv.ParseInt(fields[1], 8, 0) // 字符串转8进制数
- if err != nil {
- panic("umask: " + fields[1] + ": numeric argument required")
- }
- syscall.Umask(int(new)) // 修改umask
- }
- }
|