Made bbs menus machine endian indepentant

This commit is contained in:
Michiel Broek 2003-02-12 20:56:57 +00:00
parent 8def403243
commit e4c4477ad3
11 changed files with 55 additions and 105 deletions

View File

@ -1,6 +1,7 @@
$Id$ $Id$
WARNING, users of Sparc and HP-PA systems should not edit bbs menus now! WARNING, users of Sparc and HP-PA systems should be carefull, some
menus might not work.
All other users on Intel machines (99,9% I think) can use this version. All other users on Intel machines (99,9% I think) can use this version.
@ -106,6 +107,7 @@ v0.37.01 14-Jan-2003.
Fixed whoson list to display user real names and handles again. Fixed whoson list to display user real names and handles again.
Fixed send online message to send to user real names, handles Fixed send online message to send to user real names, handles
and unix names again. and unix names again.
The menus are machine endian independant.
examples: examples:
The English and Dutch templates are updated to show the new The English and Dutch templates are updated to show the new

View File

@ -3,13 +3,9 @@
include ../Makefile.global include ../Makefile.global
SRCS = endian.c OTHER = Makefile header.txt footer.txt \
HDRS = endian.h menus-en.tar txtfiles-en.tar templates-en.tar \
OBJS = endian.o
OTHER = Makefile header.txt footer.txt menus-le.tar menus-be.tar \
txtfiles-en.tar templates-en.tar \
menus-es.tar txtfiles-es.tar templates-es.tar \ menus-es.tar txtfiles-es.tar templates-es.tar \
menus-en.tar \
templates-de.tar \ templates-de.tar \
templates-nl.tar templates-nl.tar
@ -18,13 +14,10 @@ OTHER = Makefile header.txt footer.txt menus-le.tar menus-be.tar \
.c.o: .c.o:
${CC} ${CFLAGS} ${INCLUDES} ${DEFINES} -c $< ${CC} ${CFLAGS} ${INCLUDES} ${DEFINES} -c $<
all: endian all:
endian: ${OBJS} ${LIBS}
${CC} -o endian ${OBJS} ${LIBS}
strip endian
install: all install:
@if [ ! -f ${ETCDIR}/header.txt ]; then \ @if [ ! -f ${ETCDIR}/header.txt ]; then \
${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0644 header.txt ${ETCDIR} ; \ ${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0644 header.txt ${ETCDIR} ; \
echo "${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0644 header.txt ${ETCDIR}" ; \ echo "${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0644 header.txt ${ETCDIR}" ; \
@ -34,8 +27,8 @@ install: all
echo "${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0644 footer.txt ${ETCDIR}" ; \ echo "${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0644 footer.txt ${ETCDIR}" ; \
fi fi
@if [ ! -f ${PREFIX}/english/menus/main.mnu ]; then \ @if [ ! -f ${PREFIX}/english/menus/main.mnu ]; then \
tar xfC menus-`./endian`.tar ${PREFIX}/english/menus ; \ tar xfC menus-en.tar ${PREFIX}/english/menus ; \
echo "tar xfC menus-`./endian`.tar ${PREFIX}/english/menus" ; \ echo "tar xfC menus-en.tar ${PREFIX}/english/menus" ; \
echo "Installed default English menus" ; \ echo "Installed default English menus" ; \
fi fi
@if [ ! -f ${PREFIX}/english/txtfiles/main.ans ]; then \ @if [ ! -f ${PREFIX}/english/txtfiles/main.ans ]; then \
@ -69,7 +62,7 @@ install: all
fi fi
clean: clean:
rm -f endian *.o *.h~ *.c~ core filelist Makefile.bak rm -f *.h~ *.c~ core filelist Makefile.bak
filelist: Makefile filelist: Makefile
BASE=`pwd`; \ BASE=`pwd`; \
@ -100,5 +93,4 @@ depend:
# DO NOT DELETE THIS LINE - MAKE DEPEND RELIES ON IT # DO NOT DELETE THIS LINE - MAKE DEPEND RELIES ON IT
# Dependencies generated by make depend # Dependencies generated by make depend
endian.o: endian.h
# End of generated dependencies # End of generated dependencies

View File

@ -1,64 +0,0 @@
/*****************************************************************************
*
* $Id$
* Purpose ...............: Check little/big-endian for install of the menus.
*
*****************************************************************************
* Copyright (C) 1997-2002
*
* Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10
* 1971 BV IJmuiden
* the Netherlands
*
* This file is part of MBSE BBS.
*
* This BBS 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, or (at your option) any
* later version.
*
* MB BBS 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 MB BBS; see the file COPYING. If not, write to the Free
* Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*****************************************************************************/
#include <stdio.h>
#include <ctype.h>
#include "endian.h"
int main(void)
{
/*
* First test BYTE_ORDER
*/
#ifdef BYTE_ORDER
if (BYTE_ORDER == 1234) {
printf("le");
} else if (BYTE_ORDER == 4321) {
printf("be");
} else {
/*
* If it failed do a simple CPU test
*/
#endif
#ifdef __i386__
printf("le");
#else
printf("be");
#endif
#ifdef BYTE_ORDER
}
#endif
return 0;
}

View File

@ -1,4 +0,0 @@
/* $Id$ */
int main(void);

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -501,7 +501,7 @@ void name_mangle(char *); /* Mangle name or make uppercase */
* sectest.c * sectest.c
*/ */
int Access(securityrec, securityrec); /* Check security access */ int Access(securityrec, securityrec); /* Check security access */
int Le_Access(securityrec, securityrec); /* Endian independant */
#endif #endif

View File

@ -4,7 +4,7 @@
* Purpose ...............: Security flags access test * Purpose ...............: Security flags access test
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2002 * Copyright (C) 1997-2003
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -55,3 +55,27 @@ int Access(securityrec us, securityrec ref)
return TRUE; return TRUE;
} }
/*
* The same test, for menus which are written in machine endian independant way.
* The second parameter MUST be the menu parameter.
*/
int Le_Access(securityrec us, securityrec ref)
{
Syslog('B', "User %5d %08lx %08lx", us.level, us.flags, ~us.flags);
Syslog('B', "Ref. %5d %08lx %08lx", le_int(ref.level), ref.flags, ref.notflags);
if (us.level < le_int(ref.level))
return FALSE;
if ((ref.notflags & ~us.flags) != ref.notflags)
return FALSE;
if ((ref.flags & us.flags) != ref.flags)
return FALSE;
return TRUE;
}

