d818196804
Obtained from: cyclic.com
201 lines
5.7 KiB
C
201 lines
5.7 KiB
C
/* Interface between the client and the rest of CVS. */
|
||
|
||
/* Stuff shared with the server. */
|
||
extern char *mode_to_string PROTO((mode_t));
|
||
extern int change_mode PROTO((char *, char *, int));
|
||
|
||
extern int gzip_level;
|
||
extern int file_gzip_level;
|
||
|
||
#if defined (CLIENT_SUPPORT) || defined (SERVER_SUPPORT)
|
||
|
||
/* Whether the connection should be encrypted. */
|
||
extern int cvsencrypt;
|
||
|
||
/* Whether the connection should use per-packet authentication. */
|
||
extern int cvsauthenticate;
|
||
|
||
#ifdef ENCRYPTION
|
||
|
||
#ifdef HAVE_KERBEROS
|
||
|
||
/* We can't declare the arguments without including krb.h, and I don't
|
||
want to do that in every file. */
|
||
extern struct buffer *krb_encrypt_buffer_initialize ();
|
||
|
||
#endif /* HAVE_KERBEROS */
|
||
|
||
#ifdef HAVE_GSSAPI
|
||
|
||
/* Set this to turn on GSSAPI encryption. */
|
||
extern int cvs_gssapi_encrypt;
|
||
|
||
#endif /* HAVE_GSSAPI */
|
||
|
||
#endif /* ENCRYPTION */
|
||
|
||
#ifdef HAVE_GSSAPI
|
||
|
||
/* We can't declare the arguments without including gssapi.h, and I
|
||
don't want to do that in every file. */
|
||
extern struct buffer *cvs_gssapi_wrap_buffer_initialize ();
|
||
|
||
#endif /* HAVE_GSSAPI */
|
||
|
||
#endif /* defined (CLIENT_SUPPORT) || defined (SERVER_SUPPORT) */
|
||
|
||
#ifdef CLIENT_SUPPORT
|
||
/*
|
||
* Flag variable for seeing whether the server has been started yet.
|
||
* As of this writing, only edit.c:notify_check() uses it.
|
||
*/
|
||
extern int server_started;
|
||
|
||
/* Is the -P option to checkout or update specified? */
|
||
extern int client_prune_dirs;
|
||
|
||
#ifdef AUTH_CLIENT_SUPPORT
|
||
extern int use_authenticating_server;
|
||
void connect_to_pserver PROTO ((int *tofdp, int* fromfdp, int verify_only,
|
||
int do_gssapi));
|
||
# ifndef CVS_AUTH_PORT
|
||
# define CVS_AUTH_PORT 2401
|
||
# endif /* CVS_AUTH_PORT */
|
||
#endif /* AUTH_CLIENT_SUPPORT */
|
||
|
||
#if defined (AUTH_SERVER_SUPPORT) || (defined (SERVER_SUPPORT) && defined (HAVE_GSSAPI))
|
||
extern void pserver_authenticate_connection PROTO ((void));
|
||
#endif
|
||
|
||
#if defined (SERVER_SUPPORT) && defined (HAVE_KERBEROS)
|
||
extern void kserver_authenticate_connection PROTO ((void));
|
||
#endif
|
||
|
||
/* Talking to the server. */
|
||
void send_to_server PROTO((char *str, size_t len));
|
||
void read_from_server PROTO((char *buf, size_t len));
|
||
|
||
/* Internal functions that handle client communication to server, etc. */
|
||
int supported_request PROTO ((char *));
|
||
void option_with_arg PROTO((char *option, char *arg));
|
||
|
||
/* Get the responses and then close the connection. */
|
||
extern int get_responses_and_close PROTO((void));
|
||
|
||
extern int get_server_responses PROTO((void));
|
||
|
||
/* Start up the connection to the server on the other end. */
|
||
void
|
||
start_server PROTO((void));
|
||
|
||
/* Send the names of all the argument files to the server. */
|
||
void
|
||
send_file_names PROTO((int argc, char **argv, unsigned int flags));
|
||
|
||
/* Flags for send_file_names. */
|
||
/* Expand wild cards? */
|
||
#define SEND_EXPAND_WILD 1
|
||
|
||
/*
|
||
* Send Repository, Modified and Entry. argc and argv contain only
|
||
* the files to operate on (or empty for everything), not options.
|
||
* local is nonzero if we should not recurse (-l option).
|
||
*/
|
||
void
|
||
send_files PROTO((int argc, char **argv, int local, int aflag,
|
||
unsigned int flags));
|
||
|
||
/* Flags for send_files. */
|
||
#define SEND_BUILD_DIRS 1
|
||
#define SEND_FORCE 2
|
||
#define SEND_NO_CONTENTS 4
|
||
|
||
/* Send an argument to the remote server. */
|
||
void
|
||
send_arg PROTO((char *string));
|
||
|
||
/* Send a string of single-char options to the remote server, one by one. */
|
||
void
|
||
send_option_string PROTO((char *string));
|
||
|
||
extern void send_a_repository PROTO ((char *, char *, char *));
|
||
|
||
#endif /* CLIENT_SUPPORT */
|
||
|
||
/*
|
||
* This structure is used to catalog the responses the client is
|
||
* prepared to see from the server.
|
||
*/
|
||
|
||
struct response
|
||
{
|
||
/* Name of the response. */
|
||
char *name;
|
||
|
||
#ifdef CLIENT_SUPPORT
|
||
/*
|
||
* Function to carry out the response. ARGS is the text of the
|
||
* command after name and, if present, a single space, have been
|
||
* stripped off. The function can scribble into ARGS if it wants.
|
||
* Note that although LEN is given, ARGS is also guaranteed to be
|
||
* '\0' terminated.
|
||
*/
|
||
void (*func) PROTO((char *args, int len));
|
||
|
||
/*
|
||
* ok and error are special; they indicate we are at the end of the
|
||
* responses, and error indicates we should exit with nonzero
|
||
* exitstatus.
|
||
*/
|
||
enum {response_type_normal, response_type_ok, response_type_error} type;
|
||
#endif
|
||
|
||
/* Used by the server to indicate whether response is supported by
|
||
the client, as set by the Valid-responses request. */
|
||
enum {
|
||
/*
|
||
* Failure to implement this response can imply a fatal
|
||
* error. This should be set only for responses which were in the
|
||
* original version of the protocol; it should not be set for new
|
||
* responses.
|
||
*/
|
||
rs_essential,
|
||
|
||
/* Some clients might not understand this response. */
|
||
rs_optional,
|
||
|
||
/*
|
||
* Set by the server to one of the following based on what this
|
||
* client actually supports.
|
||
*/
|
||
rs_supported,
|
||
rs_not_supported
|
||
} status;
|
||
};
|
||
|
||
/* Table of responses ending in an entry with a NULL name. */
|
||
|
||
extern struct response responses[];
|
||
|
||
#ifdef CLIENT_SUPPORT
|
||
|
||
extern void client_senddate PROTO((const char *date));
|
||
extern void client_expand_modules PROTO((int argc, char **argv, int local));
|
||
extern void client_send_expansions PROTO((int local, char *where,
|
||
int build_dirs));
|
||
extern void client_nonexpanded_setup PROTO((void));
|
||
|
||
extern void send_init_command PROTO ((void));
|
||
|
||
extern char **failed_patches;
|
||
extern int failed_patches_count;
|
||
extern char *toplevel_wd;
|
||
extern void client_import_setup PROTO((char *repository));
|
||
extern int client_process_import_file
|
||
PROTO((char *message, char *vfile, char *vtag,
|
||
int targc, char *targv[], char *repository, int all_files_binary,
|
||
int modtime));
|
||
extern void client_import_done PROTO((void));
|
||
extern void client_notify PROTO((char *, char *, char *, int, char *));
|
||
#endif /* CLIENT_SUPPORT */
|