Fossil SCM
Remove mfirt
Commit
a8d90b1f4fe63bb607b7d5b4cab6ab1b84d63bb0ca0c96654b37488f0c8f691b
Parent
d585c347071e7c9…
1 file changed
+14
-20
+14
-20
| --- src/forum.c | ||
| +++ src/forum.c | ||
| @@ -32,11 +32,10 @@ | ||
| 32 | 32 | ** either the initial post, an edit to a post, a reply, or an edit to |
| 33 | 33 | ** a reply. |
| 34 | 34 | */ |
| 35 | 35 | struct ForumEntry { |
| 36 | 36 | int fpid; /* rid for this entry */ |
| 37 | - int mfirt; /* Root in-reply-to */ | |
| 38 | 37 | int sid; /* Serial ID number */ |
| 39 | 38 | char *zUuid; /* Artifact hash */ |
| 40 | 39 | ForumEntry *pIrt; /* This entry replies to pIrt */ |
| 41 | 40 | ForumEntry *pEditHead; /* Original, unedited entry */ |
| 42 | 41 | ForumEntry *pEditTail; /* Most recent edit for this entry */ |
| @@ -129,18 +128,22 @@ | ||
| 129 | 128 | ForumThread *pThread, /* The complete thread */ |
| 130 | 129 | ForumEntry *pBase /* Add replies to this entry */ |
| 131 | 130 | ){ |
| 132 | 131 | ForumEntry *p; |
| 133 | 132 | ForumEntry *pPrev = 0; |
| 133 | + ForumEntry *pBaseIrt; | |
| 134 | 134 | for(p=pBase->pNext; p; p=p->pNext){ |
| 135 | - if( !p->pEditPrev && p->mfirt==pBase->fpid ){ | |
| 136 | - if( pPrev ){ | |
| 137 | - pPrev->nIndent = pBase->nIndent + 1; | |
| 138 | - forumentry_add_to_display(pThread, pPrev); | |
| 139 | - forumthread_display_order(pThread, pPrev); | |
| 135 | + if( !p->pEditPrev && p->pIrt ){ | |
| 136 | + pBaseIrt = p->pIrt->pEditHead ? p->pIrt->pEditHead : p->pIrt; | |
| 137 | + if( pBaseIrt==pBase ){ | |
| 138 | + if( pPrev ){ | |
| 139 | + pPrev->nIndent = pBase->nIndent + 1; | |
| 140 | + forumentry_add_to_display(pThread, pPrev); | |
| 141 | + forumthread_display_order(pThread, pPrev); | |
| 142 | + } | |
| 143 | + pPrev = p; | |
| 140 | 144 | } |
| 141 | - pPrev = p; | |
| 142 | 145 | } |
| 143 | 146 | } |
| 144 | 147 | if( pPrev ){ |
| 145 | 148 | pPrev->nIndent = pBase->nIndent + 1; |
| 146 | 149 | if( pPrev->nIndent>pThread->mxIndent ) pThread->mxIndent = pPrev->nIndent; |
| @@ -172,11 +175,10 @@ | ||
| 172 | 175 | memset(pEntry, 0, sizeof(*pEntry)); |
| 173 | 176 | pEntry->fpid = db_column_int(&q, 0); |
| 174 | 177 | firt = db_column_int(&q, 1); |
| 175 | 178 | fprev = db_column_int(&q, 2); |
| 176 | 179 | pEntry->zUuid = fossil_strdup(db_column_text(&q,3)); |
| 177 | - pEntry->mfirt = firt; | |
| 178 | 180 | pEntry->sid = sid++; |
| 179 | 181 | pEntry->pPrev = pThread->pLast; |
| 180 | 182 | pEntry->pNext = 0; |
| 181 | 183 | if( pThread->pLast==0 ){ |
| 182 | 184 | pThread->pFirst = pEntry; |
| @@ -191,22 +193,16 @@ | ||
| 191 | 193 | break; |
| 192 | 194 | } |
| 193 | 195 | } |
| 194 | 196 | } |
| 195 | 197 | if( fprev ){ |
| 196 | - ForumEntry *pBase = 0; | |
| 197 | 198 | p = forumentry_backward(pEntry->pPrev, fprev); |
| 198 | 199 | p->pEditNext = pEntry; |
| 199 | 200 | pEntry->pEditPrev = p; |
| 200 | 201 | pEntry->pEditHead = p->pEditHead ? p->pEditHead : p; |
| 201 | - while( p ){ | |
| 202 | - pBase = p; | |
| 202 | + for(; p; p=p->pEditPrev ){ | |
| 203 | 203 | p->pEditTail = pEntry; |
| 204 | - p = p->pEditPrev; | |
| 205 | - } | |
| 206 | - for(p=pEntry->pNext; p; p=p->pNext){ | |
| 207 | - if( p->mfirt==pEntry->fpid ) p->mfirt = pBase->fpid; | |
| 208 | 204 | } |
| 209 | 205 | } |
| 210 | 206 | pThread->pLast = pEntry; |
| 211 | 207 | } |
| 212 | 208 | db_finalize(&q); |
| @@ -291,16 +287,15 @@ | ||
| 291 | 287 | pThread = forumthread_create(froot, 1); |
| 292 | 288 | fossil_print("Chronological:\n"); |
| 293 | 289 | fossil_print( |
| 294 | 290 | /* 0 1 2 3 4 5 6 7 */ |
| 295 | 291 | /* 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123 */ |
| 296 | - " sid fpid pIrt pEditPrev mfirt pEditTail hash\n"); | |
| 292 | + " sid fpid pIrt pEditPrev pEditTail hash\n"); | |
| 297 | 293 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 298 | - fossil_print("%4d %9d %9d %9d %9d %9d %8.8s\n", p->sid, | |
| 294 | + fossil_print("%4d %9d %9d %9d %9d %8.8s\n", p->sid, | |
| 299 | 295 | p->fpid, p->pIrt ? p->pIrt->fpid : 0, |
| 300 | 296 | p->pEditPrev ? p->pEditPrev->fpid : 0, |
| 301 | - p->mfirt, | |
| 302 | 297 | p->pEditTail ? p->pEditTail->fpid : 0, p->zUuid); |
| 303 | 298 | } |
| 304 | 299 | fossil_print("\nDisplay\n"); |
| 305 | 300 | for(p=pThread->pDisplay; p; p=p->pDisplay){ |
| 306 | 301 | fossil_print("%*s", (p->nIndent-1)*3, ""); |
| @@ -513,16 +508,15 @@ | ||
| 513 | 508 | ** to be displayed for debugging purposes. |
| 514 | 509 | */ |
| 515 | 510 | if( PB("threadtable") ){ |
| 516 | 511 | @ <hr> |
| 517 | 512 | @ <table border="1" cellpadding="3" cellspacing="0"> |
| 518 | - @ <tr><th>sid<th>fpid<th>pIrt<th>mfirt<th>pEditHead<th>pEditTail\ | |
| 513 | + @ <tr><th>sid<th>fpid<th>pIrt<th>pEditHead<th>pEditTail\ | |
| 519 | 514 | @ <th>pEditNext<th>pEditPrev<th>hash |
| 520 | 515 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 521 | 516 | @ <tr><td>%d(p->sid)<td>%d(p->fpid)\ |
| 522 | 517 | @ <td>%d(p->pIrt?p->pIrt->fpid:0)\ |
| 523 | - @ <td>%d(p->mfirt)\ | |
| 524 | 518 | @ <td>%d(p->pEditHead?p->pEditHead->fpid:0)\ |
| 525 | 519 | @ <td>%d(p->pEditTail?p->pEditTail->fpid:0)\ |
| 526 | 520 | @ <td>%d(p->pEditNext?p->pEditNext->fpid:0)\ |
| 527 | 521 | @ <td>%d(p->pEditPrev?p->pEditPrev->fpid:0)\ |
| 528 | 522 | @ <td>%S(p->zUuid)</tr> |
| 529 | 523 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -32,11 +32,10 @@ | |
| 32 | ** either the initial post, an edit to a post, a reply, or an edit to |
| 33 | ** a reply. |
| 34 | */ |
| 35 | struct ForumEntry { |
| 36 | int fpid; /* rid for this entry */ |
| 37 | int mfirt; /* Root in-reply-to */ |
| 38 | int sid; /* Serial ID number */ |
| 39 | char *zUuid; /* Artifact hash */ |
| 40 | ForumEntry *pIrt; /* This entry replies to pIrt */ |
| 41 | ForumEntry *pEditHead; /* Original, unedited entry */ |
| 42 | ForumEntry *pEditTail; /* Most recent edit for this entry */ |
| @@ -129,18 +128,22 @@ | |
| 129 | ForumThread *pThread, /* The complete thread */ |
| 130 | ForumEntry *pBase /* Add replies to this entry */ |
| 131 | ){ |
| 132 | ForumEntry *p; |
| 133 | ForumEntry *pPrev = 0; |
| 134 | for(p=pBase->pNext; p; p=p->pNext){ |
| 135 | if( !p->pEditPrev && p->mfirt==pBase->fpid ){ |
| 136 | if( pPrev ){ |
| 137 | pPrev->nIndent = pBase->nIndent + 1; |
| 138 | forumentry_add_to_display(pThread, pPrev); |
| 139 | forumthread_display_order(pThread, pPrev); |
| 140 | } |
| 141 | pPrev = p; |
| 142 | } |
| 143 | } |
| 144 | if( pPrev ){ |
| 145 | pPrev->nIndent = pBase->nIndent + 1; |
| 146 | if( pPrev->nIndent>pThread->mxIndent ) pThread->mxIndent = pPrev->nIndent; |
| @@ -172,11 +175,10 @@ | |
| 172 | memset(pEntry, 0, sizeof(*pEntry)); |
| 173 | pEntry->fpid = db_column_int(&q, 0); |
| 174 | firt = db_column_int(&q, 1); |
| 175 | fprev = db_column_int(&q, 2); |
| 176 | pEntry->zUuid = fossil_strdup(db_column_text(&q,3)); |
| 177 | pEntry->mfirt = firt; |
| 178 | pEntry->sid = sid++; |
| 179 | pEntry->pPrev = pThread->pLast; |
| 180 | pEntry->pNext = 0; |
| 181 | if( pThread->pLast==0 ){ |
| 182 | pThread->pFirst = pEntry; |
| @@ -191,22 +193,16 @@ | |
| 191 | break; |
| 192 | } |
| 193 | } |
| 194 | } |
| 195 | if( fprev ){ |
| 196 | ForumEntry *pBase = 0; |
| 197 | p = forumentry_backward(pEntry->pPrev, fprev); |
| 198 | p->pEditNext = pEntry; |
| 199 | pEntry->pEditPrev = p; |
| 200 | pEntry->pEditHead = p->pEditHead ? p->pEditHead : p; |
| 201 | while( p ){ |
| 202 | pBase = p; |
| 203 | p->pEditTail = pEntry; |
| 204 | p = p->pEditPrev; |
| 205 | } |
| 206 | for(p=pEntry->pNext; p; p=p->pNext){ |
| 207 | if( p->mfirt==pEntry->fpid ) p->mfirt = pBase->fpid; |
| 208 | } |
| 209 | } |
| 210 | pThread->pLast = pEntry; |
| 211 | } |
| 212 | db_finalize(&q); |
| @@ -291,16 +287,15 @@ | |
| 291 | pThread = forumthread_create(froot, 1); |
| 292 | fossil_print("Chronological:\n"); |
| 293 | fossil_print( |
| 294 | /* 0 1 2 3 4 5 6 7 */ |
| 295 | /* 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123 */ |
| 296 | " sid fpid pIrt pEditPrev mfirt pEditTail hash\n"); |
| 297 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 298 | fossil_print("%4d %9d %9d %9d %9d %9d %8.8s\n", p->sid, |
| 299 | p->fpid, p->pIrt ? p->pIrt->fpid : 0, |
| 300 | p->pEditPrev ? p->pEditPrev->fpid : 0, |
| 301 | p->mfirt, |
| 302 | p->pEditTail ? p->pEditTail->fpid : 0, p->zUuid); |
| 303 | } |
| 304 | fossil_print("\nDisplay\n"); |
| 305 | for(p=pThread->pDisplay; p; p=p->pDisplay){ |
| 306 | fossil_print("%*s", (p->nIndent-1)*3, ""); |
| @@ -513,16 +508,15 @@ | |
| 513 | ** to be displayed for debugging purposes. |
| 514 | */ |
| 515 | if( PB("threadtable") ){ |
| 516 | @ <hr> |
| 517 | @ <table border="1" cellpadding="3" cellspacing="0"> |
| 518 | @ <tr><th>sid<th>fpid<th>pIrt<th>mfirt<th>pEditHead<th>pEditTail\ |
| 519 | @ <th>pEditNext<th>pEditPrev<th>hash |
| 520 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 521 | @ <tr><td>%d(p->sid)<td>%d(p->fpid)\ |
| 522 | @ <td>%d(p->pIrt?p->pIrt->fpid:0)\ |
| 523 | @ <td>%d(p->mfirt)\ |
| 524 | @ <td>%d(p->pEditHead?p->pEditHead->fpid:0)\ |
| 525 | @ <td>%d(p->pEditTail?p->pEditTail->fpid:0)\ |
| 526 | @ <td>%d(p->pEditNext?p->pEditNext->fpid:0)\ |
| 527 | @ <td>%d(p->pEditPrev?p->pEditPrev->fpid:0)\ |
| 528 | @ <td>%S(p->zUuid)</tr> |
| 529 |
| --- src/forum.c | |
| +++ src/forum.c | |
| @@ -32,11 +32,10 @@ | |
| 32 | ** either the initial post, an edit to a post, a reply, or an edit to |
| 33 | ** a reply. |
| 34 | */ |
| 35 | struct ForumEntry { |
| 36 | int fpid; /* rid for this entry */ |
| 37 | int sid; /* Serial ID number */ |
| 38 | char *zUuid; /* Artifact hash */ |
| 39 | ForumEntry *pIrt; /* This entry replies to pIrt */ |
| 40 | ForumEntry *pEditHead; /* Original, unedited entry */ |
| 41 | ForumEntry *pEditTail; /* Most recent edit for this entry */ |
| @@ -129,18 +128,22 @@ | |
| 128 | ForumThread *pThread, /* The complete thread */ |
| 129 | ForumEntry *pBase /* Add replies to this entry */ |
| 130 | ){ |
| 131 | ForumEntry *p; |
| 132 | ForumEntry *pPrev = 0; |
| 133 | ForumEntry *pBaseIrt; |
| 134 | for(p=pBase->pNext; p; p=p->pNext){ |
| 135 | if( !p->pEditPrev && p->pIrt ){ |
| 136 | pBaseIrt = p->pIrt->pEditHead ? p->pIrt->pEditHead : p->pIrt; |
| 137 | if( pBaseIrt==pBase ){ |
| 138 | if( pPrev ){ |
| 139 | pPrev->nIndent = pBase->nIndent + 1; |
| 140 | forumentry_add_to_display(pThread, pPrev); |
| 141 | forumthread_display_order(pThread, pPrev); |
| 142 | } |
| 143 | pPrev = p; |
| 144 | } |
| 145 | } |
| 146 | } |
| 147 | if( pPrev ){ |
| 148 | pPrev->nIndent = pBase->nIndent + 1; |
| 149 | if( pPrev->nIndent>pThread->mxIndent ) pThread->mxIndent = pPrev->nIndent; |
| @@ -172,11 +175,10 @@ | |
| 175 | memset(pEntry, 0, sizeof(*pEntry)); |
| 176 | pEntry->fpid = db_column_int(&q, 0); |
| 177 | firt = db_column_int(&q, 1); |
| 178 | fprev = db_column_int(&q, 2); |
| 179 | pEntry->zUuid = fossil_strdup(db_column_text(&q,3)); |
| 180 | pEntry->sid = sid++; |
| 181 | pEntry->pPrev = pThread->pLast; |
| 182 | pEntry->pNext = 0; |
| 183 | if( pThread->pLast==0 ){ |
| 184 | pThread->pFirst = pEntry; |
| @@ -191,22 +193,16 @@ | |
| 193 | break; |
| 194 | } |
| 195 | } |
| 196 | } |
| 197 | if( fprev ){ |
| 198 | p = forumentry_backward(pEntry->pPrev, fprev); |
| 199 | p->pEditNext = pEntry; |
| 200 | pEntry->pEditPrev = p; |
| 201 | pEntry->pEditHead = p->pEditHead ? p->pEditHead : p; |
| 202 | for(; p; p=p->pEditPrev ){ |
| 203 | p->pEditTail = pEntry; |
| 204 | } |
| 205 | } |
| 206 | pThread->pLast = pEntry; |
| 207 | } |
| 208 | db_finalize(&q); |
| @@ -291,16 +287,15 @@ | |
| 287 | pThread = forumthread_create(froot, 1); |
| 288 | fossil_print("Chronological:\n"); |
| 289 | fossil_print( |
| 290 | /* 0 1 2 3 4 5 6 7 */ |
| 291 | /* 123456789 123456789 123456789 123456789 123456789 123456789 123456789 123 */ |
| 292 | " sid fpid pIrt pEditPrev pEditTail hash\n"); |
| 293 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 294 | fossil_print("%4d %9d %9d %9d %9d %8.8s\n", p->sid, |
| 295 | p->fpid, p->pIrt ? p->pIrt->fpid : 0, |
| 296 | p->pEditPrev ? p->pEditPrev->fpid : 0, |
| 297 | p->pEditTail ? p->pEditTail->fpid : 0, p->zUuid); |
| 298 | } |
| 299 | fossil_print("\nDisplay\n"); |
| 300 | for(p=pThread->pDisplay; p; p=p->pDisplay){ |
| 301 | fossil_print("%*s", (p->nIndent-1)*3, ""); |
| @@ -513,16 +508,15 @@ | |
| 508 | ** to be displayed for debugging purposes. |
| 509 | */ |
| 510 | if( PB("threadtable") ){ |
| 511 | @ <hr> |
| 512 | @ <table border="1" cellpadding="3" cellspacing="0"> |
| 513 | @ <tr><th>sid<th>fpid<th>pIrt<th>pEditHead<th>pEditTail\ |
| 514 | @ <th>pEditNext<th>pEditPrev<th>hash |
| 515 | for(p=pThread->pFirst; p; p=p->pNext){ |
| 516 | @ <tr><td>%d(p->sid)<td>%d(p->fpid)\ |
| 517 | @ <td>%d(p->pIrt?p->pIrt->fpid:0)\ |
| 518 | @ <td>%d(p->pEditHead?p->pEditHead->fpid:0)\ |
| 519 | @ <td>%d(p->pEditTail?p->pEditTail->fpid:0)\ |
| 520 | @ <td>%d(p->pEditNext?p->pEditNext->fpid:0)\ |
| 521 | @ <td>%d(p->pEditPrev?p->pEditPrev->fpid:0)\ |
| 522 | @ <td>%S(p->zUuid)</tr> |
| 523 |