Fossil SCM

Change another popen() to popen2() in hook.c.

drh 2020-07-06 17:42 hooks
Commit f9fa692af911b66c3e0214262f6da1711bbc3a85e5fbce406014315570f9bd82
1 file changed +8 -5
+8 -5
--- src/hook.c
+++ src/hook.c
@@ -441,19 +441,22 @@
441441
" AND json_extract(jx.value,'$.type')='after-receive'"
442442
" ORDER BY json_extract(jx.value,'$.seq');"
443443
);
444444
while( db_step(&q)==SQLITE_ROW ){
445445
char *zCmd;
446
- FILE *f;
446
+ int fdFromChild;
447
+ FILE *toChild;
448
+ int childPid;
447449
if( cnt==0 ){
448450
hook_changes(&chng, zLastRcvid, 0);
449451
}
450452
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);
455458
}
456459
fossil_free(zCmd);
457460
cnt++;
458461
}
459462
db_finalize(&q);
460463
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button