Hallo,

Ich wurde im Usenet jetzt schon etliche Male - berechtigerweise -
wegen meinen "geplätteten" References angesprochen.

Sprich: Wenn ich eine Antwort schreibe, wird nur die erste Reference
/ BEZ übernommen und dann noch die MID des beantworteten Postings
angehängt. Gefordert wird aber eigentlich, daß möglichst alle
References übernommen werden und dann noch die MID des beantworteten
Postings.

Da ich nun gemerkt habe, daß der Quellcode von MD I zu haben ist,
habe ich ihn mir angeschaut und so geändert, daß neben der ersten
BEZ-Zeile auch noch die letzten zehn übernommen werden (sofern
vorhanden).

Die geänderten Dateien habe ich unter

http://stephan.manske-net.de/md-neu.lha abgelegt.



Nun habe ich zwei Bitten:

1) Da ich schon lange nicht mehr programmiert habe und ich mir auch
nicht zu 100% sicher bin, ob ich den Code in seiner Gänze verstanden
habe, möge sich doch bitte mal jemand versierteres (Oli!?) das ganze
angucken.

Die eigentlichen Änderungen habe ich in den Dateien msg.c und
sendwin.c gemacht. Bei den anderen  Dateien in dem Archiv mußten nur
die dortigen Aufrufe von dosendwin an die neuen Variablen angepaßt
werden.

Alle geänderten Passagen werden wie folgt eingeleitet:

/* stm: mehr BEZ-Zeilen - die Zahlen beginnen in der BEZ-Kette von "hinten": 1 ist der 
gequoteten Nachricht am "nächsten" */

Kernstück ist der Ersatz von

(msg.c)

|hl2 = hl_findheader( hlist, "BEZ" );
|if( hl2 == hl_findlastheader( hlist, "BEZ" ) )
|        hl2 = NULL;
|/*if( !hl2 )
|        hl2 = hl_findheader( hlist, "BEZ" );*/
|
|hl = hl_findheader( hlist, "MID" );
|rc = dosendwin((public)?"Öffentliche Antwort...":"Private Antwort...",
|        betreff,0,
|        hl->data, emp,
|        flags,
|        0,0,
|        bi->diskussionin[0] ? bi->diskussionin : NULL,
|        qc[0]?qc:NULL,
|        hl2 ? hl2->data : NULL,
|        NULL,
|        NULL,
|        fto[ 0 ] ? fto : NULL
|);

durch

|bez_root = hl_findheader( hlist, "BEZ" );
|if (bez_root)
|  {
|    xbez_root = bez_root->data;
|    hl_delheader(bez_root);
|  }
|else
|  xbez_root=NULL;

hier wird zuerst die allererste BEZ gelesen

Zum hl_delheader:

Ich gehe, nach einigem Querlesen davon aus, daß die hlist eine
eigenständige Instanz ist, die beliebig verändert werden kann somit
keine Rückkopplung zum eigentlichen Header des Ursprungpostings hat.
Sollte dem nicht so sein, dann sind meine diesbezüglichen Codezeilen
natürlich wertlos, da sie im Header des Bezugspostings rumpfuschen
würden. Ich müßte die hlist dann einmal als komplette by value-Kopie
erstellen, damit ich damit arbeiten kann.

|bez1 = hl_findlastheader( hlist, "BEZ" );
|if (bez1)
|  {
|    xbez1 = bez1->data;
|    hl_delheader(bez1);
|  }
|else
|  xbez1=NULL;

Nachdem die erste BEZ gelesen wurde - diese sollte ja idealerweise
das allererste Posting im Thread bezeichen (deshalb auch _root) -
sind von nun an die letzten BEZ wichig, da sie "näher" am
Bezugposting sind (quasie "jünger" sind). Dafür lese ich zuerst die
letzte BEZ ein und lösche sie dann. Danach ist die vorletzte BEZ zur
nunmehr letzten geworden.

|bez2 = hl_findlastheader( hlist, "BEZ" );
|if (bez2)
|  {
|    xbez2 = bez2->data;
|    hl_delheader(bez2);
|  }
|else
|  xbez2=NULL;

irgendwann sind in einem sehr jungen Thread vielleicht nicht einmal
zehn BEZs vorhanden, dann wird eben ein NULL geliefert und später
entsprechend nicht beachtet.

|bez3 = hl_findlastheader( hlist, "BEZ" );
|if (bez3)
|  {
|    xbez3 = bez3->data;
|    hl_delheader(bez3);
|  }
|else
|  xbez3=NULL;

[...]

