Fix up recent object model cleanups
[git.git] / checkout-cache.c
index 972b1f7..a1ef944 100644 (file)
  * of "-a" causing problems (not possible in the above example,
  * but get used to it in scripting!).
  */
-#include <sys/param.h>
-
 #include "cache.h"
 
-static int force = 0, quiet = 0;
+static int force = 0, quiet = 0, not_new = 0;
 
 static void create_directories(const char *path)
 {
        int len = strlen(path);
-       char *buf = malloc(len + 1);
+       char *buf = xmalloc(len + 1);
        const char *slash = path;
 
        while ((slash = strchr(slash+1, '/')) != NULL) {
@@ -120,7 +118,8 @@ static int checkout_entry(struct cache_entry *ce, const char *base_dir)
                 * just do the right thing)
                 */
                unlink(path);
-       }
+       } else if (not_new) 
+               return 0;
        return write_entry(ce, path);
 }
 
@@ -184,6 +183,10 @@ int main(int argc, char **argv)
                                quiet = 1;
                                continue;
                        }
+                       if (!strcmp(arg, "-n")) {
+                               not_new = 1;
+                               continue;
+                       }
                        if (!memcmp(arg, "--prefix=", 9)) {
                                base_dir = arg+9;
                                continue;