Merge pull request #154 from dotcloud/153-commitnorepo

Clearer information when listing images
diff --git a/README.md b/README.md
index 851ddb4..c955a1d 100644
--- a/README.md
+++ b/README.md
@@ -132,7 +132,7 @@
 
 ```bash
 # Download a base image
-docker import base
+docker pull base
 
 # Run an interactive shell in the base image,
 # allocate a tty, attach stdin and stdout
diff --git a/commands.go b/commands.go
index 0a6bff5..869581c 100644
--- a/commands.go
+++ b/commands.go
@@ -413,8 +413,13 @@
 	}
 
 	// If the login failed, abort
-	if srv.runtime.authConfig == nil {
-		return fmt.Errorf("Please login prior to push. ('docker login')")
+	if srv.runtime.authConfig == nil || srv.runtime.authConfig.Username == "" {
+		if err := srv.CmdLogin(stdin, stdout, args...); err != nil {
+			return err
+		}
+		if srv.runtime.authConfig == nil || srv.runtime.authConfig.Username == "" {
+			return fmt.Errorf("Please login prior to push. ('docker login')")
+		}
 	}
 
 	var remote string
diff --git a/container.go b/container.go
index f900599..2a7d633 100644
--- a/container.go
+++ b/container.go
@@ -76,6 +76,15 @@
 	if err := cmd.Parse(args); err != nil {
 		return nil, err
 	}
+	parsedArgs := cmd.Args()
+	runCmd := []string{}
+	image := ""
+	if len(parsedArgs) >= 1 {
+		image = cmd.Arg(0)
+	}
+	if len(parsedArgs) > 1 {
+		runCmd = parsedArgs[1:]
+	}
 	config := &Config{
 		Ports:     fl_ports,
 		User:      *fl_user,
@@ -84,8 +93,8 @@
 		Memory:    *fl_memory,
 		Detach:    *fl_detach,
 		Env:       fl_env,
-		Cmd:       cmd.Args()[1:],
-		Image:     cmd.Arg(0),
+		Cmd:       runCmd,
+		Image:     image,
 	}
 	return config, nil
 }
diff --git a/deb/debian/control b/deb/debian/control
index 35a842d..5fd3f36 100644
--- a/deb/debian/control
+++ b/deb/debian/control
@@ -10,7 +10,7 @@
 Package: dotcloud-docker
 Architecture: amd64
 Provides: dotcloud-docker
-Depends: lxc, wget, bsdtar, curl, sqlite3
+Depends: lxc, wget, bsdtar, curl, libsqlite3-0
 Conflicts: docker
 Description: A process manager with superpowers
     It encapsulates heterogeneous payloads in Standard Containers, and runs
diff --git a/registry.go b/registry.go
index 8e14d48..8076e31 100644
--- a/registry.go
+++ b/registry.go
@@ -32,7 +32,7 @@
 func NewMultipleImgJson(src []byte) ([]*Image, error) {
 	ret := []*Image{}
 
-	dec := json.NewDecoder(strings.NewReader(strings.Replace(string(src), "null", "\"\"", -1)))
+	dec := json.NewDecoder(strings.NewReader(string(src)))
 	for {
 		m := &Image{}
 		if err := dec.Decode(m); err == io.EOF {
diff --git a/utils.go b/utils.go
index ce722f2..b9b2303 100644
--- a/utils.go
+++ b/utils.go
@@ -7,11 +7,12 @@
 	"fmt"
 	"github.com/dotcloud/docker/rcli"
 	"io"
-	"log"
 	"net/http"
 	"os"
 	"os/exec"
 	"path/filepath"
+	"runtime"
+	"strings"
 	"sync"
 	"time"
 )
@@ -43,9 +44,19 @@
 // If Docker is in damon mode, also send the debug info on the socket
 func Debugf(format string, a ...interface{}) {
 	if rcli.DEBUG_FLAG {
-		log.Printf(format, a...)
+
+		// Retrieve the stack infos
+		_, file, line, ok := runtime.Caller(1)
+		if !ok {
+			file = "<unknown>"
+			line = -1
+		} else {
+			file = file[strings.LastIndex(file, "/")+1:]
+		}
+
+		fmt.Fprintf(os.Stderr, fmt.Sprintf("[debug] %s:%d %s\n", file, line, format), a...)
 		if rcli.CLIENT_SOCKET != nil {
-			fmt.Fprintf(rcli.CLIENT_SOCKET, log.Prefix()+format, a...)
+			fmt.Fprintf(rcli.CLIENT_SOCKET, fmt.Sprintf("[debug] %s:%d %s\n", file, line, format), a...)
 		}
 	}
 }