|bez10 = hl_findlastheader( hlist, "BEZ" );
|if (bez10)
|  {
|    xbez10 = bez10->data;
|    hl_delheader(bez10);
|  }
|else
|  xbez10=NULL;
|
|/* stm: Hat das Quoting nur ein BEZ, wird es nicht übernommen!? */
|
|/*if( hl2 == hl_findlastheader( hlist, "BEZ" ) )
|        hl2 = NULL;                             */
|
|
|/*if( !hl2 )
|        hl2 = hl_findheader( hlist, "BEZ" );*/
|
|hl = hl_findheader( hlist, "MID" );
|
|
|/* stm: mehr BEZ-Zeilen - die Zahlen beginnen in der BEZ-Kette von "hinten": 1 ist 
|der gequoteten Nachricht am "nächsten" */
|
|rc = dosendwin((public)?"Öffentliche Antwort...":"Private Antwort...",
|        betreff,0,
|        hl->data, emp,
|        flags,
|        0,0,
|        bi->diskussionin[0] ? bi->diskussionin : NULL,
|        qc[0]?qc:NULL,
|        xbez_root ? xbez_root : NULL,
|        xbez1 ? xbez1 : NULL,
|        xbez2 ? xbez2 : NULL,
|        xbez3 ? xbez3 : NULL,
|        xbez4 ? xbez4 : NULL,
|        xbez5 ? xbez5 : NULL,
|        xbez6 ? xbez6 : NULL,
|        xbez7 ? xbez7 : NULL,
|        xbez8 ? xbez8 : NULL,
|        xbez9 ? xbez9 : NULL,
|        xbez10 ? xbez10 : NULL,
|        NULL,
|        NULL,
|        fto[ 0 ] ? fto : NULL
|);


sowie (sendwin.c)

|/* Bezuge */
|if( mailbezug && !ogreValue( ogw, GID_CBCLEARBEZ ) )
|{
|        if( mqbez )
|                hl_addheader( hlist, "BEZ", mqbez );
|        hl_addheader( hlist, "BEZ", mailbezug );
|        if( mfto )
|                hl_addheader( hlist, "F-TO", mfto );
|}

durch

|/* Bezuge */
|if( mailbezug && !ogreValue( ogw, GID_CBCLEARBEZ ) )
|{
|
|        /* stm: mehr BEZ-Zeilen - die Zahlen beginnen in der BEZ-Kette von "hinten": 
|1 ist der gequoteten Nachricht am "nächsten" */

hier werden die BEZ nun wieder geschrieben, zuerst die root-BEZ, dann
die zehntletzte, dann die neuntletzte usw. Natürlich immer nur, wenn
existent.

|        if( mqbez_root )
|                hl_addheader( hlist, "BEZ", mqbez_root );
|
|        if( mqbez10 )
|                hl_addheader( hlist, "BEZ", mqbez10 );
|
|        if( mqbez9 )
|                hl_addheader( hlist, "BEZ", mqbez9 );
|
|        if( mqbez8 )
|                hl_addheader( hlist, "BEZ", mqbez8 );
|
|        if( mqbez7 )
|                hl_addheader( hlist, "BEZ", mqbez7 );
|
|        if( mqbez6 )
|                hl_addheader( hlist, "BEZ", mqbez6 );
|
|        if( mqbez5 )
|                hl_addheader( hlist, "BEZ", mqbez5 );
|
|        if( mqbez4 )
|                hl_addheader( hlist, "BEZ", mqbez4 );
|
|        if( mqbez3 )
|                hl_addheader( hlist, "BEZ", mqbez3 );
|
|        if( mqbez2 )
|                hl_addheader( hlist, "BEZ", mqbez2 );
|
|        if( mqbez1 )
|                hl_addheader( hlist, "BEZ", mqbez1 );
|
|
|        hl_addheader( hlist, "BEZ", mailbezug );
|        if( mfto )
|                hl_addheader( hlist, "F-TO", mfto );
|}



2) Da ich keinen sas/c-Compiler habe und mein gcc schon beim makefile
Probleme hat, bräuchte ich jemanden, der mit das veränderte MD
compiliert.


Ciao, Stephan

-- 
E-Mail: [EMAIL PROTECTED]                      //  MicroDot V1.18
WWW   : http://stephan.manske-net.de/            \X/   PGP-Key auf Wunsch

Dienstgebaeude      ->  TELEKOMplex

_____________________________________________________________
MicroDot-Mailing-Liste - Info & Archiv: http://www.vapor.com/
ML-Hilfe: <[EMAIL PROTECTED]>, Inhalt "HELP"
ML-Abbestellen: <[EMAIL PROTECTED]>, "UNSUBSCRIBE"

Antwort per Email an