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