Removed support for non-batching and bidirectional transfer protocols

This commit is contained in:
Michiel Broek 2004-11-05 20:25:33 +00:00
parent 769a1884b3
commit c22e9948e1
19 changed files with 128 additions and 289 deletions

View File

@ -1,9 +1,16 @@
$Id$ $Id$
!!!! DON'T USE, THIS VERSION HAS LOTS OF BUGS !!!! !!!! DON'T USE, THIS VERSION HAS LOTS OF BUGS !!!!
==================================================
But if you don't use the bbs then you may be safe.
v0.71.0 27-Oct-2004 v0.71.0 27-Oct-2004
general:
From filetranfer records removed the batch and bidirectional
switches, these are no longer needed.
mbsebbs: mbsebbs:
In change handle the first character of the name is not In change handle the first character of the name is not
capitalized. capitalized.
@ -13,15 +20,22 @@ v0.71.0 27-Oct-2004
If a user pages the sysop a hint is displayed to fill in the If a user pages the sysop a hint is displayed to fill in the
reason to chat, language prompt 28. reason to chat, language prompt 28.
After forced chat, redisplay the last menu. After forced chat, redisplay the last menu.
Removed support for non-batching protocols (xmodem) and for
bidirectional protocols.
mbnewusr: mbnewusr:
Rewrote terminal i/o. Rewrote terminal i/o.
mbsetup:
In file transfers edit, removed switches for batch and bidirect
protocols, added a switch for internal protocols.
lang: lang:
Changed width of prompt 261. Changed width of prompt 261.
Added prompt 28. Added prompt 28.
Removed leading spaces of prompt 151. Removed leading spaces of prompt 151.
Removed prompt 276.
script: script:
Modified rundoor.sh so that it uses two different dosemu Modified rundoor.sh so that it uses two different dosemu
configuration files, one for virtual modem and one without. configuration files, one for virtual modem and one without.

Binary file not shown.

View File

@ -274,7 +274,7 @@
273 file.c YN|Search for new since your last call [Y/n]: 273 file.c YN|Search for new since your last call [Y/n]:
274 file.c |Enter new date to search for [DD-MM-YYYY]: 274 file.c |Enter new date to search for [DD-MM-YYYY]:
275 file.c |File Search by Date 275 file.c |File Search by Date
276 file.c offline.c |Please enter file to upload: 276 .c |
277 offline.c |Offline Reader Download 277 offline.c |Offline Reader Download
278 file.c |You do not have enough access to upload to this area. 278 file.c |You do not have enough access to upload to this area.
279 file.c |You have not enough diskspace free to copy this file 279 file.c |You have not enough diskspace free to copy this file

View File

@ -274,7 +274,7 @@ JN|Node onbekend, toch doorgaan [j/N]:
JN|Zoeken naar nieuwe bestanden sinds de laatste keer? [J/n]: JN|Zoeken naar nieuwe bestanden sinds de laatste keer? [J/n]:
|Geef nieuwe datum om vanaf te zoeken [DD-MM-JJJJ]: |Geef nieuwe datum om vanaf te zoeken [DD-MM-JJJJ]:
|Bestanden zoeken op datum |Bestanden zoeken op datum
|Geef bestandsnaam voor upload: |
|Offline Reader Download |Offline Reader Download
|U heeft niet genoeg rechten om in dit gebied te uploaden. |U heeft niet genoeg rechten om in dit gebied te uploaden.
|U heeft niet genoeg vrije diskruimte om dit bestand te kopieren |U heeft niet genoeg vrije diskruimte om dit bestand te kopieren

View File

@ -274,7 +274,7 @@ YN|Node not known, continue anyway [y/N]:
YN|Search for new since your last call [Y/n]: YN|Search for new since your last call [Y/n]:
|Enter new date to search for [DD-MM-YYYY]: |Enter new date to search for [DD-MM-YYYY]:
|File Search by Date |File Search by Date
|Please enter file to upload: |
|Offline Reader Download |Offline Reader Download
|You do not have enough access to upload to this area. |You do not have enough access to upload to this area.
|You have not enough diskspace free to copy this file |You have not enough diskspace free to copy this file

