Moved default language paths into ~/share/int and bumped to version 0.91.4

This commit is contained in:
Michiel Broek 2007-02-17 12:14:16 +00:00
parent b3fbe17070
commit 3701ac8eef
37 changed files with 386 additions and 308 deletions

View File

@ -1,6 +1,27 @@
$Id$ $Id$
v0.91.3 11-Feb-2007 v0.91.4 17-Feb-2007
upgrade:
Start mbsetup, enter global setup, save and exit mbsetup.
mbselib:
Moved default language paths into ~/share/int
mbsebbs:
Moved default language paths into ~/share/int
mbsetup:
Moved default language paths into ~/share/int
mbtask:
Moved default language paths into ~/share/int
lang:
Renamed language files and changed installation paths.
v0.91.3 11-Feb-2007 - 17-Feb-2007
mbselib: mbselib:
Added coding and decoding to strings that are processed by the Added coding and decoding to strings that are processed by the

View File

@ -56,46 +56,14 @@ install:
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/log @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/log
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/tmp @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/tmp
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/home @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/home
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/chinese
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/chinese/txtfiles
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/chinese/menus
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/chinese/macro
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/dutch
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/dutch/txtfiles
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/dutch/menus
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/dutch/macro
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/english
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/english/txtfiles
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/english/menus
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/english/macro
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc/html @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc/html
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc/tags @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0755 ${PREFIX}/share/doc/tags
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/de @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/menus
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/en @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/macro
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/es @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/txtfiles
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/fr
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/gl
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/it
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/share/int/nl
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/spanish
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/spanish/txtfiles
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/spanish/menus
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/spanish/macro
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/galego
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/galego/txtfiles
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/galego/menus
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/galego/macro
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/german
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/german/txtfiles
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/german/menus
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/german/macro
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/french
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0770 ${PREFIX}/french/txtfiles
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/french/menus
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0750 ${PREFIX}/french/macro
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp/pub @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp/pub
@${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp/pub/local @${INSTALL} -d -o ${OWNER} -g ${GROUP} -m 0775 ${PREFIX}/ftp/pub/local
@ -146,6 +114,12 @@ install:
echo; echo "If there is nothing important in ${PREFIX}/doc" ; \ echo; echo "If there is nothing important in ${PREFIX}/doc" ; \
echo "you may remove that obsolete directory." ; \ echo "you may remove that obsolete directory." ; \
fi fi
@for d in de en es fr gl it nl; do \
if [ -d ${PREFIX}/share/int/$$d ] ; then \
rmdir ${PREFIX}/share/int/$$d ; \
echo "Removed directory ${PREFIX}/share/int/$$d" ; \
fi ; \
done
@rm -rf ${PREFIX}/sema @rm -rf ${PREFIX}/sema
@rm -rf ${PREFIX}/tmp/arc @rm -rf ${PREFIX}/tmp/arc

View File

@ -14,6 +14,7 @@ BINDIR = @prefix@/bin
ETCDIR = @prefix@/etc ETCDIR = @prefix@/etc
DOCDIR = @prefix@/doc DOCDIR = @prefix@/doc
VARDIR = @prefix@/var VARDIR = @prefix@/var
INTDIR = @prefix@/share/int
OWNER = @OWNER@ OWNER = @OWNER@
GROUP = @GROUP@ GROUP = @GROUP@
ROWNER = @ROWNER@ ROWNER = @ROWNER@

2
TODO
View File

@ -1,6 +1,6 @@
$Id$ $Id$
MBSE BBS V0.91.3 TODO list. MBSE BBS V0.91.4 TODO list.
--------------------------- ---------------------------
These are a list of things that must be implemented one way or These are a list of things that must be implemented one way or

2
configure vendored
View File

@ -1718,7 +1718,7 @@ SUBDIRS="lib mbcico mbfido mbmon mbsebbs mbutils mbnntp mbtask mbsetup unix lang
PACKAGE="mbsebbs" PACKAGE="mbsebbs"
MAJOR="0" MAJOR="0"
MINOR="91" MINOR="91"
REVISION="3" REVISION="4"
VERSION="$MAJOR.$MINOR.$REVISION" VERSION="$MAJOR.$MINOR.$REVISION"
COPYRIGHT="Copyright (C) 1997-2007 Michiel Broek, All Rights Reserved" COPYRIGHT="Copyright (C) 1997-2007 Michiel Broek, All Rights Reserved"
SHORTRIGHT="Copyright (C) 1997-2007 M. Broek" SHORTRIGHT="Copyright (C) 1997-2007 M. Broek"

View File

@ -13,7 +13,7 @@ dnl
PACKAGE="mbsebbs" PACKAGE="mbsebbs"
MAJOR="0" MAJOR="0"
MINOR="91" MINOR="91"
REVISION="3" REVISION="4"
VERSION="$MAJOR.$MINOR.$REVISION" VERSION="$MAJOR.$MINOR.$REVISION"
COPYRIGHT="Copyright (C) 1997-2007 Michiel Broek, All Rights Reserved" COPYRIGHT="Copyright (C) 1997-2007 Michiel Broek, All Rights Reserved"
SHORTRIGHT="Copyright (C) 1997-2007 M. Broek" SHORTRIGHT="Copyright (C) 1997-2007 M. Broek"

View File

@ -32,44 +32,44 @@ help:
@echo "You may replace the word english above with spanish galego german dutch" @echo "You may replace the word english above with spanish galego german dutch"
english-menus: english-menus:
@tar xfC menus-en.tar ${PREFIX}/english/menus @tar xfC menus-en.tar ${PREFIX}/share/int/menus/en
@echo "Installed default English menus" @echo "Installed default English menus"
english-txtfiles: english-txtfiles:
@tar xfC txtfiles-en.tar ${PREFIX}/english/txtfiles @tar xfC txtfiles-en.tar ${PREFIX}/share/int/txtfiles/en
@echo "Installed default English txtfiles" @echo "Installed default English txtfiles"
english-macros: english-macros:
@tar xfC templates-en.tar ${PREFIX}/english/macro @tar xfC templates-en.tar ${PREFIX}/share/int/macro/en
@echo "Installed default English macro files" @echo "Installed default English macro files"
english: english-menus english-macros english-txtfiles english: english-menus english-macros english-txtfiles
spanish-menus: spanish-menus:
@tar xfC menus-es.tar ${PREFIX}/spanish/menus @tar xfC menus-es.tar ${PREFIX}/share/int/menus/es
@echo "Installed default Spanish menus" @echo "Installed default Spanish menus"
spanish-txtfiles: spanish-txtfiles:
@tar xfC txtfiles-es.tar ${PREFIX}/spanish/txtfiles @tar xfC txtfiles-es.tar ${PREFIX}/share/int/txtfiles/es
@echo "Installed default Spanish txtfiles" @echo "Installed default Spanish txtfiles"
spanish-macros: spanish-macros:
@tar xfC templates-es.tar ${PREFIX}/spanish/macro @tar xfC templates-es.tar ${PREFIX}/share/int/macro/es
@echo "Installed default Spanish macro files" @echo "Installed default Spanish macro files"
spanish: spanish-menus spanish-txtfiles spanish-macros spanish: spanish-menus spanish-txtfiles spanish-macros
german-macros: german-macros:
@tar xfC templates-de.tar ${PREFIX}/german/macro @tar xfC templates-de.tar ${PREFIX}/share/int/macro/de
@echo "Installed default German macro files" @echo "Installed default German macro files"
german: german-macros german: german-macros
dutch-macros: dutch-macros:
@tar xfC templates-nl.tar ${PREFIX}/dutch/macro @tar xfC templates-nl.tar ${PREFIX}/share/int/macro/nl
@echo "Installed default Dutch macro files" @echo "Installed default Dutch macro files"
dutch: dutch-macros dutch: dutch-macros
@ -91,14 +91,14 @@ install:
${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0644 footer.txt ${ETCDIR} ; \ ${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0644 footer.txt ${ETCDIR} ; \
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 ${MAKE} -s english-menus ; fi @if [ ! -f ${PREFIX}/share/int/menus/en/main.mnu ]; then ${MAKE} -s english-menus ; fi
@if [ ! -f ${PREFIX}/english/txtfiles/main.ans ]; then ${MAKE} -s english-txtfiles ; fi @if [ ! -f ${PREFIX}/share/int/txtfiles/en/main.ans ]; then ${MAKE} -s english-txtfiles ; fi
@if [ ! -f ${PREFIX}/english/macro/html.tic ]; then ${MAKE} -s english-macros ; fi @if [ ! -f ${PREFIX}/share/int/macro/en/html.tic ]; then ${MAKE} -s english-macros ; fi
@if [ ! -f ${PREFIX}/spanish/menus/main.mnu ]; then ${MAKE} -s spanish-menus ; fi @if [ ! -f ${PREFIX}/share/int/menus/es/main.mnu ]; then ${MAKE} -s spanish-menus ; fi
@if [ ! -f ${PREFIX}/spanish/txtfiles/main.ans ]; then ${MAKE} -s spanish-txtfiles ; fi @if [ ! -f ${PREFIX}/share/int/txtfiles/es/main.ans ]; then ${MAKE} -s spanish-txtfiles ; fi
@if [ ! -f ${PREFIX}/spanish/macro/html.tic ]; then ${MAKE} -s spanish-macros ; fi @if [ ! -f ${PREFIX}/share/int/macro/es/html.tic ]; then ${MAKE} -s spanish-macros ; fi
@if [ ! -f ${PREFIX}/german/macro/html.tic ]; then ${MAKE} -s german-macros ; fi @if [ ! -f ${PREFIX}/share/int/macro/es/html.tic ]; then ${MAKE} -s german-macros ; fi
@if [ ! -f ${PREFIX}/dutch/macro/html.tic ]; then ${MAKE} -s dutch-macros ; fi @if [ ! -f ${PREFIX}/share/int/macro/es/html.tic ]; then ${MAKE} -s dutch-macros ; fi
clean: clean:
rm -f *.h~ *.c~ core filelist Makefile.bak rm -f *.h~ *.c~ core filelist Makefile.bak

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

View File

@ -14,7 +14,7 @@
</HEAD> </HEAD>
<BODY> <BODY>
<BLOCKQUOTE> <BLOCKQUOTE>
<div align="right"><h5>Last update 16-Nov-2005</h5></div> <div align="right"><h5>Last update 17-Feb-2007</h5></div>
<div align="center"><H1>MBSE BBS Setup - Global Setup</H1></div> <div align="center"><H1>MBSE BBS Setup - Global Setup</H1></div>
In this setup you can edit all global settings for MBSE BBS. All sections will In this setup you can edit all global settings for MBSE BBS. All sections will
@ -62,7 +62,6 @@ a chat network.
<strong>Debug logfile </strong>The name of the debug logfile <strong>Debug logfile </strong>The name of the debug logfile
<strong>Mgr logfile </strong>The name of the area-/filemgr logfile <strong>Mgr logfile </strong>The name of the area-/filemgr logfile
<strong>Default menu </strong>The name of the default main menu <strong>Default menu </strong>The name of the default main menu
<strong>Default language </strong>The name of the default language
<strong>Chat logfile </strong>The name of the logfile for chatting <strong>Chat logfile </strong>The name of the logfile for chatting
<strong>Welcome logo </strong>The name of the BBS logo ANSI file <strong>Welcome logo </strong>The name of the BBS logo ANSI file
</pre> </pre>
@ -71,19 +70,16 @@ a chat network.
<h3>1.4. Edit Global Paths</H3> <h3>1.4. Edit Global Paths</H3>
<P> <P>
<pre> <pre>
<strong>BBS Menus </strong>The path to the default menus
<strong>Txtfiles </strong>The path to the default ANSI and ASCII textfiles
<strong>Macro's </strong>The path to the default macro templates
<strong>Home dirs </strong>The path to the users home directories <strong>Home dirs </strong>The path to the users home directories
<strong>FTP base </strong>The FTP base path, ie. /opt/mbse/ftp/pub <strong>FTP base </strong>The FTP base path, ie. /opt/mbse/ftp/pub
<strong>Arealists </strong>The path where area lists and filebone lists are stored <strong>Arealists </strong>The path where area lists and filebone lists are stored
<strong>Ext. edit </strong>The full path and filename to the external editor <strong>Ext. edit </strong>The full path and filename to the external editor
<strong>Rules dir </strong>The path to the directory to store area rules <strong>Rules dir </strong>The path to the directory to store area rules
<strong>Magic's </strong>Where the magic filerequests are kept <strong>Magic's </strong>Where the magic filerequests are kept
<strong>DOS path </strong>The DOS drive and path <strong>DOS path </strong>The DOS drive and path
<strong>Unix path </strong>The Translated DOS path in real <strong>Unix path </strong>The Translated DOS path in real
<strong>LeaveCase </strong>Leave outbound .flo filenames as is, No forces to uppercase <strong>LeaveCase </strong>Leave outbound .flo filenames as is, No forces to uppercase
<strong>Nodelists </strong>The path to the nodelist directory <strong>Nodelists </strong>The path to the nodelist directory
<strong>Inbound </strong>The unprotected fidonet inbound <strong>Inbound </strong>The unprotected fidonet inbound
<strong>Prot inb. </strong>The (password) protected fidonet inbound <strong>Prot inb. </strong>The (password) protected fidonet inbound
@ -136,6 +132,7 @@ files.
<strong>Simult. logins </strong>Maximum simultaneous logins allowed, 0 is unlimited, 1 is adviced. <strong>Simult. logins </strong>Maximum simultaneous logins allowed, 0 is unlimited, 1 is adviced.
<strong>Child priority </strong>Subproces nice priority, 0=high, 15=low CPU load. <strong>Child priority </strong>Subproces nice priority, 0=high, 15=low CPU load.
<strong>Filesystem sync </strong>Call sync before and after execute. <strong>Filesystem sync </strong>Call sync before and after execute.
<strong>Default language </strong>Default language (English).
</pre> </pre>
The minimum diskspace setting is to prevent that files get corrupted if your filesystem The minimum diskspace setting is to prevent that files get corrupted if your filesystem
is full. All drives are checked except CD-roms and floppies and the /boot directory if that is full. All drives are checked except CD-roms and floppies and the /boot directory if that
@ -154,6 +151,10 @@ mail and files can get corrupted. XxxxBSD systems use synchronous directory
updates and don't need this switch. If you don't know what all this is about, updates and don't need this switch. If you don't know what all this is about,
leave this to the default setting. leave this to the default setting.
<p> <p>
Choice of default language. English is the best choice because that is the only
language that is complete in the default installation. In the user setup another
language may be used, the language set here is then used as a backup.
<p>
<h3>1.6. User flag Descriptions.</h3> <h3>1.6. User flag Descriptions.</h3>
<p> <p>

View File

@ -14,14 +14,14 @@
</HEAD> </HEAD>
<BODY> <BODY>
<BLOCKQUOTE> <BLOCKQUOTE>
<div align='right'><h5>Last update 09-Sep-2005</h5></div> <div align='right'><h5>Last update 17-Feb-2007</h5></div>
<div align='center'><H1>MBSE BBS Setup - BBS Setup - Language Setup.</H1></div> <div align='center'><H1>MBSE BBS Setup - BBS Setup - Language Setup.</H1></div>
<H3>Language introduction.</H3> <H3>Language introduction.</H3>
<P> <P>
You need to define at least one language, this is the default language. You need to define at least one language, this is the default language.
The paths to the BBS menus and Txtfiles for the default language The ISO language code of the dfeault language needs to be the same as in the
must be exactly the same as defined in the global setup, menus 1.3.1 and 1.3.2<br> global setup 1.5.24 and should be set to <b>en</b>.
I did this so you can make your I did this so you can make your
own local languages next to the default languages. If something is not own local languages next to the default languages. If something is not
present in your local language, the BBS will fall back to the default present in your local language, the BBS will fall back to the default
@ -29,6 +29,19 @@ language. It is therefore wise to name all menus, macro templates and
textfiles the same for all languages used. textfiles the same for all languages used.
When you setup the languages for the first time, entries for English, Dutch, When you setup the languages for the first time, entries for English, Dutch,
Spanish, Galego, German, French and Chinese languages are created. Spanish, Galego, German, French and Chinese languages are created.
<p>
And important note about the ISO code, don't change this. And if you do,
then you <em>must</em> change the directory name under <code>/opt/mbse/share/int</code>
to the same name as the code here. For example for the <b>en</b> code the system
expects the following paths and files:
<p>
<pre>
/opt/mbse/share/int/language.en
/opt/mbse/share/int/menus/en/*.mnu
/opt/mbse/share/int/txtfiles/en/*.ans
/opt/mbse/share/int/txtfiles/en/*.asc
/opt/mbse/share/int/macro/en/*
</pre>
<P>&nbsp;<p> <P>&nbsp;<p>
<H3>Language setup.</H3> <H3>Language setup.</H3>
@ -36,11 +49,8 @@ Spanish, Galego, German, French and Chinese languages are created.
<pre> <pre>
<strong>Select </strong>The letter to select this language. <strong>Select </strong>The letter to select this language.
<strong>Name </strong>The name of this language. <strong>Name </strong>The name of this language.
<strong>Menupath </strong>The path to the menu files. <strong>ISO code </strong>The 2 letter ISO code of the language.
<strong>Textpath </strong>The path to the ANSI and ASCII textfiles.
<strong>Macropath </strong>The path to the macro templates.
<strong>Available </strong>If this language is available. <strong>Available </strong>If this language is available.
<strong>Datafile </strong>The name of the language datafile in ~/etc
<strong>Security </strong>The minimum security level to select this language. <strong>Security </strong>The minimum security level to select this language.
<strong>Deleted </strong>If this language must be deleted. <strong>Deleted </strong>If this language must be deleted.
</pre> </pre>

View File

@ -1 +1 @@
dutch.lang english.lang filelist galego.lang german.lang germandu.lang spanish.lang french.lang chinese.lang language.nl language.en filelist language.gl language.de language.es language.fr language.zh

View File

@ -4,41 +4,40 @@
include ../Makefile.global include ../Makefile.global
OTHER = Makefile README Language.xref OTHER = Makefile README Language.xref germandu.txt
SDAT = english.txt dutch.txt spanish.txt galego.txt german.txt germandu.txt french.txt chinese.txt SDAT = source.en source.nl source.es source.gl source.de source.fr source.zh
LDAT = english.lang dutch.lang spanish.lang galego.lang german.lang germandu.lang french.lang chinese.lang LDAT = language.en language.nl language.es language.gl language.de language.fr language.zh
all: ${LDAT} all: ${LDAT}
clean: clean:
rm -f core filelist Makefile.bak *.lang rm -f core filelist Makefile.bak language.*
install: ${LDAT} install: ${LDAT}
${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0444 ${LDAT} ${ETCDIR} ${INSTALL} -c -o ${OWNER} -g ${GROUP} -m 0444 ${LDAT} ${INTDIR}
english.lang: english.txt language.en: source.en
../mbutils/mblang english.lang english.txt ../mbutils/mblang language.en source.en
dutch.lang: dutch.txt language.nl: source.nl
../mbutils/mblang dutch.lang dutch.txt ../mbutils/mblang language.nl source.nl
spanish.lang: spanish.txt language.es: source.es
../mbutils/mblang spanish.lang spanish.txt ../mbutils/mblang language.es source.es
galego.lang: galego.txt language.gl: source.gl
../mbutils/mblang galego.lang galego.txt ../mbutils/mblang language.gl source.gl
german.lang: german.txt language.de: source.de
../mbutils/mblang german.lang german.txt ../mbutils/mblang language.de source.de
germandu.lang: germandu.txt language.fr: source.fr
../mbutils/mblang germandu.lang germandu.txt ../mbutils/mblang language.fr source.fr
french.lang: french.txt language.zh: source.zh
../mbutils/mblang french.lang french.txt ../mbutils/mblang language.zh source.zh
chinese.lang: chinese.txt
../mbutils/mblang chinese.lang chinese.txt
filelist: Makefile filelist: Makefile
BASE=`pwd`; \ BASE=`pwd`; \

View File

@ -6,9 +6,9 @@ $Id$
This directory contains the language sources for MBSE BBS. The file This directory contains the language sources for MBSE BBS. The file
Language.xref is only a reference file with linenumbers and source Language.xref is only a reference file with linenumbers and source
references. The files english.txt, dutch.txt and italian.txt are the references. The files source.en, source.nl and source.de are the
real language sources. The resulting files dutch.lang, english.lang real language sources. The resulting files language.nl, language.en
and italian.lang are placed in the ~/etc directory where the bbs and language.de are placed in the ~/share/int directory where the bbs
will expect them to be. will expect them to be.
If you make your own language files, use Language.xref as a guide. If you make your own language files, use Language.xref as a guide.
@ -29,12 +29,15 @@ Michiel.
Current language maintainters: Current language maintainters:
english Michiel Broek <mbroek@users.sourceforge.net> en Michiel Broek <mbroek@users.sourceforge.net>
dutch Michiel Broek <mbroek@users.sourceforge.net> nl Michiel Broek <mbroek@users.sourceforge.net>
italian Vacant es Redy Rodriguez <redy@users.sourceforge.net>
spanisch Redy Rodriguez <redy@users.sourceforge.net> gl Redy Rodriguez <redy@users.sourceforge.net>
galego Redy Rodriguez <redy@users.sourceforge.net> de Harald Wuensch <Harald.Wuensch@gecits-eu.com>
german Harald Wuensch <Harald.Wuensch@gecits-eu.com> germandu Malte Tychsen <2:240/9350@fidonet> (alternative german).
germandu Malte Tychsen <2:240/9350@fidonet> fr Francois Thunus <2:270/24@fidonet>
french Francois Thunus <2:270/24@fidonet>
If you want to use the germandu language instead of the default german
language then run "mblang germandu.txt language.de" and install the
file laguage.de in /opt/mbse/share/int.

View File

@ -384,7 +384,7 @@ FILE *OpenMacro(const char *filename, int Language, int htmlmode)
while (fread(&lang, langhdr.recsize, 1, pLang) == 1) { while (fread(&lang, langhdr.recsize, 1, pLang) == 1) {
if ((lang.LangKey[0] == Language) && (lang.Available)) { if ((lang.LangKey[0] == Language) && (lang.Available)) {
snprintf(temp, PATH_MAX -1, "%s/%s", lang.MacroPath, filename); snprintf(temp, PATH_MAX -1, "%s/share/int/macro/%s/%s", getenv("MBSE_ROOT"), lang.lc, filename);
break; break;
} }
} }
@ -403,7 +403,7 @@ FILE *OpenMacro(const char *filename, int Language, int htmlmode)
*/ */
if (fi == NULL) { if (fi == NULL) {
Syslog('-', "Macro file \"%s\" for language %c not found, trying default", filename, Language); Syslog('-', "Macro file \"%s\" for language %c not found, trying default", filename, Language);
snprintf(temp, PATH_MAX -1, "%s/%s", CFG.bbs_macros, filename); snprintf(temp, PATH_MAX -1, "%s/share/int/macro/%s/%s", getenv("MBSE_ROOT"), CFG.deflang, filename);
fi = fopen(temp,"r"); fi = fopen(temp,"r");
} }

View File

@ -4,7 +4,7 @@
* Purpose ...............: Global variables for MBSE BBS * Purpose ...............: Global variables for MBSE BBS
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2006 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -108,6 +108,6 @@ struct tm *l_date; /* Structure for Date */
time_t ltime; time_t ltime;
time_t Time_Now; time_t Time_Now;
char current_language[10]; /* Current language of the user */
#endif #endif

View File

@ -4,7 +4,7 @@
* Purpose ...............: MBSE BBS main library header * Purpose ...............: MBSE BBS main library header
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2006 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -963,14 +963,14 @@ struct sysconfig {
/* FileNames */ /* FileNames */
char error_log[15]; /* Name of Error Log */ char error_log[15]; /* Name of Error Log */
char default_menu[15]; /* Default Menu */ char default_menu[15]; /* Default Menu */
char current_language[15]; /* Default Language */ char xcurrent_language[15]; /* Default Language */
char chat_log[15]; /* Chat Logfile */ char chat_log[15]; /* Chat Logfile */
char welcome_logo[15]; /* Welcome Logofile */ char welcome_logo[15]; /* Welcome Logofile */
/* Paths */ /* Paths */
char rnewspath[65]; /* Path to rnews */ char rnewspath[65]; /* Path to rnews */
char bbs_menus[65]; /* Default Menus */ char xbbs_menus[65];
char bbs_txtfiles[65]; /* Default Textfiles */ char xbbs_txtfiles[65];
char nntpnode[65]; /* NNTP server */ char nntpnode[65]; /* NNTP server */
char msgs_path[65]; /* Path to *.msg area */ char msgs_path[65]; /* Path to *.msg area */
char alists_path[65]; /* Area lists storage */ char alists_path[65]; /* Area lists storage */
@ -1088,7 +1088,7 @@ struct sysconfig {
char xCallScript[51]; char xCallScript[51];
/* Mail Options */ /* Mail Options */
char xquotestr[11]; /* Quote String */ char deflang[11]; /* Default language */
int xMaxTimeBalance; /* Obsolete Time Bank Door */ int xMaxTimeBalance; /* Obsolete Time Bank Door */
int xMaxTimeWithdraw; int xMaxTimeWithdraw;
@ -1238,7 +1238,7 @@ struct sysconfig {
int nntpdupes; /* NNTP dupes database size */ int nntpdupes; /* NNTP dupes database size */
int newsfeed; /* Newsfeed mode */ int newsfeed; /* Newsfeed mode */
int maxarticles; /* Default max articles */ int maxarticles; /* Default max articles */
char bbs_macros[65]; /* Default macros path */ char xbbs_macros[65];
char out_queue[65]; /* Outbound queue path */ char out_queue[65]; /* Outbound queue path */
char mgrlog[15]; /* Area/File-mgr logfile */ char mgrlog[15]; /* Area/File-mgr logfile */
@ -1412,13 +1412,14 @@ struct languagehdr {
struct language { struct language {
char Name[30]; /* Name of Language */ char Name[30]; /* Name of Language */
char LangKey[2]; /* Language Key */ char LangKey[2]; /* Language Key */
char MenuPath[81]; /* Path of menu directory */ char xMenuPath[81]; /* Path of menu directory */
char TextPath[81]; /* Path of text files */ char xTextPath[81]; /* Path of text files */
unsigned Available : 1; /* Availability of Language*/ unsigned Available : 1; /* Availability of Language*/
unsigned Deleted : 1; /* Language is deleted */ unsigned Deleted : 1; /* Language is deleted */
char Filename[81]; /* Path of language file */ char xFilename[81]; /* Path of language file */
securityrec Security; /* Security level */ securityrec Security; /* Security level */
char MacroPath[81]; /* Path to the macro files */ char xMacroPath[81]; /* Path to the macro files */
char lc[10]; /* ISO language code */
}; };

View File

@ -4,7 +4,7 @@
* Purpose ...............: Change user settings * Purpose ...............: Change user settings
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2006 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -111,7 +111,7 @@ int Chg_Language(int NewMode)
while (fread(&lang, langhdr.recsize, 1, pLang) == 1) { while (fread(&lang, langhdr.recsize, 1, pLang) == 1) {
strcpy(lang.LangKey,tu(lang.LangKey)); strcpy(lang.LangKey,tu(lang.LangKey));
if ((lang.LangKey[0] == iLang) && (lang.Available)) { if ((lang.LangKey[0] == iLang) && (lang.Available)) {
strcpy(CFG.current_language, lang.Filename); strcpy(current_language, lang.lc);
iFoundLang = TRUE; iFoundLang = TRUE;
break; break;
} }
@ -126,7 +126,7 @@ int Chg_Language(int NewMode)
Enter(2); Enter(2);
} else { } else {
exitinfo.iLanguage = iLang; exitinfo.iLanguage = iLang;
strcpy(CFG.current_language, lang.Filename); strcpy(current_language, lang.lc);
Free_Language(); Free_Language();
InitLanguage(); InitLanguage();

View File

@ -4,7 +4,7 @@
* Purpose ...............: Display ANSI/ASCII textfiles * Purpose ...............: Display ANSI/ASCII textfiles
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2006 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -251,16 +251,16 @@ int DisplayFile(char *filename)
*/ */
pFileName = NULL; pFileName = NULL;
if (exitinfo.GraphMode) { if (exitinfo.GraphMode) {
snprintf(newfile, PATH_MAX, "%s/%s.ans", lang.TextPath, filename); snprintf(newfile, PATH_MAX, "%s/share/int/txtfiles/%s/%s.ans", getenv("MBSE_ROOT"), lang.lc, filename);
if ((pFileName = fopen(newfile, "rb")) == NULL) { if ((pFileName = fopen(newfile, "rb")) == NULL) {
snprintf(newfile, PATH_MAX, "%s/%s.ans", CFG.bbs_txtfiles, filename); snprintf(newfile, PATH_MAX, "%s/share/int/txtfiles/%s/%s.ans", getenv("MBSE_ROOT"), CFG.deflang, filename);
pFileName = fopen(newfile, "rb"); pFileName = fopen(newfile, "rb");
} }
} }
if (pFileName == NULL) { if (pFileName == NULL) {
snprintf(newfile, PATH_MAX, "%s/%s.asc", lang.TextPath, filename); snprintf(newfile, PATH_MAX, "%s/share/int/txtfiles/%s/%s.asc", getenv("MBSE_ROOT"), lang.lc, filename);
if ((pFileName = fopen(newfile, "rb")) == NULL) { if ((pFileName = fopen(newfile, "rb")) == NULL) {
snprintf(newfile, PATH_MAX, "%s/%s.asc", CFG.bbs_txtfiles, filename); snprintf(newfile, PATH_MAX, "%s/share/int/txtfiles/%s/%s.asc", getenv("MBSE_ROOT"), CFG.deflang, filename);
if ((pFileName = fopen(newfile, "rb")) == NULL) { if ((pFileName = fopen(newfile, "rb")) == NULL) {
free(sFileName); free(sFileName);
free(tmp); free(tmp);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Language functions. * Purpose ...............: Language functions.
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2005 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -103,7 +103,7 @@ void Set_Language(int iLanguage)
fread(&langhdr, sizeof(langhdr), 1, pLang); fread(&langhdr, sizeof(langhdr), 1, pLang);
while (fread(&lang, langhdr.recsize, 1, pLang) == 1) { while (fread(&lang, langhdr.recsize, 1, pLang) == 1) {
if ((lang.LangKey[0] == iLanguage) && (lang.Available)) { if ((lang.LangKey[0] == iLanguage) && (lang.Available)) {
strcpy(CFG.current_language, lang.Filename); strcpy(current_language, lang.lc);
break; break;
} }
} }
@ -126,7 +126,7 @@ void InitLanguage()
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
snprintf(temp, PATH_MAX, "%s/etc/%s", getenv("MBSE_ROOT"), CFG.current_language); snprintf(temp, PATH_MAX, "%s/share/int/language.%s", getenv("MBSE_ROOT"), current_language);
if ((pLang = fopen(temp, "rb")) == NULL) { if ((pLang = fopen(temp, "rb")) == NULL) {
WriteError("$FATAL: Can't open %s", temp); WriteError("$FATAL: Can't open %s", temp);
ExitClient(MBERR_INIT_ERROR); ExitClient(MBERR_INIT_ERROR);
@ -148,7 +148,7 @@ void InitLanguage()
} }
fclose(pLang); fclose(pLang);
Syslog('b', "%d language lines read (%s)", iLang, CFG.current_language); Syslog('b', "%d language lines read (%s)", iLang, current_language);
free(temp); free(temp);
} }

View File

@ -181,6 +181,7 @@ int main(int argc, char **argv)
/* /*
* Initialize * Initialize
*/ */
snprintf(current_language, 10, "%s", CFG.deflang);
InitLanguage(); InitLanguage();
InitMenu(); InitMenu();
memset(&MsgBase, 0, sizeof(MsgBase)); memset(&MsgBase, 0, sizeof(MsgBase));

View File

@ -4,7 +4,7 @@
* Purpose ...............: Display and handle the menus. * Purpose ...............: Display and handle the menus.
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2006 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -107,9 +107,9 @@ void menu()
* Open menufile, first users language menu, if it fails * Open menufile, first users language menu, if it fails
* try to open the default menu. * try to open the default menu.
*/ */
snprintf(sMenuPathFileName, PATH_MAX, "%s/%s", lang.MenuPath, Menus[MenuLevel]); snprintf(sMenuPathFileName, PATH_MAX, "%s/share/int/menus/%s/%s", getenv("MBSE_ROOT"), lang.lc, Menus[MenuLevel]);
if ((pMenuFile = fopen(sMenuPathFileName, "r")) == NULL) { if ((pMenuFile = fopen(sMenuPathFileName, "r")) == NULL) {
snprintf(sMenuPathFileName, PATH_MAX, "%s/%s", CFG.bbs_menus, Menus[MenuLevel]); snprintf(sMenuPathFileName, PATH_MAX, "%s/share/int/menus/%s/%s", getenv("MBSE_ROOT"), CFG.deflang, Menus[MenuLevel]);
pMenuFile = fopen(sMenuPathFileName,"r"); pMenuFile = fopen(sMenuPathFileName,"r");
if (pMenuFile != NULL) if (pMenuFile != NULL)
Syslog('b', "Menu %s (Default)", Menus[MenuLevel]); Syslog('b', "Menu %s (Default)", Menus[MenuLevel]);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Misc functions * Purpose ...............: Misc functions
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2005 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -118,7 +118,7 @@ void DisplayLogo()
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
sString = calloc(1024, sizeof(char)); sString = calloc(1024, sizeof(char));
snprintf(temp, PATH_MAX, "%s/%s", CFG.bbs_txtfiles, CFG.welcome_logo); snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s/%s", getenv("MBSE_ROOT"), CFG.deflang, CFG.welcome_logo);
if ((pLogo = fopen(temp,"rb")) == NULL) if ((pLogo = fopen(temp,"rb")) == NULL)
WriteError("$DisplayLogo: Can't open %s", temp); WriteError("$DisplayLogo: Can't open %s", temp);
else { else {

View File

@ -5,7 +5,7 @@
* Todo ..................: Implement new config settings. * Todo ..................: Implement new config settings.
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2005 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -289,7 +289,7 @@ void PageReason()
temp = calloc(PATH_MAX, sizeof(char)); temp = calloc(PATH_MAX, sizeof(char));
String = calloc(81, sizeof(char)); String = calloc(81, sizeof(char));
snprintf(temp, PATH_MAX, "%s/page.asc", CFG.bbs_txtfiles); snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s/page.asc", getenv("MBSE_ROOT"), CFG.deflang);
if ((Page = fopen(temp, "r")) != NULL) { if ((Page = fopen(temp, "r")) != NULL) {
while (( fgets(String, 80 ,Page)) != NULL) while (( fgets(String, 80 ,Page)) != NULL)

View File

@ -6,7 +6,7 @@
* does a lot of checking in general. * does a lot of checking in general.
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2005 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -529,18 +529,18 @@ void user(void)
*/ */
st.st_mtime = 0; st.st_mtime = 0;
if (exitinfo.GraphMode) { if (exitinfo.GraphMode) {
snprintf(temp, PATH_MAX, "%s/onceonly.ans", lang.TextPath); snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s/onceonly.ans", getenv("MBSE_ROOT"), lang.lc);
stat(temp, &st); stat(temp, &st);
if (st.st_mtime == 0) { if (st.st_mtime == 0) {
snprintf(temp, PATH_MAX, "%s/onceonly.ans", CFG.bbs_txtfiles); snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s/onceonly.ans", getenv("MBSE_ROOT"), CFG.deflang);
stat(temp, &st); stat(temp, &st);
} }
} }
if (st.st_mtime == 0) { if (st.st_mtime == 0) {
snprintf(temp, PATH_MAX, "%s/onceonly.asc", lang.TextPath); snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s/onceonly.asc", getenv("MBSE_ROOT"), lang.lc);
stat(temp, &st); stat(temp, &st);
if (st.st_mtime == 0) { if (st.st_mtime == 0) {
snprintf(temp, PATH_MAX, "%s/onceonly.asc", CFG.bbs_txtfiles); snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s/onceonly.asc", getenv("MBSE_ROOT"), CFG.deflang);
stat(temp, &st); stat(temp, &st);
} }
} }

View File

@ -92,7 +92,7 @@ m_tty.o: ../config.h ../lib/mbselib.h screen.h mutil.h ledit.h stlist.h m_modem.
mutil.o: ../config.h ../lib/mbselib.h ../lib/diesel.h screen.h ledit.h mutil.h mutil.o: ../config.h ../lib/mbselib.h ../lib/diesel.h screen.h ledit.h mutil.h
m_archive.o: ../config.h ../lib/mbselib.h ../paths.h screen.h mutil.h ledit.h stlist.h m_global.h m_archive.h m_archive.o: ../config.h ../lib/mbselib.h ../paths.h screen.h mutil.h ledit.h stlist.h m_global.h m_archive.h
m_fdb.o: ../config.h ../lib/mbselib.h ../lib/users.h ../lib/mbsedb.h screen.h mutil.h ledit.h m_global.h m_farea.h m_fdb.h m_fdb.o: ../config.h ../lib/mbselib.h ../lib/users.h ../lib/mbsedb.h screen.h mutil.h ledit.h m_global.h m_farea.h m_fdb.h
m_global.o: ../config.h ../paths.h ../lib/mbselib.h screen.h mutil.h ledit.h m_node.h m_marea.h m_ticarea.h m_new.h m_fgroup.h m_mgroup.h m_limits.h m_global.h m_global.o: ../config.h ../paths.h ../lib/mbselib.h screen.h mutil.h ledit.h m_node.h m_marea.h m_ticarea.h m_new.h m_fgroup.h m_mgroup.h m_limits.h m_global.h m_lang.h
m_magic.o: ../config.h ../lib/mbselib.h screen.h mutil.h ledit.h stlist.h m_ticarea.h m_global.h m_magic.h m_magic.o: ../config.h ../lib/mbselib.h screen.h mutil.h ledit.h stlist.h m_ticarea.h m_global.h m_magic.h
m_mgroup.o: ../config.h ../lib/mbselib.h screen.h mutil.h ledit.h stlist.h m_global.h m_node.h m_marea.h m_mgroup.h m_mgroup.o: ../config.h ../lib/mbselib.h screen.h mutil.h ledit.h stlist.h m_global.h m_node.h m_marea.h m_mgroup.h
m_node.o: ../config.h ../lib/mbselib.h screen.h mutil.h ledit.h grlist.h stlist.h m_global.h m_lang.h m_ticarea.h m_marea.h m_archive.h m_node.h m_node.o: ../config.h ../lib/mbselib.h screen.h mutil.h ledit.h grlist.h stlist.h m_global.h m_lang.h m_ticarea.h m_marea.h m_archive.h m_node.h

View File

@ -4,7 +4,7 @@
* Purpose ...............: Global Setup Program * Purpose ...............: Global Setup Program
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2005 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -42,6 +42,7 @@
#include "m_mgroup.h" #include "m_mgroup.h"
#include "m_limits.h" #include "m_limits.h"
#include "m_global.h" #include "m_global.h"
#include "m_lang.h"
char *some_fn; char *some_fn;
@ -187,9 +188,8 @@ void e_filenames(void)
mbse_mvprintw( 9, 6, "3. Debug logfile"); mbse_mvprintw( 9, 6, "3. Debug logfile");
mbse_mvprintw(10, 6, "4. Mgr logfile"); mbse_mvprintw(10, 6, "4. Mgr logfile");
mbse_mvprintw(11, 6, "5. Default Menu"); mbse_mvprintw(11, 6, "5. Default Menu");
mbse_mvprintw(12, 6, "6. Default Language"); mbse_mvprintw(12, 6, "6. Chat Logfile");
mbse_mvprintw(13, 6, "7. Chat Logfile"); mbse_mvprintw(13, 6, "7. Welcome Logo");
mbse_mvprintw(14, 6, "8. Welcome Logo");
for (;;) { for (;;) {
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
@ -198,20 +198,18 @@ void e_filenames(void)
show_str( 9,28,14, CFG.debuglog); show_str( 9,28,14, CFG.debuglog);
show_str(10,28,14, CFG.mgrlog); show_str(10,28,14, CFG.mgrlog);
show_str(11,28,14, CFG.default_menu); show_str(11,28,14, CFG.default_menu);
show_str(12,28,14, CFG.current_language); show_str(12,28,14, CFG.chat_log);
show_str(13,28,14, CFG.chat_log); show_str(13,28,14, CFG.welcome_logo);
show_str(14,28,14, CFG.welcome_logo);
switch(select_menu(8)) { switch(select_menu(7)) {
case 0: return; case 0: return;
case 1: E_STR( 7,28,14, CFG.logfile, "The name of the ^system^ logfile.") case 1: E_STR( 7,28,14, CFG.logfile, "The name of the ^system^ logfile.")
case 2: E_STR( 8,28,14, CFG.error_log, "The name of the ^errors^ logfile.") case 2: E_STR( 8,28,14, CFG.error_log, "The name of the ^errors^ logfile.")
case 3: E_STR( 9,28,14, CFG.debuglog, "The name of the ^debug^ logfile.") case 3: E_STR( 9,28,14, CFG.debuglog, "The name of the ^debug^ logfile.")
case 4: E_STR(10,28,14, CFG.mgrlog, "The name of the ^area-/filemgr^ logfile.") case 4: E_STR(10,28,14, CFG.mgrlog, "The name of the ^area-/filemgr^ logfile.")
case 5: E_STR(11,28,14, CFG.default_menu, "The name of the ^default^ (top) ^menu^.") case 5: E_STR(11,28,14, CFG.default_menu, "The name of the ^default^ (top) ^menu^.")
case 6: E_STR(12,28,14, CFG.current_language, "The name of the ^default language^.") case 6: E_STR(12,28,14, CFG.chat_log, "The name of the ^chat^ logfile.")
case 7: E_STR(13,28,14, CFG.chat_log, "The name of the ^chat^ logfile.") case 7: E_STR(13,28,14, CFG.welcome_logo, "The name of the ^BBS logo^ file.")
case 8: E_STR(14,28,14, CFG.welcome_logo, "The name of the ^BBS logo^ file.")
} }
} }
} }
@ -224,58 +222,46 @@ void e_global2(void)
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
mbse_mvprintw( 4, 6, "1.4 EDIT GLOBAL PATHS - 2"); mbse_mvprintw( 4, 6, "1.4 EDIT GLOBAL PATHS - 2");
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
mbse_mvprintw( 6, 2, "1. Magic's"); mbse_mvprintw( 6, 2, "1. Nodelists");
mbse_mvprintw( 7, 2, "2. DOS path"); mbse_mvprintw( 7, 2, "2. Inbound");
mbse_mvprintw( 8, 2, "3. Unix path"); mbse_mvprintw( 8, 2, "3. Prot inb.");
mbse_mvprintw( 9, 2, "4. LeaveCase"); mbse_mvprintw( 9, 2, "4. Outbound");
mbse_mvprintw(10, 2, "5. Nodelists"); mbse_mvprintw(10, 2, "5. Out queue");
mbse_mvprintw(11, 2, "6. Inbound"); mbse_mvprintw(11, 2, "6. *.msgs");
mbse_mvprintw(12, 2, "7. Prot inb."); mbse_mvprintw(12, 2, "7. Bad TIC's");
mbse_mvprintw(13, 2, "8. Outbound"); mbse_mvprintw(13, 2, "8. TIC queue");
mbse_mvprintw(14, 2, "9. Out queue"); mbse_mvprintw(14, 2, "9. TMail DOS");
mbse_mvprintw(15, 2, "10. *.msgs"); mbse_mvprintw(15, 2, "10. TMail Win");
mbse_mvprintw(16, 2, "11. Bad TIC's");
mbse_mvprintw(17, 2, "12. TIC queue");
mbse_mvprintw(18, 2, "13. TMail DOS");
mbse_mvprintw(19, 2, "14. TMail Win");
for (;;) { for (;;) {
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
show_str( 6,16,64, CFG.req_magic); show_str( 6,16,64, CFG.nodelists);
show_str( 7,16,64, CFG.dospath); show_str( 7,16,64, CFG.inbound);
show_str( 8,16,64, CFG.uxpath); show_str( 8,16,64, CFG.pinbound);
show_bool(9,16, CFG.leavecase); show_str( 9,16,64, CFG.outbound);
show_str(10,16,64, CFG.nodelists); show_str(10,16,64, CFG.out_queue);
show_str(11,16,64, CFG.inbound); show_str(11,16,64, CFG.msgs_path);
show_str(12,16,64, CFG.pinbound); show_str(12,16,64, CFG.badtic);
show_str(13,16,64, CFG.outbound); show_str(13,16,64, CFG.ticout);
show_str(14,16,64, CFG.out_queue); show_str(14,16,64, CFG.tmailshort);
show_str(15,16,64, CFG.msgs_path); show_str(15,16,64, CFG.tmaillong);
show_str(16,16,64, CFG.badtic);
show_str(17,16,64, CFG.ticout);
show_str(18,16,64, CFG.tmailshort);
show_str(19,16,64, CFG.tmaillong);
switch (select_menu(14)) { switch (select_menu(10)) {
case 0: return; case 0: return;
case 1: E_PTH( 6,16,64, CFG.req_magic, "The path to the ^magic filerequest^ files.", 0750) case 1: E_PTH( 6,16,64, CFG.nodelists, "The path to the ^nodelists^.", 0750)
case 2: E_STR( 7,16,64, CFG.dospath, "The translated ^DOS^ drive and path, empty disables translation") case 2: E_PTH( 7,16,64, CFG.inbound, "The path to the ^inbound^ for unknown systems.", 0750)
case 3: E_PTH( 8,16,64, CFG.uxpath, "The translated ^Unix^ path.", 0750) case 3: E_PTH( 8,16,64, CFG.pinbound, "The path to the ^nodelists^ for protected systems.", 0750)
case 4: E_BOOL(9,16, CFG.leavecase, "^Leave^ outbound flo filenames as is, ^No^ forces uppercase.") case 4: E_PTH( 9,16,64, CFG.outbound, "The path to the base ^outbound^ directory.", 0750)
case 5: E_PTH(10,16,64, CFG.nodelists, "The path to the ^nodelists^.", 0750) case 5: E_PTH(10,16,64, CFG.out_queue, "The path to the ^temp outbound queue^ directory.", 0750)
case 6: E_PTH(11,16,64, CFG.inbound, "The path to the ^inbound^ for unknown systems.", 0750) case 6: E_PTH(11,16,64, CFG.msgs_path, "The path to the ^*.msgs^ directory.", 0750)
case 7: E_PTH(12,16,64, CFG.pinbound, "The path to the ^nodelists^ for protected systems.", 0750) case 7: E_PTH(12,16,64, CFG.badtic, "The path to the ^bad tic files^.", 0750)
case 8: E_PTH(13,16,64, CFG.outbound, "The path to the base ^outbound^ directory.", 0750) case 8: E_PTH(13,16,64, CFG.ticout, "The path to the ^outgoing TIC^ files.", 0750)
case 9: E_PTH(14,16,64, CFG.out_queue, "The path to the ^temp outbound queue^ directory.", 0750) case 9: if (strlen(CFG.tmailshort) == 0)
case 10:E_PTH(15,16,64, CFG.msgs_path, "The path to the ^*.msgs^ directory.", 0750)
case 11:E_PTH(16,16,64, CFG.badtic, "The path to the ^bad tic files^.", 0750)
case 12:E_PTH(17,16,64, CFG.ticout, "The path to the ^outgoing TIC^ files.", 0750)
case 13:if (strlen(CFG.tmailshort) == 0)
snprintf(CFG.tmailshort, 65, "%s/var/tmail/short", getenv("MBSE_ROOT")); snprintf(CFG.tmailshort, 65, "%s/var/tmail/short", getenv("MBSE_ROOT"));
E_PTH(18,16,64, CFG.tmailshort, "The ^T-Mail 8.3 basepath^ (blank = disable)", 0770) E_PTH(14,16,64, CFG.tmailshort, "The ^T-Mail 8.3 basepath^ (blank = disable)", 0770)
case 14:if (strlen(CFG.tmaillong) == 0) case 10:if (strlen(CFG.tmaillong) == 0)
snprintf(CFG.tmaillong, 65, "%s/var/tmail/long", getenv("MBSE_ROOT")); snprintf(CFG.tmaillong, 65, "%s/var/tmail/long", getenv("MBSE_ROOT"));
E_PTH(19,16,64, CFG.tmaillong, "The ^T-Mail long basepath^ (blank = disable)", 0770) E_PTH(15,16,64, CFG.tmaillong, "The ^T-Mail long basepath^ (blank = disable)", 0770)
} }
} }
} }
@ -288,15 +274,16 @@ void s_global(void)
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
mbse_mvprintw( 4, 6, "1.4 EDIT GLOBAL PATHS"); mbse_mvprintw( 4, 6, "1.4 EDIT GLOBAL PATHS");
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
mbse_mvprintw( 6, 2, "1. BBS menus"); mbse_mvprintw( 6, 2, "1. Home dirs");
mbse_mvprintw( 7, 2, "2. Txtfiles"); mbse_mvprintw( 7, 2, "2. Ftp base");
mbse_mvprintw( 8, 2, "3. Macro's"); mbse_mvprintw( 8, 2, "3. Arealists");
mbse_mvprintw( 9, 2, "4. Home dirs"); mbse_mvprintw( 9, 2, "4. Ext. edit");
mbse_mvprintw(10, 2, "5. Ftp base"); mbse_mvprintw(10, 2, "5. Rules dir");
mbse_mvprintw(11, 2, "6. Arealists"); mbse_mvprintw(11, 2, "6. Magic's");
mbse_mvprintw(12, 2, "7. Ext. edit"); mbse_mvprintw(12, 2, "7. DOS path");
mbse_mvprintw(13, 2, "8. Rules dir"); mbse_mvprintw(13, 2, "8. Unix path");
mbse_mvprintw(14, 2, "9. Next Screen"); mbse_mvprintw(14, 2, "9. LeaveCase");
mbse_mvprintw(15, 2, "10. Next Screen");
} }
@ -307,26 +294,28 @@ void e_global(void)
for (;;) { for (;;) {
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
show_str( 6,16,64, CFG.bbs_menus); show_str( 6,16,64, CFG.bbs_usersdir);
show_str( 7,16,64, CFG.bbs_txtfiles); show_str( 7,16,64, CFG.ftp_base);
show_str( 8,16,64, CFG.bbs_macros); show_str( 8,16,64, CFG.alists_path);
show_str( 9,16,64, CFG.bbs_usersdir); show_str( 9,16,64, CFG.externaleditor);
show_str(10,16,64, CFG.ftp_base); show_str( 10,16,64, CFG.rulesdir);
show_str(11,16,64, CFG.alists_path); show_str( 11,16,64, CFG.req_magic);
show_str(12,16,64, CFG.externaleditor); show_str( 12,16,64, CFG.dospath);
show_str(13,16,64, CFG.rulesdir); show_str( 13,16,64, CFG.uxpath);
show_bool(14,16, CFG.leavecase);
switch (select_menu(9)) { switch (select_menu(10)) {
case 0: return; case 0: return;
case 1: E_PTH( 6,16,64, CFG.bbs_menus, "The path to the ^default menus^.", 0750) case 1: E_PTH( 6,16,64, CFG.bbs_usersdir, "The path to the ^users home^ directories.", 0770)
case 2: E_PTH( 7,16,64, CFG.bbs_txtfiles, "The path to the ^default textfiles^.", 0750) case 2: E_PTH( 7,16,64, CFG.ftp_base, "The ^FTP home^ directory to strip of the real directory", 0750)
case 3: E_PTH( 8,16,64, CFG.bbs_macros, "The path to the ^default macro templates^.", 0750) case 3: E_PTH( 8,16,64, CFG.alists_path, "The path where ^area lists^ and ^filebone lists^ are stored.", 0750)
case 4: E_PTH( 9,16,64, CFG.bbs_usersdir, "The path to the ^users home^ directories.", 0770) case 4: E_STR( 9,16,64, CFG.externaleditor, "The full path and filename to the ^external msg editor^ (blank=disable)")
case 5: E_PTH(10,16,64, CFG.ftp_base, "The ^FTP home^ directory to strip of the real directory", 0750) case 5: E_PTH( 10,16,64, CFG.rulesdir, "The path where the ^arearules^ are stored", 0750)
case 6: E_PTH(11,16,64, CFG.alists_path, "The path where ^area lists^ and ^filebone lists^ are stored.", 0750) case 6: E_PTH( 11,16,64, CFG.req_magic, "The path to the ^magic filerequest^ files.", 0750)
case 7: E_STR(12,16,64, CFG.externaleditor, "The full path and filename to the ^external msg editor^ (blank=disable)") case 7: E_STR( 12,16,64, CFG.dospath, "The translated ^DOS^ drive and path, empty disables translation")
case 8: E_PTH(13,16,64, CFG.rulesdir, "The path where the ^arearules^ are stored", 0750) case 8: E_PTH( 13,16,64, CFG.uxpath, "The translated ^Unix^ path.", 0750)
case 9: e_global2(); case 9: E_BOOL(14,16, CFG.leavecase, "^Leave^ outbound flo filenames as is, ^No^ forces uppercase.")
case 10:e_global2();
s_global(); s_global();
break; break;
} }
@ -365,6 +354,7 @@ void b_screen(void)
mbse_mvprintw(15,37, "21. Simult. logins"); mbse_mvprintw(15,37, "21. Simult. logins");
mbse_mvprintw(16,37, "22. Child priority"); mbse_mvprintw(16,37, "22. Child priority");
mbse_mvprintw(17,37, "23. Filesystem sync"); mbse_mvprintw(17,37, "23. Filesystem sync");
mbse_mvprintw(18,37, "24. Default language");
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
show_bool( 7,24, CFG.exclude_sysop); show_bool( 7,24, CFG.exclude_sysop);
@ -391,6 +381,7 @@ void b_screen(void)
show_int( 15,59, CFG.max_logins); show_int( 15,59, CFG.max_logins);
show_int( 16,59, CFG.priority); show_int( 16,59, CFG.priority);
show_bool(17,59, CFG.do_sync); show_bool(17,59, CFG.do_sync);
show_str( 18,59, 10, CFG.deflang);
} }
@ -400,7 +391,7 @@ void e_bbsglob(void)
b_screen(); b_screen();
for (;;) { for (;;) {
switch(select_menu(23)) { switch(select_menu(24)) {
case 0: return; case 0: return;
case 1: E_BOOL( 7,24, CFG.exclude_sysop, "^Exclude^ sysop from lists.") case 1: E_BOOL( 7,24, CFG.exclude_sysop, "^Exclude^ sysop from lists.")
case 2: E_BOOL( 8,24, CFG.iConnectString, "Show ^connect string^ at logon") case 2: E_BOOL( 8,24, CFG.iConnectString, "Show ^connect string^ at logon")
@ -426,6 +417,10 @@ void e_bbsglob(void)
case 21:E_INT( 15,59, CFG.max_logins, "Maximum ^simultaneous logins^ allowed, 0 means unlimited") case 21:E_INT( 15,59, CFG.max_logins, "Maximum ^simultaneous logins^ allowed, 0 means unlimited")
case 22:E_IRC( 16,59, CFG.priority, 0, 15, "Subproces ^nice priority^, 0=high, 15=low CPU load") case 22:E_IRC( 16,59, CFG.priority, 0, 15, "Subproces ^nice priority^, 0=high, 15=low CPU load")
case 23:E_BOOL(17,59, CFG.do_sync, "Call ^sync^ before and after execute, use Yes on GNU/Linux") case 23:E_BOOL(17,59, CFG.do_sync, "Call ^sync^ before and after execute, use Yes on GNU/Linux")
case 24:PickLanguage((char *)"1.5.24");
snprintf(CFG.deflang, 10, "%s", lang.lc);
b_screen();
break;
} }
} }
} }
@ -1456,11 +1451,6 @@ void global_menu(void)
crc = 0xffffffff; crc = 0xffffffff;
crc = upd_crc32((char *)&CFG, crc, sizeof(CFG)); crc = upd_crc32((char *)&CFG, crc, sizeof(CFG));
if (strlen(CFG.bbs_macros) == 0) {
snprintf(CFG.bbs_macros, 65, "%s/english/macro", getenv("MBSE_ROOT"));
Syslog('+', "Main config, upgraded default macro path");
}
if (strlen(CFG.out_queue) == 0) { if (strlen(CFG.out_queue) == 0) {
snprintf(CFG.out_queue, 65, "%s/var/queue", getenv("MBSE_ROOT")); snprintf(CFG.out_queue, 65, "%s/var/queue", getenv("MBSE_ROOT"));
Syslog('+', "Main config, upgraded for new queue"); Syslog('+', "Main config, upgraded for new queue");
@ -1506,6 +1496,11 @@ void global_menu(void)
} }
free(temp); free(temp);
if (strlen(CFG.deflang) == 0) {
snprintf(CFG.deflang, 10, "%s", (char *)"en");
Syslog('+', "Main config, upgraded default language to \"en\"");
}
if (!CFG.is_upgraded) { if (!CFG.is_upgraded) {
CFG.priority = 15; CFG.priority = 15;
#ifdef __linux__ #ifdef __linux__
@ -1813,7 +1808,6 @@ int global_doc(FILE *fp, FILE *toc, int page)
add_webtable(wp, (char *)"Debug logfile", CFG.debuglog); add_webtable(wp, (char *)"Debug logfile", CFG.debuglog);
add_webtable(wp, (char *)"Manager logfile", CFG.mgrlog); add_webtable(wp, (char *)"Manager logfile", CFG.mgrlog);
add_webtable(wp, (char *)"Default menu", CFG.default_menu); add_webtable(wp, (char *)"Default menu", CFG.default_menu);
add_webtable(wp, (char *)"Default language", CFG.current_language);
add_webtable(wp, (char *)"Chat logfile", CFG.chat_log); add_webtable(wp, (char *)"Chat logfile", CFG.chat_log);
add_webtable(wp, (char *)"Welcome logo", CFG.welcome_logo); add_webtable(wp, (char *)"Welcome logo", CFG.welcome_logo);
fprintf(wp, "</TBODY>\n"); fprintf(wp, "</TBODY>\n");
@ -1826,7 +1820,6 @@ int global_doc(FILE *fp, FILE *toc, int page)
fprintf(fp, " Debug logfile %s\n", CFG.debuglog); fprintf(fp, " Debug logfile %s\n", CFG.debuglog);
fprintf(fp, " Manager logfile %s\n", CFG.mgrlog); fprintf(fp, " Manager logfile %s\n", CFG.mgrlog);
fprintf(fp, " Default menu %s\n", CFG.default_menu); fprintf(fp, " Default menu %s\n", CFG.default_menu);
fprintf(fp, " Default language %s\n", CFG.current_language);
fprintf(fp, " Chat logfile %s\n", CFG.chat_log); fprintf(fp, " Chat logfile %s\n", CFG.chat_log);
fprintf(fp, " Welcome logo %s\n", CFG.welcome_logo); fprintf(fp, " Welcome logo %s\n", CFG.welcome_logo);
@ -1834,9 +1827,6 @@ int global_doc(FILE *fp, FILE *toc, int page)
fprintf(wp, "<TABLE width='600' border='0' cellspacing='0' cellpadding='2'>\n"); fprintf(wp, "<TABLE width='600' border='0' cellspacing='0' cellpadding='2'>\n");
fprintf(wp, "<COL width='30%%'><COL width='70%%'>\n"); fprintf(wp, "<COL width='30%%'><COL width='70%%'>\n");
fprintf(wp, "<TBODY>\n"); fprintf(wp, "<TBODY>\n");
add_webtable(wp, (char *)"Menufiles", CFG.bbs_menus);
add_webtable(wp, (char *)"Textfiles", CFG.bbs_txtfiles);
add_webtable(wp, (char *)"Macro templates", CFG.bbs_macros);
add_webtable(wp, (char *)"Users homedirs", CFG.bbs_usersdir); add_webtable(wp, (char *)"Users homedirs", CFG.bbs_usersdir);
add_webtable(wp, (char *)"Nodelists", CFG.nodelists); add_webtable(wp, (char *)"Nodelists", CFG.nodelists);
add_webtable(wp, (char *)"Unsafe inbound", CFG.inbound); add_webtable(wp, (char *)"Unsafe inbound", CFG.inbound);
@ -1858,9 +1848,6 @@ int global_doc(FILE *fp, FILE *toc, int page)
fprintf(wp, "<A HREF=\"#_top\">Top</A>\n"); fprintf(wp, "<A HREF=\"#_top\">Top</A>\n");
fprintf(wp, "<HR>\n"); fprintf(wp, "<HR>\n");
addtoc(fp, toc, 1, 5, page, (char *)"Pathnames"); addtoc(fp, toc, 1, 5, page, (char *)"Pathnames");
fprintf(fp, " Menufiles %s\n", CFG.bbs_menus);
fprintf(fp, " Textfiles %s\n", CFG.bbs_txtfiles);
fprintf(fp, " Macros %s\n", CFG.bbs_macros);
fprintf(fp, " Users homedirs %s\n", CFG.bbs_usersdir); fprintf(fp, " Users homedirs %s\n", CFG.bbs_usersdir);
fprintf(fp, " Nodelists %s\n", CFG.nodelists); fprintf(fp, " Nodelists %s\n", CFG.nodelists);
fprintf(fp, " Unsafe inbound %s\n", CFG.inbound); fprintf(fp, " Unsafe inbound %s\n", CFG.inbound);

View File

@ -4,7 +4,7 @@
* Purpose ...............: Setup Languages. * Purpose ...............: Setup Languages.
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2005 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -43,15 +43,12 @@ int LangUpdated = 0;
void AddLang(char *, char *, char *, FILE *); void AddLang(char *, char *, char *, FILE *);
void AddLang(char *Name, char *Key, char *Path, FILE *fil) void AddLang(char *Name, char *Key, char *lc, FILE *fil)
{ {
memset(&lang, 0, sizeof(lang)); memset(&lang, 0, sizeof(lang));
snprintf(lang.Name, 30, "%s", Name); snprintf(lang.Name, 30, "%s", Name);
snprintf(lang.LangKey, 2, "%s", Key); snprintf(lang.LangKey, 2, "%s", Key);
snprintf(lang.MenuPath, 81, "%s/%s/menus", getenv("MBSE_ROOT"), Path); snprintf(lang.lc, 10, "%s", lc);
snprintf(lang.TextPath, 81, "%s/%s/txtfiles", getenv("MBSE_ROOT"), Path);
snprintf(lang.MacroPath, 81, "%s/%s/macro", getenv("MBSE_ROOT"), Path);
snprintf(lang.Filename, 81, "%s.lang", Path);
lang.Available = TRUE; lang.Available = TRUE;
fwrite(&lang, sizeof(lang), 1, fil); fwrite(&lang, sizeof(lang), 1, fil);
} }
@ -79,13 +76,13 @@ int CountLanguage(void)
/* /*
* Setup default records * Setup default records
*/ */
AddLang((char *)"English", (char *)"E", (char *)"english", fil); count++; AddLang((char *)"English", (char *)"E", (char *)"en", fil); count++;
AddLang((char *)"Nederlands", (char *)"N", (char *)"dutch", fil); count++; AddLang((char *)"Nederlands", (char *)"N", (char *)"nl", fil); count++;
AddLang((char *)"Spanish", (char *)"S", (char *)"spanish", fil); count++; AddLang((char *)"Spanish", (char *)"S", (char *)"es", fil); count++;
AddLang((char *)"Galego", (char *)"G", (char *)"galego", fil); count++; AddLang((char *)"Galego", (char *)"G", (char *)"gl", fil); count++;
AddLang((char *)"Deutsch", (char *)"D", (char *)"german", fil); count++; AddLang((char *)"Deutsch", (char *)"D", (char *)"de", fil); count++;
AddLang((char *)"French", (char *)"F", (char *)"french", fil); count++; AddLang((char *)"French", (char *)"F", (char *)"fr", fil); count++;
AddLang((char *)"Chinese", (char *)"C", (char *)"chinese", fil); count++; AddLang((char *)"Chinese", (char *)"C", (char *)"zh", fil); count++;
fclose(fil); fclose(fil);
chmod(ffile, 0640); chmod(ffile, 0640);
@ -104,6 +101,80 @@ int CountLanguage(void)
void UpgradeLanguage(char *name, char *lc)
{
char *temp;
int rc;
temp = calloc(PATH_MAX, sizeof(char));
snprintf(temp, PATH_MAX, "%s/share/foo", getenv("MBSE_ROOT"));
mkdirs(temp, 0770);
snprintf(temp, PATH_MAX, "%s/share/int/foo", getenv("MBSE_ROOT"));
mkdirs(temp, 0770);
if (strstr(lang.xMenuPath, name)) {
snprintf(lang.lc, 10, "%s", lc);
/*
* Now build old and new paths of the language files.
*/
snprintf(temp, PATH_MAX, "%s/share/int/menus/%s", getenv("MBSE_ROOT"), lc);
if (strcmp(lang.xMenuPath, temp)) {
mkdirs(temp, 0770);
rc = rename(lang.xMenuPath, temp);
if (rc) {
WriteError("$Can't move %s to %s", lang.xMenuPath, temp);
} else {
Syslog('+', "Moved %s to %s", lang.xMenuPath, temp);
snprintf(lang.xMenuPath, PATH_MAX, temp);
}
} else {
Syslog('+', "%s already upgraded", temp);
}
snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s", getenv("MBSE_ROOT"), lc);
if (strcmp(lang.xTextPath, temp)) {
mkdirs(temp, 0770);
rc = rename(lang.xTextPath, temp);
if (rc) {
WriteError("$Can't move %s to %s", lang.xTextPath, temp);
} else {
Syslog('+', "Moved %s to %s", lang.xTextPath, temp);
snprintf(lang.xTextPath, PATH_MAX, temp);
}
} else {
Syslog('+', "%s already upgraded", temp);
}
snprintf(temp, PATH_MAX, "%s/share/int/macro/%s", getenv("MBSE_ROOT"), lc);
if (strcmp(lang.xMacroPath, temp)) {
mkdirs(temp, 0770);
rc = rename(lang.xMacroPath, temp);
if (rc) {
WriteError("$Can't move %s to %s", lang.xMacroPath, temp);
} else {
Syslog('+', "Moved %s to %s", lang.xMacroPath, temp);
snprintf(lang.xMacroPath, PATH_MAX, temp);
}
} else {
Syslog('+', "%s already upgraded", temp);
}
snprintf(temp, PATH_MAX, "%s/%s", getenv("MBSE_ROOT"), name);
rc = rmdir(temp);
if (rc) {
WriteError("$Can't remove %s", temp);
} else {
Syslog('+', "Removed directory %s", temp);
}
}
free(temp);
}
/* /*
* Open database for editing. The datafile is copied, if the format * Open database for editing. The datafile is copied, if the format
* is changed it will be converted on the fly. All editing must be * is changed it will be converted on the fly. All editing must be
@ -143,6 +214,25 @@ int OpenLanguage(void)
*/ */
memset(&lang, 0, sizeof(lang)); memset(&lang, 0, sizeof(lang));
while (fread(&lang, oldsize, 1, fin) == 1) { while (fread(&lang, oldsize, 1, fin) == 1) {
if (strlen(lang.lc) == 0) {
if (strstr(lang.xMenuPath, (char *)"english")) {
UpgradeLanguage((char *)"english", (char *)"en");
} else if (strstr(lang.xMenuPath, (char *)"german")) {
UpgradeLanguage((char *)"german", (char *)"de");
} else if (strstr(lang.xMenuPath, (char *)"dutch")) {
UpgradeLanguage((char *)"dutch", (char *)"nl");
} else if (strstr(lang.xMenuPath, (char *)"spanish")) {
UpgradeLanguage((char *)"spanish", (char *)"es");
} else if (strstr(lang.xMenuPath, (char *)"galego")) {
UpgradeLanguage((char *)"galego", (char *)"gl");
} else if (strstr(lang.xMenuPath, (char *)"french")) {
UpgradeLanguage((char *)"french", (char *)"fr");
} else if (strstr(lang.xMenuPath, (char *)"chinese")) {
UpgradeLanguage((char *)"chinese", (char *)"zh");
} else {
WriteError("Unknown language \"%s\", please update manually", lang.Name);
}
}
fwrite(&lang, sizeof(lang), 1, fout); fwrite(&lang, sizeof(lang), 1, fout);
memset(&lang, 0, sizeof(lang)); memset(&lang, 0, sizeof(lang));
} }
@ -232,13 +322,10 @@ void s_lang(void)
set_color(CYAN, BLACK); set_color(CYAN, BLACK);
mbse_mvprintw( 7, 2, "1. Select"); mbse_mvprintw( 7, 2, "1. Select");
mbse_mvprintw( 8, 2, "2. Name"); mbse_mvprintw( 8, 2, "2. Name");
mbse_mvprintw( 9, 2, "3. Menupath"); mbse_mvprintw( 9, 2, "3. ISO name");
mbse_mvprintw(10, 2, "4. Textpath"); mbse_mvprintw(10, 2, "4. Available");
mbse_mvprintw(11, 2, "5. Macropath"); mbse_mvprintw(11, 2, "5. Security");
mbse_mvprintw(12, 2, "6. Available"); mbse_mvprintw(12, 2, "6. Deleted");
mbse_mvprintw(13, 2, "7. Datafile");
mbse_mvprintw(14, 2, "8. Security");
mbse_mvprintw(15, 2, "9. Deleted");
} }
@ -281,15 +368,12 @@ int EditLangRec(int Area)
set_color(WHITE, BLACK); set_color(WHITE, BLACK);
show_str( 7,16, 1, lang.LangKey); show_str( 7,16, 1, lang.LangKey);
show_str( 8,16,30, lang.Name); show_str( 8,16,30, lang.Name);
show_str( 9,16,64, lang.MenuPath); show_str( 9,16,64, lang.lc);
show_str( 10,16,64, lang.TextPath); show_bool(10,16, lang.Available);
show_str( 11,16,64, lang.MacroPath); show_sec( 11,16, lang.Security);
show_bool(12,16, lang.Available); show_bool(12,16, lang.Deleted);
show_str( 13,16,24, lang.Filename);
show_sec( 14,16, lang.Security);
show_bool(15,16, lang.Deleted);
j = select_menu(9); j = select_menu(6);
switch(j) { switch(j) {
case 0: crc1 = 0xffffffff; case 0: crc1 = 0xffffffff;
crc1 = upd_crc32((char *)&lang, crc1, sizeof(lang)); crc1 = upd_crc32((char *)&lang, crc1, sizeof(lang));
@ -311,13 +395,10 @@ int EditLangRec(int Area)
return 0; return 0;
case 1: E_UPS( 7,16,1, lang.LangKey, "The ^Key^ to select this language") case 1: E_UPS( 7,16,1, lang.LangKey, "The ^Key^ to select this language")
case 2: E_STR( 8,16,30,lang.Name, "The ^name^ of this language") case 2: E_STR( 8,16,30,lang.Name, "The ^name^ of this language")
case 3: E_PTH( 9,16,64,lang.MenuPath, "The ^Menus Path^ of this language", 0755) case 3: E_STR( 9,16,10,lang.lc, "The ^ISO name^ of this language")
case 4: E_PTH( 10,16,64,lang.TextPath, "The ^Textfile path^ of this language", 0755) case 4: E_BOOL(10,16, lang.Available,"Is this language ^available^")
case 5: E_PTH( 11,16,64,lang.MacroPath,"The ^Macro template path^ if this language", 0755) case 5: E_SEC( 11,16, lang.Security, "8.2. LANGUAGE SECURITY", s_lang)
case 6: E_BOOL(12,16, lang.Available,"Is this language ^available^") case 6: E_BOOL(12,16, lang.Deleted, "Is this language record ^Deleted^")
case 7: E_STR( 13,16,24,lang.Filename, "The ^Filename^ (without path) of the language datafile")
case 8: E_SEC( 14,16, lang.Security, "8.2. LANGUAGE SECURITY", s_lang)
case 9: E_BOOL(15,16, lang.Deleted, "Is this language record ^Deleted^")
} }
} }
@ -501,7 +582,7 @@ int bbs_lang_doc(FILE *fp, FILE *toc, int page)
while ((fread(&lang, langhdr.recsize, 1, no)) == 1) { while ((fread(&lang, langhdr.recsize, 1, no)) == 1) {
if (j == 5) { if (j == 6) {
page = newpage(fp, page); page = newpage(fp, page);
fprintf(fp, "\n"); fprintf(fp, "\n");
j = 0; j = 0;
@ -518,16 +599,14 @@ int bbs_lang_doc(FILE *fp, FILE *toc, int page)
add_webtable(wp, (char *)"Language key", lang.LangKey); add_webtable(wp, (char *)"Language key", lang.LangKey);
add_webtable(wp, (char *)"Language name", lang.Name); add_webtable(wp, (char *)"Language name", lang.Name);
add_webtable(wp, (char *)"Available", getboolean(lang.Available)); add_webtable(wp, (char *)"Available", getboolean(lang.Available));
add_webtable(wp, (char *)"Menu path", lang.MenuPath); add_webtable(wp, (char *)"ISO name", lang.lc);
add_webtable(wp, (char *)"Textfiles path", lang.TextPath);
add_webtable(wp, (char *)"Macrofiles path", lang.MacroPath);
add_webtable(wp, (char *)"Language file", lang.Filename);
web_secflags(wp, (char *)"Security level", lang.Security); web_secflags(wp, (char *)"Security level", lang.Security);
fprintf(wp, "</TBODY>\n"); fprintf(wp, "</TBODY>\n");
fprintf(wp, "</TABLE>\n"); fprintf(wp, "</TABLE>\n");
fprintf(wp, "<HR>\n"); fprintf(wp, "<HR>\n");
fprintf(wp, "<H3>Menu files</H3>\n"); fprintf(wp, "<H3>Menu files</H3>\n");
if ((dp = opendir(lang.MenuPath))) { snprintf(temp, PATH_MAX, "%s/share/int/menus/%s", getenv("MBSE_ROOT"), lang.lc);
if ((dp = opendir(temp))) {
while ((de = readdir(dp))) { while ((de = readdir(dp))) {
if (de->d_name[0] != '.') { if (de->d_name[0] != '.') {
fprintf(wp, "%s<BR>\n", de->d_name); fprintf(wp, "%s<BR>\n", de->d_name);
@ -537,7 +616,8 @@ int bbs_lang_doc(FILE *fp, FILE *toc, int page)
} }
fprintf(wp, "<HR>\n"); fprintf(wp, "<HR>\n");
fprintf(wp, "<H3>Text files</H3>\n"); fprintf(wp, "<H3>Text files</H3>\n");
if ((dp = opendir(lang.TextPath))) { snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s", getenv("MBSE_ROOT"), lang.lc);
if ((dp = opendir(temp))) {
while ((de = readdir(dp))) { while ((de = readdir(dp))) {
if (de->d_name[0] != '.') { if (de->d_name[0] != '.') {
fprintf(wp, "%s<BR>\n", de->d_name); fprintf(wp, "%s<BR>\n", de->d_name);
@ -547,7 +627,8 @@ int bbs_lang_doc(FILE *fp, FILE *toc, int page)
} }
fprintf(wp, "<HR>\n"); fprintf(wp, "<HR>\n");
fprintf(wp, "<H3>Macro template files</H3>\n"); fprintf(wp, "<H3>Macro template files</H3>\n");
if ((dp = opendir(lang.MacroPath))) { snprintf(temp, PATH_MAX, "%s/share/int/macro/%s", getenv("MBSE_ROOT"), lang.lc);
if ((dp = opendir(temp))) {
while ((de = readdir(dp))) { while ((de = readdir(dp))) {
if (de->d_name[0] != '.') { if (de->d_name[0] != '.') {
fprintf(wp, "%s<BR>\n", de->d_name); fprintf(wp, "%s<BR>\n", de->d_name);
@ -561,10 +642,7 @@ int bbs_lang_doc(FILE *fp, FILE *toc, int page)
fprintf(fp, " Language key %s\n", lang.LangKey); fprintf(fp, " Language key %s\n", lang.LangKey);
fprintf(fp, " Language name %s\n", lang.Name); fprintf(fp, " Language name %s\n", lang.Name);
fprintf(fp, " Available %s\n", getboolean(lang.Available)); fprintf(fp, " Available %s\n", getboolean(lang.Available));
fprintf(fp, " Menu path %s\n", lang.MenuPath); fprintf(fp, " ISO name %s\n", lang.lc);
fprintf(fp, " Textfiles path %s\n", lang.TextPath);
fprintf(fp, " Macrofiles path %s\n", lang.MacroPath);
fprintf(fp, " Language file %s\n", lang.Filename);
fprintf(fp, " Security level %s\n", get_secstr(lang.Security)); fprintf(fp, " Security level %s\n", get_secstr(lang.Security));
fprintf(fp, "\n\n"); fprintf(fp, "\n\n");
j++; j++;

View File

@ -4,7 +4,7 @@
* Purpose ...............: Edit BBS menus * Purpose ...............: Edit BBS menus
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2006 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -316,10 +316,10 @@ void EditMenu(char *Name)
IsDoing("Edit Menu"); IsDoing("Edit Menu");
working(1, 0, 0); working(1, 0, 0);
snprintf(mtemp, PATH_MAX, "%s/%s.tmp", lang.MenuPath, Name); snprintf(mtemp, PATH_MAX, "%s/share/int/menus/%s/%s.tmp", getenv("MBSE_ROOT"), lang.lc, Name);
tmp = fopen(mtemp, "w+"); tmp = fopen(mtemp, "w+");
snprintf(temp, PATH_MAX, "%s/%s.mnu", lang.MenuPath, Name); snprintf(temp, PATH_MAX, "%s/share/int/menus/%s/%s.mnu", getenv("MBSE_ROOT"), lang.lc, Name);
if ((fil = fopen(temp, "r")) != NULL) { if ((fil = fopen(temp, "r")) != NULL) {
while (fread(&menus, sizeof(menus), 1, fil) == 1) { while (fread(&menus, sizeof(menus), 1, fil) == 1) {
fwrite(&menus, sizeof(menus), 1, tmp); fwrite(&menus, sizeof(menus), 1, tmp);
@ -378,7 +378,7 @@ void EditMenu(char *Name)
if (MenuUpdated) { if (MenuUpdated) {
if (yes_no((char *)"Menu is changed, save changes") == 1) { if (yes_no((char *)"Menu is changed, save changes") == 1) {
working(1, 0, 0); working(1, 0, 0);
snprintf(temp, PATH_MAX, "%s/%s.mnu", lang.MenuPath, Name); snprintf(temp, PATH_MAX, "%s/share/int/menus/%s/%s.mnu", getenv("MBSE_ROOT"), lang.lc, Name);
if ((fil = fopen(temp, "w+")) == NULL) { if ((fil = fopen(temp, "w+")) == NULL) {
working(2, 0, 0); working(2, 0, 0);
} else { } else {
@ -497,7 +497,7 @@ void EditMenus(void)
DIR *dp; DIR *dp;
FILE *fil; FILE *fil;
struct dirent *de; struct dirent *de;
char menuname[50][11], temp[81], pick[12], *p; char menuname[50][11], temp[PATH_MAX], pick[12], *p;
Syslog('+', "Start menu edit"); Syslog('+', "Start menu edit");
memset(&menuname, 0, sizeof(menuname)); memset(&menuname, 0, sizeof(menuname));
@ -508,7 +508,9 @@ void EditMenus(void)
for (;;) { for (;;) {
clr_index(); clr_index();
mcount = 0; mcount = 0;
if ((dp = opendir(lang.MenuPath)) != NULL) {
snprintf(temp, PATH_MAX, "%s/share/int/menus/%s", getenv("MBSE_ROOT"), lang.lc);
if ((dp = opendir(temp)) != NULL) {
working(1, 0, 0); working(1, 0, 0);
while ((de = readdir(dp))) { while ((de = readdir(dp))) {
@ -551,7 +553,9 @@ void EditMenus(void)
memset(&temp, 0, sizeof(temp)); memset(&temp, 0, sizeof(temp));
strcpy(temp, edit_str(LINES -3, 22, 10, temp, (char *)"Enter a new ^menu^ name without extension")); strcpy(temp, edit_str(LINES -3, 22, 10, temp, (char *)"Enter a new ^menu^ name without extension"));
if (strlen(temp)) { if (strlen(temp)) {
p = xstrcpy(lang.MenuPath); p = xstrcpy(getenv("MBSE_ROOT"));
p = xstrcat(p, (char *)"/share/int/menus/");
p = xstrcat(p, lang.lc);
p = xstrcat(p, (char *)"/"); p = xstrcat(p, (char *)"/");
p = xstrcat(p, temp); p = xstrcat(p, temp);
p = xstrcat(p, (char *)".mnu"); p = xstrcat(p, (char *)".mnu");
@ -606,12 +610,13 @@ int bbs_menu_doc(FILE *fp, FILE *toc, int page)
fprintf(ip, "<H3>BBS Menus for %s</H3>\n", lang.Name); fprintf(ip, "<H3>BBS Menus for %s</H3>\n", lang.Name);
fprintf(ip, "<UL>\n"); fprintf(ip, "<UL>\n");
if ((dp = opendir(lang.MenuPath)) != NULL) { snprintf(temp, PATH_MAX, "%s/share/int/menus/%s", getenv("MBSE_ROOT"), lang.lc);
if ((dp = opendir(temp)) != NULL) {
while ((de = readdir(dp))) { while ((de = readdir(dp))) {
if (de->d_name[0] != '.') { if (de->d_name[0] != '.') {
j = 0; j = 0;
fprintf(ip, "<LI><A HREF=\"menu_%s_%s.html\">%s</A></LI>\n", lang.LangKey, de->d_name, de->d_name); fprintf(ip, "<LI><A HREF=\"menu_%s_%s.html\">%s</A></LI>\n", lang.LangKey, de->d_name, de->d_name);
snprintf(temp, PATH_MAX, "%s/%s", lang.MenuPath, de->d_name); snprintf(temp, PATH_MAX, "%s/share/int/menus/%s/%s", getenv("MBSE_ROOT"), lang.lc, de->d_name);
fprintf(fp, "\n MENU %s (%s)\n\n", de->d_name, lang.Name); fprintf(fp, "\n MENU %s (%s)\n\n", de->d_name, lang.Name);
if ((mn = fopen(temp, "r")) != NULL) { if ((mn = fopen(temp, "r")) != NULL) {
snprintf(temp, 81, "menu_%s_%s.html", lang.LangKey, de->d_name); snprintf(temp, 81, "menu_%s_%s.html", lang.LangKey, de->d_name);

View File

@ -158,7 +158,7 @@ void load_maincfg(void)
snprintf(CFG.logfile, 15, "system.log"); snprintf(CFG.logfile, 15, "system.log");
snprintf(CFG.error_log, 15, "error.log"); snprintf(CFG.error_log, 15, "error.log");
snprintf(CFG.default_menu, 15, "main.mnu"); snprintf(CFG.default_menu, 15, "main.mnu");
snprintf(CFG.current_language, 15, "english.lang"); snprintf(CFG.deflang, 10, "en");
snprintf(CFG.chat_log, 15, "chat.log"); snprintf(CFG.chat_log, 15, "chat.log");
snprintf(CFG.welcome_logo, 15, "logo.asc"); snprintf(CFG.welcome_logo, 15, "logo.asc");
snprintf(CFG.mgrlog, 15, "manager.log"); snprintf(CFG.mgrlog, 15, "manager.log");
@ -167,9 +167,6 @@ void load_maincfg(void)
/* /*
* Fill Global defaults * Fill Global defaults
*/ */
snprintf(CFG.bbs_menus, 65, "%s/english/menus", getenv("MBSE_ROOT"));
snprintf(CFG.bbs_txtfiles, 65, "%s/english/txtfiles", getenv("MBSE_ROOT"));
snprintf(CFG.bbs_macros, 65, "%s/english/macro", getenv("MBSE_ROOT"));
snprintf(CFG.bbs_usersdir, 65, "%s/home", getenv("MBSE_ROOT")); snprintf(CFG.bbs_usersdir, 65, "%s/home", getenv("MBSE_ROOT"));
snprintf(CFG.nodelists, 65, "%s/var/nodelist", getenv("MBSE_ROOT")); snprintf(CFG.nodelists, 65, "%s/var/nodelist", getenv("MBSE_ROOT"));
snprintf(CFG.inbound, 65, "%s/var/unknown", getenv("MBSE_ROOT")); snprintf(CFG.inbound, 65, "%s/var/unknown", getenv("MBSE_ROOT"));

View File

@ -4,7 +4,7 @@
* Purpose ...............: Give status of all filesystems * Purpose ...............: Give status of all filesystems
* *
***************************************************************************** *****************************************************************************
* Copyright (C) 1997-2006 * Copyright (C) 1997-2007
* *
* Michiel Broek FIDO: 2:280/2802 * Michiel Broek FIDO: 2:280/2802
* Beekmansbos 10 * Beekmansbos 10
@ -472,8 +472,6 @@ void diskwatch(void)
tidy_mfslist(&mfs); tidy_mfslist(&mfs);
add_path(getenv("MBSE_ROOT")); add_path(getenv("MBSE_ROOT"));
add_path(CFG.bbs_menus);
add_path(CFG.bbs_txtfiles);
add_path(CFG.alists_path); add_path(CFG.alists_path);
add_path(CFG.req_magic); add_path(CFG.req_magic);
add_path(CFG.bbs_usersdir); add_path(CFG.bbs_usersdir);
@ -482,7 +480,6 @@ void diskwatch(void)
add_path(CFG.pinbound); add_path(CFG.pinbound);
add_path(CFG.outbound); add_path(CFG.outbound);
add_path(CFG.ftp_base); add_path(CFG.ftp_base);
add_path(CFG.bbs_macros);
add_path(CFG.out_queue); add_path(CFG.out_queue);
add_path(CFG.rulesdir); add_path(CFG.rulesdir);
add_path(CFG.tmailshort); add_path(CFG.tmailshort);
@ -522,9 +519,12 @@ void diskwatch(void)
while (fread(&lang, langhdr.recsize, 1, fp)) { while (fread(&lang, langhdr.recsize, 1, fp)) {
if (lang.Available) { if (lang.Available) {
add_path(lang.MenuPath); snprintf(temp, PATH_MAX, "%s/share/int/menus/%s", getenv("MBSE_ROOT"), lang.lc);
add_path(lang.TextPath); add_path(temp);
add_path(lang.MacroPath); snprintf(temp, PATH_MAX, "%s/share/int/txtfiles/%s", getenv("MBSE_ROOT"), lang.lc);
add_path(temp);
snprintf(temp, PATH_MAX, "%s/share/int/macro/%s", getenv("MBSE_ROOT"), lang.lc);
add_path(temp);
} }
} }
fclose(fp); fclose(fp);