version 1.13, 1998/08/03 17:09:46 |
version 1.14, 1999/12/05 20:18:35 |
|
|
#include "chpass.h" |
#include "chpass.h" |
#include "pathnames.h" |
#include "pathnames.h" |
|
|
char *tempname; |
char tempname[] = __CONCAT(_PATH_VARTMP,"pw.XXXXXXXX"); |
uid_t uid; |
uid_t uid; |
|
|
extern char *__progname; |
extern char *__progname; |
|
|
#endif |
#endif |
|
|
void baduser __P((void)); |
void baduser __P((void)); |
|
void tempcleanup __P((void)); |
void usage __P((void)); |
void usage __P((void)); |
|
|
int |
int |
|
|
enum { NEWSH, LOADENTRY, EDITENTRY } op; |
enum { NEWSH, LOADENTRY, EDITENTRY } op; |
struct passwd *pw, lpw; |
struct passwd *pw, lpw; |
int ch, pfd, tfd, dfd; |
int ch, pfd, tfd, dfd; |
char *arg, tempname[] = __CONCAT(_PATH_VARTMP,"pw.XXXXXXXX"); |
char *arg; |
|
|
#ifdef YP |
#ifdef YP |
use_yp = _yp_check(NULL); |
use_yp = _yp_check(NULL); |
|
|
dfd = mkstemp(tempname); |
dfd = mkstemp(tempname); |
if (dfd == -1 || fcntl(dfd, F_SETFD, 1) == -1) |
if (dfd == -1 || fcntl(dfd, F_SETFD, 1) == -1) |
pw_error(tempname, 1, 1); |
pw_error(tempname, 1, 1); |
|
atexit(tempcleanup); |
display(tempname, dfd, pw); |
display(tempname, dfd, pw); |
edit(tempname, pw); |
edit(tempname, pw); |
(void)unlink(tempname); |
|
} |
} |
|
|
#ifdef YP |
#ifdef YP |
|
|
{ |
{ |
|
|
errx(1, "%s", strerror(EACCES)); |
errx(1, "%s", strerror(EACCES)); |
|
} |
|
|
|
void |
|
tempcleanup() |
|
{ |
|
|
|
unlink(tempname); |
} |
} |
|
|
void |
void |