Merge refs/heads/master from .
authorJunio C Hamano <junkio@cox.net>
Mon, 29 Aug 2005 06:03:23 +0000 (23:03 -0700)
committerJunio C Hamano <junkio@cox.net>
Mon, 29 Aug 2005 06:03:23 +0000 (23:03 -0700)
19 files changed:
Documentation/tutorial.txt
apply.c
cache.h
commit.c
connect.c
daemon.c
diff.c
fsck-cache.c
ident.c
ls-files.c
path.c
pull.c
receive-pack.c
rsh.c
server-info.c
sha1_file.c
ssh-pull.c
ssh-push.c
upload-pack.c

index 997e958..866dbbe 100644 (file)
@@ -671,6 +671,7 @@ you have, you can say
        git branch
 
 which is nothing more than a simple script around "ls .git/refs/heads".
+There will be asterisk in front of the branch you are currently on.
 
 Sometimes you may wish to create a new branch _without_ actually
 checking it out and switching to it. If so, just use the command
diff --git a/apply.c b/apply.c
index 3ebbf6b..e87190e 100644 (file)
--- a/apply.c
+++ b/apply.c
@@ -1377,7 +1377,7 @@ static struct excludes {
 
 static int use_patch(struct patch *p)
 {
-       const char *pathname = p->new_name ? : p->old_name;
+       const char *pathname = p->new_name ? p->new_name : p->old_name;
        struct excludes *x = excludes;
        while (x) {
                if (fnmatch(x->path, pathname, 0) == 0)
diff --git a/cache.h b/cache.h
index 1478631..d407f39 100644 (file)
--- a/cache.h
+++ b/cache.h
  * We accept older names for now but warn.
  */
 extern char *gitenv_bc(const char *);
+#ifdef __GNUC__
 #define gitenv(e) (getenv(e) ? : gitenv_bc(e))
+#else
+#define gitenv(e) (getenv(e) ? getenv(e) : gitenv_bc(e))
+#endif
 
 /*
  * Basic data structures for the directory cache
@@ -100,7 +104,7 @@ struct cache_entry {
        unsigned int ce_size;
        unsigned char sha1[20];
        unsigned short ce_flags;
-       char name[0];
+       char name[];
 };
 
 #define CE_NAMEMASK  (0x0fff)
@@ -283,7 +287,7 @@ extern int checkout_entry(struct cache_entry *ce, struct checkout *state);
 extern struct alternate_object_database {
        struct alternate_object_database *next;
        char *name;
-       char base[0]; /* more */
+       char base[]; /* more */
 } *alt_odb_list;
 extern void prepare_alt_odb(void);
 
@@ -296,7 +300,7 @@ extern struct packed_git {
        unsigned int pack_last_used;
        unsigned int pack_use_cnt;
        unsigned char sha1[20];
-       char pack_name[0]; /* something like ".git/objects/pack/xxxxx.pack" */
+       char pack_name[]; /* something like ".git/objects/pack/xxxxx.pack" */
 } *packed_git;
 
 struct pack_entry {
@@ -311,7 +315,7 @@ struct ref {
        unsigned char new_sha1[20];
        unsigned char force;
        struct ref *peer_ref; /* when renaming */
-       char name[0];
+       char name[];
 };
 
 extern int git_connect(int fd[2], char *url, const char *prog);
index e51eda1..5619258 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -102,7 +102,7 @@ static unsigned long parse_commit_date(const char *buf)
 static struct commit_graft {
        unsigned char sha1[20];
        int nr_parent;
-       unsigned char parent[0][20]; /* more */
+       unsigned char parent[][20]; /* more */
 } **commit_graft;
 static int commit_graft_alloc, commit_graft_nr;
 
index 7cd5873..825c439 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -396,8 +396,10 @@ int git_connect(int fd[2], char *url, const char *prog)
                close(pipefd[1][0]);
                close(pipefd[1][1]);
                if (protocol == PROTO_SSH) {
-                       const char *ssh = getenv("GIT_SSH") ? : "ssh";
-                       const char *ssh_basename = strrchr(ssh, '/');
+                       const char *ssh, *ssh_basename;
+                       ssh = getenv("GIT_SSH");
+                       if (!ssh) ssh = "ssh";
+                       ssh_basename = strrchr(ssh, '/');
                        if (!ssh_basename)
                                ssh_basename = ssh;
                        else
index 932d908..fb3f25c 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -3,6 +3,7 @@
 #include <signal.h>
 #include <sys/wait.h>
 #include <sys/socket.h>
+#include <sys/time.h>
 #include <netdb.h>
 #include <netinet/in.h>
 
diff --git a/diff.c b/diff.c
index 137d0d0..9015c81 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -19,6 +19,7 @@ static const char *external_diff(void)
 {
        static const char *external_diff_cmd = NULL;
        static int done_preparing = 0;
+       const char *env_diff_opts;
 
        if (done_preparing)
                return external_diff_cmd;
@@ -31,11 +32,11 @@ static const char *external_diff(void)
         *
         * GIT_DIFF_OPTS="-c";
         */
-       if (gitenv("GIT_EXTERNAL_DIFF"))
-               external_diff_cmd = gitenv("GIT_EXTERNAL_DIFF");
+       external_diff_cmd = gitenv("GIT_EXTERNAL_DIFF");
 
        /* In case external diff fails... */
-       diff_opts = gitenv("GIT_DIFF_OPTS") ? : diff_opts;
+       env_diff_opts = gitenv("GIT_DIFF_OPTS");
+       if (env_diff_opts) diff_opts = env_diff_opts;
 
        done_preparing = 1;
        return external_diff_cmd;
@@ -530,10 +531,12 @@ static void run_external_diff(const char *pgm,
        pid_t pid;
        int status;
        static int atexit_asked = 0;
+       const char *othername;
 
+       othername = (other? other : name);
        if (one && two) {
                prepare_temp_file(name, &temp[0], one);
-               prepare_temp_file(other ? : name, &temp[1], two);
+               prepare_temp_file(othername, &temp[1], two);
                if (! atexit_asked &&
                    (temp[0].name == temp[0].tmp_path ||
                     temp[1].name == temp[1].tmp_path)) {
@@ -574,7 +577,7 @@ static void run_external_diff(const char *pgm,
                 * otherwise we use the built-in one.
                 */
                if (one && two)
-                       builtin_diff(name, other ? : name, temp, xfrm_msg,
+                       builtin_diff(name, othername, temp, xfrm_msg,
                                     complete_rewrite);
                else
                        printf("* Unmerged path %s\n", name);
@@ -889,13 +892,13 @@ int diff_queue_is_empty(void)
 void diff_debug_filespec(struct diff_filespec *s, int x, const char *one)
 {
        fprintf(stderr, "queue[%d] %s (%s) %s %06o %s\n",
-               x, one ? : "",
+               x, one ? one : "",
                s->path,
                DIFF_FILE_VALID(s) ? "valid" : "invalid",
                s->mode,
                s->sha1_valid ? sha1_to_hex(s->sha1) : "");
        fprintf(stderr, "queue[%d] %s size %lu flags %d\n",
-               x, one ? : "",
+               x, one ? one : "",
                s->size, s->xfrm_flags);
 }
 
@@ -904,7 +907,7 @@ void diff_debug_filepair(const struct diff_filepair *p, int i)
        diff_debug_filespec(p->one, i, "one");
        diff_debug_filespec(p->two, i, "two");
        fprintf(stderr, "score %d, status %c stays %d broken %d\n",
-               p->score, p->status ? : '?',
+               p->score, p->status ? p->status : '?',
                p->source_stays, p->broken_pair);
 }
 
index 8091780..e53d01a 100644 (file)
@@ -390,7 +390,10 @@ static int fsck_head_link(void)
        char hex[40];
        unsigned char sha1[20];
        static char path[PATH_MAX], link[PATH_MAX];
-       const char *git_dir = gitenv(GIT_DIR_ENVIRONMENT) ? : DEFAULT_GIT_DIR_ENVIRONMENT;
+       const char *git_dir;
+
+       git_dir = gitenv(GIT_DIR_ENVIRONMENT);
+       if (!git_dir) git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
 
        snprintf(path, sizeof(path), "%s/HEAD", git_dir);
        if (readlink(path, link, sizeof(link)) < 0)
@@ -451,7 +454,7 @@ int main(int argc, char **argv)
        if (standalone && check_full)
                die("Only one of --standalone or --full can be used.");
        if (standalone)
-               unsetenv("GIT_ALTERNATE_OBJECT_DIRECTORIES");
+               putenv("GIT_ALTERNATE_OBJECT_DIRECTORIES=");
 
        fsck_head_link();
        fsck_object_dir(get_object_directory());
diff --git a/ident.c b/ident.c
index 9ef636e..0fe81f6 100644 (file)
--- a/ident.c
+++ b/ident.c
@@ -58,14 +58,24 @@ static int add_raw(char *buf, int size, int offset, const char *str)
 
 static int crud(unsigned char c)
 {
-       static const char crud_array[256] = {
-               [0 ... 31] = 1,
-               [' '] = 1,
-               ['.'] = 1, [','] = 1,
-               [':'] = 1, [';'] = 1,
-               ['<'] = 1, ['>'] = 1,
-               ['"'] = 1, ['\''] = 1,
-       };
+       static char crud_array[256];
+       static int crud_array_initialized = 0;
+
+       if (!crud_array_initialized) {
+               int k;
+
+               for (k = 0; k <= 31; ++k) crud_array[k] = 1;
+               crud_array[' '] = 1;
+               crud_array['.'] = 1;
+               crud_array[','] = 1;
+               crud_array[':'] = 1;
+               crud_array[';'] = 1;
+               crud_array['<'] = 1;
+               crud_array['>'] = 1;
+               crud_array['"'] = 1;
+               crud_array['\''] = 1;
+               crud_array_initialized = 1;
+       }
        return crud_array[c];
 }
 
index e53d245..0d79104 100644 (file)
@@ -205,7 +205,7 @@ static int excluded(const char *pathname)
 
 struct nond_on_fs {
        int len;
-       char name[0];
+       char name[];
 };
 
 static struct nond_on_fs **dir;
diff --git a/path.c b/path.c
index b85f087..142e575 100644 (file)
--- a/path.c
+++ b/path.c
@@ -41,10 +41,12 @@ char *mkpath(const char *fmt, ...)
 
 char *git_path(const char *fmt, ...)
 {
-       const char *git_dir = gitenv(GIT_DIR_ENVIRONMENT) ? : DEFAULT_GIT_DIR_ENVIRONMENT;
+       const char *git_dir;
        va_list args;
        unsigned len;
 
+       git_dir = gitenv(GIT_DIR_ENVIRONMENT);
+       if (!git_dir) git_dir = DEFAULT_GIT_DIR_ENVIRONMENT;
        len = strlen(git_dir);
        if (len > PATH_MAX-100)
                return bad_path;
diff --git a/pull.c b/pull.c
index e7bf83b..ff55044 100644 (file)
--- a/pull.c
+++ b/pull.c
@@ -156,7 +156,7 @@ static int loop(void)
 
                //fprintf(stderr, "fetch %s\n", sha1_to_hex(obj->sha1));
                
-               if (make_sure_we_have_it(obj->type ?: "object", 
+               if (make_sure_we_have_it(obj->type ? obj->type : "object", 
                                         obj->sha1))
                        return -1;
                if (!obj->type)
index 9026f1b..1ef0c13 100644 (file)
@@ -24,7 +24,7 @@ struct command {
        unsigned char updated;
        unsigned char old_sha1[20];
        unsigned char new_sha1[20];
-       char ref_name[0];
+       char ref_name[];
 };
 
 static struct command *commands = NULL;
@@ -269,7 +269,7 @@ int main(int argc, char **argv)
 
        /* If we have a ".git" directory, chdir to it */
        chdir(".git");
-       setenv("GIT_DIR", ".", 1);
+       putenv("GIT_DIR=.");
 
        if (access("objects", X_OK) < 0 || access("refs/heads", X_OK) < 0)
                die("%s doesn't appear to be a git directory", dir);
diff --git a/rsh.c b/rsh.c
index bcb1c80..04cbdf7 100644 (file)
--- a/rsh.c
+++ b/rsh.c
@@ -56,8 +56,10 @@ int setup_connection(int *fd_in, int *fd_out, const char *remote_prog,
                return error("Couldn't create socket");
        }
        if (!fork()) {
-               const char *ssh = getenv("GIT_SSH") ? : "ssh";
-               const char *ssh_basename = strrchr(ssh, '/');
+               const char *ssh, *ssh_basename;
+               ssh = getenv("GIT_SSH");
+               if (!ssh) ssh = "ssh";
+               ssh_basename = strrchr(ssh, '/');
                if (!ssh_basename)
                        ssh_basename = ssh;
                else
index 2b3aeca..cb58eb6 100644 (file)
@@ -70,7 +70,7 @@ static struct pack_info {
        int nr_alloc;
        int nr_heads;
        unsigned char (*head)[20];
-       char dep[0]; /* more */
+       char dep[]; /* more */
 } **info;
 static int num_pack;
 static const char *objdir;
index 7766977..fa37f1e 100644 (file)
@@ -283,7 +283,10 @@ void prepare_alt_odb(void)
        char *map;
        int fd;
        struct stat st;
-       char *alt = gitenv(ALTERNATE_DB_ENVIRONMENT) ? : "";
+       char *alt;
+
+       alt = gitenv(ALTERNATE_DB_ENVIRONMENT);
+       if (!alt) alt = "";
 
        sprintf(path, "%s/info/alternates", get_object_directory());
        if (alt_odb_tail)
index b7f313b..f1d8e70 100644 (file)
@@ -87,7 +87,10 @@ int main(int argc, char **argv)
        char *commit_id;
        char *url;
        int arg = 1;
-       const char *prog = getenv("GIT_SSH_PUSH") ? : "git-ssh-push";
+       const char *prog;
+
+       prog = getenv("GIT_SSH_PUSH");
+       if (!prog) prog = "git-ssh-push";
 
        while (arg < argc && argv[arg][0] == '-') {
                if (argv[arg][1] == 't') {
index ee424a8..5bd4569 100644 (file)
@@ -105,10 +105,12 @@ int main(int argc, char **argv)
         char *commit_id;
         char *url;
        int fd_in, fd_out;
-       const char *prog = getenv("GIT_SSH_PULL") ? : "git-ssh-pull";
+       const char *prog;
        unsigned char sha1[20];
        char hex[41];
 
+       prog = getenv("GIT_SSH_PULL");
+       if (!prog) prog = "git-ssh-pull";
        while (arg < argc && argv[arg][0] == '-') {
                if (argv[arg][1] == 'w')
                        arg++;
index 95d3812..da10742 100644 (file)
@@ -179,7 +179,7 @@ int main(int argc, char **argv)
        chdir(".git");
        if (access("objects", X_OK) || access("refs", X_OK))
                die("git-upload-pack: %s doesn't seem to be a git archive", dir);
-       setenv("GIT_DIR", ".", 1);
+       putenv("GIT_DIR=.");
        upload_pack();
        return 0;
 }