git-svn: add --shared and --template= options to pass to init-db
[gitweb.git] / checkout-index.c
index 0b9cabc61cafa06501064c0b2cccbc3d434904c2..ea40bc29bed17fbd6e3326edaa6fb3c38b742de6 100644 (file)
@@ -39,6 +39,7 @@
 #include "cache.h"
 #include "strbuf.h"
 #include "quote.h"
+#include "cache-tree.h"
 
 #define CHECKOUT_ALL 4
 static const char *prefix;
@@ -167,7 +168,7 @@ static int checkout_all(void)
 static const char checkout_cache_usage[] =
 "git-checkout-index [-u] [-q] [-a] [-f] [-n] [--stage=[123]|all] [--prefix=<string>] [--temp] [--] <file>...";
 
-static struct cache_file cache_file;
+static struct lock_file lock_file;
 
 int main(int argc, char **argv)
 {
@@ -210,9 +211,8 @@ int main(int argc, char **argv)
                if (!strcmp(arg, "-u") || !strcmp(arg, "--index")) {
                        state.refresh_cache = 1;
                        if (newfd < 0)
-                               newfd = hold_index_file_for_update
-                                       (&cache_file,
-                                        get_index_file());
+                               newfd = hold_lock_file_for_update
+                                       (&lock_file, get_index_file());
                        if (newfd < 0)
                                die("cannot open index.lock file.");
                        continue;
@@ -261,7 +261,7 @@ int main(int argc, char **argv)
                 */
                if (state.refresh_cache) {
                        close(newfd); newfd = -1;
-                       rollback_index_file(&cache_file);
+                       rollback_lock_file(&lock_file);
                }
                state.refresh_cache = 0;
        }
@@ -277,7 +277,7 @@ int main(int argc, char **argv)
                        die("git-checkout-index: don't mix '--stdin' and explicit filenames");
                p = prefix_path(prefix, prefix_length, arg);
                checkout_file(p);
-               if (p != arg)
+               if (p < arg || p > arg + strlen(arg))
                        free((char*)p);
        }
 
@@ -299,7 +299,7 @@ int main(int argc, char **argv)
                                path_name = buf.buf;
                        p = prefix_path(prefix, prefix_length, path_name);
                        checkout_file(p);
-                       if (p != path_name)
+                       if (p < path_name || p > path_name + strlen(path_name))
                                free((char *)p);
                        if (path_name != buf.buf)
                                free(path_name);
@@ -311,7 +311,7 @@ int main(int argc, char **argv)
 
        if (0 <= newfd &&
            (write_cache(newfd, active_cache, active_nr) ||
-            commit_index_file(&cache_file)))
-               die("Unable to write new cachefile");
+            commit_lock_file(&lock_file)))
+               die("Unable to write new index file");
        return 0;
 }