Fossil SCM
Change another popen() to popen2() in hook.c.
Commit
f9fa692af911b66c3e0214262f6da1711bbc3a85e5fbce406014315570f9bd82
Parent
4729793ea19d563…
1 file changed
+8
-5
+8
-5
| --- src/hook.c | ||
| +++ src/hook.c | ||
| @@ -441,19 +441,22 @@ | ||
| 441 | 441 | " AND json_extract(jx.value,'$.type')='after-receive'" |
| 442 | 442 | " ORDER BY json_extract(jx.value,'$.seq');" |
| 443 | 443 | ); |
| 444 | 444 | while( db_step(&q)==SQLITE_ROW ){ |
| 445 | 445 | char *zCmd; |
| 446 | - FILE *f; | |
| 446 | + int fdFromChild; | |
| 447 | + FILE *toChild; | |
| 448 | + int childPid; | |
| 447 | 449 | if( cnt==0 ){ |
| 448 | 450 | hook_changes(&chng, zLastRcvid, 0); |
| 449 | 451 | } |
| 450 | 452 | zCmd = hook_subst(db_column_text(&q,0), 0); |
| 451 | - f = popen(zCmd, "w"); | |
| 452 | - if( f ){ | |
| 453 | - fwrite(blob_buffer(&chng),1,blob_size(&chng),f); | |
| 454 | - pclose(f); | |
| 453 | + if( popen2(zCmd, &fdFromChild, &toChild, &childPid, 0) ){ | |
| 454 | + if( toChild ){ | |
| 455 | + fwrite(blob_buffer(&chng),1,blob_size(&chng),toChild); | |
| 456 | + } | |
| 457 | + pclose2(fdFromChild, toChild, childPid); | |
| 455 | 458 | } |
| 456 | 459 | fossil_free(zCmd); |
| 457 | 460 | cnt++; |
| 458 | 461 | } |
| 459 | 462 | db_finalize(&q); |
| 460 | 463 |
| --- src/hook.c | |
| +++ src/hook.c | |
| @@ -441,19 +441,22 @@ | |
| 441 | " AND json_extract(jx.value,'$.type')='after-receive'" |
| 442 | " ORDER BY json_extract(jx.value,'$.seq');" |
| 443 | ); |
| 444 | while( db_step(&q)==SQLITE_ROW ){ |
| 445 | char *zCmd; |
| 446 | FILE *f; |
| 447 | if( cnt==0 ){ |
| 448 | hook_changes(&chng, zLastRcvid, 0); |
| 449 | } |
| 450 | zCmd = hook_subst(db_column_text(&q,0), 0); |
| 451 | f = popen(zCmd, "w"); |
| 452 | if( f ){ |
| 453 | fwrite(blob_buffer(&chng),1,blob_size(&chng),f); |
| 454 | pclose(f); |
| 455 | } |
| 456 | fossil_free(zCmd); |
| 457 | cnt++; |
| 458 | } |
| 459 | db_finalize(&q); |
| 460 |
| --- src/hook.c | |
| +++ src/hook.c | |
| @@ -441,19 +441,22 @@ | |
| 441 | " AND json_extract(jx.value,'$.type')='after-receive'" |
| 442 | " ORDER BY json_extract(jx.value,'$.seq');" |
| 443 | ); |
| 444 | while( db_step(&q)==SQLITE_ROW ){ |
| 445 | char *zCmd; |
| 446 | int fdFromChild; |
| 447 | FILE *toChild; |
| 448 | int childPid; |
| 449 | if( cnt==0 ){ |
| 450 | hook_changes(&chng, zLastRcvid, 0); |
| 451 | } |
| 452 | zCmd = hook_subst(db_column_text(&q,0), 0); |
| 453 | if( popen2(zCmd, &fdFromChild, &toChild, &childPid, 0) ){ |
| 454 | if( toChild ){ |
| 455 | fwrite(blob_buffer(&chng),1,blob_size(&chng),toChild); |
| 456 | } |
| 457 | pclose2(fdFromChild, toChild, childPid); |
| 458 | } |
| 459 | fossil_free(zCmd); |
| 460 | cnt++; |
| 461 | } |
| 462 | db_finalize(&q); |
| 463 |