View File

@ -274,7 +274,7 @@ ON|Node inconnu, continue quand m
YN|Search for new since your last call [Y/n]: YN|Search for new since your last call [Y/n]:
|Enter new date to search for [DD-MM-YYYY]: |Enter new date to search for [DD-MM-YYYY]:
|File Search by Date |File Search by Date
|Please enter file to upload: |
|Offline Reader Download |Offline Reader Download
|You do not have enough access to upload to this area. |You do not have enough access to upload to this area.
|You have not enough diskspace free to copy this file |You have not enough diskspace free to copy this file

View File

@ -274,7 +274,7 @@ SN|Nodo desco
SN|Buscar novos ficheiros dende a tua £ltima chamada [S/n]: SN|Buscar novos ficheiros dende a tua £ltima chamada [S/n]:
|Buscar novos dende fecha [DD-MM-YYYY]: |Buscar novos dende fecha [DD-MM-YYYY]:
|Buscar ficheiros por fecha |Buscar ficheiros por fecha
|Nome do ficheiro a enviar: |
|Descargar Correo para lectura OFF-LINE |Descargar Correo para lectura OFF-LINE
|Non tes permiso para enviar ficheiros a esta  rea. |Non tes permiso para enviar ficheiros a esta  rea.
|Non hai espacio dabondo para copiar este ficheiro |Non hai espacio dabondo para copiar este ficheiro

View File

@ -274,7 +274,7 @@ JN|Adresse unbekannt, dennoch fortfahren [j/N]:
JN|Neue Dateien seit Ihrem letzten Login suchen [J/n]: JN|Neue Dateien seit Ihrem letzten Login suchen [J/n]:
|Geben Sie das Suchdatum an [TT-MM-JJJJ]: |Geben Sie das Suchdatum an [TT-MM-JJJJ]:
|Dateisuche nach Datum |Dateisuche nach Datum
|Geben sie den Namen der heraufzuladenden Datei ein: |
|Mitteilungen fuer "Offline Reader" herunterladen |Mitteilungen fuer "Offline Reader" herunterladen
|Ihre Zugriffsberechtigung reicht nicht fuer das Heraufladen. |Ihre Zugriffsberechtigung reicht nicht fuer das Heraufladen.
|Ihr Plattenplatz reicht nicht fuer das Kopieren der Datei |Ihr Plattenplatz reicht nicht fuer das Kopieren der Datei

View File

@ -274,7 +274,7 @@ JN|Adresse unbekannt, dennoch fortfahren [<j>a/<N>ein]:
JN|Neue Dateien seit Deinem letzten Login suchen [<J>a/<n>ein]: JN|Neue Dateien seit Deinem letzten Login suchen [<J>a/<n>ein]:
|Gib das Suchdatum an [TT-MM-JJJJ]: |Gib das Suchdatum an [TT-MM-JJJJ]:
|Dateisuche nach Datum |Dateisuche nach Datum
|Gib den Namen der heraufzuladenden Datei ein: |
|Mitteilungen fuer "Offline Reader" herunterladen |Mitteilungen fuer "Offline Reader" herunterladen
|Deine Zugriffsberechtigung reicht nicht fuer das Heraufladen. |Deine Zugriffsberechtigung reicht nicht fuer das Heraufladen.
|Dein Plattenplatz reicht nicht fuer das Kopieren der Datei |Dein Plattenplatz reicht nicht fuer das Kopieren der Datei

View File

@ -274,7 +274,7 @@ SN|Nodo sconosciuto, continua lo stesso [s/N]:
SN|Cerca nuovi file dall'ultima chiamata [S/n]: SN|Cerca nuovi file dall'ultima chiamata [S/n]:
|Scegli una data per la ricerca dei nuovi file [GG-MM-AAAA] |Scegli una data per la ricerca dei nuovi file [GG-MM-AAAA]
|Ricerca per data |Ricerca per data
|Scegli il file da uploadare: |
|Offline Reader Download |Offline Reader Download
|Non hai livello di accesso sufficiente per uploadare in quest'area. |Non hai livello di accesso sufficiente per uploadare in quest'area.
|Non hai abbastanza spazio libero per copiare questo file |Non hai abbastanza spazio libero per copiare questo file

