using a nonstandard passwd/group file.
#endif /* lint */
#ifdef MYPW
-void my_setgrfile __P((const char *));
-void my_setgrent __P((void));
-void my_endgrent __P((void));
-struct group *my_getgrnam __P((const char *));
-struct group *my_getgruid __P((gid_t));
+extern void (*my_setgrent) __P((void));
+extern void (*my_endgrent) __P((void));
+extern struct group *(*my_getgrnam) __P((const char *));
+extern struct group *(*my_getgrgid) __P((gid_t));
#define setgrent() my_setgrent()
#define endgrent() my_endgrent()
#define getgrnam(n) my_getgrnam(n)
-#define getgruid(g) my_getgruid(g)
+#define getgrgid(g) my_getgrgid(g)
-void my_setpwfile __P((const char *));
-void my_setpwent __P((void));
-void my_endpwent __P((void));
-struct passwd *my_getpwnam __P((const char *));
-struct passwd *my_getpwuid __P((uid_t));
+extern void (*my_setpwent) __P((void));
+extern void (*my_endpwent) __P((void));
+extern struct passwd *(*my_getpwnam) __P((const char *));
+extern struct passwd *(*my_getpwuid) __P((uid_t));
#define setpwent() my_setpwent()
#define endpwent() my_endpwent()
#define getpwnam(n) my_getpwnam(n)
struct passwd *list_pw;
extern int parse_error;
+/* passwd/group redirection for pwutil.c */
+void (*my_setgrent) __P((void)) = setgrent;
+void (*my_endgrent) __P((void)) = endgrent;
+struct group *(*my_getgrnam) __P((const char *)) = getgrnam;
+struct group *(*my_getgrgid) __P((gid_t)) = getgrgid;
+void (*my_setpwent) __P((void)) = setpwent;
+void (*my_endpwent) __P((void)) = endpwent;
+struct passwd *(*my_getpwnam) __P((const char *)) = getpwnam;
+struct passwd *(*my_getpwuid) __P((uid_t)) = getpwuid;
+
/* For getopt(3) */
extern char *optarg;
extern int optind;
void print_userspecs __P((void));
void usage __P((void)) __attribute__((__noreturn__));
-extern void my_setpwfile __P((const char *));
-extern void my_setgrfile __P((const char *));
+extern void ts_setgrfile __P((const char *));
+extern void ts_setgrent __P((void));
+extern void ts_endgrent __P((void));
+extern struct group *ts_getgrent __P((void));
+extern struct group *ts_getgrnam __P((const char *));
+extern struct group *ts_getgrgid __P((gid_t));
+extern void ts_setpwfile __P((const char *));
+extern void ts_setpwent __P((void));
+extern void ts_endpwent __P((void));
+extern struct passwd *ts_getpwent __P((void));
+extern struct passwd *ts_getpwnam __P((const char *));
+extern struct passwd *ts_getpwuid __P((uid_t));
int
main(argc, argv)
NewArgv = argv;
/* Set group/passwd file and init the cache. */
- if (grfile)
- my_setgrfile(grfile);
- if (pwfile)
- my_setpwfile(pwfile);
+ if (grfile) {
+ my_setgrent = ts_setgrent;
+ my_endgrent = ts_endgrent;
+ my_getgrnam = ts_getgrnam;
+ my_getgrgid = ts_getgrgid;
+ ts_setgrfile(grfile);
+ }
+ if (pwfile) {
+ my_setpwent = ts_setpwent;
+ my_endpwent = ts_endpwent;
+ my_getpwnam = ts_getpwnam;
+ my_getpwuid = ts_getpwuid;
+ ts_setpwfile(pwfile);
+ }
sudo_setpwent();
sudo_setgrent();
static struct group grbuf;
static char *gr_mem[GRMEM_MAX+1];
-void my_setgrfile __P((const char *));
-void my_setgrent __P((void));
-void my_endgrent __P((void));
-struct group *my_getgrent __P((void));
-struct group *my_getgrnam __P((const char *));
-struct group *my_getgruid __P((gid_t));
+void ts_setgrfile __P((const char *));
+void ts_setgrent __P((void));
+void ts_endgrent __P((void));
+struct group *ts_getgrent __P((void));
+struct group *ts_getgrnam __P((const char *));
+struct group *ts_getgrgid __P((gid_t));
-void my_setpwfile __P((const char *));
-void my_setpwent __P((void));
-void my_endpwent __P((void));
-struct passwd *my_getpwent __P((void));
-struct passwd *my_getpwnam __P((const char *));
-struct passwd *my_getpwuid __P((uid_t));
+void ts_setpwfile __P((const char *));
+void ts_setpwent __P((void));
+void ts_endpwent __P((void));
+struct passwd *ts_getpwent __P((void));
+struct passwd *ts_getpwnam __P((const char *));
+struct passwd *ts_getpwuid __P((uid_t));
void
-my_setpwfile(file)
+ts_setpwfile(file)
const char *file;
{
pwfile = file;
if (pwf != NULL)
- my_endpwent();
+ ts_endpwent();
}
void
-my_setpwent()
+ts_setpwent()
{
if (pwf == NULL)
pwf = fopen(pwfile, "r");
}
void
-my_endpwent()
+ts_endpwent()
{
if (pwf != NULL) {
fclose(pwf);
}
struct passwd *
-my_getpwent()
+ts_getpwent()
{
size_t len;
char buf[LINE_MAX], *cp, *colon;
}
struct passwd *
-my_getpwnam(name)
+ts_getpwnam(name)
const char *name;
{
struct passwd *pw;
rewind(pwf);
else if ((pwf = fopen(pwfile, "r")) == NULL)
return(NULL);
- while ((pw = my_getpwent()) != NULL) {
+ while ((pw = ts_getpwent()) != NULL) {
if (strcmp(pw->pw_name, name) == 0)
break;
}
}
struct passwd *
-my_getpwuid(uid)
+ts_getpwuid(uid)
uid_t uid;
{
struct passwd *pw;
rewind(pwf);
else if ((pwf = fopen(pwfile, "r")) == NULL)
return(NULL);
- while ((pw = my_getpwent()) != NULL) {
+ while ((pw = ts_getpwent()) != NULL) {
if (pw->pw_uid == uid)
break;
}
}
void
-my_setgrfile(file)
+ts_setgrfile(file)
const char *file;
{
grfile = file;
if (grf != NULL)
- my_endgrent();
+ ts_endgrent();
}
void
-my_setgrent()
+ts_setgrent()
{
if (grf == NULL)
grf = fopen(grfile, "r");
}
void
-my_endgrent()
+ts_endgrent()
{
if (grf != NULL) {
fclose(grf);
}
struct group *
-my_getgrent()
+ts_getgrent()
{
size_t len;
char buf[LINE_MAX], *cp, *colon;
}
struct group *
-my_getgrnam(name)
+ts_getgrnam(name)
const char *name;
{
struct group *gr;
rewind(grf);
else if ((grf = fopen(grfile, "r")) == NULL)
return(NULL);
- while ((gr = my_getgrent()) != NULL) {
+ while ((gr = ts_getgrent()) != NULL) {
if (strcmp(gr->gr_name, name) == 0)
break;
}
}
struct group *
-my_getgrgid(gid)
+ts_getgrgid(gid)
gid_t gid;
{
struct group *gr;
rewind(grf);
else if ((grf = fopen(grfile, "r")) == NULL)
return(NULL);
- while ((gr = my_getgrent()) != NULL) {
+ while ((gr = ts_getgrent()) != NULL) {
if (gr->gr_gid == gid)
break;
}