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