Ergebnis 1 bis 3 von 3

Thema: monior 1.8.1 - Fehlermeldung "Syntaxfehler in Aktionsaufruf ->%T oder %R"

  1. #1
    Registriert seit
    05.10.2009
    Beiträge
    149

    monior 1.8.1 - Fehlermeldung "Syntaxfehler in Aktionsaufruf ->%T oder %R"

    Hi zusammen,

    ich steh gerade wie der Ochs vorm Berg,

    in meiner .monrc habe ich Einträge folgender Form:


    Code:
    PAGER 0136241* [../../../etc/pocserv/dispatch/DISPATCH '%R' '%T' >> /tmp/monitoractionlog] Vollalarm Bibabutzedorf
    Ja, ist ein wenig krude, aber monitor macht bei mir alle Pfade relativ zum Home des aufrufenden Users, aber ohne die %R und %T wird es gerufen. Mit den %R und %T wie oben kriege ich bei Auslösung die Fehlermeldung:

    Syntaxfehler in Aktionsaufruf ->%T oder %R

    Schnell mal in den Code geguggt, aber sehe gerade nicht, was daran verkehrt sein soll, da wird simple Stringersetzung gemacht?

    Oder stört es sich an den Quotes? Brauche ich halt, können ja auch Leerzeichen drin sein?

    Code:
    	void action(char *program) {
    	/**************************************************************************
    	 *	ggf. Ersetzen von %? und Programmaufruf
    	 **************************************************************************/
    		#define ALLACTIONLEN	600
    		char actionoutprint[ALLACTIONLEN], *c;
    
    		/*	Aktion für POCSAG
    		 *	system ruft die auszuführende Datei mit Pfad auf	*/
    
    		if (*program == 0)
    			return;
    
    		time(&tp);
    
    		/*	falls nicht bereits innerhalb der letzten 30 Sec.	*/
    		if (tp - al->action->value > 30) {
    			al->action->value = tp;
    			memset(actionoutprint, 0, sizeof(actionoutprint));
    			memcpy(actionoutprint, program, strlen(program));
    			delete_EOF_errors(print);
    			while ((c = strchr(actionoutprint, '%')) != NULL) {
    				int	plen, clen	= strlen(c), i;
    
    				switch (*(c + 1)) {
    
    					case 'T':	/*	Text	*/
    						plen = strlen(print);
    
    						memcpy((c + plen), c, clen);
    						memcpy(c + 1, print, plen);
    						*c = '\"';
    						*(c + plen + 1) = '\"';
    						break;
    
    					case 'R':	/*	Ric	*/
    						plen = 7;
    						memcpy((c + plen - 1), c, clen);
    						for (i = 0; i < 7; i++) {
    							d = set[i] + '0';
    							*(c + i) = d;
    						}
    						*(c + 7) = rx->func + '0';
    						break;
    
    					default:
    						verbprintf(ALWAYS, "POCSAG: Syntaxfehler in Aktionsaufruf -> %%T oder %%R");
    						sprintf(outprint, "POCSAG: Syntaxfehler in Aktionsaufruf -> %%T oder %%R");
    						update_view(outprint, 0, FIRSTLINE, NEW);
    						return;
    				}
    				continue;
    			}
    			if (s->l2.pocsag.sclog)
    				update_file(actionoutprint, LOG);
    			system(actionoutprint);
    		}
    	}	/*	pocsag_printmessage:action	*/
    Weiß jemand von Euch, was ich verkehrt mache?

    Grüße,
    Thorongil

  2. #2
    Registriert seit
    07.08.2003
    Beiträge
    161
    Also wenn ich den Quelltext richtig interpretiere, dann wird der Text (%T) schon vom Programm aus in Anführungszeichen gesetzt.
    Da die RIC (%R) nur nummerisch ausgegeben wird, braucht man dort keine Hochkommas.

    So wie ich das sehe, wird dann die folgende Befehlszeile zusammengesetzt:

    ../../../etc/pocserv/dispatch/DISPATCH '1234567' '"Das ist ein Test"' >> /tmp/monitoractionlog

    Möglicherweise stört er sich an den doppelt vorhandenen Anführungszeichen.

    Probiers doch einfach mal ohne die Hochkommas (') um %T und %R

    Das Monitor alle Pfade relativ zum HOME-Verzeichnis macht, ist normal.

  3. #3
    Registriert seit
    05.10.2009
    Beiträge
    149
    Hm, das hatte ich auch probiert.

    Einzig was mir noch in den Sinn käme: Ubuntu 9.10 läuft durchweg in Unicode.

    die Quellcodestelle macht aber direkt Stringoperationen auf einzel-byte-weiten zeichen.
    Dann funzt evtl. das switch net, weil nach dem "%" eben net gleich "T" oder "R" kommt..

    Aber hab mich jetzt verabschiedet und den monitord eingesetzt, mit Perl einen primitivclient für POCSAG basteln war dann einfacher als ich ursptünglich gedacht hatte.

    Und mit init-Skripten starten zu können ist auch was Feines :D

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •