--- a/Makefile +++ b/Makefile @@ -529,16 +529,7 @@ EXTRA_PROGRAMS = # ... and all the rest that could be moved out of bindir to gitexecdir PROGRAMS += $(EXTRA_PROGRAMS) -PROGRAM_OBJS += credential-store.o -PROGRAM_OBJS += daemon.o -PROGRAM_OBJS += fast-import.o -PROGRAM_OBJS += http-backend.o -PROGRAM_OBJS += imap-send.o -PROGRAM_OBJS += sh-i18n--envsubst.o -PROGRAM_OBJS += shell.o -PROGRAM_OBJS += show-index.o -PROGRAM_OBJS += upload-pack.o -PROGRAM_OBJS += remote-testsvn.o +PROGRAM_OBJS = # Binary suffix, set to .exe for Windows builds X = @@ -887,6 +878,12 @@ BUILTIN_OBJS += builtin/verify-commit.o BUILTIN_OBJS += builtin/verify-pack.o BUILTIN_OBJS += builtin/verify-tag.o BUILTIN_OBJS += builtin/write-tree.o +BUILTIN_OBJS += builtin/daemon.o +BUILTIN_OBJS += builtin/fast-import.o +BUILTIN_OBJS += builtin/http-backend.o +BUILTIN_OBJS += builtin/imap-send.o +BUILTIN_OBJS += builtin/shell.o +BUILTIN_OBJS += builtin/upload-pack.o GITLIBS = $(LIB_FILE) $(XDIFF_LIB) EXTLIBS = @@ -1049,7 +1046,7 @@ endif EXTLIBS += -lz ifndef NO_OPENSSL - OPENSSL_LIBSSL = -lssl + EXTLIBS += -lssl ifdef OPENSSLDIR BASIC_CFLAGS += -I$(OPENSSLDIR)/include OPENSSL_LINK = -L$(OPENSSLDIR)/$(lib) $(CC_LD_DYNPATH)$(OPENSSLDIR)/$(lib) @@ -1895,10 +1892,6 @@ endif git-%$X: %.o GIT-LDFLAGS $(GITLIBS) $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) -git-imap-send$X: imap-send.o GIT-LDFLAGS $(GITLIBS) - $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ - $(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL) $(LIB_4_CRYPTO) - git-http-fetch$X: http.o http-walker.o http-fetch.o GIT-LDFLAGS $(GITLIBS) $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ $(LIBS) $(CURL_LIBCURL) @@ -2216,24 +2209,22 @@ endif bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \ execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \ { test "$$bindir/" = "$$execdir/" || \ - for p in git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \ + for p in $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \ $(RM) "$$execdir/$$p" && \ test -z "$(NO_INSTALL_HARDLINKS)$(NO_CROSS_DIRECTORY_HARDLINKS)" && \ - ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \ + ln -s git "$$execdir/$$p" 2>/dev/null || \ cp "$$bindir/$$p" "$$execdir/$$p" || exit; \ done; \ } && \ for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \ $(RM) "$$bindir/$$p" && \ test -z "$(NO_INSTALL_HARDLINKS)" && \ - ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \ ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \ cp "$$bindir/git$X" "$$bindir/$$p" || exit; \ done && \ for p in $(BUILT_INS); do \ $(RM) "$$execdir/$$p" && \ test -z "$(NO_INSTALL_HARDLINKS)" && \ - ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \ ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git$X" "$$execdir/$$p" || exit; \ done && \ --- a/builtin.h +++ b/builtin.h @@ -138,5 +138,11 @@ extern int cmd_verify_pack(int argc, con extern int cmd_show_ref(int argc, const char **argv, const char *prefix); extern int cmd_pack_refs(int argc, const char **argv, const char *prefix); extern int cmd_replace(int argc, const char **argv, const char *prefix); +extern int cmd_daemon(int argc, char **argv, const char *prefix); +extern int cmd_fast_import(int argc, char **argv, const char *prefix); +extern int cmd_http_backend(int argc, char **argv, const char *prefix); +extern int cmd_imap_send(int argc, char **argv, const char *prefix); +extern int cmd_shell(int argc, char **argv, const char *prefix); +extern int cmd_upload_pack(int argc, char **argv, const char *prefix); #endif --- /dev/null +++ b/builtin/daemon.c @@ -0,0 +1 @@ +#include "../daemon.c" --- /dev/null +++ b/builtin/fast-import.c @@ -0,0 +1 @@ +#include "../fast-import.c" --- /dev/null +++ b/builtin/http-backend.c @@ -0,0 +1 @@ +#include "../http-backend.c" --- /dev/null +++ b/builtin/imap-send.c @@ -0,0 +1 @@ +#include "../imap-send.c" --- /dev/null +++ b/builtin/shell.c @@ -0,0 +1 @@ +#include "../shell.c" --- /dev/null +++ b/builtin/upload-pack.c @@ -0,0 +1 @@ +#include "../upload-pack.c" --- a/daemon.c +++ b/daemon.c @@ -1096,7 +1096,7 @@ static int serve(struct string_list *lis return service_loop(&socklist); } -int main(int argc, char **argv) +int cmd_daemon(int argc, char **argv, const char *prefix) { int listen_port = 0; struct string_list listen_addr = STRING_LIST_INIT_NODUP; @@ -1292,12 +1292,13 @@ int main(int argc, char **argv) store_pid(pid_file); /* prepare argv for serving-processes */ - cld_argv = xmalloc(sizeof (char *) * (argc + 2)); - cld_argv[0] = argv[0]; /* git-daemon */ - cld_argv[1] = "--serve"; + cld_argv = xmalloc(sizeof (char *) * (argc + 3)); + cld_argv[0] = "git"; + cld_argv[1] = argv[0]; /* daemon */ + cld_argv[2] = "--serve"; for (i = 1; i < argc; ++i) - cld_argv[i+1] = argv[i]; - cld_argv[argc+1] = NULL; + cld_argv[i+2] = argv[i]; + cld_argv[argc+2] = NULL; return serve(&listen_addr, listen_port, cred); } --- a/fast-import.c +++ b/fast-import.c @@ -3350,7 +3350,7 @@ static void parse_argv(void) read_marks(); } -int main(int argc, char **argv) +int cmd_fast_import(int argc, char **argv, const char *prefix) { unsigned int i; --- a/git.c +++ b/git.c @@ -312,11 +312,11 @@ static int handle_alias(int *argcp, cons struct cmd_struct { const char *cmd; - int (*fn)(int, const char **, const char *); + int (*fn)(int, char **, const char *); int option; }; -static int run_builtin(struct cmd_struct *p, int argc, const char **argv) +static int run_builtin(struct cmd_struct *p, int argc, char **argv) { int status, help; struct stat st; @@ -396,6 +396,7 @@ static struct cmd_struct commands[] = { { "config", cmd_config, RUN_SETUP_GENTLY }, { "count-objects", cmd_count_objects, RUN_SETUP }, { "credential", cmd_credential, RUN_SETUP_GENTLY }, + { "daemon", cmd_daemon }, { "describe", cmd_describe, RUN_SETUP }, { "diff", cmd_diff }, { "diff-files", cmd_diff_files, RUN_SETUP | NEED_WORK_TREE }, @@ -414,6 +415,8 @@ static struct cmd_struct commands[] = { { "grep", cmd_grep, RUN_SETUP_GENTLY }, { "hash-object", cmd_hash_object }, { "help", cmd_help }, + { "http-backend", cmd_http_backend }, + { "imap-send", cmd_imap_send }, { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY }, { "init", cmd_init_db, NO_SETUP }, { "init-db", cmd_init_db, NO_SETUP }, @@ -462,6 +465,7 @@ static struct cmd_struct commands[] = { { "revert", cmd_revert, RUN_SETUP | NEED_WORK_TREE }, { "rm", cmd_rm, RUN_SETUP }, { "send-pack", cmd_send_pack, RUN_SETUP }, + { "shell", cmd_shell }, { "shortlog", cmd_shortlog, RUN_SETUP_GENTLY | USE_PAGER }, { "show", cmd_show, RUN_SETUP }, { "show-branch", cmd_show_branch, RUN_SETUP }, @@ -478,6 +482,7 @@ static struct cmd_struct commands[] = { { "update-server-info", cmd_update_server_info, RUN_SETUP }, { "upload-archive", cmd_upload_archive }, { "upload-archive--writer", cmd_upload_archive_writer }, + { "upload-pack", cmd_upload_pack }, { "var", cmd_var, RUN_SETUP_GENTLY }, { "verify-commit", cmd_verify_commit, RUN_SETUP }, { "verify-pack", cmd_verify_pack }, --- a/http-backend.c +++ b/http-backend.c @@ -557,7 +557,7 @@ static struct service_cmd { {"POST", "/git-receive-pack$", service_rpc} }; -int main(int argc, char **argv) +int cmd_http_backend(int argc, char **argv, const char *prefix) { char *method = getenv("REQUEST_METHOD"); char *dir; --- a/imap-send.c +++ b/imap-send.c @@ -1338,7 +1338,7 @@ static void git_imap_config(void) git_config_get_string("imap.authmethod", &server.auth_method); } -int main(int argc, char **argv) +int cmd_imap_send(int argc, char **argv, const char *prefix) { struct strbuf all_msgs = STRBUF_INIT; struct strbuf msg = STRBUF_INIT; --- a/shell.c +++ b/shell.c @@ -138,7 +138,7 @@ static struct commands { { NULL }, }; -int main(int argc, char **argv) +int cmd_shell(int argc, char **argv, const char *prefix) { char *prog; const char **user_argv; --- a/upload-pack.c +++ b/upload-pack.c @@ -791,7 +791,7 @@ static int upload_pack_config(const char return parse_hide_refs_config(var, value, "uploadpack"); } -int main(int argc, char **argv) +int cmd_upload_pack(int argc, char **argv, const char *prefix) { char *dir; int i;