Dolda2000 GitWeb
/
ashd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Install the library headers.
[ashd.git]
/
lib
/
proc.c
diff --git
a/lib/proc.c
b/lib/proc.c
index
f4611d5
..
8646434
100644
(file)
--- a/
lib/proc.c
+++ b/
lib/proc.c
@@
-31,7
+31,7
@@
#include <proc.h>
#include <req.h>
#include <proc.h>
#include <req.h>
-int stdmkchild(char **argv)
+int stdmkchild(char **argv
, void (*chinit)(void *), void *idata
)
{
int i;
pid_t pid;
{
int i;
pid_t pid;
@@
-42,6
+42,8
@@
int stdmkchild(char **argv)
if((pid = fork()) < 0)
return(-1);
if(pid == 0) {
if((pid = fork()) < 0)
return(-1);
if(pid == 0) {
+ if(chinit != NULL)
+ chinit(idata);
for(i = 3; i < FD_SETSIZE; i++) {
if(i != fd[0])
close(i);
for(i = 3; i < FD_SETSIZE; i++) {
if(i != fd[0])
close(i);
@@
-84,7
+86,7
@@
int sendfd(int sock, int fd, char *data, size_t datalen)
int recvfd(int sock, char **data, size_t *datalen)
{
int ret, fd;
int recvfd(int sock, char **data, size_t *datalen)
{
int ret, fd;
- char *buf, cbuf[1024];
;
+ char *buf, cbuf[1024];
struct msghdr msg;
struct cmsghdr *cmsg;
struct iovec bufvec;
struct msghdr msg;
struct cmsghdr *cmsg;
struct iovec bufvec;
@@
-124,7
+126,7
@@
int recvfd(int sock, char **data, size_t *datalen)
return(fd);
}
return(fd);
}
-pid_t stdforkserve(char **argv, struct hthead *req, int fd)
+pid_t stdforkserve(char **argv, struct hthead *req, int fd
, void (*chinit)(void *), void *idata
)
{
int i;
char *ebuf, *p;
{
int i;
char *ebuf, *p;
@@
-134,6
+136,9
@@
pid_t stdforkserve(char **argv, struct hthead *req, int fd)
if((pid = fork()) < 0)
return(-1);
if(pid == 0) {
if((pid = fork()) < 0)
return(-1);
if(pid == 0) {
+ if(chinit != NULL)
+ chinit(idata);
+
dup2(fd, 0);
dup2(fd, 1);
for(i = 3; i < FD_SETSIZE; i++)
dup2(fd, 0);
dup2(fd, 1);
for(i = 3; i < FD_SETSIZE; i++)