/* * Copyright 2000, International Business Machines Corporation and others. * All Rights Reserved. * * This software has been released under the terms of the IBM Public * License. For details, see the LICENSE file in the top-level source * directory or online at http://www.openafs.org/dl/license10.html */ /* * Common definitions & global variables for the AFS user * account facility. * */ #ifndef _USS_COMMON_H_ #define _USS_COMMON_H_ 1 /* * --------------------- Required definitions --------------------- */ #include /*Ditto */ #include /*I/O stuff */ #include #include #include /* * --------------------- Exported definitions --------------------- */ /* * Should we use static declarations or malloc()s? */ #define uss_QUIET 0 #define uss_VERBOSE 1 #define uss_MAX_ARG 25 #define uss_MAX_ARG_SIZE 50 #define uss_MAX_ENTRY 400 #define uss_PATH_SIZE AFSDIR_PATH_MAX #define uss_MAX_SIZE 2048 #define uss_DEFAULT_PASSWORD "changeme" /* * Capacities for the exported variables. */ #define uss_UserLen 8 #define uss_UidLen 8 #define uss_ServerLen 64 #define uss_PartitionLen 16 #define uss_MountPointLen 300 #define uss_RealNameLen 100 #define uss_PwdLen 16 #define uss_PwdPathLen 300 #define uss_PwdFormatLen 100 #define uss_RestoreDirLen 300 #define uss_VolumeLen 300 #define uss_DirPoolLen 300 #if !defined(AFS_LINUX20_ENV) && !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV) extern char *sys_errlist[]; #endif /* * We have to chain every directory that we make in order to be * able to come back in the reverse order and remove creator's * access to each directory. */ struct uss_subdir { struct uss_subdir *previous; /*Back ptr */ char *path; /*Pathname to dir */ char *finalACL; /*Final ACL for dir */ }; /* * This is extracted from afsint.h, which can't be included because it * redefines some stuff from kauth.h. */ struct uss_VolumeStatus { afs_int32 Vid; afs_int32 ParentId; char Online; char InService; char Blessed; char NeedsSalvage; afs_int32 Type; afs_int32 MinQuota; afs_int32 MaxQuota; afs_int32 BlocksInUse; afs_int32 PartBlocksAvail; afs_int32 PartMaxBlocks; }; typedef struct uss_VolumeStatus uss_VolumeStatus_t; /* * ---------------------- Exported variables ---------------------- */ extern char uss_User[]; /*User's account name */ extern char uss_Uid[]; /*User's uid */ extern char uss_Server[]; /*FileServer hosting user's volume */ extern char uss_Partition[]; /*FileServer partition for above */ extern char uss_MountPoint[]; /*Mountpoint for user's volume */ extern char uss_RealName[]; /*User's full name */ extern char uss_Pwd[]; /*User's password */ extern char uss_PwdPath[]; /*Current pathname to password file */ extern char uss_PwdPath_Saved[]; /*Saved pathname to password file */ extern char uss_PwdFormat[]; /*Current password entry format */ extern char uss_PwdFormat_Saved[]; /*Saved password entry format */ extern char uss_RestoreDir[]; /*Current directory for restore info */ extern char uss_RestoreDir_Saved[]; /*Saved directory for restore info */ extern char uss_Auto[]; /*Current choice of AUTO value */ extern char uss_Var[][uss_MAX_ARG_SIZE]; /*$1, $2, ... command variables */ extern int uss_VarMax; /*Largest index in above */ extern char uss_Volume[]; /*Name of user's volume */ extern afs_int32 uss_VolumeID; /*Numerical volume ID */ extern afs_int32 uss_ServerID; /*Numerical server ID */ extern afs_int32 uss_PartitionID; /*Numerical partition ID */ extern char uss_DirPool[][uss_DirPoolLen]; /*List of all acceptable subdirs */ extern int uss_NumGroups; /*Number of $AUTO entries */ extern int uss_SaveVolume; /*Save current user volume? */ extern int uss_SaveVolume_Saved; /*Saved value of above */ extern int uss_DryRun; /*Is this a dry run? */ extern int uss_Overwrite; /*Overwrite user files? */ extern int uss_SkipKaserver; /*Ignore calls to Kaserver */ extern int uss_OverwriteThisOne; /*Overwrite on this pass? */ extern char uss_Administrator[]; /*Name of admin account */ extern char uss_AccountCreator[]; /*Principal running this program */ extern afs_int32 uss_DesiredUID; /*UID to assign the user */ extern afs_int32 uss_Expires; /*Password lifetime */ extern char uss_Cell[]; /*Cell in which account lives */ extern char uss_ConfDir[]; /*Config directory */ extern int uss_verbose; /*Should we be verbose? */ extern int uss_ignoreFlag; /*Ignore yyparse errors? */ extern char uss_whoami[]; /*Program name used */ extern int uss_syntax_err; /*YACC syntax error? */ extern struct uss_subdir *uss_currentDir; /*Current directory */ /* * ------------------------ Exported functions ----------------------- */ extern void uss_common_Init(void); /* * Summary: * Set up various common uss variables, especially the saved * ones. * * Args: * None. * * Returns: * Nothing. */ extern void uss_common_Reset(void); /* * Summary: * Reset some common uss variables to their idle or * saved states. * * Args: * None. * * Returns: * Nothing. */ extern char *uss_common_FieldCp(char *a_to, char *a_from, char a_separator, int a_maxChars, int *a_overflowP); /* * Summary: * Copy a ``field'', as terminated by the given separator, or * up to a certain specified length. Gripe if there was an * overflow. * * Args: * char *a_to : Destination of the copy. * char *a_from : Source of the copy. * char a_separator : Separator character to look for. * int a_maxChars : Max chars to copy. * int *a_overflowP : Was there an overflow? * * Returns: * Ptr to the next location to read from. */ #endif /* _USS_COMMON_H_ */