diff options
author | 2006-07-07 17:37:17 +0000 | |
---|---|---|
committer | 2006-07-07 17:37:17 +0000 | |
commit | 9fac60a5edb4d91f7a39943c017b4040df584793 (patch) | |
tree | be4776b06f03786b5115a3587e917b0ab575ad09 /usr.bin/cvs/diff.c | |
parent | Regen (diff) | |
download | wireguard-openbsd-9fac60a5edb4d91f7a39943c017b4040df584793.tar.xz wireguard-openbsd-9fac60a5edb4d91f7a39943c017b4040df584793.zip |
first part of opencvs remote, fairly useable on existing trees
although i advise against using it on real development trees for now.
only a few commands work right so far:
- commit
- diff
- status
- log
- update (partially working)
if you feel like testing remote and run into bugs feel free to
contact me, and please include a full trace (-t).
Diffstat (limited to 'usr.bin/cvs/diff.c')
-rw-r--r-- | usr.bin/cvs/diff.c | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/usr.bin/cvs/diff.c b/usr.bin/cvs/diff.c index 6d36121055e..af6ef52a97a 100644 --- a/usr.bin/cvs/diff.c +++ b/usr.bin/cvs/diff.c @@ -1,4 +1,4 @@ -/* $OpenBSD: diff.c,v 1.107 2006/07/01 01:07:50 ray Exp $ */ +/* $OpenBSD: diff.c,v 1.108 2006/07/07 17:37:17 joris Exp $ */ /* * Copyright (c) 2006 Joris Vink <joris@openbsd.org> * @@ -20,8 +20,8 @@ #include "cvs.h" #include "diff.h" #include "log.h" +#include "remote.h" -int cvs_diff(int, char **); void cvs_diff_local(struct cvs_file *); static int Nflag = 0; @@ -95,7 +95,41 @@ cvs_diff(int argc, char **argv) cr.enterdir = NULL; cr.leavedir = NULL; - cr.fileproc = cvs_diff_local; + + if (current_cvsroot->cr_method != CVS_METHOD_LOCAL) { + cr.fileproc = cvs_client_sendfile; + + if (!(flags & CR_RECURSE_DIRS)) + cvs_client_send_request("Argument -l"); + + switch (diff_format) { + case D_CONTEXT: + cvs_client_send_request("Argument -c"); + break; + case D_RCSDIFF: + cvs_client_send_request("Argument -n"); + break; + case D_UNIFIED: + cvs_client_send_request("Argument -u"); + break; + default: + break; + } + + if (Nflag == 1) + cvs_client_send_request("Argument -N"); + + if (diff_pflag == 1) + cvs_client_send_request("Argument -p"); + + if (rev1 != NULL) + cvs_client_send_request("Argument -r%s", rev1); + if (rev2 != NULL) + cvs_client_send_request("Argument -r%s", rev2); + } else { + cr.fileproc = cvs_diff_local; + } + cr.flags = flags; diff_rev1 = diff_rev2 = NULL; @@ -105,6 +139,13 @@ cvs_diff(int argc, char **argv) else cvs_file_run(1, &arg, &cr); + if (current_cvsroot->cr_method != CVS_METHOD_LOCAL) { + cvs_client_send_files(argv, argc); + cvs_client_senddir("."); + cvs_client_send_request("diff"); + cvs_client_get_responses(); + } + return (0); } |