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