diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-07 21:43:54 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-07 21:43:54 +0000 |
commit | a0dd2795f3396dc130058be1e43b665ffa0845cb (patch) | |
tree | 9c152e1a97a38c069d33785719148e5723278694 /dln.c | |
parent | cfc6c3e01e7347b1fcd6fd45b1297e241a0071ed (diff) | |
download | ruby-a0dd2795f3396dc130058be1e43b665ffa0845cb.tar.gz ruby-a0dd2795f3396dc130058be1e43b665ffa0845cb.tar.xz ruby-a0dd2795f3396dc130058be1e43b665ffa0845cb.zip |
* dln.c (dln_find_exe_r, dln_find_file_r): reentrant versions.
* file.c (rb_find_file_ext, rb_find_file), process.c (proc_exec_v),
(rb_proc_exec, proc_spawn_v, proc_spawn), ruby.c (process_options):
use reentrant versions.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@16319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'dln.c')
-rw-r--r-- | dln.c | 29 |
1 files changed, 21 insertions, 8 deletions
@@ -1568,10 +1568,10 @@ dln_load(const char *file) return 0; /* dummy return */ } -static char *dln_find_1(const char *fname, const char *path, int exe_flag); +static char *dln_find_1(const char *fname, const char *path, char *buf, int size, int exe_flag); char * -dln_find_exe(const char *fname, const char *path) +dln_find_exe_r(const char *fname, const char *path, char *buf, int size) { if (!path) { path = getenv(PATH_ENV); @@ -1584,25 +1584,38 @@ dln_find_exe(const char *fname, const char *path) path = "/usr/local/bin:/usr/ucb:/usr/bin:/bin:."; #endif } - return dln_find_1(fname, path, 1); + return dln_find_1(fname, path, buf, size, 1); } char * -dln_find_file(const char *fname, const char *path) +dln_find_file_r(const char *fname, const char *path, char *buf, int size) { #ifndef __MACOS__ if (!path) path = "."; - return dln_find_1(fname, path, 0); + return dln_find_1(fname, path, buf, size, 0); #else if (!path) path = "."; - return _macruby_path_conv_posix_to_macos(dln_find_1(fname, path, 0)); + return _macruby_path_conv_posix_to_macos(dln_find_1(fname, path, buf, size, 0)); #endif } static char fbuf[MAXPATHLEN]; +char * +dln_find_exe(const char *fname, const char *path) +{ + return dln_find_exe_r(fname, path, fbuf, sizeof(fbuf)); +} + +char * +dln_find_file(const char *fname, const char *path) +{ + return dln_find_file_r(fname, path, fbuf, sizeof(fbuf)); +} + static char * -dln_find_1(const char *fname, const char *path, int exe_flag /* non 0 if looking for executable. */) +dln_find_1(const char *fname, const char *path, char *fbuf, int size, + int exe_flag /* non 0 if looking for executable. */) { register const char *dp; register const char *ep; @@ -1642,7 +1655,7 @@ dln_find_1(const char *fname, const char *path, int exe_flag /* non 0 if looking /* find the length of that component */ l = ep - dp; bp = fbuf; - fspace = sizeof fbuf - 2; + fspace = size - 2; if (l > 0) { /* ** If the length of the component is zero length, |