View File

@ -274,7 +274,7 @@ SN|Nodo desconocido.
SN|Buscar nuevos ficheros desde tu £ltima llamada [S/n]: SN|Buscar nuevos ficheros desde tu £ltima llamada [S/n]:
|Fecha desde la que buscar [DD-MM-YYYY]: |Fecha desde la que buscar [DD-MM-YYYY]:
|Buscar ficheros por fecha |Buscar ficheros por fecha
|Nombre del fichero a enviar: |
|Descargar Correo para lectura OFF-LINE |Descargar Correo para lectura OFF-LINE
|No tienes permiso para enviar ficheros a esta  rea. |No tienes permiso para enviar ficheros a esta  rea.
|No hay suficiente espacio libre para copiar este fichero |No hay suficiente espacio libre para copiar este fichero

View File

@ -76,8 +76,7 @@ char sProtName[21]; /* Current Transfer Protocol name */
char sProtUp[51]; /* Upload path & binary */ char sProtUp[51]; /* Upload path & binary */
char sProtDn[51]; /* Download path & binary */ char sProtDn[51]; /* Download path & binary */
char sProtAdvice[31]; /* Advice for protocol */ char sProtAdvice[31]; /* Advice for protocol */
unsigned uProtBatch; /* Batching protocol */ unsigned uProtInternal; /* Internal protocol */
unsigned uProtBidir; /* Bi-directional protocol */
int iProtEfficiency; /* Protocol efficiency */ int iProtEfficiency; /* Protocol efficiency */

View File

@ -684,8 +684,8 @@ struct prot {
char ProtUp[51]; /* Upload Path & Binary */ char ProtUp[51]; /* Upload Path & Binary */
char ProtDn[51]; /* Download Path & Bianry */ char ProtDn[51]; /* Download Path & Bianry */
unsigned Available : 1; /* Available/Not Available */ unsigned Available : 1; /* Available/Not Available */
unsigned Batch : 1; /* Batching protocol */ unsigned xBatch : 1;
unsigned Bidir : 1; /* Bi Directional */ unsigned xBidir : 1;
unsigned Deleted : 1; /* Protocol is deleted */ unsigned Deleted : 1; /* Protocol is deleted */
unsigned Internal : 1; /* Internal protocol */ unsigned Internal : 1; /* Internal protocol */
char Advice[31]; /* Small advice to user */ char Advice[31]; /* Small advice to user */

View File

@ -896,8 +896,7 @@ void Chg_Protocol()
strcpy(sProtUp, PROT.ProtUp); strcpy(sProtUp, PROT.ProtUp);
strcpy(sProtDn, PROT.ProtDn); strcpy(sProtDn, PROT.ProtDn);
strcpy(sProtAdvice, PROT.Advice); strcpy(sProtAdvice, PROT.Advice);
uProtBatch = PROT.Batch; uProtInternal = PROT.Internal;
uProtBidir = PROT.Bidir;
iProtEfficiency = PROT.Efficiency; iProtEfficiency = PROT.Efficiency;
iFoundProt = TRUE; iFoundProt = TRUE;
} else } else
@ -965,8 +964,7 @@ void Set_Protocol(char *Protocol)
strcpy(sProtUp, PROT.ProtUp); strcpy(sProtUp, PROT.ProtUp);
strcpy(sProtDn, PROT.ProtDn); strcpy(sProtDn, PROT.ProtDn);
strcpy(sProtAdvice, PROT.Advice); strcpy(sProtAdvice, PROT.Advice);
uProtBatch = PROT.Batch; uProtInternal = PROT.Internal;
uProtBidir = PROT.Bidir;
iProtEfficiency = PROT.Efficiency; iProtEfficiency = PROT.Efficiency;
} else } else
precno++; precno++;

View File

