forked from TrueCloudLab/restic
Create uid/gid convertion function.
Create separate function to convert user ID / group ID of a user to integer. Windows is a stub, since this doesn't work on Windows (uid/gid is not a number).
This commit is contained in:
parent
0e7d0d8dba
commit
e1f6bbac9f
4 changed files with 39 additions and 20 deletions
12
lock.go
12
lock.go
|
@ -5,7 +5,6 @@ import (
|
|||
"os"
|
||||
"os/signal"
|
||||
"os/user"
|
||||
"strconv"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
@ -117,15 +116,8 @@ func (l *Lock) fillUserInfo() error {
|
|||
}
|
||||
l.Username = usr.Username
|
||||
|
||||
// We ignore the error. On Windows Uid is not a number
|
||||
uid, _ := strconv.ParseInt(usr.Uid, 10, 32)
|
||||
l.UID = uint32(uid)
|
||||
|
||||
// We ignore the error. On Windows Gid is not a number
|
||||
gid, _ := strconv.ParseInt(usr.Gid, 10, 32)
|
||||
l.GID = uint32(gid)
|
||||
|
||||
return nil
|
||||
l.UID, l.GID, err = uidGidInt(*usr)
|
||||
return err
|
||||
}
|
||||
|
||||
// checkForOtherLocks looks for other locks that currently exist in the repository.
|
||||
|
|
24
lock_unix.go
Normal file
24
lock_unix.go
Normal file
|
@ -0,0 +1,24 @@
|
|||
// +build !windows
|
||||
|
||||
package restic
|
||||
|
||||
import (
|
||||
"os/user"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// uidGidInt returns uid, gid of the user as a number.
|
||||
func uidGidInt(u user.User) (uid, gid uint32, err error) {
|
||||
var ui, gi int
|
||||
ui, err = strconv.ParseInt(u.Uid, 10, 32)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
gi, err = strconv.ParseInt(u.Gid, 10, 32)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
uid = uint32(ui)
|
||||
gid = uint32(gi)
|
||||
return
|
||||
}
|
10
lock_windows.go
Normal file
10
lock_windows.go
Normal file
|
@ -0,0 +1,10 @@
|
|||
package restic
|
||||
|
||||
import (
|
||||
"os/user"
|
||||
)
|
||||
|
||||
// uidGidInt always returns 0 on Windows, since uid isn't numbers
|
||||
func uidGidInt(u user.User) (uid, gid uint32, err error) {
|
||||
return 0, 0, nil
|
||||
}
|
13
snapshot.go
13
snapshot.go
|
@ -5,7 +5,6 @@ import (
|
|||
"os"
|
||||
"os/user"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/restic/restic/backend"
|
||||
|
@ -76,15 +75,9 @@ func (sn *Snapshot) fillUserInfo() error {
|
|||
}
|
||||
sn.Username = usr.Username
|
||||
|
||||
// We ignore the error. On Windows Uid is not a number
|
||||
uid, _ := strconv.ParseInt(usr.Uid, 10, 32)
|
||||
sn.UID = uint32(uid)
|
||||
|
||||
// We ignore the error. On Windows Gid is not a number
|
||||
gid, _ := strconv.ParseInt(usr.Gid, 10, 32)
|
||||
sn.GID = uint32(gid)
|
||||
|
||||
return nil
|
||||
// set userid and groupid
|
||||
sn.UID, sn.GID, err = uidGidInt(*usr)
|
||||
return err
|
||||
}
|
||||
|
||||
// FindSnapshot takes a string and tries to find a snapshot whose ID matches
|
||||
|
|
Loading…
Reference in a new issue