ParseAcs parses AccessMode from a byte array.
(b []byte)
| 604 | |
| 605 | // ParseAcs parses AccessMode from a byte array. |
| 606 | func ParseAcs(b []byte) (AccessMode, error) { |
| 607 | m0 := ModeUnset |
| 608 | |
| 609 | Loop: |
| 610 | for i := range b { |
| 611 | switch b[i] { |
| 612 | case 'J', 'j': |
| 613 | m0 |= ModeJoin |
| 614 | case 'R', 'r': |
| 615 | m0 |= ModeRead |
| 616 | case 'W', 'w': |
| 617 | m0 |= ModeWrite |
| 618 | case 'A', 'a': |
| 619 | m0 |= ModeApprove |
| 620 | case 'S', 's': |
| 621 | m0 |= ModeShare |
| 622 | case 'D', 'd': |
| 623 | m0 |= ModeDelete |
| 624 | case 'P', 'p': |
| 625 | m0 |= ModePres |
| 626 | case 'O', 'o': |
| 627 | m0 |= ModeOwner |
| 628 | case 'N', 'n': |
| 629 | if m0 != ModeUnset { |
| 630 | return ModeUnset, errors.New("AccessMode: access N cannot be combined with any other") |
| 631 | } |
| 632 | m0 = ModeNone // N means explicitly no access, all bits cleared |
| 633 | break Loop |
| 634 | default: |
| 635 | return ModeUnset, errors.New("AccessMode: invalid character '" + string(b[i]) + "'") |
| 636 | } |
| 637 | } |
| 638 | |
| 639 | return m0, nil |
| 640 | } |
| 641 | |
| 642 | // UnmarshalText parses access mode string as byte slice. |
| 643 | // Does not change the mode if the string is empty or invalid. |
no outgoing calls
no test coverage detected
searching dependent graphs…