@ -972,8 +972,8 @@ int NewfileScan(int AskStart)
*/ */
int Upload() int Upload()
{ {
char File[81], temp[81]; char temp[81];
int Area, x = 0, err; int Area, err;
unsigned long OldArea; unsigned long OldArea;
time_t ElapstimeStart, ElapstimeFin, iTime; time_t ElapstimeStart, ElapstimeFin, iTime;
DIR *dirp; DIR *dirp;
@ -1001,79 +1001,6 @@ int Upload()
Area = area.Upload; Area = area.Upload;
SetFileArea(Area); SetFileArea(Area);
/*
* Only ask for a filename for non-batching protocols,
* ie. the stone age Xmodem for example.
*/
if (!uProtBatch) {
/* Please enter file to upload: */
pout(YELLOW, BLACK, (char *) Language(276));
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(File, 80);
if ((strcmp(File, "")) == 0)
return 0;
if (*(File) == '.' || *(File) == '*' || *(File) == ' ' || *(File) == '/') {
Enter(1);
/* Illegal Filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Pause();
return 0;
}
Strlen = strlen(File);
Strlen--;
if (*(File + Strlen) == '.' || *(File + Strlen) == '/' || *(File + Strlen) == ' ') {
Enter(1);
/* Illegal Filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Pause();
return 0;
}
if ((!strcmp(File, "files.bbs")) || (!strcmp(File, "00index")) || (strstr(File, (char *)".html"))) {
Enter(1);
/* Illegal Filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Syslog('!', "Attempted to upload %s", File);
Pause();
return 0;
}
/*
* Check for a space or ; in filename being uploaded
*/
if (((strchr(File, 32)) != NULL) || ((strchr(File, ';')) != NULL)) {
Enter(1);
/* Illegal Filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Pause();
return 0;
}
/* MOET IN ALLE AREAS ZOEKEN */
if (area.Dupes) {
x = CheckFile(File, Area);
if (x) {
Enter(1);
/* The file already exists on the system */
pout(WHITE, CYAN, (char *) Language(282));
Enter(2);
SetFileArea(OldArea);
Pause();
return 0;
}
}
SetFileArea(OldArea);
}
SetFileArea(Area); SetFileArea(Area);
Syslog('+', "Upload area is %d %s", Area, area.Name); Syslog('+', "Upload area is %d %s", Area, area.Name);
@ -1099,10 +1026,7 @@ int Upload()
PUTSTR((char *) Language(283)); PUTSTR((char *) Language(283));
Enter(2); Enter(2);
if (uProtBatch) Syslog('+', "Upload using %s", sProtName);
Syslog('+', "Upload using %s", sProtName);
else
Syslog('+', "Upload \"%s\" using %s", File, sProtName);
sprintf(temp, "%s/%s/upl", CFG.bbs_usersdir, exitinfo.Name); sprintf(temp, "%s/%s/upl", CFG.bbs_usersdir, exitinfo.Name);
if (chdir(temp)) { if (chdir(temp)) {
@ -1571,60 +1495,13 @@ int Upload_Home()
sFileName = calloc(PATH_MAX, sizeof(char)); sFileName = calloc(PATH_MAX, sizeof(char));
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
if (!uProtBatch) {
Enter(1);
/* Please enter file to upload: */
pout(YELLOW, BLACK, (char *) Language(276));
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(File, 80);
if ((strcmp(File, "")) == 0) {
free(File);
free(sFileName);
free(temp);
return 0;
}
if (File[0] == '.' || File[0] == '*' || File[0] == ' ') {
Enter(1);
/* Illegal Filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Pause();
free(File);
free(sFileName);
free(temp);
return 0;
}
Strlen = strlen(File);
Strlen--;
if (File[Strlen] == '.' || File[Strlen] == '/' || File[Strlen] == ' ') {
Enter(1);
/* Illegal Filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Pause();
free(File);
free(sFileName);
free(temp);
return 0;
}
}
clear(); clear();
Enter(2); Enter(2);
/* Please start your upload now ...*/ /* Please start your upload now ...*/
sprintf(temp, "%s, %s", sProtAdvice, (char *) Language(283)); sprintf(temp, "%s, %s", sProtAdvice, (char *) Language(283));
pout(CFG.HiliteF, CFG.HiliteB, temp); pout(CFG.HiliteF, CFG.HiliteB, temp);
Enter(2); Enter(2);
if (uProtBatch) Syslog('+', "Upload using %s", sProtName);
Syslog('+', "Upload using %s", sProtName);
else
Syslog('+', "Upload \"%s\" using %s", File, sProtName);
sprintf(temp, "%s/%s/upl", CFG.bbs_usersdir, exitinfo.Name); sprintf(temp, "%s/%s/upl", CFG.bbs_usersdir, exitinfo.Name);
if (chdir(temp)) { if (chdir(temp)) {

View File

@ -1012,7 +1012,7 @@ void OLR_Upload(void)
{ {
char *File, *temp, *Arc, Dirpath[PATH_MAX], Filename[81], msg[81]; char *File, *temp, *Arc, Dirpath[PATH_MAX], Filename[81], msg[81];
time_t ElapstimeStart, ElapstimeFin, iTime; time_t ElapstimeStart, ElapstimeFin, iTime;
int err, Strlen, RetVal = FALSE; int err, RetVal = FALSE;
FILE *fp; FILE *fp;
if (strlen(CFG.bbsid) == 0) { if (strlen(CFG.bbsid) == 0) {
@ -1034,60 +1034,12 @@ void OLR_Upload(void)
File = calloc(PATH_MAX, sizeof(char)); File = calloc(PATH_MAX, sizeof(char));
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
if (!uProtBatch) {
Enter(1);
/* Please enter file to upload: */
pout(YELLOW, BLACK, (char *) Language(276));
colour(CFG.InputColourF, CFG.InputColourB);
GetstrC(File, 80);
Syslog('+', "Filename entered \"%s\"", File);
if ((strcmp(File, "")) == 0)
return;
if (File[0] == '.' || File[0] == '*' || File[0] == ' ') {
Enter(1);
/* Illegal filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Pause();
return;
}
Strlen = strlen(File);
Strlen--;
if (File[Strlen] == '.' || File[Strlen] == '/' || File[Strlen] == ' ') {
Enter(1);
/* Illegal Filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Pause();
return;
}
if (strncasecmp(File, CFG.bbsid, strlen(CFG.bbsid))) {
Enter(1);
/* Illegal filename! */
pout(CFG.HiliteF, CFG.HiliteB, (char *) Language(247));
Enter(2);
Pause();
return;
}
Syslog('+', "Filename accepted");
}
Enter(1); Enter(1);
/* Please start your upload now */ /* Please start your upload now */
sprintf(msg, "%s, %s", sProtAdvice, (char *) Language(283)); sprintf(msg, "%s, %s", sProtAdvice, (char *) Language(283));
pout(CFG.HiliteF, CFG.HiliteB, msg); pout(CFG.HiliteF, CFG.HiliteB, msg);
Enter(2); Enter(2);
if (uProtBatch) Syslog('+', "Upload using %s", sProtName);
Syslog('+', "Upload using %s", sProtName);
else
Syslog('+', "Upload \"%s\" using %s", File, sProtName);
sprintf(temp, "%s/%s/upl", CFG.bbs_usersdir, exitinfo.Name); sprintf(temp, "%s/%s/upl", CFG.bbs_usersdir, exitinfo.Name);

View File

@ -57,8 +57,16 @@
*/ */
int transfer(down_list **download_list, up_list **upload_list, int direction) int download(down_list **download_list)
{ {
return 0; return 0;
} }
int upload(up_list **upload_list)
{
return 0;
}

View File

@ -3,7 +3,6 @@
/* $Id$ */ /* $Id$ */
typedef enum {FT_UPLOAD, FT_DOWNLOAD, FT_BIDIRECT} TRANSFERTYPE;
/* /*
@ -31,7 +30,8 @@ typedef struct _up_list {
} up_list; } up_list;
int transfer(down_list **, up_list **, int); int download(down_list **);
int upload(up_list **);
#endif #endif

View File

@ -74,7 +74,6 @@ int CountProtocol(void)
PROT.Available = FALSE; PROT.Available = FALSE;
} }
sprintf(PROT.Advice, "Press Ctrl-X to abort"); sprintf(PROT.Advice, "Press Ctrl-X to abort");
PROT.Batch = TRUE;
PROT.Efficiency = 92; PROT.Efficiency = 92;
fwrite(&PROT, sizeof(PROT), 1, fil); fwrite(&PROT, sizeof(PROT), 1, fil);
@ -86,7 +85,6 @@ int CountProtocol(void)
sprintf(PROT.Advice, "It goes before you know"); sprintf(PROT.Advice, "It goes before you know");
PROT.Available = FALSE; PROT.Available = FALSE;
PROT.Efficiency = 100; PROT.Efficiency = 100;
PROT.Batch = TRUE;
fwrite(&PROT, sizeof(PROT), 1, fil); fwrite(&PROT, sizeof(PROT), 1, fil);
memset(&PROT, 0, sizeof(PROT)); memset(&PROT, 0, sizeof(PROT));
@ -102,7 +100,6 @@ int CountProtocol(void)
PROT.Available = FALSE; PROT.Available = FALSE;
} }
sprintf(PROT.Advice, "Press Ctrl-X to abort"); sprintf(PROT.Advice, "Press Ctrl-X to abort");
PROT.Batch = TRUE;
PROT.Efficiency = 95; PROT.Efficiency = 95;
fwrite(&PROT, sizeof(PROT), 1, fil); fwrite(&PROT, sizeof(PROT), 1, fil);
@ -119,7 +116,6 @@ int CountProtocol(void)
PROT.Available = FALSE; PROT.Available = FALSE;
} }
sprintf(PROT.Advice, "Press Ctrl-X to abort"); sprintf(PROT.Advice, "Press Ctrl-X to abort");
PROT.Batch = TRUE;
PROT.Efficiency = 98; PROT.Efficiency = 98;
fwrite(&PROT, sizeof(PROT), 1, fil); fwrite(&PROT, sizeof(PROT), 1, fil);
@ -271,12 +267,11 @@ void s_protrec(void)
mbse_mvprintw( 9, 6, "3. Upload"); mbse_mvprintw( 9, 6, "3. Upload");
mbse_mvprintw(10, 6, "4. Download"); mbse_mvprintw(10, 6, "4. Download");
mbse_mvprintw(11, 6, "5. Available"); mbse_mvprintw(11, 6, "5. Available");
mbse_mvprintw(12, 6, "6. Batching"); mbse_mvprintw(12, 6, "6. Internal");
mbse_mvprintw(13, 6, "7. Bi direct"); mbse_mvprintw(13, 6, "7. Advice");
mbse_mvprintw(14, 6, "8. Advice"); mbse_mvprintw(14, 6, "8. Efficiency");
mbse_mvprintw(15, 6, "9. Efficiency"); mbse_mvprintw(15, 6, "9. Deleted");
mbse_mvprintw(16, 6, "10. Deleted"); mbse_mvprintw(16, 6, "10. Sec. level");
mbse_mvprintw(17, 6, "11. Sec. level");
} }
@ -286,84 +281,82 @@ void s_protrec(void)
*/ */
int EditProtRec(int Area) int EditProtRec(int Area)
{ {
FILE *fil; FILE *fil;
char mfile[PATH_MAX]; char mfile[PATH_MAX];
long offset; long offset;
int j; int j;
unsigned long crc, crc1; unsigned long crc, crc1;
clr_index(); clr_index();
working(1, 0, 0); working(1, 0, 0);
IsDoing("Edit Protocol"); IsDoing("Edit Protocol");
sprintf(mfile, "%s/etc/protocol.temp", getenv("MBSE_ROOT")); sprintf(mfile, "%s/etc/protocol.temp", getenv("MBSE_ROOT"));
if ((fil = fopen(mfile, "r")) == NULL) { if ((fil = fopen(mfile, "r")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
return -1; return -1;
} }
offset = sizeof(PROThdr) + ((Area -1) * sizeof(PROT)); offset = sizeof(PROThdr) + ((Area -1) * sizeof(PROT));
if (fseek(fil, offset, 0) != 0) { if (fseek(fil, offset, 0) != 0) {
working(2, 0, 0); working(2, 0, 0);
return -1; return -1;
} }
fread(&PROT, sizeof(PROT), 1, fil); fread(&PROT, sizeof(PROT), 1, fil);
fclose(fil); fclose(fil);
crc = 0xffffffff; crc = 0xffffffff;
crc = upd_crc32((char *)&PROT, crc, sizeof(PROT)); crc = upd_crc32((char *)&PROT, crc, sizeof(PROT));
s_protrec(); s_protrec();
for (;;) { for (;;) {
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
show_str( 7,21, 1, PROT.ProtKey); show_str( 7,21, 1, PROT.ProtKey);
show_str( 8,21,20, PROT.ProtName); show_str( 8,21,20, PROT.ProtName);
show_str( 9,21,50, PROT.ProtUp); show_str( 9,21,50, PROT.ProtUp);
show_str( 10,21,50, PROT.ProtDn); show_str( 10,21,50, PROT.ProtDn);
show_bool(11,21, PROT.Available); show_bool(11,21, PROT.Available);
show_bool(12,21, PROT.Batch); show_bool(12,21, PROT.Internal);
show_bool(13,21, PROT.Bidir); show_str( 13,21,30, PROT.Advice);
show_str( 14,21,30, PROT.Advice); show_int( 14,21, PROT.Efficiency);
show_int( 15,21, PROT.Efficiency); show_bool(15,21, PROT.Deleted);
show_bool(16,21, PROT.Deleted); show_sec( 16,21, PROT.Level);
show_sec( 17,21, PROT.Level);
j = select_menu(11); j = select_menu(10);
switch(j) { switch(j) {
case 0: crc1 = 0xffffffff; case 0: crc1 = 0xffffffff;
crc1 = upd_crc32((char *)&PROT, crc1, sizeof(PROT)); crc1 = upd_crc32((char *)&PROT, crc1, sizeof(PROT));
if (crc != crc1) { if (crc != crc1) {
if (yes_no((char *)"Record is changed, save") == 1) { if (yes_no((char *)"Record is changed, save") == 1) {
working(1, 0, 0); working(1, 0, 0);
if ((fil = fopen(mfile, "r+")) == NULL) { if ((fil = fopen(mfile, "r+")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
return -1; return -1;
} }
fseek(fil, offset, 0); fseek(fil, offset, 0);
fwrite(&PROT, sizeof(PROT), 1, fil); fwrite(&PROT, sizeof(PROT), 1, fil);
fclose(fil); fclose(fil);
ProtUpdated = 1; ProtUpdated = 1;
working(6, 0, 0); working(6, 0, 0);
}
} }
IsDoing("Browsing Menu"); }
return 0; IsDoing("Browsing Menu");
case 1: E_UPS( 7,21,1, PROT.ProtKey, "The ^Key^ to select this protocol") return 0;
case 2: E_STR( 8,21,20,PROT.ProtName, "The ^name^ of this protocol") case 1: E_UPS( 7,21,1, PROT.ProtKey, "The ^Key^ to select this protocol")
case 3: E_STR( 9,21,50,PROT.ProtUp, "The ^Upload^ path, binary and parameters") case 2: E_STR( 8,21,20,PROT.ProtName, "The ^name^ of this protocol")
case 4: E_STR( 10,21,50,PROT.ProtDn, "The ^Download^ path, binary and parameters") case 3: E_STR( 9,21,50,PROT.ProtUp, "The ^Upload^ path, binary and parameters")
case 5: E_BOOL(11,21, PROT.Available, "Is this protocol ^available^") case 4: E_STR( 10,21,50,PROT.ProtDn, "The ^Download^ path, binary and parameters")
case 6: E_BOOL(12,21, PROT.Batch, "Is this a ^batching^ transfer protocol") case 5: E_BOOL(11,21, PROT.Available, "Is this protocol ^available^")
case 7: E_BOOL(13,21, PROT.Bidir, "Is this protocol ^bidirectional^") case 6: E_BOOL(12,21, PROT.Internal, "Is this a ^internal^ transfer protocol")
case 8: E_STR( 14,21,30,PROT.Advice, "A small ^advice^ to the user, eg \"Press Ctrl-X to abort\"") case 7: E_STR( 13,21,30,PROT.Advice, "A small ^advice^ to the user, eg \"Press Ctrl-X to abort\"")
case 9: E_INT( 15,21, PROT.Efficiency,"The ^efficiency^ in % of this protocol") case 8: E_INT( 14,21, PROT.Efficiency,"The ^efficiency^ in % of this protocol")
case 10:E_BOOL(16,21, PROT.Deleted, "Is this protocol ^Deleted^") case 9: E_BOOL(15,21, PROT.Deleted, "Is this protocol ^Deleted^")
case 11:E_SEC( 17,21, PROT.Level, "8.5.11 PROTOCOL SECURITY LEVEL", s_protrec) case 10:E_SEC( 16,21, PROT.Level, "8.5.11 PROTOCOL SECURITY LEVEL", s_protrec)
}
} }
}
return 0; return 0;
} }
@ -562,8 +555,7 @@ int bbs_prot_doc(FILE *fp, FILE *toc, int page)
add_webtable(wp, (char *)"Upload command", PROT.ProtUp); add_webtable(wp, (char *)"Upload command", PROT.ProtUp);
add_webtable(wp, (char *)"Download command", PROT.ProtDn); add_webtable(wp, (char *)"Download command", PROT.ProtDn);
add_webtable(wp, (char *)"Available", getboolean(PROT.Available)); add_webtable(wp, (char *)"Available", getboolean(PROT.Available));
add_webtable(wp, (char *)"Batch protocol", getboolean(PROT.Batch)); add_webtable(wp, (char *)"Internal protocol", getboolean(PROT.Internal));
add_webtable(wp, (char *)"Bidirectional", getboolean(PROT.Bidir));
add_webtable(wp, (char *)"User advice", PROT.Advice); add_webtable(wp, (char *)"User advice", PROT.Advice);
sprintf(temp, "%d%%", PROT.Efficiency); sprintf(temp, "%d%%", PROT.Efficiency);
add_webtable(wp, (char *)"Efficiency", temp); add_webtable(wp, (char *)"Efficiency", temp);
@ -573,16 +565,15 @@ int bbs_prot_doc(FILE *fp, FILE *toc, int page)
close_webdoc(wp); close_webdoc(wp);
} }
fprintf(fp, " Selection key %s\n", PROT.ProtKey); fprintf(fp, " Selection key %s\n", PROT.ProtKey);
fprintf(fp, " Protocol name %s\n", PROT.ProtName); fprintf(fp, " Protocol name %s\n", PROT.ProtName);
fprintf(fp, " Upload command %s\n", PROT.ProtUp); fprintf(fp, " Upload command %s\n", PROT.ProtUp);
fprintf(fp, " Download command %s\n", PROT.ProtDn); fprintf(fp, " Download command %s\n", PROT.ProtDn);
fprintf(fp, " Available %s\n", getboolean(PROT.Available)); fprintf(fp, " Available %s\n", getboolean(PROT.Available));
fprintf(fp, " Batch protocol %s\n", getboolean(PROT.Batch)); fprintf(fp, " Internal protocol %s\n", getboolean(PROT.Internal));
fprintf(fp, " Bidirectional %s\n", getboolean(PROT.Bidir)); fprintf(fp, " User advice %s\n", PROT.Advice);
fprintf(fp, " User advice %s\n", PROT.Advice); fprintf(fp, " Efficiency %d%%\n", PROT.Efficiency);
fprintf(fp, " Efficiency %d%%\n", PROT.Efficiency); fprintf(fp, " Security level %s\n", get_secstr(PROT.Level));
fprintf(fp, " Security level %s\n", get_secstr(PROT.Level));
fprintf(fp, "\n\n"); fprintf(fp, "\n\n");
j++; j++;