Software > Alternative Betriebssysteme
Netzwerkdruck mit MiNT - suche Hilfe beim lpr setup
Heinz Schmidt:
Nun gut,
ich habe lp.xdd weggelassen, weil es nur für Parallel-Drucker notwendig ist. Daher habe ich nach dem Start von Mint kein /dev/lp mehr. Das ist soweit in Ordnung bzw. wie erwartet.
Nach dem Start von lpd habe ich allerdings immer noch kein /dev/lpd. Ich hatte erwartet, das lpd beim Start eine socket erstellt, die wie in der /etc/printcap bennannt /dev/lp heißt. Ist aber nicht so. Ein anderes device in der /etc/printcat einzutragen nutzt auch nichts.
Leider kann ich (mangels Programmierfähigkeiten) aus den Sourcen des LPD Paketes nicht erkennen wie die erstellte Socket heißen sollte, wo ich sie finde. Daher habe ich auch keine Ahnung wie ich das testen kann.
Könnte bitte einer der C-Programmierer mal in die Sourcen (s.o.) sehen und mich erleuchten?
@ m0n0 könntest Du vielleicht ein paar Minuten dafür investieren? Das Thema Netzwerk, Sockets und IP unter Mint hast Du doch bestens drauf.
Gruß vom verzweifelten Heinz
Heinz Schmidt:
Hallo zusammen,
wieder ein kleines Stückchen weiter.
Der lpd erzeugt beim start die Socket
--- Code: ---/tmp/.printer
--- Ende Code ---
Das klappt auch auf meinem Milan. Leider funktioniert der connect auf diese Socket nicht. Warum verstehe ich noch nicht ... habe ja auch keine Ahnung von Sockets ;-)
Der Teil in startdeamon.c, der die o.g. Fehlermeldung ausgibt ist:
--- Code: ---if (connect(s, (struct sockaddr *)&sun, strlen(sun.sun_path) + 2) < 0) {
perr("connect");
(void) close(s);
return(0);
}
--- Ende Code ---
Es schlägt also wie gesagt das Verbinden mit der Socket fehl. Wenn jemand dazu eine Idee hat, immer her damit.
Ich schreibe das alles parallel auch auf der Mint Mailing Liste, da sind ja auch einige Programmierer unterwegs.
Gruß Heinz
Arthur:
Hallo Heinz, klasse wie Du dich da hinein kniest. Ich bin gespannt wann das Drucken übers Netz funktioniert. Bitte weiter so.
m0n0:
--- Zitat ---Wenn jemand dazu eine Idee hat, immer her damit.
--- Ende Zitat ---
rückgabe wert von von connect abfangen:
long error = connect(...) ;
if( error < xyz ) {
printf("connect: %d\n", error );
...
}
Heinz Schmidt:
Hallo zusammen,
heute habe ich mal wieder ein paar Stunden für das Thema spendiert und als C-Dummy im Quelltext herumgebastelt.
Unter dem Strich ist nicht viel dabei herausgekommen. Klar ist, das der connect-Aufruf für die socket -1 zurückliefert. Was laut Doku bedeutet, das der Verbindungsversuch nicht erfolgreich war.
Die Ursache für den nicht erfolgreichen Verbindungsversuch soll per Fehlercode in der Variable "errno" übermittelt werden. Im Quelltext der Funktion startdaemon.c wird das auch alles schön behandelt:
--- Code: ---static void
perr(msg)
char *msg;
{
extern int errno;
extern char *name;
char *strerror();
(void)printf("%s: %s: %s\n", name, msg, strerror(errno));
}
--- Ende Code ---
Die Funktion
--- Code: --- ... strerror(errno));
--- Ende Code ---
übersetzt den zurückgegebenen Fehlercode in "file not found".
Weil ich damit nicht viel anfangen kann und den tatsächlichen Fehlercode wissen wollte, habe ich das ganze mal geändert in:
--- Code: --- ... errno);
--- Ende Code ---
Da "errno" ja als int definiert ist, habe ich als Ergebins einen sinnvollen Zahlenwert erwartet, den ich dann z.B. mit Hilfe dieser Liste hätte interpretieren können.
Leider bekomme ich aber totalen Kaudawelsch heraus und bin mal wieder ratlos.
--- Code: ---/usr/ucb/lpr: connect: »µ»...
--- Ende Code ---
Irgendwelche Ideen, Hinweise, ...?
EDIT:
Muss ich "errno" für die Ausgabe anders formatieren? >>> JA
Nun ja, ich bin halt ein C-DAU ... da ich ja nun mit printf einen integer / Zahlenwert ausgeben möchte, sollte ich den auch nicht als string formatieren. Folglich muss ich für errno die Formatierung von %S auf %d ändern.
--- Code: --- (void)printf("%s: %s: %d\n", name, msg, errno);
--- Ende Code ---
Und das ganze spuckt mir dann als Fehlercode die 33 aus
--- Code: ---/usr/ucb/lpr: connect: 33
--- Ende Code ---
... was in der Doku die ich gefunden habe, leider nicht beschrieben ist.
Also einen kleinen Schritt weiter gekommen ... aber dann auch wieder nicht :(
Gruß Heinz
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln