Hi, Haakon Riiser <[EMAIL PROTECTED]> writes:
> Great, but could you also support the -B/--ignore-blank-lines > option? (I tend to use -Bb when reviewing diffs, since that > combination excludes changes that normally are just cosmetics.) > Here's an untested patch: I slightly modified this patch in my branch[*] so that one can use both options at the same time (you need `patch-2' and `patch-3' for this). However, I thought that a generic option that would allow to pass arbitrary options to `diff' would be more flexible (`patch-4' implements this and removes `-b' and `-w'). Basically, this new option, namely `--diff-options' or `-D', can be used as follows: $ tla diff -D -bw # equivalent to `tla diff -bw' with Haakon's patch $ tla diff -D -b -D -w # likewise $ tla diff -D -bw -D --show-c-function ... IOW, all the `-D' parameters are added up. For reviewing purposes, I attach the patch below. Thanks, Ludovic. [*] Location: http://www.laas.fr/~lcourtes/software/arch-2005/ Branch: tla--devo--1.3 --- orig/libarch/cmd-diff.c +++ mod/libarch/cmd-diff.c @@ -85,16 +85,9 @@ static t_uchar * version_string = (cfg__ N_("show filenames in unescaped form"))\ OP (opt_limit, 0, "limit LIMITS", 1, \ N_("limit the diff to LIMITS")) \ - OP (opt_ignore_space, "b", "ignore-space-change", 0, \ - N_("ignore white space-only changes (display only)"))\ - OP (opt_ignore_all_space, "w", "ignore-all-space", 0, \ - N_("Ignore all white space (display only)")) + OP (opt_diff_opts, "D", "diff-options", 1, \ + N_("specify options for `diff'")) -/* - OP (opt_diffopt, 0, "diff-opts", 0, \ - N_("specify specific diff options to use.")) \ - -*/ t_uchar arch_cmd_diff_help[] = N_("report about local changes in a project tree\n" "Generate a patch report describing the differences between the\n" @@ -127,6 +120,7 @@ arch_cmd_diff (t_uchar * program_name, i t_uchar * output = 0; t_uchar * default_archive = 0; t_uchar ** diff_opts = 0; + unsigned diff_opt_count = 0; t_uchar *limit_string = 0; int diffs = 1; int keep = 0; @@ -235,20 +229,12 @@ arch_cmd_diff (t_uchar * program_name, i latest = 1; break; } - case opt_ignore_space: - { - lim_free(0, diff_opts); - diff_opts = lim_malloc(0, 3 * sizeof(diff_opts[0])); - diff_opts[0] = "--ignore-space-change"; - diff_opts[1] = 0; - break; - } - case opt_ignore_all_space: + case opt_diff_opts: { - lim_free(0, diff_opts); - diff_opts = lim_malloc(0, 3 * sizeof(diff_opts[0])); - diff_opts[0] = "--ignore-all-space"; - diff_opts[1] = 0; + diff_opt_count++; + diff_opts = lim_realloc (0, diff_opts, (diff_opt_count + 1) * sizeof (diff_opts[0])); + diff_opts[diff_opt_count - 1] = str_save (0, option->arg_string); + diff_opts[diff_opt_count] = 0; break; } } @@ -480,12 +466,17 @@ arch_cmd_diff (t_uchar * program_name, i free_assoc_table (inode_shortcut); } + { + unsigned i; + for (i = 0; i < diff_opt_count; i++) + lim_free (0, diff_opts[i]); + } + lim_free (0, diff_opts); lim_free (0, rvsnspec); lim_free (0, tree_root); lim_free (0, archive); lim_free (0, revision); lim_free (0, log_file); - lim_free (0, diff_opts); lim_free (0, limit_string); lim_free (0, local_spec); rel_free_table (limits); _______________________________________________ Gnu-arch-users mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gnu-arch-users GNU arch home page: http://savannah.gnu.org/projects/gnu-arch/
