/*
passwords.c Password handlers for cheezmud.
Copyright (C) 1995 David Flater.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdio.h>
#include <unistd.h>
#include <assert.h>
void
delete_user (char *user)
{
FILE *fin, *fout;
char buf[80], buf2[80];
assert (!(rename ("etc/passwd", "etc/passwd~")));
assert (fin = fopen ("etc/passwd~", "r"));
assert (fout = fopen ("etc/passwd", "w"));
while (fgets (buf, 80, fin))
{
assert (sscanf (buf, "%s", buf2) == 1);
if (strcmp (buf2, user))
fputs (buf, fout);
}
fclose (fin);
fclose (fout);
}
void
add_user (char *user, char *password)
{
FILE *fp;
assert (fp = fopen ("etc/passwd", "a"));
fprintf (fp, "%s %s\n", user, password);
fclose (fp);
}
void
set_password (char *user, char *password)
{
delete_user (user);
add_user (user, password);
}