uss: Tidy up header includes
[openafs.git] / src / uss / uss_common.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  *
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 /*
11  *      Common definitions & global variables for the AFS user
12  *      account facility.
13  *
14  */
15
16 #ifndef _USS_COMMON_H_
17 #define _USS_COMMON_H_ 1
18
19 /*
20  * --------------------- Required definitions ---------------------
21  */
22 #include <sys/param.h>          /*Ditto */
23 #include <stdio.h>              /*I/O stuff */
24 #include <afs/afsutil.h>
25 #include <errno.h>
26 #include <string.h>
27
28 /*
29  * --------------------- Exported definitions ---------------------
30  */
31
32 /*
33  * Should we use static declarations or malloc()s?
34  */
35
36 #define uss_QUIET 0
37 #define uss_VERBOSE 1
38
39 #define uss_MAX_ARG               25
40 #define uss_MAX_ARG_SIZE          50
41 #define uss_MAX_ENTRY            400
42 #define uss_PATH_SIZE           AFSDIR_PATH_MAX
43 #define uss_MAX_SIZE            2048
44
45 #define uss_DEFAULT_PASSWORD "changeme"
46
47 /*
48  * Capacities for the exported variables.
49  */
50 #define uss_UserLen               8
51 #define uss_UidLen                8
52 #define uss_ServerLen            64
53 #define uss_PartitionLen         16
54 #define uss_MountPointLen       300
55 #define uss_RealNameLen         100
56 #define uss_PwdLen               16
57 #define uss_PwdPathLen          300
58 #define uss_PwdFormatLen        100
59 #define uss_RestoreDirLen       300
60 #define uss_VolumeLen           300
61 #define uss_DirPoolLen          300
62
63 #if !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV)
64 extern char *sys_errlist[];
65 #endif
66
67 /*
68  * We have to chain every directory that we make in order to be
69  * able to come back in the reverse order and remove creator's
70  * access to each directory.
71  */
72 struct uss_subdir {
73     struct uss_subdir *previous;        /*Back ptr */
74     char *path;                 /*Pathname to dir */
75     char *finalACL;             /*Final ACL for dir */
76 };
77
78 /*
79  * This is extracted from afsint.h, which can't be included because it
80  * redefines some stuff from kauth.h.
81  */
82 struct uss_VolumeStatus {
83     afs_int32 Vid;
84     afs_int32 ParentId;
85     char Online;
86     char InService;
87     char Blessed;
88     char NeedsSalvage;
89     afs_int32 Type;
90     afs_int32 MinQuota;
91     afs_int32 MaxQuota;
92     afs_int32 BlocksInUse;
93     afs_int32 PartBlocksAvail;
94     afs_int32 PartMaxBlocks;
95 };
96
97 typedef struct uss_VolumeStatus uss_VolumeStatus_t;
98
99
100 /*
101  * ---------------------- Exported variables ----------------------
102  */
103 extern char uss_User[];         /*User's account name */
104 extern char uss_Uid[];          /*User's uid */
105 extern char uss_Server[];       /*FileServer hosting user's volume */
106 extern char uss_Partition[];    /*FileServer partition for above */
107 extern char uss_MountPoint[];   /*Mountpoint for user's volume */
108 extern char uss_RealName[];     /*User's full name */
109 extern char uss_Pwd[];          /*User's password */
110 extern char uss_PwdPath[];      /*Current pathname to password file */
111 extern char uss_PwdPath_Saved[];        /*Saved pathname to password file */
112 extern char uss_PwdFormat[];    /*Current password entry format */
113 extern char uss_PwdFormat_Saved[];      /*Saved password entry format */
114 extern char uss_RestoreDir[];   /*Current directory for restore info */
115 extern char uss_RestoreDir_Saved[];     /*Saved directory for restore info */
116 extern char uss_Auto[];         /*Current choice of AUTO value */
117 extern char uss_Var[][uss_MAX_ARG_SIZE];        /*$1, $2, ... command variables */
118 extern int uss_VarMax;          /*Largest index in above */
119 extern char uss_Volume[];       /*Name of user's volume */
120 extern afs_int32 uss_VolumeID;  /*Numerical volume ID */
121 extern afs_int32 uss_ServerID;  /*Numerical server ID */
122 extern afs_int32 uss_PartitionID;       /*Numerical partition ID */
123 extern char uss_DirPool[][uss_DirPoolLen];      /*List of all acceptable subdirs */
124
125 extern int uss_NumGroups;       /*Number of $AUTO entries */
126 extern int uss_SaveVolume;      /*Save current user volume? */
127 extern int uss_SaveVolume_Saved;        /*Saved value of above */
128 extern int uss_DryRun;          /*Is this a dry run? */
129 extern int uss_Overwrite;       /*Overwrite user files? */
130 extern int uss_SkipKaserver;    /*Ignore calls to Kaserver */
131 extern int uss_OverwriteThisOne;        /*Overwrite on this pass? */
132 extern char uss_Administrator[];        /*Name of admin account */
133 extern char uss_AccountCreator[];       /*Principal running this program */
134 extern afs_int32 uss_DesiredUID;        /*UID to assign the user */
135 extern afs_int32 uss_Expires;   /*Password lifetime */
136 extern char uss_Cell[];         /*Cell in which account lives */
137 extern char uss_ConfDir[];      /*Config directory */
138 extern int uss_verbose;         /*Should we be verbose? */
139 extern int uss_ignoreFlag;      /*Ignore yyparse errors? */
140 extern char uss_whoami[];       /*Program name used */
141 extern int uss_syntax_err;      /*YACC syntax error? */
142 extern struct uss_subdir *uss_currentDir;       /*Current directory */
143
144
145 /*
146  * ------------------------ Exported functions  -----------------------
147  */
148 extern void uss_common_Init(void);
149     /*
150      * Summary:
151      *    Set up various common uss variables, especially the saved
152      *    ones.
153      *
154      * Args:
155      *    None.
156      *
157      * Returns:
158      *    Nothing.
159      */
160
161 extern void uss_common_Reset(void);
162     /*
163      * Summary:
164      *    Reset some common uss variables to their idle or
165      *    saved states.
166      *
167      * Args:
168      *    None.
169      *
170      * Returns:
171      *    Nothing.
172      */
173
174 extern char *uss_common_FieldCp(char *a_to, char *a_from, char a_separator,
175                                 int a_maxChars, int *a_overflowP);
176     /*
177      * Summary:
178      *    Copy a ``field'', as terminated by the given separator, or
179      *    up to a certain specified length.  Gripe if there was an
180      *    overflow.
181      *
182      * Args:
183      *    char *a_to       : Destination of the copy.
184      *    char *a_from     : Source of the copy.
185      *    char a_separator : Separator character to look for.
186      *    int a_maxChars   : Max chars to copy.
187      *    int *a_overflowP : Was there an overflow?
188      *
189      * Returns:
190      *    Ptr to the next location to read from.
191      */
192
193 #endif /* _USS_COMMON_H_ */