/* This file is in the public domain. */ #include #include extern const char *__progname; #include "ui.h" #include "git-intf.h" static int n_diff_args = 0; static char **diff_args = 0; static int n_new_files = 0; static char **new_files = 0; static void save_diff_arg(char *arg) { diff_args = realloc(diff_args,(n_diff_args+1)*sizeof(*diff_args)); diff_args[n_diff_args++] = arg; } static char **diff_args_list(void) { save_diff_arg(0); return(diff_args); } /* * Warning: removing the funny-characters check here means updating the * code over in git-intf.c (newfile_hunks) to match! */ static void save_new_file(char *arg) { if (arg && git_confusing_name(arg)) { printf("%s: %s: name likely to confuse git\n",__progname,arg); exit(1); } new_files = realloc(new_files,(n_new_files+1)*sizeof(*new_files)); new_files[n_new_files++] = arg; } static char **new_files_list(void) { save_new_file(0); return(new_files); } static void handleargs(int ac, char **av) { int skip; int errs; skip = 0; errs = 0; for (ac--,av++;ac;ac--,av++) { if (skip > 0) { skip --; continue; } if (**av != '-') { fprintf(stderr,"%s: stray argument `%s'\n",__progname,*av); errs ++; continue; } if (0) { needarg:; fprintf(stderr,"%s: %s needs a following argument\n",__progname,*av); errs ++; continue; } #define WANTARG() do { if (++skip >= ac) goto needarg; } while (0) if (!strcmp(*av,"-diff")) { WANTARG(); save_diff_arg(av[skip]); continue; } if (!strcmp(*av,"-new")) { WANTARG(); save_new_file(av[skip]); continue; } if (!strcmp(*av,"-save-fast-import")) { WANTARG(); git_save_fast_import(av[skip]); continue; } #undef WANTARG fprintf(stderr,"%s: unrecognized option `%s'\n",__progname,*av); errs ++; } if (errs) exit(1); } int main(int, char **); int main(int ac __attribute__((__unused__)), char **av) { handleargs(ac,av); git_check_dir(); git_user_info(); git_initial_diff(diff_args_list(),new_files_list()); git_initial_contents(); ui_main_loop(); return(0); }