|
Revision 1, 1.9 kB
(checked in by sven, 4 years ago)
|
|
Erstimport
|
| Line | |
|---|
| 1 | |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | |
|---|
| 9 | |
|---|
| 10 | |
|---|
| 11 | |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | use strict; |
|---|
| 15 | |
|---|
| 16 | |
|---|
| 17 | require "../schriften/neue-schrift.pl"; |
|---|
| 18 | my $userspace_driver = "./puncher"; |
|---|
| 19 | my $debug = 0; |
|---|
| 20 | |
|---|
| 21 | |
|---|
| 22 | my $null_before_label = 2; |
|---|
| 23 | my $null_before_data = 40; |
|---|
| 24 | |
|---|
| 25 | |
|---|
| 26 | sub HELP_MESSAGE { |
|---|
| 27 | print STDERR <<"HELP"; |
|---|
| 28 | Usage: $0 [params] [dateiname(n)] |
|---|
| 29 | |
|---|
| 30 | Puncher-Frontend mit Labelfunktion und Nullbytes. Parameter: |
|---|
| 31 | |
|---|
| 32 | -n \t*Kein* Label drucken |
|---|
| 33 | -d \tDebuggen (Puncherprogramm, ...) |
|---|
| 34 | |
|---|
| 35 | Wenn -n nicht gesetzt ist, wird zunaechst ein Label per STDIN |
|---|
| 36 | abgefragt. Wenn keine Datei angegeben ist, wird anschliessend |
|---|
| 37 | die zu punchende Datei ueber STDIN erwartet. |
|---|
| 38 | HELP |
|---|
| 39 | } |
|---|
| 40 | |
|---|
| 41 | use Getopt::Std; |
|---|
| 42 | our($opt_n, $opt_d); |
|---|
| 43 | getopts('nd'); |
|---|
| 44 | |
|---|
| 45 | $debug = $opt_d; |
|---|
| 46 | |
|---|
| 47 | my $bytes = ''; |
|---|
| 48 | |
|---|
| 49 | |
|---|
| 50 | unless($opt_n) { |
|---|
| 51 | |
|---|
| 52 | $bytes .= pack("C", 0) x $null_before_label; |
|---|
| 53 | |
|---|
| 54 | print STDERR "Gewuensches Label eintippen und mit NL beenden:\n"; |
|---|
| 55 | chomp(my $label = <STDIN>); |
|---|
| 56 | unless(check_string($label)) { |
|---|
| 57 | die "Schlechtes Label! Beende.\n"; |
|---|
| 58 | exit 1; |
|---|
| 59 | } |
|---|
| 60 | |
|---|
| 61 | |
|---|
| 62 | $bytes .= label($label); |
|---|
| 63 | } |
|---|
| 64 | |
|---|
| 65 | |
|---|
| 66 | $bytes .= pack("C",0) x $null_before_data; |
|---|
| 67 | |
|---|
| 68 | |
|---|
| 69 | print STDERR (@ARGV ? "Reading from @ARGV...\n" : "Reading from STDIN...\n"); |
|---|
| 70 | $bytes .= $_ while(<>); |
|---|
| 71 | |
|---|
| 72 | |
|---|
| 73 | open(PUNCHER, "|$userspace_driver ".($debug?'-d':'').' -l'.(length($bytes))) or die "Konnte $userspace_driver nicht starten: $!"; |
|---|
| 74 | print PUNCHER $bytes; |
|---|
| 75 | close(PUNCHER); |
|---|
| 76 | |
|---|
| 77 | print "\n", $? ? "Fehler beim Puncheln (Statuscode $?)" : "Erfolgreich fertiggepunscht.", "\n"; |
|---|
| 78 | |
|---|
| 79 | exit $?; |
|---|
| 80 | |
|---|