1/* 2 * Copyright (C) 1986-2005 The Free Software Foundation, Inc. 3 * 4 * Portions Copyright (C) 1998-2005 Derek Price, Ximbiot <http://ximbiot.com>, 5 * and others. 6 * 7 * Portions Copyright (C) 1992, Brian Berliner and Jeff Polk 8 * Portions Copyright (C) 1989-1992, Brian Berliner 9 * 10 * You may distribute under the terms of the GNU General Public License as 11 * specified in the README file that comes with the CVS kit. 12 */ 13 14/* CVSroot data structures */ 15 16/* Access method specified in CVSroot. */ 17typedef enum { 18 null_method = 0, 19 local_method, 20 server_method, 21 pserver_method, 22 kserver_method, 23 gserver_method, 24 ext_method, 25 fork_method 26} CVSmethod; 27extern const char method_names[][16]; /* change this in root.c if you change 28 the enum above */ 29 30typedef struct cvsroot_s { 31 char *original; /* The complete source CVSroot string. */ 32 CVSmethod method; /* One of the enum values above. */ 33 char *directory; /* The directory name. */ 34 bool isremote; /* True if we are doing remote access. */ 35/* The following is required for servers now to allow Redirects to be sent 36 * for remote roots when client support is disabled. 37 */ 38#if defined (CLIENT_SUPPORT) || defined (SERVER_SUPPORT) 39 char *username; /* The username or NULL if method == local. */ 40 char *password; /* The password or NULL if method == local. */ 41 char *hostname; /* The hostname or NULL if method == local. */ 42 char *cvs_rsh; /* The $CVS_RSH or NULL if method != ext. */ 43 char *cvs_server; /* The $CVS_SERVER or NULL if 44 * method != ext and method != fork. */ 45 int port; /* The port or zero if method == local. */ 46 char *proxy_hostname; /* The hostname of the proxy server, or NULL 47 * when method == local or no proxy will be 48 * used. 49 */ 50 int proxy_port; /* The port of the proxy or zero, as above. */ 51 bool redirect; /* False if we are to disable redirects. */ 52#endif /* defined (CLIENT_SUPPORT) || defined (SERVER_SUPPORT) */ 53} cvsroot_t; 54 55extern cvsroot_t *current_parsed_root; 56extern const cvsroot_t *original_parsed_root; 57 58cvsroot_t *Name_Root (const char *dir, const char *update_dir); 59cvsroot_t *parse_cvsroot (const char *root) 60 __attribute__ ((__malloc__)); 61cvsroot_t *local_cvsroot (const char *dir) 62 __attribute__ ((__malloc__)); 63void Create_Root (const char *dir, const char *rootdir); 64void root_allow_add (const char *, const char *configPath); 65void root_allow_free (void); 66bool root_allow_ok (const char *); 67struct config *get_root_allow_config (const char *arg, const char *configPath); 68const char *primary_root_translate (const char *root_in); 69const char *primary_root_inverse_translate (const char *root_in); 70