View File

@ -4,7 +4,7 @@
* Purpose ...............: MBSE BBS Global structure * Purpose ...............: MBSE BBS Global structure
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2002 * Copyright (C) 1997-2003
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -839,16 +839,16 @@ struct menufile {
char Display[81]; /* Menu display line */ char Display[81]; /* Menu display line */
securityrec MenuSecurity; /* Menu Security Level */ securityrec MenuSecurity; /* Menu Security Level */
int Age; /* Minimum Age to use menu */ int Age; /* Minimum Age to use menu */
unsigned int MaxSecurity; /* Maximum security level */ unsigned int xMaxSecurity;
char Password[15]; /* Menu Password */ char Password[15]; /* Menu Password */
char TypeDesc[30]; /* Menu Type Description */ char TypeDesc[30]; /* Menu Type Description */
unsigned AutoExec : 1; /* Auto Exec Menu Type */ unsigned AutoExec : 1; /* Auto Exec Menu Type */
unsigned NoDoorsys : 1; /* Suppress door.sys */ unsigned NoDoorsys : 1; /* Suppress door.sys */
unsigned Y2Kdoorsys : 1; /* Write Y2K style door.sys */ unsigned Y2Kdoorsys : 1; /* Write Y2K style door.sys */
unsigned Comport : 1; /* Vmodem compart mode */ unsigned Comport : 1; /* Vmodem comport mode */
unsigned NoSuid : 1; /* Execute door nosuid */ unsigned NoSuid : 1; /* Execute door nosuid */
unsigned NoPrompt : 1; /* No prompt after door */ unsigned NoPrompt : 1; /* No prompt after door */
long Credit; /* Credit needed */ long xCredit;
int HiForeGnd; /* High ForeGround color */ int HiForeGnd; /* High ForeGround color */
int HiBackGnd; /* High ForeGround color */ int HiBackGnd; /* High ForeGround color */
int ForeGnd; /* Normal ForeGround color */ int ForeGnd; /* Normal ForeGround color */

View File

@ -147,8 +147,8 @@ void menu()
*/ */
IsANSI = FALSE; IsANSI = FALSE;
while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) { while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) {
if ( Access(exitinfo.Security, menus.MenuSecurity) && (UserAge >= menus.Age)){ if ( Le_Access(exitinfo.Security, menus.MenuSecurity) && (UserAge >= le_int(menus.Age))){
if ((menus.MenuType == 5) || (menus.MenuType == 19) || (menus.MenuType == 20)) if ((le_int(menus.MenuType) == 5) || (le_int(menus.MenuType) == 19) || (le_int(menus.MenuType) == 20))
IsANSI = TRUE; IsANSI = TRUE;
} }
} }
@ -157,9 +157,9 @@ void menu()
clear(); clear();
while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) { while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) {
if ( Access(exitinfo.Security, menus.MenuSecurity) && (UserAge >= menus.Age)){ if ( Le_Access(exitinfo.Security, menus.MenuSecurity) && (UserAge >= le_int(menus.Age))){
if ( menus.AutoExec ) { if ( menus.AutoExec ) {
DoMenu( menus.MenuType ); DoMenu( le_int(menus.MenuType) );
} }
DisplayMenu( ); DisplayMenu( );
} }
@ -224,10 +224,10 @@ void menu()
while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) { while (fread(&menus, sizeof(menus), 1, pMenuFile) == 1) {
if ((strcmp(tu(Input), menus.MenuKey)) == 0) { if ((strcmp(tu(Input), menus.MenuKey)) == 0) {
if ((Access(exitinfo.Security, menus.MenuSecurity)) && (UserAge >= menus.Age)) { if ((Le_Access(exitinfo.Security, menus.MenuSecurity)) && (UserAge >= le_int(menus.Age))) {
Syslog('b', "Menu[%d] %d=(%s), Opt: '%s'", MenuLevel, menus.MenuType, Syslog('b', "Menu[%d] %d=(%s), Opt: '%s'", MenuLevel, le_int(menus.MenuType),
menus.TypeDesc, menus.OptionalData); menus.TypeDesc, menus.OptionalData);
if (menus.MenuType == 13) { if (le_int(menus.MenuType) == 13) {
/* /*
* Terminate call, cleanup here * Terminate call, cleanup here
*/ */
@ -235,7 +235,7 @@ void menu()
free(sMenuPathFileName); free(sMenuPathFileName);
fclose(pMenuFile); fclose(pMenuFile);
} }
DoMenu(menus.MenuType); DoMenu(le_int(menus.MenuType));
iFoundKey = TRUE; iFoundKey = TRUE;
break; break;
} }
@ -321,8 +321,8 @@ void DoMenu(int Type)
strcat(sPrompt, temp); strcat(sPrompt, temp);
} }
} }
if (menus.ForeGnd || menus.BackGnd) if (le_int(menus.ForeGnd) || le_int(menus.BackGnd))
pout(menus.ForeGnd, menus.BackGnd, sPrompt); pout(le_int(menus.ForeGnd), le_int(menus.BackGnd), sPrompt);
else else
pout(WHITE, BLACK, sPrompt); pout(WHITE, BLACK, sPrompt);
break; break;
@ -372,7 +372,7 @@ void DoMenu(int Type)
case 15: case 15:
/* print text to screen */ /* print text to screen */
if (exitinfo.Security.level >= menus.MenuSecurity.level) { if (exitinfo.Security.level >= le_int(menus.MenuSecurity.level)) {
for (i = 0; i < strlen(menus.OptionalData); i++) for (i = 0; i < strlen(menus.OptionalData); i++)
if (*(menus.OptionalData + i) == '@') if (*(menus.OptionalData + i) == '@')
*(menus.OptionalData + i) = '\n'; *(menus.OptionalData + i) = '\n';
@ -713,7 +713,7 @@ void DisplayMenu(void)
int maxdpos, dpos, escaped, skipCRLF, highlight; int maxdpos, dpos, escaped, skipCRLF, highlight;
/* Anything to process, if not; save CPU time, return */ /* Anything to process, if not; save CPU time, return */
if (( strlen( menus.Display ) == 0 ) && (menus.MenuType != 21)) { if (( strlen( menus.Display ) == 0 ) && (le_int(menus.MenuType) != 21)) {
return; return;
} }
@ -724,7 +724,7 @@ void DisplayMenu(void)
skipCRLF = 0; skipCRLF = 0;
highlight = 0; highlight = 0;
colour( menus.ForeGnd, menus.BackGnd ); colour( le_int(menus.ForeGnd), le_int(menus.BackGnd) );
for ( dpos = 0; dpos < maxdpos ; dpos++ ){ for ( dpos = 0; dpos < maxdpos ; dpos++ ){
switch ( menus.Display[ dpos ] ) { switch ( menus.Display[ dpos ] ) {
@ -749,10 +749,10 @@ void DisplayMenu(void)
if ( !escaped ) { if ( !escaped ) {
if ( highlight == 0 ) { if ( highlight == 0 ) {
highlight = 1; highlight = 1;
colour( menus.HiForeGnd, menus.HiBackGnd); colour( le_int(menus.HiForeGnd), le_int(menus.HiBackGnd));
} else { } else {
highlight = 0 ; highlight = 0 ;
colour( menus.ForeGnd, menus.BackGnd ); colour( le_int(menus.ForeGnd), le_int(menus.BackGnd) );
} }
} else { } else {
escaped=0; escaped=0;