home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 January
/
usenetsourcesnewsgroupsinfomagicjanuary1994.iso
/
sources
/
misc
/
volume32
/
xbbs
/
part07
/
bbscmsga.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-09-08
|
9KB
|
404 lines
/*------------------------------------------------------------------------
Name: bbscarea.c
Comments: Display file areas and select one
------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "bbscdef.h"
int set_yet_m = FALSE;
extern int user_priv;
change_msga( type ) int type;
{
FILE *fpt, *fopen();
char *fgets(), *getenv();
char choice[4];
#ifndef SYSV
char dir_priv_ascii[7];
#endif
#ifdef SYSV
char dir_priv_ascii[20];
#endif
char *buf_ptr;
int line_cnt, ret, i;
int index_value, ptr;
int length;
if( type == -1)
return;
do_again:
strcpy(buf128, MSGS);
if ((fpt = fopen(buf128, "r")) == NULL) {
portsout("\n\rError Opening File Area List: Notify Sysop!\n\r");
return (-1);
}
if(!type) {
portsout("\n\r Directory Description \n\r");
portsout(" ============= ========================================== \n\r");
}
line_cnt = 0;
while (fpt) {
zfl(f_lines[line_cnt], 81);
if ((fgets(f_lines[line_cnt], 80, fpt)) == NULL) {
if (line_cnt == 0) {
portsout("\n\rEOF Unexpected in Message Area List: Notify Sysop!\n\r");
return (-1);
}
break; /* if not 1st line */
} /* end of if ((fgets)) */
if (line_cnt > 0) {
length = strlen(f_lines[line_cnt]);
length -= 57;
if(length > 6)
length = 6;
substr(f_lines[line_cnt], dir_priv_ascii, 57, length);
dir_priv[line_cnt] = atoi(dir_priv_ascii);
if (dir_priv[line_cnt] > user_priv)
goto next_read;
strcpy(who_am_i, f_lines[line_cnt]);
buf_ptr = who_am_i;
buf_ptr += 56;
for (ptr = 0; ptr < 6; ptr++)
*buf_ptr++ = ' ';
*buf_ptr = '\0';
sprintf(buf128, "%2d) %s", line_cnt, who_am_i);
if(!type) {
strip(buf128);
term_space(buf128);
portsout(buf128);
portsout("\n\r");
}
}
next_read:
++line_cnt;
} /* end of while (fpt) */
if (line_cnt <= 1)
return;
if (set_yet_m && !type) {
portsout(CRLF);
portsout(" Q) Quit to Previous Menu");
}
if(!type)portsout(CRLF);
fclose(fpt);
if(!type)portsout(CRLF);
while (1) {
if(!type) {
portsout("Enter Selection ===> ");
portsin_cmp(choice, 2, "Qq");
portsout(CRLF);
*choice = toupper(*choice);
if (*choice == 'Q' && set_yet_m)
return (-1);
index_value = atoi(choice);
}
else index_value = type;
if (index_value > 0 && index_value < line_cnt) {
if (dir_priv[index_value] <= user_priv) {
parse_arg(f_lines[index_value]);
set_yet_m = TRUE;
hdrread();
itoa(buf128,index_value);
if(index_value > 9)
{
strcpy(l_m_base, buf128);
}
else
{
strcpy(l_m_base, "0");
strcat(l_m_base,buf128);
}
rewritx();
return (0);
}
}
if( type != 0 ) {
type = 0;
portsout("\n\rInvalid directory request!\n\r");
goto do_again;
}
}
}
parse_arg(string)
char *string;
{
register char *file_ptr, *xptr;
register int i;
strcpy(m_pathname, ORGPATH);
file_ptr = (m_pathname + strlen(m_pathname));
xptr = who_am_I;
i = 0;
while (string[i] != ' ') {
*file_ptr = string[i];
*xptr = string[i];
++xptr;
++file_ptr;
++i;
}
*file_ptr = '/';
++file_ptr;
*file_ptr = '\0';
*xptr = '\0';
}
check_msga()
{
FILE *fpt, *fopen();
char *fgets(), *getenv();
char choice[4];
#ifndef SYSV
char dir_priv_ascii[7];
#endif
#ifdef SYSV
char dir_priv_ascii[20];
#endif
char *buf_ptr, *file_ptr, *char_ptr;
int line_cnt, ret, i;
int index_value, ptr;
int length, strl, ii;
strcpy(buf128, MSGS);
if ((fpt = fopen(buf128, "r")) == NULL) {
portsout("\n\rError Opening File Area List: Notify Sysop!\n\r");
return (-1);
}
line_cnt = 0;
while (fpt) {
zfl(f_lines[line_cnt], 81);
if ((fgets(f_lines[line_cnt], 80, fpt)) == NULL) {
if (line_cnt == 0) {
portsout("\n\rEOF Unexpected in Message Area List: Notify Sysop!\n\r");
return (-1);
}
break; /* if not 1st line */
} /* end of if ((fgets)) */
if (line_cnt > 0) {
length = strlen(f_lines[line_cnt]);
length -= 57;
if(length > 6)
length = 6;
substr(f_lines[line_cnt], dir_priv_ascii, 57, length);
strl = strlen(dir_priv_ascii);
if (strl == 0) {
portsout("\n\rError reading privilege level\n\r");
exit(1);
}
char_ptr = strchr(dir_priv_ascii, '*');
if (char_ptr != NULL) {
strcpy(c_pathname, ORGPATH);
file_ptr = (c_pathname + strlen(c_pathname));
ii = 0;
while (f_lines[line_cnt][ii] != ' ') {
*file_ptr = f_lines[line_cnt][ii];
++file_ptr;
++ii;
}
*file_ptr = '/';
++file_ptr;
*file_ptr = '\0';
*char_ptr = '\0';
}
dir_priv[line_cnt] = atoi(dir_priv_ascii);
if (dir_priv[line_cnt] > user_priv)
goto next_read;
strcpy(who_am_i, f_lines[line_cnt]);
buf_ptr = who_am_i;
buf_ptr += 56;
for (ptr = 0; ptr < 5; ptr++)
*buf_ptr++ = ' ';
sprintf(buf128, "%2d) %s", line_cnt, who_am_i);
}
next_read:
++line_cnt;
} /* end of while (fpt) */
fclose(fpt);
if (line_cnt <= 1)
return;
for (index_value = 1; index_value < line_cnt; index_value++) {
if (dir_priv[index_value] <= user_priv) {
parse_arg(f_lines[index_value]);
hdrread();
portsout("\n\rMail check for area '");
portsout(who_am_I);
portsout("'\n\r");
mail_to_you();
portsout("\n\r*************************************************\n\r");
}
}
/* SIG checking */
strcpy(buf128, SIGS);
if ((fpt = fopen(buf128, "r")) == NULL) {
fclose(fpt);
return; /* No sigs */
}
line_cnt = 0;
while (fpt) {
zfl(f_lines[line_cnt], 83);
if ((fgets(f_lines[line_cnt], 82, fpt)) == NULL) {
if (line_cnt == 0) {
portsout("\n\rEOF Unexpected in SIG Area List: Notify Sysop!\n\r");
return (-1);
}
break; /* if not 1st line */
} /* end of if ((fgets)) */
if (line_cnt > 0) {
length = strlen(f_lines[line_cnt]);
length -= 74;
if(length > 6)
length = 6;
substr(f_lines[line_cnt], dir_priv_ascii, 74, length);
strl = strlen(dir_priv_ascii);
if (strl == 0) {
portsout("\n\rError reading privilege level\n\r");
exit(1);
}
char_ptr = strchr(dir_priv_ascii, '*');
if (char_ptr != NULL) {
*char_ptr = '\0';
}
dir_priv[line_cnt] = atoi(dir_priv_ascii);
if (dir_priv[line_cnt] > user_priv)
goto next_read_sig;
strcpy(who_am_i, f_lines[line_cnt]);
buf_ptr = who_am_i;
buf_ptr += 73;
for (ptr = 0; ptr < 5; ptr++)
*buf_ptr++ = ' ';
sprintf(buf128, "%2d) %s", line_cnt, who_am_i);
}
next_read_sig:
++line_cnt;
} /* end of while (fpt) */
fclose(fpt);
if (line_cnt <= 1)
return;
for (index_value = 1; index_value < line_cnt; index_value++) {
if (dir_priv[index_value] <= user_priv) {
parse_arg(f_lines[index_value]);
strcat(m_pathname, "msgs/");
hdrread();
portsout("\n\rMail check for SIG area '");
portsout(who_am_I);
portsout("'\n\r");
mail_to_you();
portsout("\n\r*************************************************\n\r");
}
}
/* End of SIG checking */
}
check_msga_n()
{
FILE *fpt, *fopen();
char *fgets(), *getenv();
char choice[4];
#ifndef SYSV
char dir_priv_ascii[7];
#endif
#ifdef SYSV
char dir_priv_ascii[20];
#endif
char *buf_ptr, *file_ptr, *char_ptr;
int line_cnt, ret, i;
int index_value, ptr;
int length, strl, ii;
strcpy(buf128, MSGS);
if ((fpt = fopen(buf128, "r")) == NULL) {
portsout("\n\rError Opening File Area List: Notify Sysop!\n\r");
return (-1);
}
line_cnt = 0;
while (fpt) {
zfl(f_lines[line_cnt], 81);
if ((fgets(f_lines[line_cnt], 80, fpt)) == NULL) {
if (line_cnt == 0) {
portsout("\n\rEOF Unexpected in Message Area List: Notify Sysop!\n\r");
return (-1);
}
break; /* if not 1st line */
} /* end of if ((fgets)) */
if (line_cnt > 0) {
length = strlen(f_lines[line_cnt]);
length -= 57;
if(length > 6)
length = 6;
substr(f_lines[line_cnt], dir_priv_ascii, 57, length);
strl = strlen(dir_priv_ascii);
if (strl == 0) {
portsout("\n\rError reading privilege level\n\r");
exit(1);
}
char_ptr = strchr(dir_priv_ascii, '*');
if (char_ptr != NULL) {
strcpy(c_pathname, ORGPATH);
file_ptr = (c_pathname + strlen(c_pathname));
ii = 0;
while (f_lines[line_cnt][ii] != ' ') {
*file_ptr = f_lines[line_cnt][ii];
++file_ptr;
++ii;
}
*file_ptr = '/';
++file_ptr;
*file_ptr = '\0';
*char_ptr = '\0';
}
dir_priv[line_cnt] = atoi(dir_priv_ascii);
if (dir_priv[line_cnt] > user_priv)
goto next_read_n;
strcpy(who_am_i, f_lines[line_cnt]);
buf_ptr = who_am_i;
buf_ptr += 56;
for (ptr = 0; ptr < 5; ptr++)
*buf_ptr++ = ' ';
sprintf(buf128, "%2d) %s", line_cnt, who_am_i);
}
next_read_n:
++line_cnt;
} /* end of while (fpt) */
fclose(fpt);
if (line_cnt <= 1)
return;
for (index_value = 1; index_value < line_cnt; index_value++) {
if (dir_priv[index_value] <= user_priv) {
parse_arg(f_lines[index_value]);
hdrread();
}
}
}