ja er lebt noch, er lebt, er lebt noch....
So mädels...
In der mon_mysql.c müsst ihr hinter der mon_mysql_store_dme funktion folgende einbauen(hab leider keine Zeilen zahlen, da ich zu viel schon in den Dateien rumgewurschtelt habe):
int mon_mysql_update_dme(unsigned int ric, unsigned int subadresse, char * funktion, char* bezeichnung, char* text)
{
char sql_command[1000] ;
char intbuffer[10] ;
char escape_string[1000] ;
char kurz[10];
char short2[10];
//Die ersten 3 zeichen des Textes zwischenspeichern
unsigned int i = 0;
for(i = 0; i < 3; i++)
kurz[i] = text[i];
memset(sql_command,0,1000) ;
strcat(sql_command,"update ") ;
strcat(sql_command,sql_poc_zvei_table) ;
strcat(sql_command," SET text = ");
// Text
strcat(sql_command,"\"") ;
mysql_real_escape_string(&mon_mysql, escape_string ,text,strlen(text)) ;
strcat(sql_command,escape_string) ;
strcat(sql_command,"\"") ;
/* Suchen des alten Eintrags */
strcat(sql_command," WHERE zeit BETWEEN (now()-interval 30 second) and now()");
strcat(sql_command," AND adresse like \'\%");
/* Adresse /RIC) */
sprintf(intbuffer, "%d",ric) ;
strcat(sql_command,intbuffer) ;
strcat(sql_command,"\%\' AND text like \'\%");
/*Textvergleich */
sprintf(short2, "%s", kurz);
strcat(sql_command,short2);
strcat(sql_command,"\%\'");
if (mysql_query(&mon_mysql, sql_command) != 0)
{
fprintf(stderr, "Failed to execute query: Error: %s\n",
mysql_error(&mon_mysql));
exit(0) ;
return 0 ;
}
return 1 ;
}
Als nächstes müsst ihr in der pocsag.c im unteren Bereich der pocsag_printmassage funktion folgende fettgedruckte Zeile hinzufügen...
if ((checklast = check_last())) {
if (checklast == 2 && common.line != NULL) {
/* reAusgabe: Suchen der zu ersetzenden Zeile */
mon_mysql_update_dme((unsigned int) sql_ric, (unsigned int) sql_sub, sql_funktion, sql_bezeichnung, sql_text) ;
mem = common.line;
len = (MAXROW < len) ? MAXROW : len;
if (mem->next == NULL) {
/* sollte eigentlich nie vorkommen... */
verbprintf(6, "Pocsag-Text nicht wiedergefunden: %s", out->string);
return;
}
while (strncmp(out->string, mem->next->string, len) /* Text */
|| strstr(mem->string, alias) == NULL) { /* Header */
mem = mem->next;
if (mem->next == NULL) {
/* sollte eigentlich nie vorkommen... */
verbprintf(6, "Pocsag-Text nicht wiedergefunden: %s", out->string);
return;
}
shift++;
}
while (sublines--) {
Line *del;
del = mem->next;
mem->next = mem->next->next;
len_list--;
free(del);
}
update_file(outprint, LOG);
}
else {
mon_mysql_store_dme((unsigned int) sql_ric, (unsigned int) sql_sub, sql_funktion, sql_bezeichnung, sql_text) ;
/* 1: Text anders oder nach Timeout -> Ausgabe */
if (txtmode == 1)
strncat(outprint, out->string, MAXROW - strlen(outprint));
if (!al->color && get_ric(s->l2.pocsag.color, set, rx->func, &ric) > 0){
al->color = ric->val;
};
/* Header */
update_view(outprint, al->color, FIRSTLINE, LOG);
}
Danach einfach neu kompilieren und gut... :-)
Falls einer Denkfehler in meinen Funktionen findet einfach melden...
Ich sage ja.. c basics :-) und einfach mal nebenbei mitten in der nacht gemacht
Das Genie überblickt das Chaos.. ich bin nur leieder keins
Hallo zusammen,
ich hätte an alle die hier mitwirken eine große Bitte: Könntet ihr BITTE für jede neu zur Verfügung gestellte Version einen neuen Thread eröffnen? Es ist fast unmöghlich sich durch dieses riesige Monster hier durchzuarbeiten ;) Ich habe monitor mittlerweile inklusive Datenbankanbindung am laufen, finde aber z.B. keine passende Version des PHP interfaces (im Quellcode des PHP Programmes werden ganz andere Tabellenfelder erwartet als in der Datenbank die ich jetzt habe). Dieser Wust hier trägt sicher nicht zum weiterkommen dieses an sich tollen Projektes bei.
Wenn es ein komplettes Set an Programmen gibt die auch zusammen passen kann ich die installation dann auch gerne mal im Wiki dokumentieren und evtl auch ein wenig vereinfachen.
Schönen Gruß
Andreas