Several bugfixes

This commit is contained in:
Michiel Broek
2002-07-08 19:40:22 +00:00
parent bed48c9d4e
commit e04792e4cb
8 changed files with 801 additions and 776 deletions

View File

@@ -78,39 +78,33 @@ int CheckStatus()
/*
* Function to check if UserName exists and returns a 0 or 1
* Function to check if UserName/Handle exists and returns a 0 or 1
*/
int CheckName(char *Name)
{
FILE *fp;
int Status = FALSE;
char *temp, *temp1;
struct userhdr ushdr;
struct userrec us;
FILE *fp;
int Status = FALSE;
char *temp;
struct userhdr ushdr;
struct userrec us;
temp = calloc(PATH_MAX, sizeof(char));
temp1 = calloc(81, sizeof(char));
temp = calloc(PATH_MAX, sizeof(char));
strcpy(temp1, tl(Name));
sprintf(temp, "%s/etc/users.data", getenv("MBSE_ROOT"));
if ((fp = fopen(temp,"rb")) != NULL) {
fread(&ushdr, sizeof(ushdr), 1, fp);
sprintf(temp, "%s/etc/users.data", getenv("MBSE_ROOT"));
if ((fp = fopen(temp,"rb")) != NULL) {
fread(&ushdr, sizeof(ushdr), 1, fp);
while (fread(&us, ushdr.recsize, 1, fp) == 1) {
if ((strcasecmp(Name, us.sUserName) == 0) || (strcasecmp(Name, us.sHandle) == 0)) {
Status = TRUE;
break;
}
}
fclose(fp);
}
while (fread(&us, ushdr.recsize, 1, fp) == 1) {
strcpy(temp, tl(us.sUserName));
if((strcmp(temp, temp1)) == 0) {
Status = TRUE;
break;
}
}
fclose(fp);
}
free(temp);
free(temp1);
return Status;
free(temp);
return Status;
}

File diff suppressed because it is too large Load Diff

View File

@@ -52,141 +52,144 @@
*/
void Page_Sysop(char *String)
{
int i;
FILE *pWritingDevice, *pBusy;
int iOpenDevice = FALSE; /* Flag to check if you can write to CFG.sChatDevice */
char *Reason;
char temp[81];
FILE *pWritingDevice;
int i, iOpenDevice = FALSE; /* Flag to check if you can write to CFG.sChatDevice */
char *Reason, temp[81];
Reason = calloc(81, sizeof(char));
Reason = calloc(81, sizeof(char));
clear();
colour(12, 0);
/* MBSE BBS Chat */
Center((char *) Language(151));
clear();
colour(12, 0);
/* MBSE BBS Chat */
Center((char *) Language(151));
if (CFG.iAskReason) {
locate(6, 0);
colour(1, 0);
printf("%c", 213);
for(i = 0; i < 78; i++)
printf("%c", 205);
printf("%c ", 184);
if (CFG.iAskReason) {
locate(6, 0);
colour(BLUE, BLACK);
printf("%c", 213);
for (i = 0; i < 78; i++)
printf("%c", 205);
printf("%c\n", 184);
colour(7, 0);
for(i = 0; i < 78; i++)
printf("%c", 250);
printf("\n");
colour(LIGHTGRAY, BLACK);
for (i = 0; i < 78; i++)
printf("%c", 250);
printf("\n");
colour(1, 0);
printf("%c", 212);
for(i = 0; i < 78; i++)
printf("%c", 205);
printf("%c\n", 190);
colour(BLUE, BLACK);
printf("%c", 212);
for (i = 0; i < 78; i++)
printf("%c", 205);
printf("%c\n", 190);
locate(7, 2);
locate(7, 2);
colour(7, 0);
fflush(stdout);
GetPageStr(temp, 76);
colour(LIGHTGRAY, BLACK);
fflush(stdout);
GetPageStr(temp, 76);
colour(1, 0);
printf("%c", 212);
for(i = 0; i < 78; i++)
printf("%c", 205);
printf("%c\n", 190);
colour(BLUE, BLACK);
printf("%c", 212);
for (i = 0; i < 78; i++)
printf("%c", 205);
printf("%c\n", 190);
if((strcmp(temp, "")) == 0)
return;
if ((strcmp(temp, "")) == 0)
return;
Syslog('+', "Chat Reason: %s", temp);
strcpy(Reason, temp);
Syslog('+', "Chat Reason: %s", temp);
strcpy(Reason, temp);
}
// if (access("/tmp/.BusyChatting", F_OK) == 0) {
// if((pBusy = fopen("/tmp/.BusyChatting", "r")) == NULL)
// WriteError("Unable to open BusyChatting file", pTTY);
// else {
// fscanf(pBusy, "%10s", temp);
// fclose(pBusy);
// }
// colour(13, 0);
// printf("%s%s\n", (char *) Language(152), temp);
// pout(10, 0, (char *) Language(153));
// Enter(2);
// Syslog('+', "SysOp was busy chatting to user on %s", temp);
// Pause();
// free(Reason);
// return;
// }
CFG.iMaxPageTimes--;
if (CFG.iMaxPageTimes <= 0) {
if (!DisplayFile((char *)"maxpage")) {
/* If i is FALSE display hard coded message */
Enter(1);
pout(WHITE, BLACK, (char *) Language(154));
Enter(2);
}
if (access("/tmp/.BusyChatting", F_OK) == 0) {
if((pBusy = fopen("/tmp/.BusyChatting", "r")) == NULL)
WriteError("Unable to open BusyChatting file", pTTY);
else {
fscanf(pBusy, "%10s", temp);
fclose(pBusy);
}
colour(13, 0);
printf("%s%s\n", (char *) Language(152), temp);
pout(10, 0, (char *) Language(153));
Enter(2);
Syslog('+', "SysOp was busy chatting to user on %s", temp);
Pause();
Syslog('!', "Attempted to page Sysop, above maximum page limit.");
Pause();
} else {
locate(14, ((80 - strlen(String) ) / 2 - 2));
pout(WHITE, BLACK, (char *)"[");
pout(LIGHTGRAY, BLACK, String);
pout(WHITE, BLACK, (char *)"]");
locate(16, ((80 - CFG.iPageLength) / 2 - 2));
pout(WHITE, BLACK, (char *)"[");
colour(BLUE, BLACK);
for (i = 0; i < CFG.iPageLength; i++)
printf("%c", 176);
pout(WHITE, BLACK, (char *)"]");
locate(16, ((80 - CFG.iPageLength) / 2 - 2) + 1);
if ((pWritingDevice = fopen(CFG.sChatDevice, "w")) != NULL) {
fprintf(pWritingDevice, "\n\n\n%s is trying to page you on %s.\n", \
usrconfig.sUserName, pTTY);
fprintf(pWritingDevice, "Type: '%s/bin/schat %s' to talk to him, you have", \
getenv("MBSE_ROOT"), pTTY);
fprintf(pWritingDevice, "\n%d seconds to respond!\n\n", CFG.iPageLength);
fprintf(pWritingDevice, "%s\n", temp);
iOpenDevice = TRUE;
}
colour(LIGHTBLUE, BLACK);
for (i = 0; i < CFG.iPageLength; i++) {
printf("\x07");
/* If there weren't any problems opening the writing device */
if (iOpenDevice) {
fprintf(pWritingDevice, "\x07");
fflush(pWritingDevice);
}
printf("%c", 219);
fflush(stdout);
sleep(1);
if (access("/tmp/chatdev", R_OK) == 0) {
fclose(pWritingDevice);
Chat();
free(Reason);
return;
}
}
CFG.iMaxPageTimes--;
if(CFG.iMaxPageTimes <= 0) {
if (!DisplayFile((char *)"maxpage")) {
/* If i is FALSE display hard coded message */
Enter(1);
pout(15, 0, (char *) Language(154));
Enter(2);
}
Syslog('!', "Attempted to page Sysop, above maximum page limit.");
Pause();
} else {
locate(14, ((80 - strlen(String) ) / 2 - 2));
pout(15, 0, (char *)"[");
pout(7, 0, String);
pout(15, 0, (char *)"]");
locate(16, ((80 - CFG.iPageLength) / 2 - 2));
pout(15, 0, (char *)"[");
colour(1, 0);
for(i = 0; i < CFG.iPageLength; i++)
printf("%c", 176);
pout(15, 0, (char *)"]");
locate(16, ((80 - CFG.iPageLength) / 2 - 2) + 1);
if((pWritingDevice = fopen(CFG.sChatDevice, "w")) != NULL) {
fprintf(pWritingDevice, "\n\n\n%s is trying to page you on %s.\n", \
usrconfig.sUserName, pTTY);
fprintf(pWritingDevice, "Type: '%s/bin/schat %s' to talk to him, you have", \
getenv("MBSE_ROOT"), pTTY);
fprintf(pWritingDevice, "\n%d seconds to respond!\n\n", CFG.iPageLength);
fprintf(pWritingDevice, "%s\n", temp);
iOpenDevice = TRUE;
}
colour(9, 0);
for(i = 0; i < CFG.iPageLength; i++) {
printf("\x07");
/* If there weren't any problems opening the writing device */
if(iOpenDevice)
fprintf(pWritingDevice, "\x07");
printf("%c", 219);
fflush(pWritingDevice);
fflush(stdout);
sleep(1);
if(access("/tmp/chatdev", R_OK) == 0) {
fclose(pWritingDevice);
Chat();
free(Reason);
return;
}
}
fclose(pWritingDevice);
PageReason();
printf("\n\n\n");
if (strlen(Reason))
SysopComment(Reason);
else
SysopComment((char *)"Failed chat");
if (iOpenDevice) {
fclose(pWritingDevice);
iOpenDevice = 0;
}
PageReason();
printf("\n\n\n");
Pause();
if (strlen(Reason))
SysopComment(Reason);
else
SysopComment((char *)"Failed chat");
}
free(Reason);
Pause();
free(Reason);
Pause();
}
@@ -196,41 +199,41 @@ void Page_Sysop(char *String)
*/
void GetPageStr(char *sStr, int iMaxlen)
{
unsigned char ch = 0;
int iPos = 0;
unsigned char ch = 0;
int iPos = 0;
if ((ttyfd = open ("/dev/tty", O_RDWR)) < 0) {
perror("open 6");
return;
}
Setraw();
if ((ttyfd = open ("/dev/tty", O_RDWR)) < 0) {
perror("open 6");
return;
}
Setraw();
strcpy(sStr, "");
strcpy(sStr, "");
alarm_on();
while (ch != 13) {
ch = Readkey();
alarm_on();
while (ch != 13) {
ch = Readkey();
if (((ch == 8) || (ch == KEY_DEL) || (ch == 127)) && (iPos > 0)) {
printf("\b%c\b", 250);
fflush(stdout);
sStr[--iPos]='\0';
}
if (ch > 31 && ch < 127) {
if (iPos <= iMaxlen) {
iPos++;
sprintf(sStr, "%s%c", sStr, ch);
printf("%c", ch);
fflush(stdout);
} else
ch=13;
}
if (((ch == 8) || (ch == KEY_DEL) || (ch == 127)) && (iPos > 0)) {
printf("\b%c\b", 250);
fflush(stdout);
sStr[--iPos]='\0';
}
Unsetraw();
close(ttyfd);
printf("\n");
if (ch > 31 && ch < 127) {
if (iPos <= iMaxlen) {
iPos++;
sprintf(sStr, "%s%c", sStr, ch);
printf("%c", ch);
fflush(stdout);
} else
ch=13;
}
}
Unsetraw();
close(ttyfd);
printf("\n");
}
@@ -241,58 +244,58 @@ void GetPageStr(char *sStr, int iMaxlen)
*/
void PageReason()
{
FILE *Page;
int iLoop = FALSE, id, i, j = 0;
int Lines = 0, Count = 0, iFoundString = FALSE;
char *String;
char *temp;
FILE *Page;
int iLoop = FALSE, id, i, j = 0;
int Lines = 0, Count = 0, iFoundString = FALSE;
char *String;
char *temp;
temp = calloc(128, sizeof(char));
String = calloc(81, sizeof(char));
temp = calloc(PATH_MAX, sizeof(char));
String = calloc(81, sizeof(char));
sprintf(temp, "%s/page.asc", CFG.bbs_txtfiles);
if(( Page = fopen(temp, "r")) != NULL) {
sprintf(temp, "%s/page.asc", CFG.bbs_txtfiles);
if ((Page = fopen(temp, "r")) != NULL) {
while (( fgets(String, 80 ,Page)) != NULL)
Lines++;
while (( fgets(String, 80 ,Page)) != NULL)
Lines++;
rewind(Page);
rewind(Page);
Count = Lines;
id = getpid();
do {
i = rand();
j = i % id;
if ((j <= Count) && (j != 0))
iLoop = 1;
} while (!iLoop);
Count = Lines;
id = getpid();
do {
i = rand();
j = i % id;
if ((j <= Count) && (j != 0))
iLoop = 1;
} while (!iLoop);
Lines = 0;
Lines = 0;
while (( fgets(String,80,Page)) != NULL) {
if(Lines == j) {
Striplf(String);
locate(18, ((78 - strlen(String) ) / 2));
pout(15, 0, (char *)"[");
pout(9, 0, String);
pout(15, 0, (char *)"]");
iFoundString = TRUE;
}
Lines++; /* Increment Lines until correct line is found */
}
} /* End of Else */
if(!iFoundString) {
/* Sysop currently is not available ... please leave a comment */
sprintf(String, "%s", (char *) Language(155));
while (( fgets(String,80,Page)) != NULL) {
if (Lines == j) {
Striplf(String);
locate(18, ((78 - strlen(String) ) / 2));
pout(15, 0, (char *)"[");
pout(9, 0, String);
pout(15, 0, (char *)"]");
}
iFoundString = TRUE;
}
free(temp);
free(String);
Lines++; /* Increment Lines until correct line is found */
}
} /* End of Else */
if (!iFoundString) {
/* Sysop currently is not available ... please leave a comment */
sprintf(String, "%s", (char *) Language(155));
locate(18, ((78 - strlen(String) ) / 2));
pout(15, 0, (char *)"[");
pout(9, 0, String);
pout(15, 0, (char *)"]");
}
free(temp);
free(String);
}