The time now is Sun 22 Apr 2018, 07:16
All times are UTC - 4 |
Page 1 of 2 [18 Posts] |
Goto page: 1, 2 Next |
Author |
Message |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Thu 27 Oct 2011, 06:54 Post subject:
[UPDATE !] Splitten von Dateien - UPDATE auf 1.3 Subject description: Endlich auch große Dateien im Web speichern. Hier gibt's das pet! |
|
Hallo,
ich suche ein Tool oder einen Konsolenbefehl für die o.g. Aufgabe. Das Tool sollte unabhängig vom Dateiinhalt und nach Möglichkeit ohne großen Zeitaufwand auch größere Dateien splitten können.
Kennt jemand ein solches Tool oder einen solchen Konsolenbefehl?
Gruß,
RSH
Last edited by RSH on Thu 08 Dec 2011, 18:54; edited 8 times in total
|
Back to top
|
|
 |
L18L
Joined: 19 Jun 2010 Posts: 3431 Location: www.eussenheim.de/
|
Posted: Thu 27 Oct 2011, 07:10 Post subject:
Splitten von Dateien Subject description: split |
|
Code: | # split --help
Usage: split [OPTION] [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT
is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-a, --suffix-length=N use suffixes of length N (default 2)
-b, --bytes=SIZE put SIZE bytes per output file
-C, --line-bytes=SIZE put at most SIZE bytes of lines per output file
-d, --numeric-suffixes use numeric suffixes instead of alphabetic
-l, --lines=NUMBER put NUMBER lines per output file
--verbose print a diagnostic just before each
output file is opened
--help display this help and exit
--version output version information and exit
SIZE may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.
Report bugs to <bug-coreutils@gnu.org>.
# |
http://de.wikipedia.org/wiki/Split_%28Unix%29
|
Back to top
|
|
 |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Thu 27 Oct 2011, 07:59 Post subject:
|
|
Hallo L18L,
danke für Deine schnelle Antwort. Hab's gefunden. Zusammenfügen mit cat.
Code: | sh-3.00# cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s), or standard input, to standard output.
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank suppress repeated empty output lines
-t equivalent to -vT
-T, --show-tabs display TAB characters as ^I
-u (ignored)
-v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
--help display this help and exit
--version output version information and exit
With no FILE, or when FILE is -, read standard input.
Examples:
cat f - g Output f's contents, then standard input, then g's contents.
cat Copy standard input to standard output.
Report cat bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report cat translation bugs to <http://translationproject.org/team/>
sh-3.00#
|
WOW!
Die Konsole ist wirklich toll. Ist das alles die busybox von Bruce Perens?
Gruß,
RSH
|
Back to top
|
|
 |
L18L
Joined: 19 Jun 2010 Posts: 3431 Location: www.eussenheim.de/
|
Posted: Thu 27 Oct 2011, 10:18 Post subject:
|
|
RSH wrote: |
Die Konsole ist wirklich toll. Ist das alles die busybox von Bruce Perens? |
Code: | # busybox
BusyBox v1.17.2 (2011-10-03 16:04:49 GMT-8) multi-call binary.
Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.
Usage: busybox [function] [arguments]...
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, [[, acpid, addgroup, adduser, ash, basename, bbconfig, beep, blkid,
bunzip2, bzcat, bzip2, cal, cat, chgrp, chmod, chown, chpasswd, chroot,
chvt, cksum, clear, cmp, cp, cpio, crond, crontab, cryptpw, cut, date,
dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay,
diff, dirname, dmesg, dnsdomainname, dos2unix, dpkg, dpkg-deb, du,
dumpkmap, dumpleases, echo, ed, egrep, eject, env, expand, expr, false,
fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find,
findfs, flock, fold, free, freeramdisk, fsync, ftpget, ftpput, fuser,
getopt, getty, grep, gunzip, gzip, halt, hd, hdparm, head, hexdump,
hostid, hostname, httpd, hwclock, id, ifconfig, ifdown, ifplugd, ifup,
init, inotifyd, insmod, ionice, ip, ipaddr, ipcalc, iplink, iproute,
iprule, iptunnel, kbd_mode, kill, killall, klogd, length, less, ln,
loadfont, loadkmap, logger, login, logname, logread, losetup, ls,
lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, man, md5sum,
mesg, microcom, mkdir, mkdosfs, mkfifo, mkfs.reiser, mkfs.vfat, mknod,
mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint,
mv, nameif, nc, netstat, nice, nohup, nslookup, od, openvt, passwd,
patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill,
poweroff, printenv, printf, ps, pscan, pwd, rdate, rdev, readahead,
readlink, realpath, reboot, renice, reset, resize, rev, rfkill, rm,
rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, sed, seq,
setconsole, setfont, setkeycodes, setlogcons, sh, sha1sum, sha256sum,
sha512sum, showkey, sleep, sort, split, start-stop-daemon, stat,
strings, stty, su, sulogin, sum, swapoff, swapon, switch_root, sync,
sysctl, syslogd, tac, tail, tar, tee, telnet, test, tftp, time,
timeout, top, touch, tr, traceroute, traceroute6, true, tty, ttysize,
udhcpc, udhcpd, umount, uname, uncompress, unexpand, uniq, unix2dos,
unlzma, unlzop, unxz, unzip, uptime, usleep, uudecode, uuencode, vi,
vlock, volname, watch, wc, wget, which, whoami, xargs, xz, xzcat, yes,
zcat
#
|
|
Back to top
|
|
 |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Thu 27 Oct 2011, 10:21 Post subject:
PROBLEM |
|
Hallo,
die Befehle split und cat funktionieren wunderbar. Arbeite gerade an einem Script, das für ein ISO über Rechtsklick die Möglichkeit zum splitten anbietet und hierbei einen Ordner erstellt mit dem Namen des ISOs im Ordnernamen.
Ordner wird erstellt, ISO wird aufgeteilt. Nur bekomme ich die ISO-teile nicht in den Ordner geschrieben. Wie geht das?
Code: | #!/bin/bash
# Original Code written for conversion_mp3 by Don White (don570) Aug 2011
# re-used by RSH for rightclick_split_file-1.0 Okt 2011
APPDIR="`dirname $0`"
[ "$APPDIR" = "." ] && APPDIR="`pwd`"
export APPDIR="$APPDIR"
export APPDIR=`dirname $0`
[ $APPDIR = '.' ] && export APPDIR=`pwd`
#set language
TMP="`ls -1 $APPDIR/locals/ | grep ${LANG%.*}`"
. $APPDIR/locals/en_US:english #always run to fill gaps in translation
#fallback to macrolanguage if available (ISO 639-1 two letter code: en, es, fr, etc.)
[ -z $TMP ] && TMP="`ls -1 $APPDIR/locals/ | grep ${LANG%_*}:`" && echo $TMP
[ "$TMP" != "en_US:english" ] && . $APPDIR/locals/$TMP 2> /dev/null
z=`echo "$1" | sed "s/\/$//"`
t="${z%.*}"
DIALOG=Xdialog
$DIALOG --wrap --title "$LOC200" --yesno "$LOC400\n$LOC401\n" 0 0
if [ "$?" -eq "1" ] ;then
exit 0
fi
#------------------------------------------------------------------------------------
# hier passiert es, oder soll es passieren
mkdir "$t.iso.files"
split -b "20m" "$1" "$t.isopart-"
#split -b "20m" "$1" "$t.isopart-" funktioniert, aber ohne die Dateien in den erzeugten Ordner zu schreiben, da sollen sie aber hin
#------------------------------------------------------------------------------------
Xdialog --title "$LOC200" --wrap --screen-center --center --no-buttons --msgbox ". $LOC300 .
$LOC202" 17 65 100
exit 0
|
|
Back to top
|
|
 |
L18L
Joined: 19 Jun 2010 Posts: 3431 Location: www.eussenheim.de/
|
Posted: Thu 27 Oct 2011, 12:00 Post subject:
Re: PROBLEM Subject description: pipe |
|
RSH wrote: | Hallo,
die Befehle split und cat funktionieren wunderbar. Arbeite gerade an einem Script, das für ein ISO über Rechtsklick die Möglichkeit zum splitten anbietet und hierbei einen Ordner erstellt mit dem Namen des ISOs im Ordnernamen.
Ordner wird erstellt, ISO wird aufgeteilt. Nur bekomme ich die ISO-teile nicht in den Ordner geschrieben. Wie geht das?
...
#------------------------------------------------------------------------------------
# hier passiert es, oder soll es passieren
mkdir "$t.iso.files"
split -b "20m" "$1" "$t.isopart-"
#split -b "20m" "$1" "$t.isopart-" funktioniert, aber ohne die Dateien in den erzeugten Ordner zu schreiben, da sollen sie aber hin
#------------------------------------------------------------------------------------
Xdialog --title "$LOC200" --wrap --screen-center --center --no-buttons --msgbox ". $LOC300 .
$LOC202" 17 65 100
exit 0
|
probier doch mal >
split -b "20m" "$1" "$t.isopart-" > ordner/datei
und laß bitte den Loc... Quatsch
"$(gettext 'English message that can be translated ')"
ist doch viel netter
Gruß
L
|
Back to top
|
|
 |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Thu 27 Oct 2011, 13:25 Post subject:
|
|
Hallo L18L,
Quote: | probier doch mal >
split -b "20m" "$1" "$t.isopart-" > ordner/datei
und laß bitte den Loc... Quatsch
"$(gettext 'English message that can be translated ')"
ist doch viel netter. |
Zuerst kurz zu dem "Loc... Quatsch" und zu meiner allgemeinen Herangehens- und Arbeitsweise:
Die "Credits" für den LocQuatsch gehen (sorry, don570) an eben jenen don570. Von ihm ist praktisch die gesamte Datei sowie komplette Ordnerstruktur. Ich übernahm sie, da sie als Rechtsklick-funktion angelegt ist und von der Struktur dem Aufbau in /usr/local/apps/ entspricht. Von mir ist nur der Teil zwischen den gestrichelten Linien. Ich analysiere diese skriptbinären Dateien zuerst einmal, und checke, was passiert, wenn ich etwas ändere und kopiere erst einmal das, womit ich etwas anfangen und worauf ich aufbauen kann. Ich bin also nur (Goethe oder Schiller sagten wohl einmal etwas in der Art) ein "kreativer Dieb".
Zu Deinem Vorschlag:
Ich denke "ordner/datei" ist in diesem Falle "hart codiert". Ich bekomme aber den Namen des ISOs über:
Code: | z=`echo "$1" | sed "s/\/$//"`
t="${z%.*}"
|
z empfängt wohl den Namen vom Mausklick und konfiguriert/separiert irgend etwas daran und t liefert mir wohl den Pfad incl Dateiname ohne Extension.
In
steht dannn der vollständige Name des ISOs ohne Extension ($t). Der Teil nach dem Punkt ist der Teil, den ich an die Namen der aufgeteilten Dateien anhänge. Aus lupu525.iso wird somit eine Teildatei lupu525.isopart-. Der - dient zum Abtrennen der Counter (aa,ab,ac...zz) die split anhängt.
Ich muß also irgenwie den reinen Dateinamen des ISOs in einer Variablen erhalten und diese Variable bzw. diesen Dateinamen in den kompletten Pfad des erzeugten Ordners bringen.
Meine.Vorstellung war $t.iso.files (der erzeugte Ordner) mit $t.isopart- (der Name einer geteilten Datei) zu kombinieren, a'la: "$t.iso.files/$t.isopart-" oder auch "$t.iso.files%$t.isopart-". Was aber nicht funktionieren kann, wie mir später auffiel. Denn der komplette Pfadname steckt ja in beiden "$t". Ich schreibe die Dateien auf diese Weise also bestenfalls ins Nirgendwo - wenn überhaupt.
Es gibt sicher eine Funktion, mit der man Teile eines Pfad- und Dateinamens aus demselben in einer Variablen speichern und dann in einen anderen String (Pfadnamen) einfügen kann. Aber ich kenne die leider nicht.
Vielleicht weißt Du weiter?
Gruß, RSH
P.S.
Trotz dem ganzen LocQuatsch finde ich die Arbeiten von don570 wirklich gut. Er hat z.B. ein schönes Rightclick-Tool erstellt, daß Du Dir 'mal ansehen solltest. http://murga-linux.com/puppy/viewtopic.php?t=67013
|
Back to top
|
|
 |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Thu 27 Oct 2011, 13:57 Post subject:
|
|
Ich habe Dir mal die in PASCAL vorhandenen Stringfunktionen aufgeschrieben. Vielleicht hilft das noch zusätzlich.
concat
verknüpft beliebig viele Zeichen oder Strings miteinander
Aufruf:
s1:='User';
s2:='RSH'
concat(s1,' ',s2)
ergibt den String bzw. die Zeichenkette "User RSH".
insert
fügt einen String an einer beliebigen Stelle in einen String ein
Aufruf:
s1::'Hallo RSH';
s2:='User';
insert(s2,s1,Position)
die Position kann mit "pos" ermittelt werden
position:integer;
position:=pos(' RSH',s1) ergibt 6 (die Position des Leerzeichens)
insert(s2,s1,Position) ergibt also "Hallo User RSH".
Alles klar?
Gruß, RSH
|
Back to top
|
|
 |
L18L
Joined: 19 Jun 2010 Posts: 3431 Location: www.eussenheim.de/
|
Posted: Thu 27 Oct 2011, 14:37 Post subject:
|
|
RSH wrote: |
s1:='User';
s2:='RSH'
concat(s1,' ',s2)
ergibt den String bzw. die Zeichenkette "User RSH".
|
shell:
Code: | # s1='User'
# s2='RSH'
# echo "$s1 $s2"
User RSH
#
|
BaCon:
Code: | s1$='User'
s2$='RSH'
CONCAT$(s1$, " ", s2$)
|
Quote: | position:=pos(' RSH',s1) ergibt 6 (die Position des Leerzeichens) |
Code: | pos=INSTR("Hallo RSH", " RSH")
|
Code: | "$t.iso.files/$t.isopart-" |
Was ist vaiabler Name und was nicht?
Vielleicht so? Name der Variablen in geschweifter Klammer{}
Code: | "${t}.iso.files/${t}.isopart-" |
|
Back to top
|
|
 |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Thu 27 Oct 2011, 15:50 Post subject:
|
|
Das ist ja die reinste Code-Battle hier...
Variabler Name ist: $t. denn dieser Teil wird während des Programmlaufs ermittelt, während iso.files bzw. isopart meine (hart codierten) Vorgaben sind also nicht während des Programmlaufs ermittelt werden. Diese bleiben immer als iso.files oder ispart im Ordner bzw. Dateinamen einer gesplitteten Datei. $t. ist jedoch inhaltlich mit der Datei unter meinem Rechtsklick gefüllt (also Pfad- und Dateiname dort abgespeichert).
Zur Erklärung: eine Variable, im SInne von PASCAL, ist einfach nur ein Speicherplatz für einen zuvor zu definierenden Datentyp. Der Datentyp String z.B. ist ein Standard-datentyp und muß somit nicht mehr definiert werden. In der Anwendung bedeutet dies, das ich den jeweiligen Wert einer Variablen während des Programmlaufs nicht nur auslesen sondern auch beliebig oft beschreiben und somit damit arbeiten kann (variabel eben, nicht konstant oder "hart codiert").
Natürlich nur solange, wie ich dem vereinbarten Datentyp bei der Verarbeitung entspreche.
Nach meinem Verständnis bringt Code: | # s1='User'
# s2='RSH'
# echo "$s1 $s2"
User RSH
# | die Zeile "User RSH" auf den Bildschirm. Sie soll aber irgendwo gespeichert sein, sodaß ich den Wert auslesen, verändern und wieder dorthin speichern kann.
Vielleicht in der Art: echo rueckgabe="$s1 $s2"
???
Und dann müßte ich in rueckgabe eine position (pos) ermitteln köönen, um dort Teile des Strings löschen und neue Stringteile einfügen zu können.
Also z.B. delete(s1,pos,4)
Lösche aus s1 ab pos (5) 4 Zeichen - aus "User RSH" wird "User".
Und dann eben wieder insert(s1,s2,pos).
Ich benötige ja für das zu schreibende ISO den Pfad- und ISO-Dateinamen, für die auszulesenden Dateien im jeweiligen Ordner benötige ich aber den vollständigen Pfad des Ordners mit den gesplitteten Dateien sowie den Teil des Dateinamens einer gesplitteten Datei, den ich beim splitten angehängt habe (der Teil vor dem Counter, den split anhängt).
Nur dann bin ich über den Rechtsklick so frei, jedes irgendwo steckende ISO splitten und jeden sonstwo steckenden Ordner mit gesplitteten Dateien wieder in ein ISO verwandeln zu können.
Tja
|
Back to top
|
|
 |
emil
Joined: 10 Nov 2009 Posts: 630 Location: Austria
|
Posted: Thu 27 Oct 2011, 17:05 Post subject:
|
|
Code: | #!/bin/sh
FILE=test.iso
DIR=test
split -b "20m" $FILE ./$DIR/$FILE- |
funktioniert bei mir
Für die Kommandozeile kann "mysplit" nützlich sein:
Code: | #!/bin/sh
split -b "20m" $1 ./$2/$1- |
|
Back to top
|
|
 |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Thu 27 Oct 2011, 18:54 Post subject:
|
|
Huuuh,
bis ich das alles abgearbeitet habe, werde ich erst einmal "mein" unrsprüngliches Skript verwenden. So oft muß ich keine größeren Dateien splitten und für den Zusammenbau habe ich ein Skript geschrieben, das ich mit in den Ordner kopiere. Mit einem Klick auf dieses Skript, das natürlich für jedes aufgeteilte ISO manuell angepaßt werden muß, wird das ISO im selben Ordner wieder zusammengesetzt.
Bis ich ein tragfähiges Resultat für meine eigentliche Idee der Umsetzung oder (wahrscheinlich eher) noch Fragen habe, melde ich mich wieder.
Bis dahin erst einmal vielen Dank, für Deine aktive Beteiligung, L18L und natürlich auch an Dich, emil.
Gruß, RSH
|
Back to top
|
|
 |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Sat 29 Oct 2011, 09:17 Post subject:
|
|
Hallo,
da bin ich wieder. Ich denke, ich habe nun den ungefähren Überblick, was ich zu tun habe. Ich benötige allerdings noch ein paar Equivalente zu einigen PASCAL-funktionen. Helfen würde sicher auch ein Hinweis, wo ich eine Befehlsübersicht dieser Skriptsprache finde (wie heißt diese Skriptsprache eigentlich?).
Also, bekommen habe ich bisher folgende Funktionen:
Quote: |
PASCAL: (strings zusammenfügen)
s1:='User';
s2:='RSH'
concat(s1,' ',s2)
ergibt den String bzw. die Zeichenkette "User RSH".
Equivalent:
s1='User'
s2='RSH'
echo "$s1 $s2"
ergibt den String bzw. die Zeichenkette "User RSH"
speichern tue ich es dann wohl mit s=echo "$s1 $s2" (o.s.ä. bitte einmal genau hinsehen - syntax, fehlende zeichen? " ' ' usw.?)
PASCAL: (position eines zeichens ermitteln)
position:=pos(' RSH',s1) position enthält 6 (die Position des Leerzeichens)
Equivalent:
pos=INSTR("Hallo RSH", " RSH") ergibt 6 (die Position des Leerzeichens)
|
benötigt wird noch:
Quote: |
PASCAL:
n:=length(s1) n beinhaltet dann den wert 4, die Länge des Strings s1
delete(s1,start,anz)
delete(s1,3,2) ergibt den String "Us" (ab 3. Stelle zwei Zeichen gelöscht)
insert(s1,'n',2) aus s1 (User) wird s1 (Unser)
|
Hoffe, jemand kann mir weiterhelfen. Vielleicht L18L?
Gruß, RSH
|
Back to top
|
|
 |
rhadon

Joined: 27 Mar 2008 Posts: 1293 Location: Germany
|
Posted: Sat 29 Oct 2011, 12:04 Post subject:
|
|
Quote: | speichern tue ich es dann wohl mit s=echo "$s1 $s2" |
es langt s="$s1 $s2".
Bezüglich Zeichenanzahl und String teilen, helfen dir vielleicht diese paar Zeilen weiter:
Code: | #test2.sh
file="savefile.3fs"
echo "file="$file
count=${#file}
num=$[${#file}-4]
extnum=$[$count-$num]
echo "count="$count
echo "num="$num
echo "extnum="$extnum
echo "ext="${file:$num}
echo "name="${file:0:$num}
ext=${file:$num}
name=${file:0:$num}
#.BKP-`date +%y.%m.%d-%H.%M`
a=$name".BKP`date +%y%m%d-%H.%M`"$ext
echo "a="$a |
Allgemein zum Bash scripting helfen dir vielleicht
Advanced Bash-Scripting Guide und Bash Guide for Beginners weiter. Findest du u. a. hier. Auch dieser Thread könnte interessant für dich sein.
Hoffe mal wieder, es hilft etwas,
Rolf
_________________ Ich verwende "frugal", und das ist gut so.
Raspberry Pi without Puppy? No, thanks.
|
Back to top
|
|
 |
RSH

Joined: 05 Sep 2011 Posts: 2420 Location: Germany
|
Posted: Sat 29 Oct 2011, 12:55 Post subject:
|
|
Hallo, rhadon.
Ooohhhhh, das wird es ganz sicher. Man sollte nicht um Hlfe bitten, es könnte in Arbeit ausarten.
Habe mir die Links gerade mal angesehen und gleich ein paar .pdf heruntergeladen. Die werde ich am Montag erstmal ausdrucken und dann kann ich auf gewohnte Weise arbeiten - nämlich mit gedruckter Dokumentation. Ist doch irgendwie besser und geht schneller, als das nervige durch-tausende-von-Fenstern-geklicke, auf der Suche nach Funktionen.
Ich war mit diesem Thema auch im englischsprachigen Teil unterwegs und erhielt dort auch einige nützliche Hinweise, so daß ich zuversichtlich bin, mit der nun zur Verfügung stehenden Information und Dokumentation mein Vorhaben verwirklichen zu können. Das .pet gibt's dann irgendwann hier.
Danke an Dich, emil, PANZERKOPF, big_bass und besonders L18L
|
Back to top
|
|
 |
|
Page 1 of 2 [18 Posts] |
Goto page: 1, 2 Next |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|