Please see CHANGES for a detailed description
This commit is contained in:
parent
b60c4f9284
commit
ce84b341fb
67
vbox/CHANGES
67
vbox/CHANGES
|
@ -3,6 +3,71 @@
|
|||
# To describe the news & fixes better (my english is not the best :-) the
|
||||
# changelog is only available in german.
|
||||
|
||||
04-Apr-97
|
||||
=========
|
||||
|
||||
o [Fix] Änderungen am Makefile.in.
|
||||
|
||||
|
||||
25-Mär-97
|
||||
=========
|
||||
|
||||
o [Neu] Dokumentation geschrieben.
|
||||
|
||||
|
||||
24-Mär-97
|
||||
=========
|
||||
|
||||
o [Neu] Neues Target 'create-de-sgml' im Makefile. Damit läßt sich ein
|
||||
sgml-Source der Dokumentation für weitere Umwandlungen
|
||||
erzeugen.
|
||||
|
||||
o [Neu] Dokumentation geschrieben.
|
||||
|
||||
|
||||
23-Mär-97
|
||||
=========
|
||||
|
||||
o [Neu] Programm vboxbeep so angepasst, das es vboxd benutzt.
|
||||
|
||||
o [Neu] Funktion count in vboxd so umgeschrieben, das sie die Anzahl
|
||||
der neuen Nachrichten *und* das Datum der neusten Nachricht
|
||||
ausgibt.
|
||||
|
||||
|
||||
22-Mär-97
|
||||
=========
|
||||
|
||||
o [Neu] Dateien im Verzeichnis examples/ auf den neusten Stand
|
||||
gebracht.
|
||||
|
||||
o [Neu] Konfigurationsskripts so umgeschrieben, das alle exportierten
|
||||
Variablen mit VBOX_ beginnen.
|
||||
|
||||
o [Neu] Die Datei in der sich die Konfigurationen des Users befinden
|
||||
wurde in vbox.conf umbenannt. Sie befindet sich jetzt
|
||||
standardmäßig im Spoolverzeichnis des jeweiligen Users. Die
|
||||
Konfiguration wird nur noch von vboxgetty selbst
|
||||
benötigt. Alle anderen Programme können die Daten aus dem
|
||||
Header der Nachrichten oder von vboxd auslesen!
|
||||
|
||||
|
||||
21-Mär-97
|
||||
=========
|
||||
|
||||
o [Neu] Server Kommandos count, message und header in vboxd
|
||||
implementiert.
|
||||
|
||||
|
||||
20-Mär-97
|
||||
=========
|
||||
|
||||
o [Neu] Neues Programm 'vboxd': Der Daemon funktioniert ähnlich dem
|
||||
nntpd und kann vbox Nachrichten bearbeiten. Der Daemon wird
|
||||
vom inetd gestartet und kann dann z.B. über telnet oder
|
||||
Sockets angesprochen werden.
|
||||
|
||||
|
||||
15-Mär-97
|
||||
=========
|
||||
|
||||
|
@ -47,6 +112,7 @@ o [Neu] Funktion lock_type_lock() belegt Speicher f
|
|||
|
||||
o [Neu] Funktion log_init() belegt Speicher für den Namen jetzt selbst.
|
||||
|
||||
|
||||
12-Mär-97
|
||||
=========
|
||||
|
||||
|
@ -107,6 +173,7 @@ o [Neu] Option '--with-tcllib' in 'configure.in' eingebaut, damit man
|
|||
o [Fix] Einige Änderungen an den Sourcen gemacht, damit vbox mit der neuen
|
||||
glibc 2.0.x compiliert (Andreas Jaeger <aj@arthur.pfalz.de>).
|
||||
|
||||
|
||||
26-Feb-97
|
||||
=========
|
||||
|
||||
|
|
220
vbox/Makefile.in
220
vbox/Makefile.in
|
@ -116,11 +116,21 @@ HAVE_NCURSES = @HAVE_NCURSES_LIBS@
|
|||
HAVE_TCL = @HAVE_TCL_LIBS@
|
||||
HAVE_INTL = @HAVE_INTL_LIBS@
|
||||
|
||||
GETTYRC = $(sysconfdir)/vboxgetty.conf
|
||||
VBINDIR = $(bindir)
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
VERDATE = @VERDATE@
|
||||
VBOX_GETTYCONF = $(sysconfdir)/vboxgetty.conf
|
||||
VBOX_VBOXDCONF = $(sysconfdir)/vboxd.conf
|
||||
VBOX_SYSCONFDIR = $(sysconfdir)
|
||||
VBOX_BINDIR = $(bindir)
|
||||
VBOX_SBINDIR = $(sbindir)
|
||||
VBOX_PACKAGE = @PACKAGE@
|
||||
VBOX_VERSION = @VERSION@
|
||||
VBOX_VERDATE = @VERDATE@
|
||||
VBOX_TOPDIR = $(TOPDIR)
|
||||
VBOX_CATALOGS = $(CATALOGS)
|
||||
VBOX_LOGFILEDIR = $(LOGFILEDIR)
|
||||
VBOX_PIDFILEDIR = $(PIDFILEDIR)
|
||||
VBOX_LCKFILEDIR = $(LCKFILEDIR)
|
||||
VBOX_SPOOLDIR = $(SPOOLDIR)
|
||||
VBOX_LOCALEDIR = $(LOCALEDIR)
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Export variables needed by the other utilities... #
|
||||
|
@ -132,73 +142,142 @@ export LDFLAGS
|
|||
export AR
|
||||
export RANLIB
|
||||
export SED
|
||||
export GETTYRC
|
||||
export VBINDIR
|
||||
export TOPDIR
|
||||
export CATALOGS
|
||||
export PACKAGE
|
||||
export VBOX_GETTYCONF
|
||||
export VBOX_VBOXDCONF
|
||||
export VBOX_BINDIR
|
||||
export VBOX_SBINDIR
|
||||
export VBOX_TOPDIR
|
||||
export VBOX_CATALOGS
|
||||
export VBOX_PACKAGE
|
||||
export VBOX_VERSION
|
||||
export VBOX_VERDATE
|
||||
export VBOX_LOGFILEDIR
|
||||
export VBOX_PIDFILEDIR
|
||||
export VBOX_LCKFILEDIR
|
||||
export VBOX_SPOOLDIR
|
||||
export VBOX_LOCALEDIR
|
||||
export VBOX_SYSCONFDIR
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# All action we must do... #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
all: vbox sedconvert
|
||||
all: vbox-apps vbox-seds
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# vbox #
|
||||
# Build... #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
vbox: ignore
|
||||
vbox-apps: ignore
|
||||
@$(ECHO)
|
||||
@$(ECHO) "Building vbox $(VBOX_VERSION) ($(VBOX_VERDATE))..."
|
||||
@$(ECHO)
|
||||
@$(MAKE) -C $(TOPDIR)/src all
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# sedconvert #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
sedconvert: ignore
|
||||
@$(TOPDIR)/utils/mksed <$(TOPDIR)/utils/vboxmail.in >$(TOPDIR)/utils/vboxmail
|
||||
@$(TOPDIR)/utils/mksed <$(TOPDIR)/utils/vboxplay.in >$(TOPDIR)/utils/vboxplay
|
||||
SEDCONVERTOBJS = $(TOPDIR)/utils/vboxmail $(TOPDIR)/utils/vboxplay \
|
||||
$(TOPDIR)/doc/de/txt/vbox.txt \
|
||||
$(TOPDIR)/doc/de/html/vbox.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-1.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-2.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-3.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-4.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-5.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-6.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-7.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-8.html \
|
||||
$(TOPDIR)/doc/de/html/vbox-9.html
|
||||
|
||||
vbox-seds: ignore
|
||||
@set -e; for i in $(SEDCONVERTOBJS); do \
|
||||
$(TOPDIR)/utils/mksed <$$i.in >$$i; \
|
||||
done
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# install program & settings... #
|
||||
# Install program & settings... #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
install: install-dirs
|
||||
install: inst-message \
|
||||
inst-vboxdirs inst-vboxgetty inst-vboxd inst-vbox \
|
||||
inst-vboxcnvt inst-vboxctrl inst-vboxbeep inst-vboxmail \
|
||||
inst-vboxplay inst-vboxmsgs
|
||||
|
||||
inst-message: ignore
|
||||
@$(ECHO)
|
||||
@$(ECHO) "Installing vbox $(VBOX_VERSION) ($(VBOX_VERDATE))..."
|
||||
@$(ECHO)
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vboxgetty: ignore
|
||||
@$(ECHO) "Installing '$(sbindir)/vboxgetty'..."
|
||||
@$(INSTALL_SBIN) $(TOPDIR)/src/vboxgetty $(sbindir)/vboxgetty
|
||||
|
||||
@$(ECHO) "Installing '$(sysconfdir)/vboxgetty.conf.example'..."
|
||||
@$(INSTALL_SYSCONF) $(TOPDIR)/examples/vboxgetty.conf.example $(sysconfdir)
|
||||
|
||||
@$(ECHO) "Installing '$(bindir)/vboxconvert'..."
|
||||
@$(INSTALL_BIN) $(TOPDIR)/src/vboxconvert $(bindir)
|
||||
@cd $(bindir); \
|
||||
$(LN) -f vboxconvert vboxtoau; \
|
||||
$(LN) -f vboxconvert autovbox; \
|
||||
$(LN) -f vboxconvert vboxmode;
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vboxd: ignore
|
||||
@$(ECHO) "Installing '$(sbindir)/vboxd'..."
|
||||
@$(INSTALL_SBIN) $(TOPDIR)/src/vboxd $(sbindir)/vboxd
|
||||
|
||||
@$(ECHO) "Installing '$(sysconfdir)/vboxd.conf.example'..."
|
||||
@$(INSTALL_SYSCONF) $(TOPDIR)/examples/vboxd.conf.example $(sysconfdir)
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vboxcnvt: ignore
|
||||
@$(ECHO) "Installing '$(bindir)/vboxcnvt'..."
|
||||
@$(INSTALL_BIN) $(TOPDIR)/src/vboxconvert $(bindir)/vboxcnvt
|
||||
@cd $(bindir); \
|
||||
$(LN) -f vboxcnvt vboxtoau; \
|
||||
$(LN) -f vboxcnvt autovbox; \
|
||||
$(LN) -f vboxcnvt vboxmode;
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vboxctrl: ignore
|
||||
@$(ECHO) "Installing '$(bindir)/vboxctrl'..."
|
||||
@$(INSTALL_BIN) $(TOPDIR)/src/vboxctrl $(bindir)
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vboxbeep: ignore
|
||||
@$(ECHO) "Installing '$(bindir)/vboxbeep'..."
|
||||
@$(INSTALL_UBIN) $(TOPDIR)/src/vboxbeep $(bindir)
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vboxmail: ignore
|
||||
@$(ECHO) "Installing '$(bindir)/vboxmail'..."
|
||||
@$(INSTALL_SHBIN) $(TOPDIR)/utils/vboxmail $(bindir)
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vboxplay: ignore
|
||||
@$(ECHO) "Installing '$(bindir)/vboxplay'..."
|
||||
@$(INSTALL_SHBIN) $(TOPDIR)/utils/vboxplay $(bindir)
|
||||
|
||||
ifeq ($(ACTION_ON_VBOX),y)
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vbox: ignore
|
||||
ifeq ($(HAVE_NCURSES),y)
|
||||
@$(ECHO) "Installing '$(bindir)/vbox'..."
|
||||
@$(INSTALL_BIN) $(TOPDIR)/src/vbox $(bindir)
|
||||
endif
|
||||
|
||||
@set -e; for i in `echo $(CATALOGS)`; do \
|
||||
$(ECHO) "Installing '$(LOCALEDIR)/$$i/LC_MESSAGES/$(PACKAGE).mo'..."; \
|
||||
$(INSTALL_LOCALE) $(TOPDIR)/messages/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/$(PACKAGE).mo; \
|
||||
done
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
inst-vboxmsgs: ignore
|
||||
@set -e; \
|
||||
if [ "$(CATALOGS)" != "" ]; then \
|
||||
for i in $(CATALOGS); do \
|
||||
$(ECHO) "Installing '$(LOCALEDIR)/$$i/LC_MESSAGES/$(VBOX_PACKAGE).mo'..."; \
|
||||
$(INSTALL_LOCALE) $(TOPDIR)/messages/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/$(VBOX_PACKAGE).mo; \
|
||||
done; \
|
||||
fi
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Uninstall... #
|
||||
|
@ -214,8 +293,9 @@ MAKETHISDIRS = $(prefix) $(exec_prefix) $(sbindir) $(bindir) \
|
|||
$(sysconfdir) $(SPOOLDIR) $(LOGFILEDIR) $(PIDFILEDIR) \
|
||||
$(LCKFILEDIR)
|
||||
|
||||
install-dirs: ignore
|
||||
@set -e; for i in `echo $(MAKETHISDIRS)`; do \
|
||||
inst-vboxdirs: ignore
|
||||
@set -e; \
|
||||
for i in $(MAKETHISDIRS); do \
|
||||
$(ECHO) -n "Checking '$$i'... "; \
|
||||
if [ -d $$i ]; then \
|
||||
$(ECHO) "it's here."; \
|
||||
|
@ -224,15 +304,25 @@ install-dirs: ignore
|
|||
$(INSTALL_DIRS) $$i; \
|
||||
fi; \
|
||||
done
|
||||
@set -e; for i in `echo $(CATALOGS)`; do \
|
||||
$(ECHO) -n "Checking '$(LOCALEDIR)/$$i/LC_MESSAGES'... "; \
|
||||
if [ -d $(LOCALEDIR)/$$i/LC_MESSAGES ]; then \
|
||||
$(ECHO) "it's here."; \
|
||||
else \
|
||||
$(ECHO) "creating..."; \
|
||||
$(INSTALL_DIRS) $(LOCALEDIR)/$$i/LC_MESSAGES; \
|
||||
fi; \
|
||||
done
|
||||
@set -e; \
|
||||
if [ "$(CATALOGS)" != "" ]; then \
|
||||
for i in $(CATALOGS); do \
|
||||
$(ECHO) -n "Checking '$(LOCALEDIR)/$$i/LC_MESSAGES'... "; \
|
||||
if [ -d $(LOCALEDIR)/$$i/LC_MESSAGES ]; then \
|
||||
$(ECHO) "it's here."; \
|
||||
else \
|
||||
$(ECHO) "creating..."; \
|
||||
$(INSTALL_DIRS) $(LOCALEDIR)/$$i/LC_MESSAGES; \
|
||||
fi; \
|
||||
done; \
|
||||
fi
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Create sgml source... #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
create-de-sgml: ignore
|
||||
@$(TOPDIR)/utils/mksed <$(TOPDIR)/doc/de/vbox.sgml >$(TOPDIR)/vbox-de.sgml
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Create po und mo messages (only for development)... #
|
||||
|
@ -242,31 +332,47 @@ messages: ignore
|
|||
@$(TOPDIR)/utils/mkpos
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Create release version... #
|
||||
# Create documentation (only for development)... #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
release: distclean messages
|
||||
documents: ignore
|
||||
@$(TOPDIR)/utils/mkdoc
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Create release version (only for development)... #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
release: distclean messages documents
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Cleaning... #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
CLEANSUBDIRS = $(TOPDIR) $(TOPDIR)/src $(TOPDIR)/doc $(TOPDIR)/utils \
|
||||
$(TOPDIR)/examples $(TOPDIR)/messages \
|
||||
$(TOPDIR)/doc/de $(TOPDIR)/doc/de/html $(TOPDIR)/doc/txt
|
||||
|
||||
CLEANOBJS = $(TOPDIR)/src/vboxgetty $(TOPDIR)/src/vboxd \
|
||||
$(TOPDIR)/src/vboxconvert $(TOPDIR)/src/vboxbeep \
|
||||
$(TOPDIR)/src/vboxctrl $(TOPDIR)/src/vbox
|
||||
|
||||
DISTCLEANOBJS = $(SEDCONVERTOBJS) $(TOPDIR)/Makefile \
|
||||
$(TOPDIR)/src/Makefile $(TOPDIR)/src/config.h \
|
||||
$(TOPDIR)/.Config $(TOPDIR)/config.cache \
|
||||
$(TOPDIR)/config.log $(TOPDIR)/config.status
|
||||
|
||||
distclean: clean
|
||||
@$(RM) -f $(TOPDIR)/Makefile $(TOPDIR)/src/Makefile \
|
||||
$(TOPDIR)/src/config.h $(TOPDIR)/utils/vboxmail \
|
||||
$(TOPDIR)/utils/vboxplay $(TOPDIR)/.config \
|
||||
$(TOPDIR)/config.cache $(TOPDIR)/config.log \
|
||||
$(TOPDIR)/config.status
|
||||
@set -e; for i in $(DISTCLEANOBJS); do \
|
||||
$(RM) -f $$i; \
|
||||
done
|
||||
|
||||
clean: ignore
|
||||
@$(RM) -f $(TOPDIR)/*~ $(TOPDIR)/src/*~ $(TOPDIR)/doc/*~ \
|
||||
$(TOPDIR)/examples/*~ $(TOPDIR)/utils/*~ \
|
||||
$(TOPDIR)/messages/*~ $(TOPDIR)/messages/backup-* \
|
||||
$(TOPDIR)/src/*.[oas] $(TOPDIR)/src/vboxgetty \
|
||||
$(TOPDIR)/src/vbox $(TOPDIR)/src/vboxconvert \
|
||||
$(TOPDIR)/src/vboxctrl $(TOPDIR)/src/vboxbeep \
|
||||
$(TOPDIR)/doc/*.html $(TOPDIR)/doc/*.sgml \
|
||||
$(TOPDIR)/doc/*.txt
|
||||
@set -e; for i in $(CLEANSUBDIRS); do \
|
||||
$(RM) -f $$i/*~ $$i/*.[oas] $$i/backup-*; \
|
||||
done
|
||||
@set -e; for i in $(CLEANOBJS); do \
|
||||
$(RM) -f $$i; \
|
||||
done
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# For isdn4k-utils package compatibility... #
|
||||
|
|
18
vbox/TODO
18
vbox/TODO
|
@ -1,18 +0,0 @@
|
|||
|
||||
o Environment Variable VBOXSPOOL als Voreinstellungen für das Spoolverzeich-
|
||||
nis benutzen. vbox und vboxctrl werten diese dann aus.
|
||||
|
||||
|
||||
Erzeugen der locales:
|
||||
|
||||
localedef -i de_DE -f "ISO_8859-1,1987" de
|
||||
|
||||
Erzeugt z.B.:
|
||||
|
||||
$ ls -lF /usr/share/locale/de/
|
||||
|
||||
-rw-r--r-- 1 root root 29970 Mar 14 12:50 LC_COLLATE
|
||||
-rw-r--r-- 1 root root 10432 Mar 14 12:50 LC_CTYPE
|
||||
-rw-r--r-- 1 root root 94 Mar 14 12:50 LC_MONETARY
|
||||
-rw-r--r-- 1 root root 26 Mar 14 12:50 LC_NUMERIC
|
||||
-rw-r--r-- 1 root root 492 Mar 14 12:50 LC_TIME
|
|
@ -2280,12 +2280,37 @@ echo "$ac_t""${VBOX_LOCALE_DIR}" 1>&6
|
|||
|
||||
if (test "${ac_cv_prog_CC}" = "gcc")
|
||||
then
|
||||
if (test "${CFLAGS}" = "")
|
||||
if (test "${CFLAGS}" != "")
|
||||
then
|
||||
CFLAGS="-Wall -O2"
|
||||
FLAGOPMZ="no"
|
||||
FLAGWARN="no"
|
||||
|
||||
for i in ${CFLAGS}
|
||||
do
|
||||
case "$i" in
|
||||
|
||||
-O*) FLAGOPMZ="yes"
|
||||
;;
|
||||
-W*) FLAGWARN="yes"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if (test "${FLAGOPMZ}" = "no")
|
||||
then
|
||||
CFLAGS="-O2 ${CFLAGS}"
|
||||
fi
|
||||
|
||||
if (test "${FLAGWARN}" = "no")
|
||||
then
|
||||
CFLAGS="-Wall ${CFLAGS}"
|
||||
fi
|
||||
else
|
||||
CFLAGS="-Wall -O2 ${CFLAGS}"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
trap '' 1 2 15
|
||||
cat > confcache <<\EOF
|
||||
# This file is a shell script that caches the results of configure
|
||||
|
|
|
@ -213,17 +213,45 @@ AC_MSG_RESULT(${VBOX_LOCALE_DIR})
|
|||
AC_SUBST(VBOX_LOCALE_DIR)
|
||||
|
||||
dnl #------------------------------------------------------------------------#
|
||||
dnl # Creates output files: #
|
||||
dnl # Check and optimize compiler flags: #
|
||||
dnl #------------------------------------------------------------------------#
|
||||
|
||||
if (test "${ac_cv_prog_CC}" = "gcc")
|
||||
then
|
||||
if (test "${CFLAGS}" = "")
|
||||
if (test "${CFLAGS}" != "")
|
||||
then
|
||||
CFLAGS="-Wall -O2"
|
||||
FLAGOPMZ="no"
|
||||
FLAGWARN="no"
|
||||
|
||||
for i in ${CFLAGS}
|
||||
do
|
||||
case "$i" in
|
||||
|
||||
-O*) FLAGOPMZ="yes"
|
||||
;;
|
||||
-W*) FLAGWARN="yes"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if (test "${FLAGOPMZ}" = "no")
|
||||
then
|
||||
CFLAGS="-O2 ${CFLAGS}"
|
||||
fi
|
||||
|
||||
if (test "${FLAGWARN}" = "no")
|
||||
then
|
||||
CFLAGS="-Wall ${CFLAGS}"
|
||||
fi
|
||||
else
|
||||
CFLAGS="-Wall -O2 ${CFLAGS}"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl #------------------------------------------------------------------------#
|
||||
dnl # Creates output files: #
|
||||
dnl #------------------------------------------------------------------------#
|
||||
|
||||
AC_OUTPUT(Makefile src/Makefile)
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,38 +0,0 @@
|
|||
|
||||
Angabe der Zeitzonen
|
||||
====================
|
||||
|
||||
Ab v2.0 von vbox können die verschiedenen Zeitzonen (z.B. bei den Rings)
|
||||
auch mit einer Minutenangabe versehen werden.
|
||||
|
||||
Einzelne Zeitangaben werden durch Kommatas getrennt, Angaben von Start- und
|
||||
Endzeit durch ein Minuszeichen. Die Stundenangaben müssen im 24-Stunden-
|
||||
Format - also von 0 Uhr bis 23 Uhr - gemacht werden.
|
||||
|
||||
Die Zeitangaben werden intern immer in Start- und Endzeit umgerechnet, auch
|
||||
dann, wenn nur eine Startzeit angegeben ist.
|
||||
|
||||
Nehmen wir zum Beispiel folgende Zeitangaben:
|
||||
|
||||
20:15-21:14
|
||||
|
||||
Diese Zeit wird intern in 20:15:00-21:14:59 umgerechnet, d.h. Start- und
|
||||
Endzeit sind *inklusive*!
|
||||
|
||||
Wenn bei einer Zeitangabe keine Minuten angebenen sind, wird bei der
|
||||
Startzeit 0 Minuten und bei der Endzeit 59 Minuten benutzt. Intern werden
|
||||
die Sekunden - die nicht einstellbar sind - nach dem gleichen Schema
|
||||
behandelt.
|
||||
|
||||
Beispiele:
|
||||
|
||||
20 - Umrechnung nach 20:00:00-20:59:59
|
||||
20:15-21:14 - Umrechnung nach 20:15:00-21:14:59
|
||||
08-11 - Umrechnung nach 08:00:00-11:59:59
|
||||
12-15:30 - Umrechnung nach 12:00:00-15:30:59
|
||||
|
||||
Eine Zeitzone zählt als zutreffend (match) wenn die aktuelle Zeit
|
||||
größer/gleich der Startzeit *und* kleiner/gleich der Endzeit ist.
|
||||
|
||||
Ein '*' als *einzige* Zeitangabe wird als *immer* behandelt, ein '-' oder
|
||||
'!' als *einzige* Zeitangabe als *nie*.
|
|
@ -1,830 +0,0 @@
|
|||
<!doctype linuxdoc system>
|
||||
|
||||
<article>
|
||||
|
||||
<!-- *********************************************************************
|
||||
** **
|
||||
** T I T E L **
|
||||
** **
|
||||
********************************************************************* -->
|
||||
|
||||
<title>V B O X
|
||||
<author>Michael 'Ghandi' Herold, <tt>michael@abadonna.franken.de</tt>
|
||||
<date>Version @VBOX_VERSION@, @VBOX_VERDATE@
|
||||
<abstract>
|
||||
Diese Dokumentation beschreibt die Konfiguration von <em>vbox
|
||||
v@VBOX_VERSION@</em>, einem Softwarepaket zum Betrieb eines
|
||||
Anrufbeantworters unter <em>Linux</em>.
|
||||
</abstract>
|
||||
|
||||
<!-- *********************************************************************
|
||||
** **
|
||||
** I N H A L T S V E R Z E I C H N I S **
|
||||
** **
|
||||
********************************************************************* -->
|
||||
|
||||
<toc>
|
||||
<p>
|
||||
|
||||
Testpassagen die mit ***NEW*** versehen sind, wurden geändert oder der
|
||||
Dokumentation neu hinzugefügt. Es ist ratsam, diese Abschnitte nochmals zu
|
||||
lesen!
|
||||
|
||||
<!-- *********************************************************************
|
||||
** **
|
||||
** C O P Y R I G H T **
|
||||
** **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect>Copyright<label id="id-copyright">
|
||||
<p>
|
||||
|
||||
Copyright © 1996,1997 Michael 'Ghandi' Herold
|
||||
|
||||
Das Paket <em>vbox</em> ist freie Software und kann unter den Bedingungen
|
||||
der <em>GNU General Public License</em> veröffentlicht oder verändert
|
||||
werden.
|
||||
|
||||
Die Dokumentation sowie alle Programme von <em>vbox</em> wurden mit großer
|
||||
Sorgfalt erstellt. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem
|
||||
Grund sind die in der vorliegenden Dokumentation enthaltenen Angaben mit
|
||||
keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Sowohl Michael
|
||||
Herold als auch die in Kapitel <ref id="id-danksagungen"
|
||||
name="Danksagungen"> genannten Personen übernehmen keine Verantwortung oder
|
||||
sonstige Haftung für Schäden, die auf irgendeine Art aus der Benutzung der
|
||||
Dokumentation oder den darin beschriebenen Programmen entstehen oder
|
||||
entstanden sind.
|
||||
|
||||
<!-- *********************************************************************
|
||||
** **
|
||||
** V O R W O R T **
|
||||
** **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect>Vorwort<label id="id-vorwort">
|
||||
<p>
|
||||
|
||||
<!-- *********************************************************************
|
||||
** Vorwort: Was ist vbox? **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect1>Was ist vbox?<label id="id-vorwort-wasistvbox">
|
||||
<p>
|
||||
|
||||
<em>vbox</em> ist ein Softwarepaket zum Betrieb eines Anrufbeantworters
|
||||
unter Linux.
|
||||
|
||||
Es wurde speziell für <em>isdn4linux</em> geschrieben und ist nicht für
|
||||
normale Modems geeignet. Mit <em>vbox</em> können keine Fax- oder
|
||||
Datenanrufe erkannt, entgegengenommen oder umgeleitet werden. Wer so etwas
|
||||
benötigt, dem kann ich nur <em>mgetty</em>, bzw. <em>vgetty</em> ans Herz
|
||||
legen.
|
||||
|
||||
<!-- *********************************************************************
|
||||
** Vorwort: Was brauche ich für vbox? **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect1>Was brauche ich für vbox?<label id="id-vorwort-wasbraucheich">
|
||||
<p>
|
||||
|
||||
Zum kompilieren von <em>vbox</em> werden folgende Dinge benötigt:
|
||||
|
||||
<itemize>
|
||||
<item>Einen Kernel mit <tt>ISDN</tt> und <tt>AUDIO</tt> Unterstützung,
|
||||
<item><em>gcc</em> 2.7.0 (oder höher),
|
||||
<item><em>ncurses</em> 1.9.9e (oder höher),
|
||||
<item><em>tcl</em> 7.6b1 (oder höher),
|
||||
<item>und optional die <em>pvftools</em> aus dem <em>mgetty</em> Paket.
|
||||
</itemize>
|
||||
|
||||
Entwickelt wurde <em>vbox</em> mit:
|
||||
|
||||
<itemize>
|
||||
<item>Kernel 2.0.23,
|
||||
<item><em>gcc</em> 2.7.2.1,
|
||||
<item><em>ncurses</em> 1.9.9g,
|
||||
<item><em>tcl</em> 7.6b1.
|
||||
</itemize>
|
||||
|
||||
Die mit <em>vbox</em> aufgezeichneten Sprachdateien können mit den in
|
||||
<em>mgetty</em> enthaltenen <em>pvftools</em> abgespielt oder konvertiert
|
||||
werden. Für die Aufzeichnungsformate <tt>ULAW</tt> und <tt>ALAW</tt> liegen
|
||||
Programme zum Abspielen nach '<tt>/dev/audio</tt>' bei.
|
||||
|
||||
Die <em>pfvtools</em> sind <bf>nicht</bf> im Paket von <em>vbox</em>
|
||||
enthalten; sie sind Bestandteil von <em>mgetty</em> und können unter <url
|
||||
url="ftp://ftp.leo.org/pub/comp/networking/communication/modem/mgetty/">
|
||||
bezogen werden.
|
||||
|
||||
<!-- *********************************************************************
|
||||
** Vorwort: Anregungen und Fehlermeldungen **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect1>Anregungen und Fehlermeldungen<label id="id-vorwort-report">
|
||||
<p>
|
||||
|
||||
Für Fragen, Probleme oder Anregungen zu <bf><em>vbox</em></bf> wurde eine
|
||||
eigene Mailingliste eingerichtet.
|
||||
|
||||
Um in die Mailingliste aufgenommen zu werden, muß eine E-Mail an
|
||||
|
||||
<verb>
|
||||
majordomo@abadonna.franken.de
|
||||
</verb>
|
||||
|
||||
geschrieben werden. Der Nachrichtentext muß die Zeile
|
||||
|
||||
<verb>
|
||||
subscribe vbox <die eigene email adresse>
|
||||
</verb>
|
||||
|
||||
enthalten.
|
||||
|
||||
Bei einer Mitteilung über einen Fehler bitte <bf>immer</bf> eine möglichst
|
||||
genaue Beschreibung (am besten reproduzierbar) <bf>und</bf> den
|
||||
entsprechenden Auszug aus den Logdateien beifügen.
|
||||
|
||||
<!-- *********************************************************************
|
||||
** **
|
||||
** K O N F I G U R A T I O N **
|
||||
** **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect>Konfiguration<label id="id-setup">
|
||||
<p>
|
||||
|
||||
<!-- *********************************************************************
|
||||
** Konfiguration: Einrichten eines neuen Anrufbeantworters **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect1>Einrichten eines neuen Anrufbeantworters<label id="id-setup-new">
|
||||
<p>
|
||||
|
||||
Für jeden Benutzer dem ein Anrufbeantworter installiert werden soll, muß im
|
||||
<tt>SPOOLVERZEICHNIS</tt> ein Unterverzeichnis mit seinem Namen angelegt
|
||||
werden.
|
||||
|
||||
<bf>Beispiel eines <tt>SPOOLVERZEICHNISSES</tt>:</bf>
|
||||
|
||||
<verb>
|
||||
/var/spool/vbox:
|
||||
|
||||
drwx------ 4 michael users 1024 Jan 2 18:46 michael/
|
||||
drwx------ 2 nicole users 1024 Jan 4 13:14 nicole/
|
||||
</verb>
|
||||
|
||||
In diesem Verzeichnis <bf>muß</bf> sich die Konfigurationsdatei vboxrc
|
||||
befinden. Ein Beispiel dieser Datei befindet sich im Verzeichnis
|
||||
'<tt>examples</tt>' unter dem Namen '<tt>vboxrc.example</tt>'.
|
||||
|
||||
Ab Version 2.0.0 benötigt <em>vbox</em> ein Tcl-Skript, das angibt wo, wann
|
||||
und wie ein- und ausgehende Nachrichten gespielt bzw. gespeichert werden
|
||||
sollen. Auch hierzu befinden sich im Verzeichnis '<tt>examples</tt>' unter
|
||||
dem Namen '<tt>standard.tcl.example</tt>' ein Beispiel.
|
||||
|
||||
<bf>Beispiel eines fertigen Verzeichnisses für einen Benutzer:</bf>
|
||||
|
||||
<verb>
|
||||
/var/spool/vbox/michael:
|
||||
|
||||
michael/
|
||||
|-- incoming/
|
||||
|-- messages/
|
||||
| |-- beep.msg
|
||||
| |-- standard.msg
|
||||
| +-- timeout.msg
|
||||
|-- standard.tcl
|
||||
+-- vboxrc
|
||||
</verb>
|
||||
|
||||
Alle Datei- und Verzeichnisrechte sollten so angepasst werden, daß der
|
||||
jeweilige Benutzer (bzw. die Gruppe) auf diese zugreifen kann! Die Datei
|
||||
'<tt>vboxrc</tt>' sollte vor dem ersten Start noch vom Benutzer an seine
|
||||
eigenen Bedürfnisse angepasst werden!
|
||||
|
||||
Zum Schluß muß nur noch der <em>vboxgetty</em> eingestellt und gestartet
|
||||
werden...
|
||||
|
||||
<!-- *********************************************************************
|
||||
** Konfiguration: Die Datei 'vboxgetty.conf' **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect1>Die Datei 'vboxgetty.conf'<label id="id-setup-vboxgettyconf">
|
||||
<p>
|
||||
|
||||
Mit dieser Datei kann der <em>vboxgetty</em> eingestellt und konfiguriert
|
||||
werden. Die Datei <bf>muß</bf> existieren!
|
||||
|
||||
Leere Zeilen und solche die mit einem '<tt>#</tt>' beginnen werden
|
||||
überlesen. Text nach einem '<tt>#</tt>' wird entfernt (incl. '<tt>#</tt>'
|
||||
und allen vorangegangenen Whitespaces). Die Datei wird ständig im Speicher
|
||||
gehalten und automatisch neu geladen, wenn etwas an ihr geändert wurde!
|
||||
|
||||
Alles vor dem ersten <tt>PORT</tt> Kommando zählt als globale Einstellung
|
||||
und gilt für alle Ports. Alle Argumente müssen durch ein Leerzeichen oder
|
||||
einen Tabulator vom Kommando getrennt werden.
|
||||
|
||||
Folgende Kommandos können angegeben werden:
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag/<tt>PORT [DEVICENAME]</tt>/
|
||||
<p>
|
||||
|
||||
Name des Modemdevices für welches die nachfolgenden Einstellungen gelten
|
||||
sollen. Es muß der komplette Pfad zum Device angegeben werden!
|
||||
|
||||
<bf>Beispiel:</bf> <tt>PORT /dev/ttyI7</tt>
|
||||
|
||||
<tag/<tt>DROPDTRONHANGUP [YES|NO]</tt>/
|
||||
<p>
|
||||
|
||||
Gibt an ob die <tt>DATA TERMINAL READY</tt> Leitung beim Auflegen auf
|
||||
<tt>LOW</tt> gesetzt werden soll. Voreinstellung ist <tt>YES</tt>.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>DROPDTRONHANGUP YES</tt>
|
||||
|
||||
<tag/<tt>DROPDTRTIME [MS]</tt>/
|
||||
<p>
|
||||
|
||||
Gibt an wieviele Millisekunden die <tt>DATA TERMINAL READY</tt> Leitung
|
||||
beim Auflegen auf <tt>LOW</tt> gehalten werden soll. Voreinstellung ist
|
||||
<tt>800</tt>ms.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>DROPDTRTIME 800</tt>
|
||||
|
||||
<tag/<tt>ALIVETIMEOUT [SEKUNDEN]</tt>/
|
||||
<p>
|
||||
|
||||
Gibt an nach wievielen Sekunden 'nichtstun' überprüft werden soll ob das
|
||||
Modem noch auf Kommandos reagiert. Voreinstellung ist <tt>1800</tt>
|
||||
Sekunden.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>ALIVETIMEOUT 1800</tt>
|
||||
|
||||
<tag/<tt>RINGTIMEOUT [SEKUNDEN]</tt>/
|
||||
<p>
|
||||
|
||||
Gibt an wieviele Sekunden auf einen <bf>einzelnen</bf> <tt>RING</tt>
|
||||
gewartet werden soll. Konnte in dieser Zeit kein <tt>RING</tt> vom Modem
|
||||
gelesen werden, wird die Verbindung beendet. Voreinstellung ist
|
||||
<tt>5</tt> Sekunden.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>RINGTIMEOUT 5</tt>
|
||||
|
||||
<tag/<tt>ECHOTIMEOUT [SEKUNDEN]</tt>/
|
||||
<p>
|
||||
|
||||
Gibt an wieviele Sekunden auf das Echo eines Modemkommandos gewartet
|
||||
werden soll, bevor dieses als Fehler gewertet wird. Voreinstellung ist
|
||||
<tt>2</tt> Sekunden.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>ECHOTIMEOUT 2</tt>
|
||||
|
||||
<tag/<tt>COMMANDTIMEOUT [SEKUNDEN]</tt>/
|
||||
<p>
|
||||
|
||||
Gibt an wieviele Sekunden auf die Antwort eines Modemkommandos gewartet
|
||||
werden soll, bevor dieses als Fehler gewertet wird. Voreinstellung ist
|
||||
<tt>2</tt> Sekunden.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>COMMANDTIMEOUT 2</tt>
|
||||
|
||||
<tag/<tt>BADINITSEXIT [SEKUNDEN]</tt>/
|
||||
<p>
|
||||
|
||||
Gibt an nach wievielen Fehlerhaften Initialisierungen des Modems der
|
||||
<em>vboxgetty</em> beendet werden soll. Eine Angabe von 0 schaltet dieses
|
||||
Feature aus. Voreinstellung ist <tt>0</tt>.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>BADINITSEXIST 0</tt>
|
||||
|
||||
<tag/<tt>USER [BENUTZERNAME]</tt>/
|
||||
<p>
|
||||
|
||||
Name des Benutzers für den der <em>vboxgetty</em> laufen soll. Der
|
||||
Benutzer muß existieren und in der '<tt>/etc/passwd</tt>' eingetragen
|
||||
sein. Zudem muß im <tt>SPOOLVERZEICHNIS</tt> ein Unterverzeichnis mit dem
|
||||
Namen des Benutzers existieren, in dem sich auch die Datei 'vboxrc'
|
||||
befinden muß! Der Name des Benutzers mit der <tt>UID</tt> 0 darf
|
||||
<bf>nicht</bf> angegeben werden! Voreinstellung ist der Name des
|
||||
Benutzers mit der <tt>UID</tt> 0
|
||||
:-)
|
||||
|
||||
<bf>Beispiel:</bf> <tt>USER MICHAEL</tt>
|
||||
|
||||
<tag/<tt>GROUP [GRUPPENNAME]</tt>/
|
||||
<p>
|
||||
|
||||
Name der Gruppe unter der <em>vboxgetty</em> laufen soll. Wird dieses
|
||||
Kommando nicht angegeben, benutzt <em>vboxgetty</em> die <tt>GID</tt> des
|
||||
jeweiligen Benutzers. Die Schreib-/Leserechte werden dann nur für
|
||||
<em>user</em> (u+rw oder u+rwx) gesetzt. Wenn hingegen die Gruppe auch
|
||||
angegeben wurde, werde zusätzlich noch die Schreib-/Leserechte für die
|
||||
<em>group</em> gesetzt (g+rw oder g+rwx). In der Voreinstellung ist
|
||||
<tt>GROUP</tt> nicht angegeben.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>GROUP VBOXES</tt>
|
||||
|
||||
<tag/<tt>MODEMSPEED [GESCHWINDIGKEIT]</tt>/
|
||||
<p>
|
||||
|
||||
Geschwindigkeit mit der das Modem angesprochen werden soll. Der hier
|
||||
angegebene Wert hat keinen Einfluß! Voreinstellung ist <tt>38400</tt>.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>MODEMSPEED 38400</tt>
|
||||
|
||||
<tag/<tt>INITPAUSE [MS]</tt>/
|
||||
<p>
|
||||
|
||||
Gibt an wieviele Millisekunden vor der Initialisierung des Modems
|
||||
gewartet werden soll. Das Modem meldet beim Auflegen erst mit einer
|
||||
kleinen Zeitverzögerung ein <tt>NO CARRIER</tt>. Damit dieses nicht als
|
||||
neue Modemdaten gewertet wird, kann vor dem initialisieren mit diesem
|
||||
Kommando eine kleine Pause eingelegt werden. Voreinstellung ist
|
||||
<tt>1500</tt>ms.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>INITPAUSE 1500</tt>
|
||||
|
||||
<tag/<tt>MODEMINIT [KOMMANDO]</tt>/
|
||||
<p>
|
||||
|
||||
Kommando mit dem das Modem initialisiert wird. Hier <bf>muß</bf> mit
|
||||
<tt>&E</tt> die <tt>MSN</tt> angegeben werden, auf die der
|
||||
<em>vboxgetty</em> reagieren soll. Das Kommando muß den String
|
||||
<tt>OK</tt> zurückgeben. Voreinstellung ist <tt>ATZ</tt>.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>MODEMINIT ATZ&B512&E332332</tt>
|
||||
|
||||
<tag/<tt>MODEMHANGUP [KOMMANDO]</tt>/
|
||||
<p>
|
||||
|
||||
Kommando mit dem das Modem aufgelegt werden soll. Das Kommando muß den
|
||||
String <tt>OK</tt> zurückgeben. Voreinstellung ist
|
||||
<tt>˜˜+++˜˜ATH0</tt>.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>MODEMINIT ˜˜+++˜˜ATH0</tt>
|
||||
|
||||
<tag/<tt>COMPRESSION [KOMPRESSION]</tt>/
|
||||
<p>
|
||||
|
||||
Kompression mit der neue Nachrichten aufgezeichnet werden sollen. Folgende Werte
|
||||
können angegeben werden:
|
||||
|
||||
<itemize>
|
||||
<item><tt>ADPCM-2</tt>
|
||||
<item><tt>ADPCM-3</tt>
|
||||
<item><tt>ADPCM-4</tt>
|
||||
<item><tt>ALAW</tt>
|
||||
<item><tt>ULAW</tt>
|
||||
</itemize>
|
||||
|
||||
Voreinstellung ist <tt>ADPCM-4</tt>.
|
||||
|
||||
<bf>Beispiel:</bf> <tt>COMPRESSION ADPCM-4</tt>
|
||||
|
||||
</descrip>
|
||||
|
||||
Beim Start öffnet <em>vboxgetty</em> den Modemport, erzeugt die Log- und
|
||||
Lockdateien und setzte dann sofort die Rechte auf die in <tt>USER</tt> und
|
||||
<tt>GROUP</tt> angegebenen Werte. Aus diesem Grund können Lockdateien nach
|
||||
dem Beenden <bf>nicht</bf> mehr gelöscht werden! Alle weiteren Programme und
|
||||
Skripts werden unter den Rechten des jeweiligen Benutzers ausgeführt!
|
||||
|
||||
<bf>Beispiel '<tt>/usr/local/vbox/etc/vboxgetty.conf</tt>':</bf>
|
||||
|
||||
<verb>
|
||||
#--------------------------------------------------------------------------
|
||||
# This is a example for 'vboxgetty.conf'. Please read the documentation for
|
||||
# a complete description of the commands!
|
||||
#--------------------------------------------------------------------------
|
||||
|
||||
# Global settings
|
||||
|
||||
dropdtronhangup no
|
||||
modemspeed 19200
|
||||
compression 6
|
||||
|
||||
# Settings for port ttyI5
|
||||
|
||||
port /dev/ttyI5
|
||||
dropdtronhangup no
|
||||
dropdtrtime 1000
|
||||
initpause 2500
|
||||
modeminit ATZ&B512&E0190332332
|
||||
modemhangup ˜˜+++˜˜ATH
|
||||
modemspeed 57600
|
||||
user peter
|
||||
group lustig
|
||||
badinitsexit 999
|
||||
commandtimeout 5
|
||||
echotimeout 10
|
||||
ringtimeout 15
|
||||
alivetimeout 3000
|
||||
compression blub
|
||||
|
||||
# Settings for port ttyI7
|
||||
|
||||
port /dev/ttyI7
|
||||
dropdtronhangup yes
|
||||
dropdtrtime 400
|
||||
initpause 2500
|
||||
modeminit ATZ&B512&E7850414
|
||||
modemhangup ˜˜+++˜˜ATH
|
||||
modemspeed 38400
|
||||
user michael
|
||||
badinitsexit 10
|
||||
commandtimeout 2
|
||||
echotimeout 2
|
||||
ringtimeout 5
|
||||
alivetimeout 300
|
||||
compression adpcm-4
|
||||
</verb>
|
||||
|
||||
<!-- *********************************************************************
|
||||
** Konfiguration: Die Datei 'vboxrc' **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect1>Die Datei 'vboxrc'<label id="id-setup-vboxrc">
|
||||
<p>
|
||||
|
||||
In jedem Benutzerverzeichnis (Unterverzeichnis im <tt>SPOOLVERZEICHNIS</tt>)
|
||||
<bf>muß</bf> sich die Datei '<tt>vboxrc</tt>' befinden, in welcher der
|
||||
Benutzer seine eigenen Einstellungen vornehmen kann.
|
||||
|
||||
Leere Zeilen und solche die mit einem '<tt>#</tt>' beginnen werden
|
||||
überlesen. Text nach einem '<tt>#</tt>' wird entfernt (incl. '<tt>#</tt>'
|
||||
und allen vorangegangenen Whitespaces). Die Datei wird ständig im Speicher
|
||||
gehalten und automatisch neu geladen, wenn etwas an ihr geändert wurde!
|
||||
|
||||
Die Datei ist in verschiedene Sektionen aufgeteilt. Eine Sektion beginnt mit
|
||||
dem Sektionsnamen und Endet beim nächsten Sektionsnamen oder dem Ende der
|
||||
Datei. Jeder Sektionsname beginnt mit einem '<tt>[</tt>' und endet mit einem
|
||||
'<tt>]</tt>'. Die Groß- und Kleinschreibung zwischen den Sektionskennungen
|
||||
'<tt>[</tt>' und '<tt>]</tt>' wird ignoriert.
|
||||
|
||||
Folgende Sektionen existieren:
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag/<tt>[CALLERIDS]</tt>/
|
||||
<p>
|
||||
|
||||
<bf>Format:</bf> <tt>CALLERID-PATTERN USERSECTION REALNAME</tt>
|
||||
|
||||
In dieser Sektion werden die <tt>CALLERID</tt>'s ihren Besitzern
|
||||
zugeordnet. Die <tt>CALLERID</tt> wird bei ISDN-Geräten - sofern nicht
|
||||
abgeschaltet - mit übermittelt und dient zum Idendifizieren des Anrufers.
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag/<tt>CALLERID-PATTERN</tt>/
|
||||
<p>
|
||||
|
||||
<tt>CALLERID</tt> für die ein Zuordnung definiert werden soll (ohne
|
||||
führende Nullen). Es können hier die üblichen UN*X-Pattern angegeben
|
||||
werden. Bei der ersten Übereinstimmung eines Musters mit der
|
||||
<tt>CALLERID</tt> wird abgebrochen. Konnte der <tt>CALLERID</tt> kein
|
||||
Name zugeordnet werden, wird als <tt>USERSECTION</tt>
|
||||
<tt>STANDARD</tt> benutzt! In der <tt>CALLERID</tt> dürfen
|
||||
<bf>keine</bf> Leerzeichen oder Tabulatoren (Whitespaces) enthalten
|
||||
sein!
|
||||
|
||||
<tag/<tt>USERSECTION</tt>/
|
||||
<p>
|
||||
|
||||
Hier kann angegeben werden, welche <tt>USERSECTION</tt> als
|
||||
Einstellung für den Anrufer benutzt werden soll. Ein '<tt>*</tt>' gibt
|
||||
an, daß der <tt>REALNAME</tt> als Sektionsname verwendet werden soll.
|
||||
Bei einem '<tt>-</tt>' wird <tt>STANDARD</tt> als Sektionsname
|
||||
benutzt. Im Namen der <tt>USERSECTION</tt> dürfen keine Leerzeichen
|
||||
oder Tabulatoren (Whitespaces) enthalten sein!
|
||||
|
||||
<tag/<tt>REALNAME</tt>/
|
||||
<p>
|
||||
|
||||
Name, der dieser <tt>CALLERID</tt> zugeordnet werden soll. Der
|
||||
<tt>REALNAME</tt> darf Leerzeichen enthalten. Er wird z.B. von
|
||||
<em>vbox</em> benutzt, um anzuzeigen, wer angerufen hat.
|
||||
|
||||
</descrip>
|
||||
|
||||
Als letzter Eintrag sollte immer '<tt>* - *** Unknown ***</tt>' angegeben
|
||||
werden.
|
||||
|
||||
<bf>Beispiel:</bf>
|
||||
|
||||
<verb>
|
||||
[CALLERIDS]
|
||||
|
||||
931785041[3-4] HE_I_KNOW_YOU Michael Herold
|
||||
9317851144 HE_I_KNOW_YOU Nicole Sauvage
|
||||
* - *** Unknown ***
|
||||
</verb>
|
||||
|
||||
|
||||
<tag/<tt>[DEBUG]</tt>/
|
||||
<p>
|
||||
|
||||
<bf>Format:</bf> <tt>FLAG + FLAG + FLAG ...</tt>
|
||||
|
||||
In dieser Sektion können Flag's angegeben werden, die bestimmen, welche
|
||||
Informationen in die Logdatei von <em>vboxgetty</em> aufgenommen werden
|
||||
sollen.
|
||||
|
||||
Folgende Flag's können angegeben werden:
|
||||
|
||||
<itemize>
|
||||
|
||||
<item><tt>FATAL</tt>
|
||||
<p>
|
||||
Fatale Fehler
|
||||
|
||||
<item><tt>ERRORS</tt>
|
||||
<p>
|
||||
Normal Fehler
|
||||
|
||||
<item><tt>WARNINGS</tt>
|
||||
<p>
|
||||
Warnungen
|
||||
|
||||
<item><tt>INFOS</tt>
|
||||
<p>
|
||||
Informationen
|
||||
|
||||
<item><tt>DEBUG</tt>
|
||||
<p>
|
||||
Informationen zum Debuggen
|
||||
|
||||
<item><tt>JUNK</tt>
|
||||
<p>
|
||||
Erweiterte Informationen zum Debuggen
|
||||
|
||||
</itemize>
|
||||
|
||||
<bf>Beispiel:</bf> <tt>FATAL + ERRORS + WARNINGS + INFOS</tt>
|
||||
|
||||
|
||||
<tag/<tt>[RINGS]</tt>/
|
||||
<p>
|
||||
|
||||
<bf>Format:</bf> <tt>ZEIT WOCHENTAG RINGS</tt>
|
||||
|
||||
Hier kann angegeben werden, zu welcher Zeit an welchem Tag nach wievielen
|
||||
<tt>RING</tt>'s ein eingehender Anruf entgegengenommen werden soll.
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag/<tt>ZEIT</tt>/
|
||||
<p>
|
||||
|
||||
Eine oder mehrere Zeitzonen; Die Zeitangaben können durch Kommata
|
||||
voneinander getrennt werden. Bei einer Zeitzone von
|
||||
'<tt>STARTZEIT</tt>-<tt>ENDZEIT</tt>' ist die letzte Zahl inklusiv
|
||||
(z.B. <tt>18-22</tt> heißt von 18 bis einschließlich 22 Uhr).
|
||||
|
||||
<tag/<tt>WOCHENTAG</tt>/
|
||||
<p>
|
||||
|
||||
Ein oder mehrere Wochentage; Die Tage können durch Kommata voneinander
|
||||
getrennt werden. Tageszonen (<tt>STARTZEIT</tt>-<tt>ENDZEIT</tt>)
|
||||
können hier <bf>nicht</bf> angegeben werden. Jeder Wochentag an dem
|
||||
ein Anruf entgegengenommen werden soll muß einzeln aufgeführt werden.
|
||||
|
||||
Folgende Wochentagsangaben sind möglich:
|
||||
|
||||
<itemize>
|
||||
|
||||
<item><tt>SO</tt>, <tt>SUN</tt> - Sonntag
|
||||
<item><tt>MO</tt>, <tt>MON</tt> - Montag
|
||||
<item><tt>DI</tt>, <tt>TUE</tt> - Dienstag
|
||||
<item><tt>MI</tt>, <tt>WED</tt> - Mittwoch
|
||||
<item><tt>DO</tt>, <tt>THU</tt> - Donnerstag
|
||||
<item><tt>FR</tt>, <tt>FRI</tt> - Freitag
|
||||
<item><tt>SA</tt>, <tt>SAT</tt> - Samstag
|
||||
|
||||
</itemize>
|
||||
|
||||
<tag/<tt>RINGS</tt>/
|
||||
<p>
|
||||
|
||||
Anzahl der <tt>RING</tt>'s bis ein Anruf entgegengenommen wird. Eine
|
||||
Anzahl von 0 <tt>RING</tt>'s heißt, daß der Anruf nicht
|
||||
entgegengenommen werden soll.
|
||||
|
||||
</descrip>
|
||||
|
||||
<bf>Beispiel:</bf>
|
||||
|
||||
<verb>
|
||||
0-8 MO,DI,MI,DO,FR 5
|
||||
0-11 SA,SO 5
|
||||
* * 30
|
||||
</verb>
|
||||
|
||||
Im oben angegebenen Beispiel würde <em>vboxgetty</em> von Montag bis
|
||||
Freitag zwischen 0 und 8 Uhr und von Samstag bis Sontag zwischen 0 und 11
|
||||
Uhr Anrufe nach 5 <tt>RING</tt>'s entgegennehmen. An allen anderen Tagen
|
||||
erst nach 30 <tt>RING</tt>'s.
|
||||
|
||||
Die <bf>erste</bf> Übereinstimming wird benutzt.
|
||||
|
||||
|
||||
<tag/<tt>Benutzersektionen</tt>/
|
||||
<p>
|
||||
|
||||
<bf>Format:</bf> <tt>ZEIT WOCHENTAG ANSAGE AUFNAHMEZEIT [FLAGS]</tt>
|
||||
|
||||
Eine Benutzersektion (<tt>USERSECTION</tt>) kann frei benannt werden;
|
||||
einzige Ausnahme sind Namen von bereits existierenden Sektionen.
|
||||
|
||||
Mit diesen Sektionen können für bestimmte Anrufer, die in der Sektion
|
||||
<tt>[CALLERIDS]</tt> definiert wurden, eigene Einstellungen gemacht
|
||||
werden. Es sollte immer eine Sektion <tt>[STANDARD]</tt> existieren, da
|
||||
diese als Voreinstellung bei Fehlern benutzt wird!
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag/<tt>ZEIT</tt>/
|
||||
<p>
|
||||
|
||||
Eine oder mehrere Zeitzonen; Die Zeitangaben können durch Kommata
|
||||
voneinander getrennt werden. Bei einer Zeitzone von
|
||||
'<tt>STARTZEIT</tt>-<tt>ENDZEIT</tt>' ist die letzte Zahl inklusiv
|
||||
(z.B. <tt>18-22</tt> heißt von 18 bis einschließlich 22 Uhr).
|
||||
|
||||
<tag/<tt>WOCHENTAG</tt>/
|
||||
<p>
|
||||
|
||||
Ein oder mehrere Wochentage; Die Tage können durch Kommata voneinander
|
||||
getrennt werden. Tageszonen (<tt>STARTZEIT</tt>-<tt>ENDZEIT</tt>)
|
||||
können hier <bf>nicht</bf> angegeben werden. Jeder Wochentag an dem
|
||||
ein Anruf entgegengenommen werden soll muß einzeln aufgeführt werden.
|
||||
|
||||
Folgende Wochentagsangaben sind möglich:
|
||||
|
||||
<itemize>
|
||||
<item><tt>SO</tt>, <tt>SUN</tt> - Sonntag
|
||||
<item><tt>MO</tt>, <tt>MON</tt> - Montag
|
||||
<item><tt>DI</tt>, <tt>TUE</tt> - Dienstag
|
||||
<item><tt>MI</tt>, <tt>WED</tt> - Mittwoch
|
||||
<item><tt>DO</tt>, <tt>THU</tt> - Donnerstag
|
||||
<item><tt>FR</tt>, <tt>FRI</tt> - Freitag
|
||||
<item><tt>SA</tt>, <tt>SAT</tt> - Samstag
|
||||
</itemize>
|
||||
|
||||
<tag/<tt>ANSAGE</tt>/
|
||||
<p>
|
||||
|
||||
Ansagetext der gespielt werden soll. Wenn kein Verzeichnispfad mit
|
||||
angegeben wurde, wird '<tt>BENUTZERVERZEICHNIS/messages/</tt>'
|
||||
benutzt.
|
||||
|
||||
<tag/<tt>AUFNAHMEZEIT</tt>/
|
||||
<p>
|
||||
|
||||
Maximale Aufzeichnungszeit in Sekunden.
|
||||
|
||||
<tag/<tt>FLAGS</tt>/
|
||||
<p>
|
||||
|
||||
<descrip>
|
||||
|
||||
<tag/<tt>NOANSWER</tt>/
|
||||
<p>
|
||||
|
||||
Der Anruf wird nicht beantwortet.
|
||||
|
||||
<tag/<tt>NORECORD</tt>/
|
||||
<p>
|
||||
|
||||
Es wird keine Nachricht aufgezeichnet.
|
||||
|
||||
<tag/<tt>NOTIMEOUTMSG</tt>/
|
||||
<p>
|
||||
|
||||
Bei einem Timeout wird die entsprechende Nachricht nicht gespielt.
|
||||
|
||||
<tag/<tt>NOBEEPMSG</tt>/
|
||||
<p>
|
||||
|
||||
Der BEEP wird nicht gespielt.
|
||||
|
||||
<tag/<tt>NOSTDMSG</tt>/
|
||||
<p>
|
||||
|
||||
Die normale Ansage wird nicht gespielt.
|
||||
|
||||
<tag/<tt>RINGS=NUMMER</tt>/
|
||||
<p>
|
||||
|
||||
Der Anruf wird nach <tt>NUMMER</tt> <tt>RING</tt>'s entgegengenommen.
|
||||
|
||||
<tag/<tt>SCRIPT=NAME</tt>/
|
||||
<p>
|
||||
|
||||
Hier kann das Tcl-Skript angegeben werden das benutzt werden soll.
|
||||
Wird diese Option nicht angegeben, wird das Skript
|
||||
'<tt>SPOOLVERZEICHNIS/standard.tcl</tt>' verwendet. Wenn kein
|
||||
kompletter Pfad angegeben wurde, wird das Skript aus dem
|
||||
Verzeichnis '<tt>SPOOLVERZEICHNIS</tt>' geladen.
|
||||
|
||||
</descrip>
|
||||
|
||||
</descrip>
|
||||
|
||||
<bf>Beispiel:</bf>
|
||||
|
||||
<verb>
|
||||
[STANDARD]
|
||||
|
||||
20 DO aktex.msg 90 SCRIPT=standard.tcl
|
||||
* * standard.msg 90 SCRIPT=standard.tcl
|
||||
|
||||
[HE_I_KNOW_YOU]
|
||||
|
||||
* * iknowyou.msg 90 SCRIPT=iknowyou.tcl RINGS=40
|
||||
</verb>
|
||||
</descrip>
|
||||
|
||||
<bf>Beispiel '<tt>/var/spool/vbox/michael/vboxrc</tt>':</bf>
|
||||
|
||||
<verb>
|
||||
# CALLERIDS
|
||||
#
|
||||
# Format: PATTERN SECTION REALNAME
|
||||
|
||||
[CALLERIDS]
|
||||
|
||||
931785051[3-4] HE_I_KNOW_YOU Michael Herold
|
||||
9317851144 HE_I_KNOW_YOU Nicole Sauvage
|
||||
* - *** Unknown ***
|
||||
|
||||
# RINGS
|
||||
#
|
||||
# Format: TIME DAYS RINGS
|
||||
|
||||
[RINGS]
|
||||
|
||||
0-8 MO,DI,MI,DO,FR,SA,SO 5
|
||||
* * 30
|
||||
|
||||
# [USERSECTIONS]
|
||||
#
|
||||
# Format: TIME DAYS STANDARD RECTIME [FLAG] [...]
|
||||
|
||||
[STANDARD]
|
||||
|
||||
20 DO aktex.msg 90 SCRIPT=standard.tcl RINGS=20
|
||||
* * standard.msg 90 SCRIPT=standard.tcl RINGS=30
|
||||
|
||||
[HE_I_KNOW_YOU]
|
||||
|
||||
* * standard.msg 90
|
||||
</verb>
|
||||
|
||||
<!-- *********************************************************************
|
||||
** **
|
||||
** S K R I P T U N T E R S T Ü T Z U N G **
|
||||
** **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect>Skriptunterstützung<label id="id-scripts">
|
||||
<p>
|
||||
|
||||
Ab Version 2.0.0 unterstützt <em>vbox</em> die Skriptsprache <em>Tcl</em>.
|
||||
Nach dem Beantworten eines Anrufs (<tt>CONNECT</tt>) wird das Skript von
|
||||
<em>vboxgetty</em> geladen und abgearbeitet.
|
||||
|
||||
<!-- *********************************************************************
|
||||
** Konfiguration: Die Datei 'vboxrc' **
|
||||
********************************************************************* -->
|
||||
|
||||
<sect1>Die Datei 'vboxrc'<label id="id-setup-vboxrc">
|
||||
<p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</article>
|
|
@ -0,0 +1,34 @@
|
|||
|
||||
# CALLERIDS
|
||||
#
|
||||
# Format: PATTERN SECTION REALNAME
|
||||
|
||||
[CALLERIDS]
|
||||
|
||||
9317850413 STANDARD-OWNER Michael Herold
|
||||
9317830022 - Nicole Sauvage
|
||||
* - *** Unknown ***
|
||||
|
||||
|
||||
# RINGS
|
||||
#
|
||||
# Format: TIME DAYS RINGS
|
||||
|
||||
[RINGS]
|
||||
|
||||
23:30-23:59,00:00-08:59 * 1
|
||||
* * 6
|
||||
|
||||
|
||||
# [USERSECTIONS]
|
||||
#
|
||||
# Format: TIME DAYS STANDARD RECTIME [FLAG] [...]
|
||||
|
||||
[STANDARD]
|
||||
|
||||
20:15-22:14 DO aktex.msg 60 RINGS=1
|
||||
* * standard.msg 90 RINGS=6 TOLLRINGS=4
|
||||
|
||||
[STANDARD-OWNER]
|
||||
|
||||
* * standard.msg 120 RINGS=99
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
# Login access list
|
||||
#
|
||||
# All hosts in the login access list (begins with 'L') are checked at
|
||||
# login (server startup) time. If access is 'yes' the host can login
|
||||
# and count messages without special access.
|
||||
|
||||
L:abadonna.franken.de:Y
|
||||
L:*:N
|
||||
|
||||
# Full access list
|
||||
#
|
||||
# All hosts in the full access list (begins with 'A') are checked if the
|
||||
# server gets the 'login' command.
|
||||
|
||||
A:abadonna.franken.de:RW:michael:123:/var/spool/vbox/michael/incoming
|
||||
A:abadonna.franken.de:RW:nicole:123:/var/spool/vbox/nicole/incoming
|
||||
A:*:-:-:-:-
|
|
@ -4,52 +4,34 @@
|
|||
# a complete description of the commands!
|
||||
#--------------------------------------------------------------------------
|
||||
|
||||
# Global settings
|
||||
# Global settings for all ports
|
||||
|
||||
compression alaw
|
||||
user michael
|
||||
group users
|
||||
umask 077
|
||||
badinitsexit 5
|
||||
compression adpcm-4
|
||||
umask 077
|
||||
badinitsexit 10
|
||||
dropdtrtime 400
|
||||
initpause 2500
|
||||
commandtimeout 2
|
||||
echotimeout 2
|
||||
ringtimeout 3
|
||||
alivetimeout 300
|
||||
freespace 2000000
|
||||
|
||||
# Settings for port ttyI5
|
||||
|
||||
port /dev/ttyI5
|
||||
dropdtronhangup no
|
||||
dropdtrtime 1000
|
||||
initpause 2500
|
||||
modeminit ATZ&B512&E0190332332
|
||||
modemhangup ~~+++~~ATH
|
||||
modemspeed 57600
|
||||
user peter
|
||||
group lustig
|
||||
badinitsexit 999
|
||||
commandtimeout 5
|
||||
echotimeout 10
|
||||
ringtimeout 15
|
||||
alivetimeout 3000
|
||||
compression blub
|
||||
# Settings for port ttyI6
|
||||
|
||||
port /dev/ttyI6
|
||||
modeminit ATZ&B512&E7830022
|
||||
user nicole
|
||||
group users
|
||||
spooldir /var/spool/vbox/nicole
|
||||
|
||||
|
||||
# Settings for port ttyI7
|
||||
|
||||
port /dev/ttyI7
|
||||
dropdtrtime = 400
|
||||
initpause = 2500
|
||||
modeminit=ATZ&B512&E7840514 # Test
|
||||
user = michael
|
||||
modeminit ATZ&B512&E7850413
|
||||
user michael
|
||||
group users
|
||||
umask 077
|
||||
badinitsexit 10
|
||||
commandtimeout 4
|
||||
echotimeout 4
|
||||
ringtimeout 5
|
||||
alivetimeout 300
|
||||
compression adpcm-4
|
||||
# freespace 2000000000
|
||||
interninitb ATS13.2=1S13.4=1
|
||||
spooldir /var/spool/vbox/michael
|
||||
vboxrc /var/spool/vbox/michael/vboxrc
|
||||
vboxctrl /var/spool/vbox/michael/vboxctrl
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
|
||||
# CALLERIDS
|
||||
#
|
||||
# Format: PATTERN SECTION REALNAME
|
||||
|
||||
[CALLERIDS]
|
||||
|
||||
931784051[3-4] HE_I_KNOW_YOU Michael Herold
|
||||
9317840044 HE_I_KNOW_YOU Nicole Sauvage
|
||||
* - *** Unknown ***
|
||||
|
||||
# RINGS
|
||||
#
|
||||
# Format: TIME DAYS RINGS
|
||||
|
||||
[RINGS]
|
||||
|
||||
#
|
||||
# 20 = 20:00:00
|
||||
# 20:15 = 20:15:00
|
||||
#
|
||||
# 20 = 20:59:59
|
||||
# 20:15 = 20:15:59
|
||||
# 21:14 = 21:14:59
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
#20:15-21:14,0-8,23:15,22:30-23 MO,DI,MI,DO,FR,SA,SO 5
|
||||
* * 30
|
||||
|
||||
# [USERSECTIONS]
|
||||
#
|
||||
# Format: TIME DAYS STANDARD RECTIME [FLAG] [...]
|
||||
|
||||
[STANDARD]
|
||||
|
||||
20 DO aktex.msg 90 SCRIPT=standard.tcl RINGS=6 RINGSIFNEW=4
|
||||
* * standard.msg 90 SCRIPT=standard.tcl RINGS=6
|
||||
|
||||
[HE_I_KNOW_YOU]
|
||||
|
||||
* * standard.msg 30 SCRIPT=standard.tcl
|
||||
|
||||
|
Binary file not shown.
|
@ -6,7 +6,7 @@ msgstr ""
|
|||
"Xgettext-Options: --default-domain=./messages/de --sort-output\n"
|
||||
"Files: ./src/init.c ./src/libvbox.c ./src/lists.c ./src/lock.c ./src/log.c ./src/modem.c ./src/perms.c ./src/rcgetty.c ./src/rcvbox.c ./src/script.c ./src/streamio.c ./src/vbox.c ./src/vboxbeep.c ./src/vboxconvert.c ./src/vboxctrl.c ./src/vboxgetty.c ./src/voice.c\n"
|
||||
|
||||
#: src/modem.c:648 src/modem.c:679 src/modem.c:789 src/vboxbeep.c:271 src/vboxbeep.c:273 src/vboxbeep.c:285 src/vboxbeep.c:287 src/vboxbeep.c:293 src/vboxbeep.c:295 src/vboxconvert.c:338 src/vboxconvert.c:340 src/vboxconvert.c:344 src/vboxconvert.c:447 src/vboxconvert.c:449 src/vboxconvert.c:456 src/vboxconvert.c:458 src/vboxconvert.c:492 src/vboxconvert.c:494 src/vboxconvert.c:498 src/vboxconvert.c:500 src/vboxconvert.c:504 src/vboxconvert.c:613 src/vboxconvert.c:615 src/vboxconvert.c:625 src/vboxconvert.c:1134 src/vboxconvert.c:1142 src/vboxconvert.c:1195 src/vboxconvert.c:1201 src/vboxconvert.c:1213 src/vboxconvert.c:1215 src/vboxctrl.c:190 src/vboxctrl.c:192 src/vboxctrl.c:203 src/vboxctrl.c:205 src/vboxctrl.c:215 src/vboxctrl.c:217 src/vboxctrl.c:221 src/vboxgetty.c:153 src/vboxgetty.c:155 src/vboxgetty.c:174 src/vboxgetty.c:176 src/vboxgetty.c:182
|
||||
#: src/modem.c:648 src/modem.c:679 src/modem.c:789 src/vboxbeep.c:314 src/vboxbeep.c:316 src/vboxbeep.c:328 src/vboxbeep.c:330 src/vboxbeep.c:338 src/vboxbeep.c:340 src/vboxconvert.c:338 src/vboxconvert.c:340 src/vboxconvert.c:344 src/vboxconvert.c:447 src/vboxconvert.c:449 src/vboxconvert.c:456 src/vboxconvert.c:458 src/vboxconvert.c:492 src/vboxconvert.c:494 src/vboxconvert.c:498 src/vboxconvert.c:500 src/vboxconvert.c:504 src/vboxconvert.c:613 src/vboxconvert.c:615 src/vboxconvert.c:625 src/vboxconvert.c:1134 src/vboxconvert.c:1142 src/vboxconvert.c:1195 src/vboxconvert.c:1201 src/vboxconvert.c:1213 src/vboxconvert.c:1215 src/vboxctrl.c:190 src/vboxctrl.c:192 src/vboxctrl.c:203 src/vboxctrl.c:205 src/vboxctrl.c:215 src/vboxctrl.c:217 src/vboxctrl.c:221 src/vboxgetty.c:153 src/vboxgetty.c:155 src/vboxgetty.c:174 src/vboxgetty.c:176 src/vboxgetty.c:182
|
||||
msgid "\n"
|
||||
msgstr "\n"
|
||||
|
||||
|
@ -32,11 +32,11 @@ msgstr "\" (%d).\n"
|
|||
|
||||
#: src/voice.c:266 src/voice.c:624
|
||||
msgid "\" (ignored)...\n"
|
||||
msgstr ""
|
||||
msgstr "\" (ignoriert)...\n"
|
||||
|
||||
#: src/voice.c:287
|
||||
msgid "\" (need a \"<DLE>\").\n"
|
||||
msgstr ""
|
||||
msgstr "\" (brauche ein \"<DLE>\").\n"
|
||||
|
||||
#: src/modem.c:347
|
||||
msgid "\".\n"
|
||||
|
@ -54,7 +54,7 @@ msgstr "\"... "
|
|||
msgid "%ld bytes available; %ld bytes needed... "
|
||||
msgstr "%ld Byte's sind verfügbar; %ld Byte's werden benötigt...\n"
|
||||
|
||||
#: src/vboxbeep.c:272 src/vboxconvert.c:1214 src/vboxctrl.c:191 src/vboxgetty.c:154
|
||||
#: src/vboxbeep.c:315 src/vboxconvert.c:1214 src/vboxctrl.c:191 src/vboxgetty.c:154
|
||||
msgid "%s version %s (%s)\n"
|
||||
msgstr "%s Version %s (%s)\n"
|
||||
|
||||
|
@ -74,7 +74,7 @@ msgstr "%s: kann tempor
|
|||
msgid "%s: can't create control file \"%s\".\n"
|
||||
msgstr "%s: kann die Kontrolldatei \"%s\" nicht erzeugen.\n"
|
||||
|
||||
#: src/vboxbeep.c:205
|
||||
#: src/vboxbeep.c:221
|
||||
msgid "%s: can't find running %s process.\n"
|
||||
msgstr "%s: kann keinen laufenden Prozeß von %s finden.\n"
|
||||
|
||||
|
@ -130,7 +130,7 @@ msgstr "%s: die Kontrolldatei \"%s\" wurde entfernt.\n"
|
|||
msgid "%s: device \"%s\" is not accessable.\n"
|
||||
msgstr "%s: Gerätetreiber \"%s\" ist nicht ansprechbar.\n"
|
||||
|
||||
#: src/vboxbeep.c:178 src/vboxbeep.c:189
|
||||
#: src/vboxbeep.c:194 src/vboxbeep.c:205
|
||||
msgid "%s: error sending signal (%s).\n"
|
||||
msgstr "%s: Fehler beim senden des Signals (%s).\n"
|
||||
|
||||
|
@ -158,11 +158,11 @@ msgstr "%s: die Datei enth
|
|||
msgid "%s: sample contains no vbox or sun au header.\n"
|
||||
msgstr "%s: die Datei enthält weder einen \"vbox audio header\" noch einen \"au header\".\n"
|
||||
|
||||
#: src/vboxbeep.c:174
|
||||
#: src/vboxbeep.c:190
|
||||
msgid "%s: sending signal to stop beep's to process %d...\n"
|
||||
msgstr "%s: sende Signal zum stoppen der Beep's an Prozeß %d...\n"
|
||||
|
||||
#: src/vboxbeep.c:185
|
||||
#: src/vboxbeep.c:201
|
||||
msgid "%s: sending terminate signal to process %d...\n"
|
||||
msgstr "%s: sende Signal zum terminieren an Prozeß %d...\n"
|
||||
|
||||
|
@ -182,11 +182,11 @@ msgstr "%s: nicht unterst
|
|||
msgid "%s: unsupported or illegal sound encoding.\n"
|
||||
msgstr "%s: nicht unterstütztes oder falsches Musikformat.\n"
|
||||
|
||||
#: src/vboxbeep.c:194
|
||||
#: src/vboxbeep.c:210
|
||||
msgid "%s: you must be *root* to kill a running %s.\n"
|
||||
msgstr "%s: nur *root* kann einen laufendes %s beenden.\n"
|
||||
|
||||
#: src/vboxbeep.c:214
|
||||
#: src/vboxbeep.c:230
|
||||
msgid "%s: you must be *root* to start %s.\n"
|
||||
msgstr "%s: nur *root* kann %s starten.\n"
|
||||
|
||||
|
@ -210,7 +210,7 @@ msgstr "- F
|
|||
msgid "- For vbox messages it returns 2-6,\n"
|
||||
msgstr "- Für vbox-Nachrichten wird 2-6 zurückgegeben,\n"
|
||||
|
||||
#: src/init.c:230
|
||||
#: src/init.c:232
|
||||
msgid "------------------------[End session]-----------------------\n"
|
||||
msgstr "-----------------------[Programmende]-----------------------\n"
|
||||
|
||||
|
@ -262,7 +262,7 @@ msgstr "-h, --help Zeigt diesen Hilfstext an.\n"
|
|||
msgid "-h, --help Prints this usage message.\n"
|
||||
msgstr "-h, --help Zeigt diesen Hilfstext an.\n"
|
||||
|
||||
#: src/vboxbeep.c:291
|
||||
#: src/vboxbeep.c:336
|
||||
msgid "-h, --help Displays this help text.\n"
|
||||
msgstr "-h, --help Zeigt diesen Hilfstext an.\n"
|
||||
|
||||
|
@ -274,6 +274,10 @@ msgstr "-h, --help Zeigt diesen Hilfstext an.\n"
|
|||
msgid "-h, --help Displays this usage message.\n"
|
||||
msgstr "-h, --help Zeigt diesen Hilfstext an.\n"
|
||||
|
||||
#: src/vboxbeep.c:334
|
||||
msgid "-i, --machine HOST Connect to message server on HOST (default: localhost).\n"
|
||||
msgstr "-i, --machine HOST Nachrichten-Server ist HOST (Voreinst.: localhost).\n"
|
||||
|
||||
#: src/vboxctrl.c:211
|
||||
msgid "-j, --reject Control file \"vboxctrl-reject\".\n"
|
||||
msgstr "-j, --reject Kontrolldatei \"vboxctrl-reject\".\n"
|
||||
|
@ -286,7 +290,7 @@ msgstr "-l, --language
|
|||
msgid "-l, --location LOCATION Sets header information.\n"
|
||||
msgstr "-l, --location LOCATION Setzt Information im \"audio header\".\n"
|
||||
|
||||
#: src/vboxbeep.c:289
|
||||
#: src/vboxbeep.c:332
|
||||
msgid "-m, --messagebox DIR Watch directory DIR for new messages.\n"
|
||||
msgstr "-m, --messagebox DIR Verzeichnis DIR auf neue Nachrichten überwachen.\n"
|
||||
|
||||
|
@ -298,7 +302,11 @@ msgstr "-n, --answernow Kontrolldatei \"vboxctrl-answernow\".\n"
|
|||
msgid "-n, --name NAME Sets header information.\n"
|
||||
msgstr "-n, --name NAME Setzt Information im \"audio header\".\n"
|
||||
|
||||
#: src/vboxbeep.c:290
|
||||
#: src/vboxbeep.c:335
|
||||
msgid "-o, --port PORT Connect to message server on PORT (default: %d).\n"
|
||||
msgstr "-o, --port PORT Nachrichten-Server mit PORT (Voreinst.: %d).\n"
|
||||
|
||||
#: src/vboxbeep.c:333
|
||||
msgid "-p, --pause SECONDS Pause in seconds to sleep between checks (default: 5).\n"
|
||||
msgstr "-p, --pause SECONDS Pause in Sekunden zwischen Check's (Voreinstellung: 5).\n"
|
||||
|
||||
|
@ -322,7 +330,7 @@ msgstr "-r, --remove Erzeugt eine Kontrolldatei.\n"
|
|||
msgid "-r, --samplerate RATE Header sampling rate (default 8000).\n"
|
||||
msgstr "-r, --samplerate RATE Samplerate im \"audio header\" (Voreinstellung 8000).\n"
|
||||
|
||||
#: src/vboxbeep.c:288
|
||||
#: src/vboxbeep.c:331
|
||||
msgid "-s, --sound HOURS Hours to signal with sound (default: no time)\n"
|
||||
msgstr "-s, --sound HOURS Stunden in denen Sound gespielt wird (Voreinst.: keine).\n"
|
||||
|
||||
|
@ -346,7 +354,7 @@ msgstr "-v, --version Zeigt die Version des Programms an.\n"
|
|||
msgid "-v, --version Prints the package version.\n"
|
||||
msgstr "-v, --version Zeigt die Version des Programms an.\n"
|
||||
|
||||
#: src/vboxbeep.c:292
|
||||
#: src/vboxbeep.c:337
|
||||
msgid "-v, --version Displays program version.\n"
|
||||
msgstr "-v, --version Zeigt die Version des Programms an.\n"
|
||||
|
||||
|
@ -398,7 +406,7 @@ msgstr "Falsche Zeit; kann Zeitangabe (%s-%s) nicht konvertieren - ignoriert...\
|
|||
msgid "Bad time; start greater than end (%s-%s) - ignored...\n"
|
||||
msgstr "Falsche Zeit; Startzeit ist größer als die Endzeit (%s-%s) - ignoriert...\n"
|
||||
|
||||
#: src/rcgetty.c:141
|
||||
#: src/rcgetty.c:140
|
||||
msgid "Bad value \"%s\" for command \"%s\" ignored (%s)...\n"
|
||||
msgstr "Falscher Wert \"%s\" für Kommando \"%s\" ignoriert (%s)...\n"
|
||||
|
||||
|
@ -434,7 +442,7 @@ msgstr "Kann Anruf nicht beantworten - Lege auf...\n"
|
|||
msgid "Can't call fcntl() to setup modem port.\n"
|
||||
msgstr "Kann Modem nicht mit der Funktion 'fcntl()' einstellen.\n"
|
||||
|
||||
#: src/init.c:126
|
||||
#: src/init.c:122
|
||||
msgid "Can't create \"%s\" (%s).\n"
|
||||
msgstr "Kann \"%s\" nicht erzeugen (%s).\n"
|
||||
|
||||
|
@ -482,7 +490,7 @@ msgstr "Kann den Tcl-Interpreter nicht initialisieren.\n"
|
|||
msgid "Can't lock \"%s\".\n"
|
||||
msgstr "Kann \"%s\" nicht sperren.\n"
|
||||
|
||||
#: src/init.c:200 src/rcgetty.c:170 src/voice.c:156
|
||||
#: src/init.c:202 src/rcgetty.c:169 src/voice.c:156
|
||||
msgid "Can't open \"%s\".\n"
|
||||
msgstr "Kann \"%s\" nicht öffnen.\n"
|
||||
|
||||
|
@ -496,11 +504,11 @@ msgstr "Kann nicht vom Modem lesen [%d]%s.\n"
|
|||
|
||||
#: src/voice.c:504
|
||||
msgid "Can't read incoming data (%s).\n"
|
||||
msgstr ""
|
||||
msgstr "Kann eingehende Daten nicht lesen (%s).\n"
|
||||
|
||||
#: src/voice.c:313
|
||||
msgid "Can't read input from modem.\n"
|
||||
msgstr ""
|
||||
msgstr "Kann Daten vom Modem nicht lesen.\n"
|
||||
|
||||
#: src/modem.c:305
|
||||
msgid "Can't read modem command echo.\n"
|
||||
|
@ -512,9 +520,9 @@ msgstr "Kann die Antwort vom Modemkommando nicht lesen.\n"
|
|||
|
||||
#: src/voice.c:163
|
||||
msgid "Can't read vbox audio header from message.\n"
|
||||
msgstr ""
|
||||
msgstr "Kann \"vbox audio header\" nicht lesen.\n"
|
||||
|
||||
#: src/init.c:156 src/init.c:164 src/modem.c:888 src/modem.c:900
|
||||
#: src/init.c:155 src/init.c:163 src/modem.c:888 src/modem.c:900
|
||||
msgid "Can't remove control file \"%s\"!\n"
|
||||
msgstr "Kann die Kontrolldatei \"%s\" nicht löschen!\n"
|
||||
|
||||
|
@ -540,11 +548,11 @@ msgstr "Kann Besitzer von \"%s\" nicht setzen (%s).\n"
|
|||
|
||||
#: src/voice.c:394
|
||||
msgid "Can't set voice audio compressen.\n"
|
||||
msgstr ""
|
||||
msgstr "Kann die Audio-Kompression nicht setzen.\n"
|
||||
|
||||
#: src/voice.c:174
|
||||
msgid "Can't set voice audio compression or line mode.\n"
|
||||
msgstr ""
|
||||
msgstr "Kann die Audio-Kompression oder den Line-Mode nicht setzen.\n"
|
||||
|
||||
#: src/perms.c:67
|
||||
msgid "Can't set working directory to \"%s\" (%s).\n"
|
||||
|
@ -560,15 +568,15 @@ msgstr "Kann ID nicht zu %d, %d
|
|||
|
||||
#: src/voice.c:432
|
||||
msgid "Can't start record mode.\n"
|
||||
msgstr ""
|
||||
msgstr "Kann den Aufzeichnungs-Modus nicht starten.\n"
|
||||
|
||||
#: src/voice.c:190
|
||||
msgid "Can't start voice play mode.\n"
|
||||
msgstr ""
|
||||
msgstr "Kann den Abspiel-Modus nicht starten.\n"
|
||||
|
||||
#: src/voice.c:414
|
||||
msgid "Can't write raw voice audio header.\n"
|
||||
msgstr ""
|
||||
msgid "Can't write vbox audio header.\n"
|
||||
msgstr "\"Kann \"vbox audio header\" nicht schreiben.\n"
|
||||
|
||||
#: src/vboxconvert.c:1198
|
||||
msgid "Channels........: %d\n"
|
||||
|
@ -610,17 +618,17 @@ msgstr "Kontrolldatei \"%s\" existiert - Programm wird beendet...\n"
|
|||
msgid "Control file \"%s\" exists - rejecting call...\n"
|
||||
msgstr "Kontrolldatei \"%s\" existiert - Anruf wird verworfen...\n"
|
||||
|
||||
#: src/init.c:140 src/init.c:144
|
||||
#: src/init.c:139 src/init.c:143
|
||||
msgid "Control file \"%s\" exists - waiting...\n"
|
||||
msgstr "Kontrolldatei \"%s\" existiert - Warte...\n"
|
||||
|
||||
#: src/init.c:149
|
||||
#: src/init.c:148
|
||||
msgid "Control file deleted - back in business...\n"
|
||||
msgstr "Kontrolldatei wurde gelöscht - Back in business...\n"
|
||||
|
||||
#: src/voice.c:240
|
||||
msgid "Could only write %d of %d bytes (%s).\n"
|
||||
msgstr ""
|
||||
msgstr "Kann nur %d von %d Zeichen schreiben (%s).\n"
|
||||
|
||||
#: src/vboxconvert.c:1135
|
||||
msgid "Creation time...........: %s"
|
||||
|
@ -656,13 +664,13 @@ msgstr "Setze Proze
|
|||
|
||||
#: src/voice.c:208
|
||||
msgid "End of audio data (%s).\n"
|
||||
msgstr ""
|
||||
msgstr "Ende der Audio-Daten (%s).\n"
|
||||
|
||||
#: src/rcgetty.c:163
|
||||
#: src/rcgetty.c:162
|
||||
msgid "Error in \"%s\": Missing argument (%s).\n"
|
||||
msgstr "Fehler in \"%s\": Vermisse Argument (%s).\n"
|
||||
|
||||
#: src/rcgetty.c:162
|
||||
#: src/rcgetty.c:161
|
||||
msgid "Error in \"%s\": Missing command.\n"
|
||||
msgstr "Fehler in \"%s\": Vermisse Kommando.\n"
|
||||
|
||||
|
@ -674,7 +682,7 @@ msgstr "Fehler in Tagesangabe \"%s\" in Zeile #%ld (keine
|
|||
msgid "Error in vboxrc line #%ld (ignored).\n"
|
||||
msgstr "Fehler in vboxrc Zeile #%ld (ignoriert).\n"
|
||||
|
||||
#: src/init.c:223
|
||||
#: src/init.c:225
|
||||
msgid "Exit program on signal %d...\n"
|
||||
msgstr "Signal %d erhalten - Beende Programm...\n"
|
||||
|
||||
|
@ -702,11 +710,11 @@ msgstr "%d neue Nachricht(en) gefunden; Neue Anzahl Ring's ist %d...\n"
|
|||
msgid "Found Flag \"%s\"...\n"
|
||||
msgstr "Gefundenes Flag: \"%s\"...\n"
|
||||
|
||||
#: src/rcgetty.c:137
|
||||
#: src/rcgetty.c:136
|
||||
msgid "Found command '%s = %s' (%s)...\n"
|
||||
msgstr "Gefundenes Kommando: '%s = %s' (%s)...\n"
|
||||
|
||||
#: src/rcgetty.c:122
|
||||
#: src/rcgetty.c:121
|
||||
msgid "Found command '%s = %s'...\n"
|
||||
msgstr "Gefundenes Kommando: '%s = %s'...\n"
|
||||
|
||||
|
@ -716,19 +724,19 @@ msgstr "Bereits ge
|
|||
|
||||
#: src/voice.c:264
|
||||
msgid "Found sequence \"<DLE>"
|
||||
msgstr ""
|
||||
msgstr "Gefundene Sequenz: \"<DLE>"
|
||||
|
||||
#: src/voice.c:270
|
||||
msgid "Found sequence \"<DLE><DC4>\" (remote hangup)...\n"
|
||||
msgstr ""
|
||||
msgstr "Gefundene Sequenz: \"<DLE><DC4>\" (Gegenstellt hat aufgelegt)...\n"
|
||||
|
||||
#: src/voice.c:466
|
||||
msgid "Found sequence \"<DLE><ETX>\" (remote hangup)...\n"
|
||||
msgstr ""
|
||||
msgstr "Gefundene Sequenz: \"<DLE><ETX>\" (Gegenstelle hat aufgelegt)...\n"
|
||||
|
||||
#: src/voice.c:637
|
||||
msgid "Found touchtone \"%c\"...\n"
|
||||
msgstr ""
|
||||
msgstr "Gefundener Touchtone: \"%c\"...\n"
|
||||
|
||||
#: src/vboxgetty.c:327
|
||||
msgid "Free disc space check disabled!\n"
|
||||
|
@ -736,7 +744,7 @@ msgstr "Die
|
|||
|
||||
#: src/voice.c:324
|
||||
msgid "Function play %d secs (kernel needs %d secs)...\n"
|
||||
msgstr ""
|
||||
msgstr "Funktion spielte %d Sekunden (Kernel bräuchte %d Sekunden)...\n"
|
||||
|
||||
#: src/rcvbox.c:315
|
||||
msgid "Getting number of rings to wait before answer call...\n"
|
||||
|
@ -760,7 +768,7 @@ msgstr "Der Inhalt des S-Registers ist \"%s\".\n"
|
|||
|
||||
#: src/voice.c:285
|
||||
msgid "Got unneeded character \""
|
||||
msgstr ""
|
||||
msgstr "Unbenötigtes Zeichen erhalten: \""
|
||||
|
||||
#: src/modem.c:160
|
||||
msgid "Hangup modem (drop dtr %d ms)...\n"
|
||||
|
@ -768,9 +776,9 @@ msgstr "Lege Modem auf (drop dtr %d ms)...\n"
|
|||
|
||||
#: src/voice.c:249
|
||||
msgid "Have input...\n"
|
||||
msgstr ""
|
||||
msgstr "Es sind Daten da...\n"
|
||||
|
||||
#: src/vboxbeep.c:294
|
||||
#: src/vboxbeep.c:339
|
||||
msgid ""
|
||||
"Hours to play sound with the pc speaker must be specified in 24-hour-format.\n"
|
||||
"you can use ',' or '-' to seperate hours or specify time ranges (eg 9,17-22).\n"
|
||||
|
@ -789,7 +797,7 @@ msgstr ""
|
|||
|
||||
#: src/voice.c:622
|
||||
msgid "Illeagal \"<DLE>\" shielded code \""
|
||||
msgstr ""
|
||||
msgstr "Falsche \"<DLE>\" Sequenz \""
|
||||
|
||||
#: src/script.c:125 src/script.c:134
|
||||
msgid "In \"%s\": %s (line %d).\n"
|
||||
|
@ -853,7 +861,7 @@ msgstr ""
|
|||
|
||||
#: src/voice.c:333
|
||||
msgid "Oops - can't calculate time to wait!\n"
|
||||
msgstr ""
|
||||
msgstr "Huch - Kann die Zeit zum Warten nicht errechnen!\n"
|
||||
|
||||
#: src/modem.c:426
|
||||
msgid "Oops!\n"
|
||||
|
@ -863,7 +871,7 @@ msgstr "Huch!\n"
|
|||
msgid "Opening modem port \"%s\"...\n"
|
||||
msgstr "Öffne Modemport \"%s\"...\n"
|
||||
|
||||
#: src/rcgetty.c:142
|
||||
#: src/rcgetty.c:141
|
||||
msgid "Parser returns \"%s\" (min %d; max %d).\n"
|
||||
msgstr "Übersetzer hat \"%s\" zurückgegeben (Min %d; Max %d).\n"
|
||||
|
||||
|
@ -875,7 +883,7 @@ msgstr "Untersuche Tag(e) \"%s\"...\n"
|
|||
msgid "Parsing settings from section \"%s\"...\n"
|
||||
msgstr "Übersetze Einstellungen der Sektion \"%s\"...\n"
|
||||
|
||||
#: src/rcgetty.c:85
|
||||
#: src/rcgetty.c:84
|
||||
msgid "Parsing settings in \"%s\" for port \"%s\"...\n"
|
||||
msgstr "Übersetze Einstellungen in \"%s\" für Port \"%s\"...\n"
|
||||
|
||||
|
@ -897,11 +905,11 @@ msgstr "Zeitbegrenzungs-Nachricht wird gespielt"
|
|||
|
||||
#: src/voice.c:224
|
||||
msgid "Play: <DATA %d incoming; %d outgoing>\n"
|
||||
msgstr ""
|
||||
msgstr "Abspielen: <DATEN %d eingehend; %d ausgehend>\n"
|
||||
|
||||
#: src/voice.c:152
|
||||
msgid "Playing \"%s\"...\n"
|
||||
msgstr ""
|
||||
msgstr "Spiele \"%s\"...\n"
|
||||
|
||||
#: src/rcvbox.c:171
|
||||
msgid "Range %s - %s (%s): "
|
||||
|
@ -945,11 +953,11 @@ msgstr "Eine Nachricht wird aufgezeichnet"
|
|||
|
||||
#: src/voice.c:493
|
||||
msgid "Record: <DATA %d incoming; %d outgoing>\n"
|
||||
msgstr ""
|
||||
msgstr "Aufzeichnen: <DATEN %d eingehend; %d ausgehend>\n"
|
||||
|
||||
#: src/voice.c:388
|
||||
msgid "Recording \"%s\" (%d secs)...\n"
|
||||
msgstr ""
|
||||
msgstr "Zeichne \"%s\" auf (%d Sekunden)...\n"
|
||||
|
||||
#: src/script.c:65
|
||||
msgid "Running tcl script \"%s\"...\n"
|
||||
|
@ -989,19 +997,19 @@ msgstr "Sende \""
|
|||
|
||||
#: src/voice.c:561
|
||||
msgid "Sending \"<DLE><DC4>\"...\n"
|
||||
msgstr ""
|
||||
msgstr "Sende \"<DLE><DC4>\"...\n"
|
||||
|
||||
#: src/voice.c:353
|
||||
msgid "Sending \"<DLE><ETX>\"...\n"
|
||||
msgstr ""
|
||||
msgstr "Sende \"<DLE><ETX>\"...\n"
|
||||
|
||||
#: src/voice.c:300 src/voice.c:519
|
||||
msgid "Sequence \"%s\" found in breaklist...\n"
|
||||
msgstr ""
|
||||
msgstr "Sequenz \"%s\" in der Unterbrechungsliste gefunden...\n"
|
||||
|
||||
#: src/voice.c:306 src/voice.c:525
|
||||
msgid "Sequence \"%s\" not in breaklist (ignored)...\n"
|
||||
msgstr ""
|
||||
msgstr "Sequenz \"%s\" nicht in der Unterbrechungsliste gefunden (ignoriert)...\n"
|
||||
|
||||
#: src/perms.c:28
|
||||
msgid "Setting \"%s\" to %d.%d (%04o)...\n"
|
||||
|
@ -1017,7 +1025,7 @@ msgstr "Setze Modem-Geschwindigkeit auf 57600...\n"
|
|||
|
||||
#: src/voice.c:109
|
||||
msgid "Setting voice compression \"%s\"...\n"
|
||||
msgstr ""
|
||||
msgstr "Setze Audio-Kompression \"%s\"...\n"
|
||||
|
||||
#: src/rcvbox.c:589
|
||||
msgid "Settings: %d secs record time.\n"
|
||||
|
@ -1109,7 +1117,7 @@ msgstr "Zeitbegrenzungs-Funktion wurde aufgerufen!\n"
|
|||
|
||||
#: src/voice.c:296 src/voice.c:515
|
||||
msgid "Touchtone sequence \"%s\" found.\n"
|
||||
msgstr ""
|
||||
msgstr "Touchtone-Sequenz \"%s\" gefunden.\n"
|
||||
|
||||
#: src/rcvbox.c:565
|
||||
msgid "Unable to locate section \"%s\" (useing defaults)...\n"
|
||||
|
@ -1123,19 +1131,19 @@ msgstr "Kann die Sektion \"[CALLERIDS]\" nicht finden (benutze Voreinstellungen)
|
|||
msgid "Unable to locate section \"[RINGS]\" (useing defaults)...\n"
|
||||
msgstr "Kann die Sektion \"[RINGS]\" nicht finden (benutze Voreinstellungen)...\n"
|
||||
|
||||
#: src/rcgetty.c:153
|
||||
#: src/rcgetty.c:152
|
||||
msgid "Unknown command \"%s\" ignored (%s)...\n"
|
||||
msgstr "Unbekanntes Kommando \"%s\" ignoriert (%s)...\n"
|
||||
|
||||
#: src/voice.c:114
|
||||
msgid "Unknown compression %d - can't set.\n"
|
||||
msgstr ""
|
||||
msgstr "Umbekannte Kompression %d - Kann nicht gesetzt werden.\n"
|
||||
|
||||
#: src/lock.c:171
|
||||
msgid "Unlocking %s (%s)...\n"
|
||||
msgstr "Entsperre %s (%s)...\n"
|
||||
|
||||
#: src/vboxbeep.c:286 src/vboxctrl.c:204 src/vboxgetty.c:175
|
||||
#: src/vboxbeep.c:329 src/vboxctrl.c:204 src/vboxgetty.c:175
|
||||
msgid "Usage: %s OPTION [ OPTION ] [ ... ]\n"
|
||||
msgstr "Benutzung: %s OPTION [ OPTION ] [ ...]\n"
|
||||
|
||||
|
@ -1151,25 +1159,25 @@ msgstr "Benutzung: %s OPTION [ OPTION ] [ ... ] DATEINAME\n"
|
|||
msgid "Use existing lock for \"%s\" (%d).\n"
|
||||
msgstr "Benutze existierende Sperrung für \"%s\" (%d).\n"
|
||||
|
||||
#: src/init.c:118
|
||||
#: src/init.c:112
|
||||
msgid "User %s's messagebox is \"%s\"...\n"
|
||||
msgstr "Benutzer %s's Nachrichtenfach ist \"%s\"...\n"
|
||||
|
||||
#: src/init.c:119
|
||||
msgid "User %s's vboxrc is \"%s\"...\n"
|
||||
msgstr "Benutzer %s's vboxrc ist unter \"%s\"...\n"
|
||||
#: src/init.c:113
|
||||
msgid "User %s's vbox.conf is \"%s\"...\n"
|
||||
msgstr "Benutzer %s's vbox.conf ist \"%s\"...\n"
|
||||
|
||||
#: src/voice.c:497
|
||||
msgid "Wait: <DATA %d incoming>\n"
|
||||
msgstr ""
|
||||
msgstr "Warte: <DATEN %d eingehend>\n"
|
||||
|
||||
#: src/voice.c:390
|
||||
msgid "Waiting %d secs for input...\n"
|
||||
msgstr ""
|
||||
msgstr "Warte %d Sekunden auf eingehende Daten...\n"
|
||||
|
||||
#: src/voice.c:328
|
||||
msgid "Waiting %d secs to complete playing...\n"
|
||||
msgstr ""
|
||||
msgstr "Warte %d Sekunden bis das Abspielen abgeschlossen ist...\n"
|
||||
|
||||
#: src/modem.c:396
|
||||
msgid "Waiting for \""
|
||||
|
@ -1299,11 +1307,7 @@ msgstr "[vbox_wait] Ergebnis \"%s\".\n"
|
|||
msgid "[vbox_wait] usage: vbox_wait <seconds>\n"
|
||||
msgstr "[vbox_wait] Benutzung: vbox_wait <seconds>\n"
|
||||
|
||||
#: src/vboxbeep.c:437
|
||||
msgid "add directory \"%s\" to watchlist..."
|
||||
msgstr "füge Verzeichnis \"%s\" zur Überwachungsliste hinzu...\n"
|
||||
|
||||
#: src/rcgetty.c:235
|
||||
#: src/rcgetty.c:234
|
||||
msgid "alaw not longer supported"
|
||||
msgstr "alaw wird nicht länger unterstützt"
|
||||
|
||||
|
@ -1311,42 +1315,54 @@ msgstr "alaw wird nicht l
|
|||
msgid "autovbox - to convert au format samples to vbox messages.\n"
|
||||
msgstr "autovbox - um eine au-Datei in eine vbox-Nachricht zu konvertieren.\n"
|
||||
|
||||
#: src/vboxbeep.c:383
|
||||
#: src/vboxbeep.c:435
|
||||
msgid "bad hour in local time structure (%d)."
|
||||
msgstr "falsche Stunde in der lokalen Zeitstruktur (%d).\n"
|
||||
|
||||
#: src/vboxbeep.c:444
|
||||
#: src/vboxbeep.c:548 src/vboxbeep.c:550
|
||||
msgid "bad server response \"%s\"."
|
||||
msgstr "falsche Server Antwort \"%s\"."
|
||||
|
||||
#: src/vboxbeep.c:491
|
||||
msgid "can't add \"%s\" to watchlist."
|
||||
msgstr "kann \"%s\" nicht zur Überwachungsliste hinzufügen.\n"
|
||||
|
||||
#: src/vboxbeep.c:497
|
||||
msgid "can't change to \"%s\" (%s)."
|
||||
msgstr "kann nicht nach \"%s\" wechseln (%s).\n"
|
||||
#: src/vboxbeep.c:272
|
||||
msgid "can't connect to vbox message server."
|
||||
msgstr "kann Verbindung zum \"vbox message server\" nicht herstellen."
|
||||
|
||||
#: src/rcgetty.c:263
|
||||
#: src/rcgetty.c:262
|
||||
msgid "can't convert value to integer"
|
||||
msgstr "kann den Wert nicht in Zahl konvertieren"
|
||||
|
||||
#: src/vboxbeep.c:376
|
||||
#: src/vboxbeep.c:428
|
||||
msgid "can't get current local time (%s)."
|
||||
msgstr "kann die lokale Zeit nicht ermitteln (%s).\n"
|
||||
|
||||
#: src/vboxbeep.c:495
|
||||
msgid "can't open \"%s\" (%s)."
|
||||
msgstr "kann \"%s\" nicht öffnen (%s).\n"
|
||||
#: src/vboxbeep.c:554
|
||||
msgid "can't get server response."
|
||||
msgstr "kann Antwort vom Server nicht lesen."
|
||||
|
||||
#: src/vboxbeep.c:392
|
||||
#: src/vboxbeep.c:444
|
||||
msgid "can't open \"/dev/console\" (%s)."
|
||||
msgstr "kann \"/dev/console\" nicht öffnen (%s).\n"
|
||||
|
||||
#: src/vboxbeep.c:530
|
||||
#: src/vboxbeep.c:590
|
||||
msgid "can't remove PID file \"%s\" (%s)."
|
||||
msgstr "kann die PID-Datei \"%s\" nicht entfernen (%s).\n"
|
||||
|
||||
#: src/vboxbeep.c:512
|
||||
#: src/vboxbeep.c:268
|
||||
msgid "connected to vbox message server."
|
||||
msgstr "Verbindung zum \"vbox message server\" hergestellt."
|
||||
|
||||
#: src/vboxbeep.c:572
|
||||
msgid "could not create PID file \"%s\" (%s)."
|
||||
msgstr "kann die PID-Datei \"%s\" nicht erzeugen (%s).\n"
|
||||
|
||||
#: src/vboxbeep.c:391
|
||||
msgid "disconnecting from server..."
|
||||
msgstr "Verbindung zum \"vbox message server\" wird beendet..."
|
||||
|
||||
#: src/rcvbox.c:179
|
||||
msgid "don't match.\n"
|
||||
msgstr "keine Übereinstimmung.\n"
|
||||
|
@ -1367,11 +1383,11 @@ msgstr "
|
|||
msgid "modem port"
|
||||
msgstr "Modemport"
|
||||
|
||||
#: src/vboxbeep.c:359
|
||||
#: src/vboxbeep.c:411
|
||||
msgid "new starttime is %ld."
|
||||
msgstr "die neue Startzeit ist %ld.\n"
|
||||
|
||||
#: src/vboxbeep.c:118
|
||||
#: src/vboxbeep.c:124
|
||||
msgid "not enough memory to create pid name.\n"
|
||||
msgstr "nicht genug Speicher um den Namen der PID zu erzeugen.\n"
|
||||
|
||||
|
@ -1383,47 +1399,55 @@ msgstr "nicht genug!\n"
|
|||
msgid "sequence"
|
||||
msgstr "Sequenz"
|
||||
|
||||
#: src/vboxbeep.c:615
|
||||
#: src/vboxbeep.c:296
|
||||
msgid "server connection canceled."
|
||||
msgstr "Verbindung zum \"vbox message server\" wurde beendet."
|
||||
|
||||
#: src/vboxbeep.c:552
|
||||
msgid "server connection lost!"
|
||||
msgstr "Verbindung zum \"vbox message server\" wurde verloren!"
|
||||
|
||||
#: src/vboxbeep.c:675
|
||||
msgid "start- or endtime out of range."
|
||||
msgstr "die Start- oder Endzeit ist ausßerhalb der gültigen Werte.\n"
|
||||
|
||||
#: src/vboxbeep.c:613
|
||||
#: src/vboxbeep.c:673
|
||||
msgid "starttime must be lower than endtime."
|
||||
msgstr "die Startzeit muß kleiner als die Endzeit sein.\n"
|
||||
|
||||
#: src/vboxbeep.c:344
|
||||
#: src/vboxbeep.c:396
|
||||
msgid "terminate..."
|
||||
msgstr "beendet sich...\n"
|
||||
|
||||
#: src/vboxbeep.c:223
|
||||
#: src/vboxbeep.c:239
|
||||
msgid "there are no directories to watch."
|
||||
msgstr "es sind keine Verzeichnisse zum überwachen angegeben.\n"
|
||||
|
||||
#: src/vboxbeep.c:239
|
||||
#: src/vboxbeep.c:255
|
||||
msgid "time range \"%s\"."
|
||||
msgstr "Zeiten \"%s\".\n"
|
||||
|
||||
#: src/rcgetty.c:233
|
||||
#: src/rcgetty.c:232
|
||||
msgid "unknown compression"
|
||||
msgstr "unbekannte Kompression"
|
||||
|
||||
#: src/rcgetty.c:281
|
||||
#: src/rcgetty.c:280
|
||||
msgid "unknown groupname"
|
||||
msgstr "unbekannter Gruppenname"
|
||||
|
||||
#: src/rcgetty.c:331
|
||||
#: src/rcgetty.c:330
|
||||
msgid "unknown umask"
|
||||
msgstr "unbekannte umask"
|
||||
|
||||
#: src/rcgetty.c:299
|
||||
#: src/rcgetty.c:298
|
||||
msgid "unknown username"
|
||||
msgstr "unbekannter Benutzername"
|
||||
|
||||
#: src/rcgetty.c:261
|
||||
#: src/rcgetty.c:260
|
||||
msgid "value too big"
|
||||
msgstr "Wert zu groß"
|
||||
|
||||
#: src/rcgetty.c:260
|
||||
#: src/rcgetty.c:259
|
||||
msgid "value too small"
|
||||
msgstr "Wert zu klein"
|
||||
|
||||
|
@ -1438,3 +1462,4 @@ msgstr "vboxmode - um Informationen
|
|||
#: src/vboxconvert.c:341
|
||||
msgid "vboxtoau - to convert vbox messages to au format.\n"
|
||||
msgstr "vboxtoau - um eine vbox-Nachricht in eine au-Datei zu konvertieren.\n"
|
||||
#
|
||||
|
|
|
@ -20,7 +20,7 @@ LIBS_INTL = @LINK_INTL_LIBS@
|
|||
|
||||
HEADERS = init.h lists.h lock.h log.h modem.h streamio.h perms.h \
|
||||
rcgetty.h script.h voice.h vboxgetty.h rcvbox.h \
|
||||
vboxctrl.h
|
||||
vboxctrl.h vboxd.h config.h
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Object compile modes #
|
||||
|
@ -39,7 +39,7 @@ lists.o: $(HEADERS) lists.c
|
|||
$(CC) $(CFLAGS) -c lists.c
|
||||
|
||||
script.o: $(HEADERS) script.c
|
||||
$(CC) $(CFLAGS) -DBINDIR='"$(VBINDIR)"' -c script.c
|
||||
$(CC) $(CFLAGS) -DBINDIR='"$(VBOX_BINDIR)"' -c script.c
|
||||
|
||||
voice.o: $(HEADERS) voice.c
|
||||
$(CC) $(CFLAGS) -c voice.c
|
||||
|
@ -60,7 +60,7 @@ rcvbox.o: $(HEADERS) rcvbox.c
|
|||
$(CC) $(CFLAGS) -c rcvbox.c
|
||||
|
||||
vboxgetty.o: $(HEADERS) vboxgetty.c
|
||||
$(CC) $(CFLAGS) -DGETTYRC='"$(GETTYRC)"' -c vboxgetty.c
|
||||
$(CC) $(CFLAGS) -DGETTYRC='"$(VBOX_GETTYCONF)"' -c vboxgetty.c
|
||||
|
||||
vboxconvert.o: $(HEADERS) vboxconvert.c
|
||||
$(CC) $(CFLAGS) -c vboxconvert.c
|
||||
|
@ -74,9 +74,12 @@ vboxctrl.o: $(HEADERS) vboxctrl.c
|
|||
vboxbeep.o: $(HEADERS) vboxbeep.c
|
||||
$(CC) $(CFLAGS) -c vboxbeep.c
|
||||
|
||||
vboxd.o: $(HEADERS) vboxd.c
|
||||
$(CC) $(CFLAGS) -DVBOXDRC='"$(VBOX_VBOXDCONF)"' -c vboxd.c
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
all: vboxlib vboxgetty vboxconvert vboxctrl vboxbeep vbox
|
||||
all: vboxlib vboxd vboxgetty vboxconvert vboxctrl vboxbeep vbox
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Compiling vboxlib #
|
||||
|
@ -135,7 +138,7 @@ vboxctrl: $(VBOXCTRLOBJS)
|
|||
$(CC) $(CFLAGS) $(VBOXCTRLOBJS) -o vboxctrl -L. $(LIBS_INTL) -lvbox
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Compiling vboxleds #
|
||||
# Compiling vboxbeep #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
VBOXBEEPOBJS = vboxbeep.o
|
||||
|
@ -144,46 +147,11 @@ vboxbeep: $(VBOXBEEPOBJS)
|
|||
$(CC) $(CFLAGS) $(VBOXBEEPOBJS) -o vboxbeep -L. $(LIBS_INTL) -lvbox
|
||||
|
||||
#----------------------------------------------------------------------------#
|
||||
# Misc #
|
||||
# Compiling vboxd #
|
||||
#----------------------------------------------------------------------------#
|
||||
|
||||
clean:
|
||||
@rm -f *~
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
VBOXDOBJS = vboxd.o streamio.o
|
||||
|
||||
vboxd: $(VBOXDOBJS)
|
||||
$(CC) $(CFLAGS) $(VBOXDOBJS) -o vboxd -L. -lvbox
|
||||
|
||||
|
|
|
@ -96,18 +96,6 @@ int init_program(char *device, char *gettyrc)
|
|||
xstrncpy(setup.users.name, passwd->pw_name, USER_MAX_NAME);
|
||||
xstrncpy(setup.users.home, passwd->pw_dir , USER_MAX_HOME);
|
||||
|
||||
if (!*setup.vboxrcname)
|
||||
{
|
||||
xstrncpy(setup.vboxrcname, setup.users.home, SETUP_MAX_VBOXRC);
|
||||
xstrncat(setup.vboxrcname, "/.vboxrc" , SETUP_MAX_VBOXRC);
|
||||
}
|
||||
|
||||
if (!*setup.vboxctrl)
|
||||
{
|
||||
xstrncpy(setup.vboxctrl, setup.users.home, SETUP_MAX_VBOXCTRL);
|
||||
xstrncat(setup.vboxctrl, "/.vboxctrl" , SETUP_MAX_VBOXCTRL);
|
||||
}
|
||||
|
||||
if (!*setup.spool)
|
||||
{
|
||||
xstrncpy(setup.spool, SPOOLDIR , SETUP_MAX_SPOOLNAME);
|
||||
|
@ -115,11 +103,19 @@ int init_program(char *device, char *gettyrc)
|
|||
xstrncat(setup.spool, setup.users.name, SETUP_MAX_SPOOLNAME);
|
||||
}
|
||||
|
||||
log(L_INFO, gettext("User %s's messagebox is \"%s\"...\n"), setup.users.name, setup.spool);
|
||||
log(L_INFO, gettext("User %s's vboxrc is \"%s\"...\n"), setup.users.name, setup.vboxrcname);
|
||||
if (!*setup.vboxrcname)
|
||||
{
|
||||
xstrncpy(setup.vboxrcname, setup.spool , SETUP_MAX_VBOXRC);
|
||||
xstrncat(setup.vboxrcname, "/vbox.conf", SETUP_MAX_VBOXRC);
|
||||
}
|
||||
|
||||
/* Create the spool directory and set the permissions to the */
|
||||
/* current user (with umask). */
|
||||
log(L_INFO, gettext("User %s's messagebox is \"%s\"...\n"), setup.users.name, setup.spool);
|
||||
log(L_INFO, gettext("User %s's vbox.conf is \"%s\"...\n"), setup.users.name, setup.vboxrcname);
|
||||
|
||||
/*
|
||||
* Create the spool directory and set the permissions to the current
|
||||
* user (with umask).
|
||||
*/
|
||||
|
||||
if ((mkdir(setup.spool, S_IRWXU) == -1) && (errno != EEXIST))
|
||||
{
|
||||
|
@ -128,7 +124,10 @@ int init_program(char *device, char *gettyrc)
|
|||
returnerror();
|
||||
}
|
||||
|
||||
if (!permissions_set(setup.spool, setup.users.uid, setup.users.gid, S_IRWXU|S_IRWXG|S_IRWXO, setup.users.umask)) returnerror();
|
||||
if (!permissions_set(setup.spool, setup.users.uid, setup.users.gid, S_IRWXU|S_IRWXG|S_IRWXO, setup.users.umask))
|
||||
{
|
||||
returnerror();
|
||||
}
|
||||
|
||||
/*
|
||||
* Now we check if 'vboxctrl-stop' exists. If true, loop and watch
|
||||
|
@ -186,13 +185,16 @@ int init_program(char *device, char *gettyrc)
|
|||
* umask.
|
||||
*/
|
||||
|
||||
if (!permissions_drop(setup.users.uid, setup.users.gid, setup.users.name, setup.users.home)) returnerror();
|
||||
if (!permissions_drop(setup.users.uid, setup.users.gid, setup.users.name, setup.users.home))
|
||||
{
|
||||
returnerror();
|
||||
}
|
||||
|
||||
umask(setup.users.umask);
|
||||
|
||||
/*
|
||||
* Load vbox's runtime configuration into memory and initialize
|
||||
* the voice defaults.
|
||||
* Load vbox's configuration into memory and initialize the voice
|
||||
* defaults.
|
||||
*/
|
||||
|
||||
if (!(setup.vboxrc = streamio_open(setup.vboxrcname)))
|
||||
|
|
|
@ -6,13 +6,20 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <dirent.h>
|
||||
#include <ctype.h>
|
||||
#include <signal.h>
|
||||
#include <netdb.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include "libvbox.h"
|
||||
|
||||
|
@ -21,6 +28,254 @@
|
|||
char *compressions[] = {
|
||||
"?", "?", "ADPCM-2", "ADPCM-3", "ADPCM-4", "ALAW", "ULAW"
|
||||
};
|
||||
|
||||
|
||||
static char vboxd_message[128 + 1];
|
||||
|
||||
FILE *vboxd_r_stream = NULL;
|
||||
FILE *vboxd_w_stream = NULL;
|
||||
int vboxd_r_fd = -1;
|
||||
int vboxd_w_fd = -1;
|
||||
|
||||
/**************************************************************************/
|
||||
/** vboxd_connect(): Connect to the vbox message server. After connect **/
|
||||
/** the function reads the server startup message! **/
|
||||
/**************************************************************************/
|
||||
/** machine String with the hostname or the ip address. **/
|
||||
/** port Port number to connect. **/
|
||||
/** <return> 0 on success; < 0 on error. **/
|
||||
/**************************************************************************/
|
||||
|
||||
int vboxd_connect(char *machine, int port)
|
||||
{
|
||||
struct sockaddr_in sockp;
|
||||
struct hostent *hostp;
|
||||
struct hostent defaulthost;
|
||||
struct in_addr defaultaddr;
|
||||
char defaultname[256];
|
||||
char *defaultlist[1];
|
||||
char **p;
|
||||
int c;
|
||||
int s;
|
||||
|
||||
if (isdigit(*machine))
|
||||
{
|
||||
defaultlist[0] = NULL;
|
||||
|
||||
if (inet_aton(machine, &defaultaddr) != 0)
|
||||
{
|
||||
xstrncpy(defaultname, machine, 255);
|
||||
|
||||
defaulthost.h_name = (char *)defaultname;
|
||||
defaulthost.h_addr_list = defaultlist;
|
||||
defaulthost.h_addr = (char *)&defaultaddr;
|
||||
defaulthost.h_length = sizeof(struct in_addr);
|
||||
defaulthost.h_addrtype = AF_INET;
|
||||
defaulthost.h_aliases = 0;
|
||||
|
||||
hostp = &defaulthost;
|
||||
}
|
||||
else hostp = gethostbyname(machine);
|
||||
}
|
||||
else hostp = gethostbyname(machine);
|
||||
|
||||
if (!hostp) return(VBOXC_ERR_UNKNOWNHOST);
|
||||
|
||||
memset((char *)&sockp, '\0', sizeof(struct sockaddr_in));
|
||||
|
||||
sockp.sin_family = hostp->h_addrtype;
|
||||
sockp.sin_port = htons(port);
|
||||
|
||||
c = -1;
|
||||
s = -1;
|
||||
|
||||
for (p = hostp->h_addr_list; ((p) && (*p)); p++)
|
||||
{
|
||||
s = socket(hostp->h_addrtype, SOCK_STREAM, 0);
|
||||
|
||||
if (s < 0) return(VBOXC_ERR_NOSOCKET);
|
||||
|
||||
memcpy((char *)&sockp.sin_addr, *p, hostp->h_length);
|
||||
|
||||
c = connect(s, (struct sockaddr *)&sockp, sizeof(struct sockaddr_in));
|
||||
|
||||
if (c == 0) break;
|
||||
|
||||
close(s);
|
||||
}
|
||||
|
||||
if (c < 0) return(VBOXC_ERR_NOCONNECT);
|
||||
|
||||
vboxd_r_fd = s;
|
||||
vboxd_w_fd = dup(vboxd_r_fd);
|
||||
|
||||
if ((vboxd_w_fd < 0) || (vboxd_r_fd < 0))
|
||||
{
|
||||
vboxd_disconnect();
|
||||
|
||||
return(VBOXC_ERR_NOFILEIO);
|
||||
}
|
||||
|
||||
vboxd_r_stream = fdopen(vboxd_r_fd, "r");
|
||||
vboxd_w_stream = fdopen(vboxd_w_fd, "w");
|
||||
|
||||
if ((!vboxd_r_stream) || (!vboxd_w_stream))
|
||||
{
|
||||
vboxd_disconnect();
|
||||
|
||||
return(VBOXC_ERR_NOFILEIO);
|
||||
}
|
||||
|
||||
if (!vboxd_get_message())
|
||||
{
|
||||
vboxd_disconnect();
|
||||
|
||||
return(VBOXC_ERR_GETMESSAGE);
|
||||
}
|
||||
|
||||
if (!vboxd_test_response(VBOXD_VAL_SERVEROK))
|
||||
{
|
||||
vboxd_disconnect();
|
||||
|
||||
return(VBOXC_ERR_GETMESSAGE);
|
||||
}
|
||||
|
||||
return(VBOXC_ERR_OK);
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/** vboxd_disconnect(): Sends "quit" and disconnect from the server. **/
|
||||
/**************************************************************************/
|
||||
|
||||
void vboxd_disconnect(void)
|
||||
{
|
||||
if (vboxd_w_stream) vboxd_put_message("quit");
|
||||
|
||||
if (vboxd_r_stream) close_and_null(vboxd_r_stream);
|
||||
if (vboxd_w_stream) close_and_null(vboxd_w_stream);
|
||||
|
||||
if (vboxd_r_fd != -1) close_and_mone(vboxd_r_fd);
|
||||
if (vboxd_w_fd != -1) close_and_mone(vboxd_w_fd);
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/** vboxd_put_message(): **/
|
||||
/**************************************************************************/
|
||||
|
||||
void vboxd_put_message(char *fmt, ...)
|
||||
{
|
||||
va_list arg;
|
||||
|
||||
if (vboxd_w_stream)
|
||||
{
|
||||
va_start(arg, fmt);
|
||||
|
||||
fprintf(stderr, "[put] ");
|
||||
vfprintf(stderr , fmt, arg);
|
||||
fprintf(stderr, "\n");
|
||||
vfprintf(vboxd_w_stream, fmt, arg);
|
||||
fprintf(vboxd_w_stream, "\r\n");
|
||||
fflush(vboxd_w_stream);
|
||||
|
||||
va_end(Arg);
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/** vboxd_get_message(): Try to get a message from the server. The func- **/
|
||||
/** tion us a timeout of 5 seconds to get the mess- **/
|
||||
/** age. **/
|
||||
/**************************************************************************/
|
||||
/** <return> Pointer to the message or NULL. **/
|
||||
/**************************************************************************/
|
||||
|
||||
char *vboxd_get_message(void)
|
||||
{
|
||||
struct timeval timeval;
|
||||
fd_set rmask;
|
||||
|
||||
*vboxd_message = '\0';
|
||||
|
||||
if (vboxd_r_stream)
|
||||
{
|
||||
FD_ZERO(&rmask);
|
||||
FD_SET(vboxd_r_fd, &rmask);
|
||||
|
||||
timeval.tv_sec = 5;
|
||||
timeval.tv_usec = 0;
|
||||
|
||||
if (select((vboxd_r_fd + 1), &rmask, NULL, NULL, &timeval) > 0)
|
||||
{
|
||||
if (FD_ISSET(vboxd_r_fd, &rmask))
|
||||
{
|
||||
fprintf(stderr, "[get] select has data for me...\n");
|
||||
|
||||
if (fgets(vboxd_message, 128, vboxd_r_stream))
|
||||
{
|
||||
vboxd_message[strlen(vboxd_message) - 1] = '\0';
|
||||
vboxd_message[strlen(vboxd_message) - 1] = '\0';
|
||||
|
||||
fprintf(stderr, "[get] %s\n", vboxd_message);
|
||||
|
||||
return(vboxd_message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(stderr, "[get] FAILED!\n");
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
/** vboxd_test_response(): **/
|
||||
/**************************************************************************/
|
||||
|
||||
int vboxd_test_response(char *response)
|
||||
{
|
||||
if (strlen(vboxd_message) > (strlen(response) + 1))
|
||||
{
|
||||
if (strncmp(response, vboxd_message, strlen(response)) == 0)
|
||||
{
|
||||
if (vboxd_message[strlen(response)] == ' ') returnok();
|
||||
}
|
||||
}
|
||||
|
||||
returnerror();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/** get_message_ptime(): Returns the vbox message length in seconds. **/
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
#ifndef _VBOX_LIBVBOX_H
|
||||
#define _VBOX_LIBVBOX_H 1
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/** Defines **************************************************************/
|
||||
|
||||
#define CTRL_NAME_STOP "vboxctrl-stop"
|
||||
|
@ -25,6 +27,37 @@
|
|||
#define VAH_MAX_CALLERID (32)
|
||||
#define VAH_MAX_PHONE (32)
|
||||
#define VAH_MAX_LOCATION (64)
|
||||
#define VHA_MAX_RESERVED_A (32)
|
||||
#define VHA_MAX_RESERVED_B (64)
|
||||
|
||||
/** vboxd support *********************************************************/
|
||||
|
||||
#define VBOXD_DEF_PORT (20012) /* Default server port */
|
||||
|
||||
#define VBOXD_VAL_HELP "180" /* Help messages */
|
||||
#define VBOXD_VAL_COUNT "181" /* Count new messages */
|
||||
#define VBOXD_VAL_MESSAGE "182" /* Get a message */
|
||||
#define VBOXD_VAL_HEADER "183" /* Get a message header */
|
||||
#define VBOXD_VAL_LIST "184" /* List messages */
|
||||
|
||||
#define VBOXD_VAL_SERVEROK "280" /* Server ready */
|
||||
#define VBOXD_VAL_SERVERQUIT "281" /* Server quit */
|
||||
#define VBOXD_VAL_ACCESSOK "282" /* Access ok */
|
||||
#define VBOXD_VAL_LOGINOK "283" /* User login ok */
|
||||
|
||||
#define VBOXD_VAL_ACCESSDENIED "580" /* No access */
|
||||
#define VBOXD_VAL_BADARGS "583" /* Not enough or too many args */
|
||||
#define VBOXD_VAL_BADPASSWD "584" /* Bad password */
|
||||
#define VBOXD_VAL_BADMESSAGE "585" /* Bad message */
|
||||
#define VBOXD_VAL_BADCOMMAND "586" /* Bad command */
|
||||
#define VBOXD_VAL_TEMPERROR "589" /* Misc error */
|
||||
|
||||
#define VBOXC_ERR_OK ( 0)
|
||||
#define VBOXC_ERR_UNKNOWNHOST (-1)
|
||||
#define VBOXC_ERR_NOSOCKET (-2)
|
||||
#define VBOXC_ERR_NOCONNECT (-3)
|
||||
#define VBOXC_ERR_NOFILEIO (-4)
|
||||
#define VBOXC_ERR_GETMESSAGE (-5)
|
||||
|
||||
#ifdef TRUE
|
||||
#undef TRUE
|
||||
|
@ -40,6 +73,8 @@
|
|||
#define returnerror() return(FALSE)
|
||||
#define returnok() return(TRUE)
|
||||
#define printstring sprintf
|
||||
#define close_and_mone(F) { close(F); F = -1; }
|
||||
#define close_and_null(S) { fclose(S); S = NULL; }
|
||||
|
||||
/** Structures ***********************************************************/
|
||||
|
||||
|
@ -52,6 +87,10 @@ typedef struct
|
|||
char name[VAH_MAX_NAME + 1];
|
||||
char phone[VAH_MAX_PHONE + 1];
|
||||
char location[VAH_MAX_LOCATION + 1];
|
||||
char reserved1[VHA_MAX_RESERVED_A + 1];
|
||||
char reserved2[VHA_MAX_RESERVED_A + 1];
|
||||
char reserved3[VHA_MAX_RESERVED_B + 1];
|
||||
char reserved4[VHA_MAX_RESERVED_B + 1];
|
||||
} vaheader_t;
|
||||
|
||||
/** Variables ************************************************************/
|
||||
|
@ -75,4 +114,24 @@ extern int header_get(int, vaheader_t *);
|
|||
extern int get_nr_messages(char *, int);
|
||||
extern int get_message_ptime(int, int);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern FILE *vboxd_r_stream;
|
||||
extern FILE *vboxd_w_stream;
|
||||
extern int vboxd_r_fd;
|
||||
extern int vboxd_w_fd;
|
||||
|
||||
|
||||
|
||||
extern int vboxd_connect(char *, int);
|
||||
extern void vboxd_disconnect(void);
|
||||
extern char *vboxd_get_message(void);
|
||||
extern void vboxd_put_message(char *, ...);
|
||||
extern int vboxd_test_response(char *);
|
||||
|
||||
|
||||
#endif /* _VBOX_LIBVBOX_H */
|
||||
|
|
|
@ -60,8 +60,7 @@ static struct rctable rct[] =
|
|||
{ "commandtimeout", &setup.modem.timeout_cmd , 0, 60000 , parse_int },
|
||||
{ "alivetimeout" , &setup.modem.timeout_alive , 0, 60000 , parse_int },
|
||||
{ "compression" , &setup.modem.compression , 2, 6 , parse_cmp },
|
||||
{ "vboxrc" , setup.vboxrcname , 0, SETUP_MAX_VBOXRC , parse_str },
|
||||
{ "vboxctrl" , setup.vboxctrl , 0, SETUP_MAX_VBOXCTRL , parse_str },
|
||||
{ "vboxconfig" , setup.vboxrcname , 0, SETUP_MAX_VBOXRC , parse_str },
|
||||
{ "spooldir" , setup.spool , 0, SETUP_MAX_SPOOLNAME , parse_str },
|
||||
{ "freespace" , &setup.freespace , 0, 2000000000 , parse_int },
|
||||
|
||||
|
@ -84,9 +83,9 @@ int getty_get_settings(char *rcname)
|
|||
|
||||
log(L_DEBUG, gettext("Parsing settings in \"%s\" for port \"%s\"...\n"), rcname, setup.modem.device);
|
||||
|
||||
xstrncpy(setup.modem.interninita , "AT+FCLASS=8" , MODEM_MAX_INITSTRING);
|
||||
xstrncpy(setup.modem.interninitb , "ATS18=1S13.2=1S13.4=1" , MODEM_MAX_INITSTRING);
|
||||
xstrncpy(setup.modem.init , "ATZ" , MODEM_MAX_INITSTRING);
|
||||
xstrncpy(setup.modem.interninita , "AT+FCLASS=8" , MODEM_MAX_INITSTRING);
|
||||
xstrncpy(setup.modem.interninitb , "S13.2=1S13.4=1", MODEM_MAX_INITSTRING);
|
||||
xstrncpy(setup.modem.init , "ATZ" , MODEM_MAX_INITSTRING);
|
||||
|
||||
setup.modem.toggle_dtr_time = MODEM_TOGGLETIME;
|
||||
setup.modem.timeout_ring = MODEM_RINGTIMEOUT;
|
||||
|
|
|
@ -48,6 +48,8 @@ static char *pidname = NULL;
|
|||
static int killmode = 0;
|
||||
static time_t starttime = 0;
|
||||
static int dodebug = FALSE;
|
||||
static int haveconnect = FALSE;
|
||||
static int downconnect = FALSE;
|
||||
|
||||
static struct option arguments[] =
|
||||
{
|
||||
|
@ -56,6 +58,8 @@ static struct option arguments[] =
|
|||
{ "kill" , no_argument , NULL, 'k' },
|
||||
{ "sound" , required_argument , NULL, 's' },
|
||||
{ "messagebox" , required_argument , NULL, 'm' },
|
||||
{ "machine" , required_argument , NULL, 'i' },
|
||||
{ "port" , required_argument , NULL, 'o' },
|
||||
{ "pause" , required_argument , NULL, 'p' },
|
||||
{ "debug" , no_argument , NULL, 'x' },
|
||||
{ NULL , 0 , NULL, 0 }
|
||||
|
@ -86,18 +90,20 @@ static void usage(void);
|
|||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char timestrings[32];
|
||||
int i;
|
||||
int b;
|
||||
int opts;
|
||||
int checkpause;
|
||||
char timestrings[32];
|
||||
int i;
|
||||
int b;
|
||||
int opts;
|
||||
int checkpause;
|
||||
int port;
|
||||
char *machine;
|
||||
|
||||
#if HAVE_LOCALE_H
|
||||
setlocale(LC_ALL, "");
|
||||
#endif
|
||||
|
||||
#if ENABLE_NLS
|
||||
textdomain("vbox");
|
||||
textdomain(PACKAGE);
|
||||
#endif
|
||||
|
||||
if (!(vbasename = rindex(argv[0], '/')))
|
||||
|
@ -125,10 +131,12 @@ int main(int argc, char **argv)
|
|||
killmode = 0;
|
||||
starttime = 0;
|
||||
checkpause = 5;
|
||||
port = VBOXD_DEF_PORT;
|
||||
machine = "localhost";
|
||||
|
||||
b = 0;
|
||||
|
||||
while ((opts = getopt_long(argc, argv, "vhks:m:p:x", arguments, (int *)0)) != EOF)
|
||||
while ((opts = getopt_long(argc, argv, "vhko:i:s:m:p:x", arguments, (int *)0)) != EOF)
|
||||
{
|
||||
switch (opts)
|
||||
{
|
||||
|
@ -152,6 +160,14 @@ int main(int argc, char **argv)
|
|||
parse_sound_times(strdup(optarg), 0, 23);
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
port = (int)xstrtol(optarg, VBOXD_DEF_PORT);
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
machine = optarg;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
version();
|
||||
break;
|
||||
|
@ -239,21 +255,48 @@ int main(int argc, char **argv)
|
|||
log(LOG_DEBUG, gettext("time range \"%s\"."), timestrings);
|
||||
}
|
||||
|
||||
haveconnect = FALSE;
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
for (i = 0; i < MAX_MESSAGE_BOXES; i++)
|
||||
downconnect = FALSE;
|
||||
|
||||
if (!haveconnect)
|
||||
{
|
||||
if (messageboxes[i].name)
|
||||
if (vboxd_connect(machine, port) == VBOXC_ERR_OK)
|
||||
{
|
||||
messageboxes[i].time = get_newest_message_time(messageboxes[i].name);
|
||||
|
||||
if (messageboxes[i].time > starttime)
|
||||
if (dodebug) log(LOG_DEBUG, gettext("connected to vbox message server."));
|
||||
|
||||
haveconnect = TRUE;
|
||||
}
|
||||
else log(LOG_ERR, gettext("can't connect to vbox message server."));
|
||||
}
|
||||
|
||||
if (haveconnect)
|
||||
{
|
||||
for (i = 0; i < MAX_MESSAGE_BOXES; i++)
|
||||
{
|
||||
if (messageboxes[i].name)
|
||||
{
|
||||
lets_hear_the_sound();
|
||||
messageboxes[i].time = get_newest_message_time(messageboxes[i].name);
|
||||
|
||||
break;
|
||||
if (messageboxes[i].time > starttime)
|
||||
{
|
||||
lets_hear_the_sound();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (downconnect)
|
||||
{
|
||||
vboxd_disconnect();
|
||||
|
||||
if (dodebug) log(LOG_DEBUG, gettext("server connection canceled."));
|
||||
|
||||
haveconnect = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
xpause(checkpause * 1000);
|
||||
|
@ -288,6 +331,8 @@ static void usage(void)
|
|||
fprintf(stderr, gettext("-s, --sound HOURS Hours to signal with sound (default: no time)\n"));
|
||||
fprintf(stderr, gettext("-m, --messagebox DIR Watch directory DIR for new messages.\n"));
|
||||
fprintf(stderr, gettext("-p, --pause SECONDS Pause in seconds to sleep between checks (default: 5).\n"));
|
||||
fprintf(stderr, gettext("-i, --machine HOST Connect to message server on HOST (default: localhost).\n"));
|
||||
fprintf(stderr, gettext("-o, --port PORT Connect to message server on PORT (default: %d).\n"), VBOXD_DEF_PORT);
|
||||
fprintf(stderr, gettext("-h, --help Displays this help text.\n"));
|
||||
fprintf(stderr, gettext("-v, --version Displays program version.\n"));
|
||||
fprintf(stderr, gettext("\n"));
|
||||
|
@ -341,6 +386,13 @@ static void leave_program(int sig)
|
|||
remove_pid_file();
|
||||
free_resources();
|
||||
|
||||
if (haveconnect)
|
||||
{
|
||||
if (dodebug) log(LOG_DEBUG, gettext("disconnecting from server..."));
|
||||
|
||||
vboxd_disconnect();
|
||||
}
|
||||
|
||||
if (dodebug) log(LOG_DEBUG, gettext("terminate..."));
|
||||
|
||||
exit(0);
|
||||
|
@ -431,11 +483,6 @@ static int add_dir_to_messagebox(int nr, char *box)
|
|||
{
|
||||
messageboxes[nr].name = name;
|
||||
messageboxes[nr].time = time(NULL);
|
||||
|
||||
if (dodebug)
|
||||
{
|
||||
log(LOG_DEBUG, gettext("add directory \"%s\" to watchlist..."), name);
|
||||
}
|
||||
|
||||
returnok();
|
||||
}
|
||||
|
@ -469,34 +516,47 @@ static void free_all_messageboxes(void)
|
|||
|
||||
static time_t get_newest_message_time(char *box)
|
||||
{
|
||||
struct dirent *entry;
|
||||
struct stat status;
|
||||
time_t newest;
|
||||
char response[128 + 1];
|
||||
char *msg;
|
||||
char *respcode;
|
||||
char *respmsgs;
|
||||
char *resptime;
|
||||
|
||||
DIR *dir = NULL;
|
||||
time_t newest = 0;
|
||||
|
||||
if (chdir(box) == 0)
|
||||
if (haveconnect)
|
||||
{
|
||||
if ((dir = opendir(".")))
|
||||
newest = 0;
|
||||
|
||||
vboxd_put_message("count %s", box);
|
||||
|
||||
if ((msg = vboxd_get_message()))
|
||||
{
|
||||
while ((entry = readdir(dir)))
|
||||
if (!vboxd_test_response(VBOXD_VAL_SERVERQUIT))
|
||||
{
|
||||
if (strcmp(entry->d_name, "." ) == 0) continue;
|
||||
if (strcmp(entry->d_name, "..") == 0) continue;
|
||||
|
||||
if (stat(entry->d_name, &status) == 0)
|
||||
if (vboxd_test_response(VBOXD_VAL_COUNT))
|
||||
{
|
||||
if (status.st_mtime > newest) newest = status.st_mtime;
|
||||
xstrncpy(response, msg, 128);
|
||||
|
||||
respcode = strtok(response, "\t ");
|
||||
respmsgs = strtok(NULL , "\t ");
|
||||
resptime = strtok(NULL , "\t ");
|
||||
|
||||
if ((respcode) && (respmsgs) && (resptime))
|
||||
{
|
||||
return(xstrtol(resptime, 0));
|
||||
}
|
||||
else log(LOG_ERR, gettext("bad server response \"%s\"."), msg);
|
||||
}
|
||||
else log(LOG_ERR, gettext("bad server response \"%s\"."), msg);
|
||||
}
|
||||
|
||||
closedir(dir);
|
||||
else log(LOG_ERR, gettext("server connection lost!"));
|
||||
}
|
||||
else log(LOG_ERR, gettext("can't open \"%s\" (%s)."), box, strerror(errno));
|
||||
}
|
||||
else log(LOG_ERR, gettext("can't change to \"%s\" (%s)."), box, strerror(errno));
|
||||
else log(LOG_ERR, gettext("can't get server response."));
|
||||
|
||||
return(newest);
|
||||
downconnect = TRUE;
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/**************************************************************************/
|
||||
|
|
1017
vbox/src/vboxd.c
1017
vbox/src/vboxd.c
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,31 @@
|
|||
|
||||
#ifndef _VBOXD_H
|
||||
#define _VBOXD_H 1
|
||||
|
||||
#include "libvbox.h" /* Contains server message id defines! */
|
||||
|
||||
/** Defines ***************************************************************/
|
||||
|
||||
#define VBOXD_LEN_ACCESSLINE 256
|
||||
#define VBOXD_LEN_CMDLINE 128
|
||||
#define VBOXD_LEN_ARGLIST 10
|
||||
|
||||
#define VBOXD_ACC_NOTHING 0 /* No access */
|
||||
#define VBOXD_ACC_COUNT 1 /* Access to count messages */
|
||||
#define VBOXD_ACC_READ 2 /* Access to read messages */
|
||||
#define VBOXD_ACC_WRITE 4 /* Access to write messages */
|
||||
|
||||
#define VBOXD_ERR_OK 0
|
||||
#define VBOXD_ERR_TIMEOUT 1
|
||||
#define VBOXD_ERR_EOF 2
|
||||
#define VBOXD_ERR_TOOLONG 3
|
||||
|
||||
/** Structures ************************************************************/
|
||||
|
||||
struct servercmds
|
||||
{
|
||||
char *name;
|
||||
void (*func)(int, char **);
|
||||
};
|
||||
|
||||
#endif /* _VBOXD_H */
|
|
@ -411,7 +411,7 @@ int voice_get_message(char *name, char *timestr, int save)
|
|||
|
||||
if (!header_put(fd, &header))
|
||||
{
|
||||
log(L_ERROR, gettext("Can't write raw voice audio header.\n"));
|
||||
log(L_ERROR, gettext("Can't write vbox audio header.\n"));
|
||||
|
||||
voice_close_or_unlink(fd, name);
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
#! /bin/sh
|
||||
##
|
||||
## $Id#
|
||||
##
|
||||
## Create the documents from sgml source. Please *only* call this
|
||||
## script from top level makefile!
|
||||
|
||||
SGML2TEXT="/usr/local/lib/linuxdoc-sgml/bin/sgml2txt"
|
||||
SGML2HTML="/usr/local/lib/linuxdoc-sgml/bin/sgml2html"
|
||||
|
||||
DOCLANGS="de"
|
||||
|
||||
for l in ${DOCLANGS}
|
||||
do
|
||||
cd "${VBOX_TOPDIR}/doc/${l}"
|
||||
|
||||
${SGML2TEXT} -l -f vbox
|
||||
|
||||
if [ "$l" = "de" ]
|
||||
then
|
||||
${SGML2HTML} -l -L deutsch vbox
|
||||
else
|
||||
${SGML2HTML} -l vbox
|
||||
fi
|
||||
|
||||
for i in *.html
|
||||
do
|
||||
mv $i html/$i.in
|
||||
done
|
||||
|
||||
for i in *.txt
|
||||
do
|
||||
mv $i txt/$i.in
|
||||
done
|
||||
done
|
|
@ -1,29 +1,31 @@
|
|||
#! /bin/sh
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
## Script to create the misc message catalogs. This is only for development!
|
||||
|
||||
# Get all sources (*.c) to a variable #
|
||||
|
||||
GETTEXT_SOURCE_FILES=""
|
||||
|
||||
for i in ${TOPDIR}/src/*.c
|
||||
for i in ${VBOX_TOPDIR}/src/*.c
|
||||
do
|
||||
GETTEXT_SOURCE_FILES="${GETTEXT_SOURCE_FILES} ${i}"
|
||||
done
|
||||
|
||||
# Process each existing catalog #
|
||||
|
||||
for i in ${CATALOGS}
|
||||
for i in ${VBOX_CATALOGS}
|
||||
do
|
||||
OLD_PO_FILE="${TOPDIR}/messages/tmp-o-${i}"
|
||||
NEW_PO_FILE="${TOPDIR}/messages/tmp-n-${i}"
|
||||
OLD_PO_FILE="${VBOX_TOPDIR}/messages/tmp-o-${i}"
|
||||
NEW_PO_FILE="${VBOX_TOPDIR}/messages/tmp-n-${i}"
|
||||
|
||||
echo "Creating '${TOPDIR}/messages/${i}.po'..."
|
||||
echo "Creating '${VBOX_TOPDIR}/messages/${i}.po'..."
|
||||
|
||||
if (test -f ${TOPDIR}/messages/${i}.po)
|
||||
if (test -f ${VBOX_TOPDIR}/messages/${i}.po)
|
||||
then
|
||||
cp ${TOPDIR}/messages/${i}.po ${TOPDIR}/messages/backup-${i}.po
|
||||
mv ${TOPDIR}/messages/${i}.po ${OLD_PO_FILE}.po
|
||||
cp ${VBOX_TOPDIR}/messages/${i}.po ${VBOX_TOPDIR}/messages/backup-${i}.po
|
||||
mv ${VBOX_TOPDIR}/messages/${i}.po ${OLD_PO_FILE}.po
|
||||
fi
|
||||
|
||||
xgettext --default-domain=${NEW_PO_FILE} \
|
||||
|
@ -32,14 +34,14 @@ do
|
|||
|
||||
if (test -f ${OLD_PO_FILE}.po)
|
||||
then
|
||||
tupdate ${NEW_PO_FILE}.po ${OLD_PO_FILE}.po >${TOPDIR}/messages/${i}.po 2>/dev/null
|
||||
tupdate ${NEW_PO_FILE}.po ${OLD_PO_FILE}.po >${VBOX_TOPDIR}/messages/${i}.po 2>/dev/null
|
||||
|
||||
rm ${OLD_PO_FILE}.po ${NEW_PO_FILE}.po
|
||||
else
|
||||
mv ${NEW_PO_FILE}.po ${TOPDIR}/messages/${i}.po
|
||||
mv ${NEW_PO_FILE}.po ${VBOX_TOPDIR}/messages/${i}.po
|
||||
fi
|
||||
|
||||
echo "Creating '${TOPDIR}/messages/${i}.mo'..."
|
||||
echo "Creating '${VBOX_TOPDIR}/messages/${i}.mo'..."
|
||||
|
||||
msgfmt --output-file=${TOPDIR}/messages/${i}.mo ${TOPDIR}/messages/${i}.po
|
||||
msgfmt --output-file=${VBOX_TOPDIR}/messages/${i}.mo ${VBOX_TOPDIR}/messages/${i}.po
|
||||
done
|
||||
|
|
|
@ -1,11 +1,21 @@
|
|||
#! /bin/sh
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
## Please *only* call this script from top level makefile!
|
||||
|
||||
$SED \
|
||||
-e "s;@BINDIR@;${bindir};g" \
|
||||
-e "s;@VERSION@;${VERSION};g" \
|
||||
-e "s;@VERDATE@;${VERDATE};g" \
|
||||
-e "s;@MAILCMD@;${MAILCMD};g" \
|
||||
-e "s;@SPOOLDIR@;${SPOOLDIR};g"
|
||||
${SED} \
|
||||
-e "s;{;\[;g" \
|
||||
-e "s;};\];g" \
|
||||
-e "s;@DOTS@;...;g" \
|
||||
-e "s;@BINDIR@;${VBOX_BINDIR};g" \
|
||||
-e "s;@SBINDIR@;${VBOX_SBINDIR};g" \
|
||||
-e "s;@VERSION@;${VBOX_VERSION};g" \
|
||||
-e "s;@VERDATE@;${VBOX_VERDATE};g" \
|
||||
-e "s;@SPOOLDIR@;${VBOX_SPOOLDIR};g" \
|
||||
-e "s;@SYSCONFDIR@;${VBOX_SYSCONFDIR};g" \
|
||||
-e "s;@LOGFILEDIR@;${VBOX_LOGFILEDIR};g" \
|
||||
-e "s;@PIDFILEDIR@;${VBOX_PIDFILEDIR};g" \
|
||||
-e "s;@LCKFILEDIR@;${VBOX_LCKFILEDIR};g"
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue