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