mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
fixed problems with PWD - we no longer use the PWD env variable
instead the shared variable area is used.
this fixes problems with /bin/sh under solaris
(This used to be commit 4eb7b5c6a8
)
This commit is contained in:
parent
d6ad9474b2
commit
517806e676
@ -37,7 +37,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
char *p, *u;
|
||||
char *libd = BINDIR;
|
||||
pstring line;
|
||||
pstring line, wd;
|
||||
int opt;
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
@ -91,9 +91,11 @@ int main(int argc, char *argv[])
|
||||
|
||||
smbw_setenv("PS1", "smbsh$ ");
|
||||
|
||||
sys_getwd(line);
|
||||
sys_getwd(wd);
|
||||
|
||||
smbw_setenv("PWD", line);
|
||||
slprintf(line,sizeof(line)-1,"PWD_%d", getpid());
|
||||
|
||||
smbw_setshared(line, wd);
|
||||
|
||||
slprintf(line,sizeof(line)-1,"%s/smbwrapper.so", libd);
|
||||
smbw_setenv("LD_PRELOAD", line);
|
||||
|
@ -50,6 +50,7 @@ void smbw_init(void)
|
||||
extern FILE *dbf;
|
||||
char *p;
|
||||
int eno;
|
||||
pstring line;
|
||||
|
||||
if (initialised) return;
|
||||
initialised = 1;
|
||||
@ -96,13 +97,16 @@ void smbw_init(void)
|
||||
DEBUG(2,("SMBW_PREFIX is %s\n", smbw_prefix));
|
||||
}
|
||||
|
||||
if ((p=getenv(SMBW_PWD_ENV))) {
|
||||
pstrcpy(smbw_cwd, p);
|
||||
DEBUG(4,("Initial cwd from smbw_cwd is %s\n", smbw_cwd));
|
||||
} else {
|
||||
sys_getwd(smbw_cwd);
|
||||
DEBUG(4,("Initial cwd from getwd is %s\n", smbw_cwd));
|
||||
slprintf(line,sizeof(line)-1,"PWD_%d", getpid());
|
||||
|
||||
p = smbw_getshared(line);
|
||||
if (!p) {
|
||||
DEBUG(0,("ERROR: %s is not set\n", line));
|
||||
exit(1);
|
||||
}
|
||||
pstrcpy(smbw_cwd, p);
|
||||
DEBUG(4,("Initial cwd is %s\n", smbw_cwd));
|
||||
|
||||
smbw_busy--;
|
||||
|
||||
set_maxfiles(SMBW_MAX_OPEN);
|
||||
@ -1325,6 +1329,7 @@ int smbw_fork(void)
|
||||
pid_t child;
|
||||
int p[2];
|
||||
char c=0;
|
||||
pstring line;
|
||||
|
||||
struct smbw_file *file, *next_file;
|
||||
struct smbw_server *srv, *next_srv;
|
||||
@ -1356,6 +1361,9 @@ int smbw_fork(void)
|
||||
smbw_srv_close(srv);
|
||||
}
|
||||
|
||||
slprintf(line,sizeof(line)-1,"PWD_%d", getpid());
|
||||
smbw_setshared(line,smbw_cwd);
|
||||
|
||||
/* unblock the parent */
|
||||
write(p[1], &c, 1);
|
||||
close(p[1]);
|
||||
|
@ -28,8 +28,6 @@
|
||||
#define SMBW_FILE_MODE (S_IFREG | 0444)
|
||||
#define SMBW_DIR_MODE (S_IFDIR | 0555)
|
||||
|
||||
#define SMBW_PWD_ENV "PWD"
|
||||
|
||||
struct smbw_server {
|
||||
struct smbw_server *next, *prev;
|
||||
struct cli_state cli;
|
||||
|
Loading…
Reference in New Issue
Block a user