This commit is contained in:
Guillaume J. Charmes 2013-09-06 23:00:21 +00:00
Родитель eed00a4afd
Коммит b07314e2e0
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B33E4642CB6E3FF3
1 изменённых файлов: 19 добавлений и 12 удалений

Просмотреть файл

@ -14,7 +14,6 @@ import (
"net/http"
"os"
"os/exec"
"os/user"
"path/filepath"
"runtime"
"strconv"
@ -802,7 +801,7 @@ func StripComments(input []byte, commentMarker []byte) []byte {
var output []byte
for _, currentLine := range lines {
var commentIndex = bytes.Index(currentLine, commentMarker)
if ( commentIndex == -1 ) {
if commentIndex == -1 {
output = append(output, currentLine...)
} else {
output = append(output, currentLine[:commentIndex]...)
@ -867,10 +866,18 @@ func ParseRepositoryTag(repos string) (string, string) {
return repos, ""
}
type User struct {
Uid string // user id
Gid string // primary group id
Username string
Name string
HomeDir string
}
// UserLookup check if the given username or uid is present in /etc/passwd
// and returns the user struct.
// If the username is not found, an error is returned.
func UserLookup(uid string) (*user.User, error) {
func UserLookup(uid string) (*User, error) {
file, err := ioutil.ReadFile("/etc/passwd")
if err != nil {
return nil, err
@ -878,7 +885,7 @@ func UserLookup(uid string) (*user.User, error) {
for _, line := range strings.Split(string(file), "\n") {
data := strings.Split(line, ":")
if len(data) > 5 && (data[0] == uid || data[2] == uid) {
return &user.User{
return &User{
Uid: data[2],
Gid: data[3],
Username: data[0],
@ -890,13 +897,13 @@ func UserLookup(uid string) (*user.User, error) {
return nil, fmt.Errorf("User not found in /etc/passwd")
}
type DependencyGraph struct{
type DependencyGraph struct {
nodes map[string]*DependencyNode
}
type DependencyNode struct{
id string
deps map[*DependencyNode]bool
type DependencyNode struct {
id string
deps map[*DependencyNode]bool
}
func NewDependencyGraph() DependencyGraph {
@ -917,7 +924,7 @@ func (graph *DependencyGraph) NewNode(id string) string {
return id
}
nd := &DependencyNode{
id: id,
id: id,
deps: map[*DependencyNode]bool{},
}
graph.addNode(nd)
@ -979,7 +986,7 @@ func (graph *DependencyGraph) GenerateTraversalMap() ([][]string, error) {
// If at least one dep hasn't been processed yet, we can't
// add it.
ok := true
for dep, _ := range node.deps {
for dep := range node.deps {
if !processed[dep] {
ok = false
break
@ -991,7 +998,7 @@ func (graph *DependencyGraph) GenerateTraversalMap() ([][]string, error) {
}
}
Debugf("Round %d: found %d available nodes", len(result), len(tmp_processed))
// If no progress has been made this round,
// If no progress has been made this round,
// that means we have circular dependencies.
if len(tmp_processed) == 0 {
return nil, fmt.Errorf("Could not find a solution to this dependency graph")
@ -1004,4 +1011,4 @@ func (graph *DependencyGraph) GenerateTraversalMap() ([][]string, error) {
result = append(result, round)
}
return result, nil
}
}