- Adapted indenation to new agreed upon system
- Added support for second generation scriptcontext based counter
This commit is contained in:
210
passwd.c
210
passwd.c
@ -45,120 +45,110 @@
|
||||
#include "passwd.h"
|
||||
#include "splitter.h"
|
||||
|
||||
typedef struct __PENTRY
|
||||
{
|
||||
char *name;
|
||||
char *passwd;
|
||||
int iCode;
|
||||
struct __PENTRY *pNext;
|
||||
} Pentry;
|
||||
|
||||
typedef struct __PENTRY {
|
||||
char *name;
|
||||
char *passwd;
|
||||
int iCode;
|
||||
struct __PENTRY *pNext;
|
||||
} Pentry;
|
||||
|
||||
/* -------------------------- THE DATABASE --------------------------------*/
|
||||
static Pentry *pPasswords = NULL;
|
||||
|
||||
static Pentry *pPasswords = NULL;
|
||||
|
||||
/*=========================================================================*/
|
||||
void AddUser(char *name, char *passwd, int iCode)
|
||||
{
|
||||
Pentry *pNew = NULL;
|
||||
void AddUser(char *name, char *passwd, int iCode)
|
||||
{
|
||||
Pentry *pNew = NULL;
|
||||
|
||||
assert(name);
|
||||
assert(passwd);
|
||||
|
||||
pNew = (Pentry *)malloc(sizeof(Pentry));
|
||||
assert(pNew);
|
||||
assert(name);
|
||||
assert(passwd);
|
||||
|
||||
pNew = (Pentry *) malloc(sizeof(Pentry));
|
||||
assert(pNew);
|
||||
|
||||
pNew->name = NULL;
|
||||
pNew->passwd = NULL;
|
||||
pNew->name = strdup(name);
|
||||
pNew->passwd = strdup(passwd);
|
||||
pNew->iCode = iCode;
|
||||
pNew->pNext = pPasswords;
|
||||
pPasswords = pNew;
|
||||
}
|
||||
|
||||
pNew->name = NULL;
|
||||
pNew->passwd = NULL;
|
||||
pNew->name = strdup(name);
|
||||
pNew->passwd = strdup(passwd);
|
||||
pNew->iCode = iCode;
|
||||
pNew->pNext = pPasswords;
|
||||
pPasswords = pNew;
|
||||
}
|
||||
/*--------------------------------------------------------------------------*/
|
||||
int IsValidUser(char *name, char *password)
|
||||
{
|
||||
int iRes = -10;
|
||||
Pentry *pCurrent = NULL;
|
||||
|
||||
assert(pPasswords);
|
||||
int IsValidUser(char *name, char *password)
|
||||
{
|
||||
int iRes = -10;
|
||||
Pentry *pCurrent = NULL;
|
||||
|
||||
if( (name == NULL) || (password == NULL) )
|
||||
{
|
||||
return iRes;
|
||||
}
|
||||
pCurrent = pPasswords;
|
||||
while(pCurrent)
|
||||
{
|
||||
if(strcmp(pCurrent->name,name) == 0)
|
||||
{
|
||||
if(strcmp(pCurrent->passwd,password) == 0)
|
||||
{
|
||||
return pCurrent->iCode;
|
||||
}
|
||||
}
|
||||
pCurrent = pCurrent->pNext;
|
||||
}
|
||||
return iRes;
|
||||
}
|
||||
/* --------------------------------------------------------------------------*/
|
||||
void KillPasswd(void)
|
||||
{
|
||||
Pentry *pCurrent, *pTemp;
|
||||
|
||||
pCurrent = pPasswords;
|
||||
while(pCurrent)
|
||||
{
|
||||
pTemp = pCurrent->pNext;
|
||||
if(pCurrent->name)
|
||||
free(pCurrent->name);
|
||||
if(pCurrent->passwd)
|
||||
free(pCurrent->passwd);
|
||||
free(pCurrent);
|
||||
pCurrent = pTemp;
|
||||
}
|
||||
pPasswords = NULL;
|
||||
}
|
||||
/*-------------------------------------------------------------------------*/
|
||||
int InitPasswd(char *filename)
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
char pLine[256];
|
||||
TokenList *pList = NULL;
|
||||
int iRes = 0;
|
||||
|
||||
assert(filename);
|
||||
fp = fopen(filename,"r");
|
||||
if(!fp)
|
||||
return 0;
|
||||
|
||||
while((int)fgets(pLine,255,fp) != EOF)
|
||||
{
|
||||
if(feof(fp))
|
||||
break;
|
||||
|
||||
pList = SplitText(pLine);
|
||||
if( (!pList) || (!pList->pNext) || (!pList->pNext->pNext) )
|
||||
{
|
||||
printf("Invalid Passwd Entry ::\n %s \n",pLine);
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(pList->pNext->pNext->Type != eInt)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
AddUser(pList->text, pList->pNext->text,
|
||||
pList->pNext->pNext->iVal);
|
||||
iRes = 1;
|
||||
}
|
||||
}
|
||||
DeleteTokenList(pList);
|
||||
pList = NULL;
|
||||
}
|
||||
fclose(fp);
|
||||
assert(pPasswords);
|
||||
|
||||
if ((name == NULL) || (password == NULL)) {
|
||||
return iRes;
|
||||
}
|
||||
}
|
||||
pCurrent = pPasswords;
|
||||
while (pCurrent) {
|
||||
if (strcmp(pCurrent->name, name) == 0) {
|
||||
if (strcmp(pCurrent->passwd, password) == 0) {
|
||||
return pCurrent->iCode;
|
||||
}
|
||||
}
|
||||
pCurrent = pCurrent->pNext;
|
||||
}
|
||||
return iRes;
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------*/
|
||||
void KillPasswd(void)
|
||||
{
|
||||
Pentry *pCurrent, *pTemp;
|
||||
|
||||
pCurrent = pPasswords;
|
||||
while (pCurrent) {
|
||||
pTemp = pCurrent->pNext;
|
||||
if (pCurrent->name)
|
||||
free(pCurrent->name);
|
||||
if (pCurrent->passwd)
|
||||
free(pCurrent->passwd);
|
||||
free(pCurrent);
|
||||
pCurrent = pTemp;
|
||||
}
|
||||
pPasswords = NULL;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
int InitPasswd(char *filename)
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
char pLine[256];
|
||||
TokenList *pList = NULL;
|
||||
int iRes = 0;
|
||||
|
||||
assert(filename);
|
||||
fp = fopen(filename, "r");
|
||||
if (!fp)
|
||||
return 0;
|
||||
|
||||
while ((int) fgets(pLine, 255, fp) != EOF) {
|
||||
if (feof(fp))
|
||||
break;
|
||||
|
||||
pList = SplitText(pLine);
|
||||
if ((!pList) || (!pList->pNext) || (!pList->pNext->pNext)) {
|
||||
printf("Invalid Passwd Entry ::\n %s \n", pLine);
|
||||
continue;
|
||||
} else {
|
||||
if (pList->pNext->pNext->Type != eInt) {
|
||||
continue;
|
||||
} else {
|
||||
AddUser(pList->text, pList->pNext->text,
|
||||
pList->pNext->pNext->iVal);
|
||||
iRes = 1;
|
||||
}
|
||||
}
|
||||
DeleteTokenList(pList);
|
||||
pList = NULL;
|
||||
}
|
||||
fclose(fp);
|
||||
return iRes;
|
||||
}
|
||||
|
Reference in New Issue
Block a user