source: projects/userspace-driver/puncher-frontend.pl @ 1

Last change on this file since 1 was 1, checked in by sven, 12 years ago

Erstimport

File size: 1.9 KB
Line 
1#!/usr/bin/perl
2#
3# kleines Frontend für puncher.c, welches
4# folgende Funktionen bereitstellt:
5#
6#   * Beschriftung des Lochstreifens mittels Programms
7#   * Nullbytes vor Beschriftung (zum Warmlaufen des Punchers)
8#     und vor Daten (Trennung Beschriftung/Programm)
9#   * Aufruf von ./puncher[.c]
10#
11# Aufrufparameter: Siehe --help.
12#
13
14use strict;
15
16# Konstanten:
17require "../schriften/neue-schrift.pl";
18my $userspace_driver = "./puncher"; #../perl-tools/punch-simulator"; # vollstaendiges Kommando
19my $debug = 0; # per Parameter -d setzbar.
20
21# wie viel Nullbytes an welcher Stelle?
22my $null_before_label = 2;
23my $null_before_data  = 40;
24
25# hier gehts los.
26sub HELP_MESSAGE {
27    print STDERR <<"HELP";
28Usage: $0 [params] [dateiname(n)]
29
30Puncher-Frontend mit Labelfunktion und Nullbytes. Parameter:
31
32-n \t*Kein* Label drucken
33-d \tDebuggen (Puncherprogramm, ...)
34
35Wenn -n nicht gesetzt ist, wird zunaechst ein Label per STDIN
36abgefragt. Wenn keine Datei angegeben ist, wird anschliessend
37die zu punchende Datei ueber STDIN erwartet.
38HELP
39}
40
41use Getopt::Std;
42our($opt_n, $opt_d);
43getopts('nd');
44
45$debug = $opt_d;
46
47my $bytes = ''; # der große Byte-Array/string.
48
49# Label:
50unless($opt_n) {
51    # Label drucken.
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    # Label machen.
62    $bytes .= label($label);
63}
64
65# Nullbytes
66$bytes .= pack("C",0) x $null_before_data;
67
68# Daten einlesen.
69print STDERR (@ARGV ? "Reading from @ARGV...\n" : "Reading from STDIN...\n");
70$bytes .= $_ while(<>);
71
72# Puncher ausfuehren
73open(PUNCHER, "|$userspace_driver ".($debug?'-d':'').' -l'.(length($bytes))) or die "Konnte $userspace_driver nicht starten: $!";
74print PUNCHER $bytes;
75close(PUNCHER);
76
77print "\n", $? ? "Fehler beim Puncheln (Statuscode $?)" : "Erfolgreich fertiggepunscht.", "\n";
78
79exit $?;
80
81
Note: See TracBrowser for help on using the repository browser.
© 2008 - 2013 technikum29 • Sven Köppel • Some rights reserved
Powered by Trac
Expect where otherwise noted, content on this site is licensed under a Creative Commons 3.0 License