1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

see ChangeLog.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@716 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
eban 2000-05-29 02:10:22 +00:00
parent d7fe17edf0
commit 869b1efeb4
9 changed files with 161 additions and 78 deletions

View file

@ -1,3 +1,23 @@
Sun May 28 21:37:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
* eval.c: bug fix: DLEXT2.
Sun May 28 19:21:43 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
* win32/win32.c: use ruby's glob.
* dir.c: "glob" exported and renamed to "rb_glob".
* ruby.h: ditto.
* main.c: turn off command line mingw32's globbing.
Wed May 25 22:25:13 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
* ext/extmk.rb.in: use "ftools" instead of "rm -f".
* lib/mkmf.rb: ditto.
Wed May 24 23:17:50 2000 Katsuyuki Komatsu <komatsu@sarion.co.jp>
* win32/Makefile: remove unnecessary mv and rm command call.

12
dir.c
View file

@ -558,8 +558,8 @@ extract_elem(path)
# define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)
#endif
static void
glob(path, func, arg)
void
rb_glob(path, func, arg)
char *path;
void (*func)();
VALUE arg;
@ -598,7 +598,7 @@ glob(path, func, arg)
recursive = 1;
buf = ALLOC_N(char, strlen(base)+strlen(m)+3);
sprintf(buf, "%s%s%s", base, (*base)?"":".", m);
glob(buf, func, arg);
rb_glob(buf, func, arg);
free(buf);
}
dirp = opendir(dir);
@ -614,7 +614,7 @@ glob(path, func, arg)
continue;
buf = ALLOC_N(char, strlen(base)+NAMLEN(dp)+strlen(m)+6);
sprintf(buf, "%s%s%s/**%s", base, (BASE)?"/":"", dp->d_name, m);
glob(buf, func, arg);
rb_glob(buf, func, arg);
free(buf);
continue;
}
@ -643,7 +643,7 @@ glob(path, func, arg)
char *t = ALLOC_N(char, len+mlen+1);
sprintf(t, "%s%s", link->path, m);
glob(t, func, arg);
rb_glob(t, func, arg);
free(t);
}
tmp = link;
@ -669,7 +669,7 @@ push_globs(ary, s)
VALUE ary;
char *s;
{
glob(s, push_pattern, ary);
rb_glob(s, push_pattern, ary);
}
static void

14
eval.c
View file

@ -4970,8 +4970,11 @@ rb_f_require(obj, fname)
strcpy(ext, DLEXT);
file = feature = buf;
}
file = rb_find_file(file);
if (file) goto load_dyna;
#ifdef DLEXT2
else if (strcmp(ext, DLEXT2) != 0) {
file = feature = RSTRING(fname)->ptr;
if (strcmp(ext, DLEXT2) != 0) {
buf = ALLOCA_N(char, strlen(file)+sizeof(DLEXT2)+4);
strcpy(buf, feature);
ext = strrchr(buf, '.');
@ -4980,15 +4983,22 @@ rb_f_require(obj, fname)
strcpy(ext, DLEXT2);
file = feature = buf;
}
#endif
file = rb_find_file(file);
if (file) goto load_dyna;
#endif
}
else if (strcmp(DLEXT, ext) == 0) {
feature = RSTRING(fname)->ptr;
file = rb_find_file(feature);
if (file) goto load_dyna;
}
#ifdef DLEXT2
else if (strcmp(DLEXT2, ext) == 0) {
feature = RSTRING(fname)->ptr;
file = rb_find_file(feature);
if (file) goto load_dyna;
}
#endif
}
buf = ALLOCA_N(char, strlen(RSTRING(fname)->ptr) + 5);
strcpy(buf, RSTRING(fname)->ptr);

View file

@ -32,6 +32,17 @@ $:.push $top_srcdir+"/lib"
require 'find'
def rm_f(*files)
targets = []
for file in files
targets.concat Dir[file]
end
if not targets.empty?
File::chmod 0777, *targets
File::unlink *targets
end
end
def older(file1, file2)
if !File.exist?(file1) then
return true
@ -85,7 +96,7 @@ def try_link(src, opt="")
begin
try_link0(src, opt)
ensure
system "rm -f conftest*"
rm_f "conftest*"
end
end
@ -96,7 +107,7 @@ def try_cpp(src, opt="")
begin
xsystem(format(CPP, $CFLAGS, opt))
ensure
system "rm -f conftest*"
rm_f "conftest*"
end
end
@ -107,7 +118,7 @@ def egrep_cpp(pat, src, opt="")
begin
xsystem(format(CPP+"|egrep #{pat}", $CFLAGS, opt))
ensure
system "rm -f conftest*"
rm_f "conftest*"
end
end
@ -123,7 +134,7 @@ def try_run(src, opt="")
nil
end
ensure
system "rm -f conftest*"
rm_f "conftest*"
end
end
@ -318,7 +329,7 @@ end
def create_makefile(target)
$target = target
system "rm -f conftest*"
rm_f "conftest*"
if "@DLEXT@" == $OBJEXT
libs = $libs.split
for lib in libs
@ -406,15 +417,16 @@ TARGET = #{target}
DLLIB = $(TARGET).#{$static ? $LIBEXT : "@DLEXT@"}
RUBY = #{ruby_interpreter} -I$(topdir) -I$(hdrdir)/lib
RM = $(RUBY) -r ftools -e "File::rm_f *Dir[ARGV.join ' ']"
EXEEXT = @EXEEXT@
all: $(DLLIB)
clean:; @rm -f *.#{$OBJEXT} *.so *.sl *.#{$LIBEXT} $(DLLIB)
@rm -f *.ilk *.exp *.pdb *.bak
@rm -f Makefile extconf.h conftest.*
@rm -f core ruby$(EXEEXT) *~
clean:; @$(RM) *.#{$OBJEXT} *.so *.sl *.#{$LIBEXT} $(DLLIB)
@$(RM) *.ilk *.exp *.pdb *.bak
@$(RM) Makefile extconf.h conftest.*
@$(RM) core ruby$(EXEEXT) *~
realclean: clean
EOS
@ -558,7 +570,7 @@ def extmake(target)
$extlibs += " " + $LOCAL_LIBS unless $LOCAL_LIBS == ""
end
ensure
system "rm -f conftest*"
rm_f "conftest*"
Dir.chdir ".."
end
end
@ -648,7 +660,7 @@ if $extlist.size > 0
Dir.chdir ".."
if older(ruby, "#{$top_srcdir}/ext/@setup@") or older(ruby, miniruby)
system("rm -f #{ruby}")
rm_f ruby
end
$extobjs = "ext/extinit.#{$OBJEXT} " + $extobjs
@ -659,7 +671,7 @@ if $extlist.size > 0
else
Dir.chdir ".."
if older(ruby, miniruby)
system("rm -f #{ruby}")
rm_f ruby
system("#{$make} #{ruby}")
end
end

View file

@ -41,6 +41,17 @@ end
LINK = "#{CONFIG['CC']} -o conftest -I#{$hdrdir} #{CFLAGS} -I#{CONFIG['includedir']} %s #{CONFIG['LDFLAGS']} %s conftest.c %s %s #{CONFIG['LIBS']}"
CPP = "#{CONFIG['CPP']} -E -I#{$hdrdir} #{CFLAGS} -I#{CONFIG['includedir']} %s %s conftest.c"
def rm_f(*files)
targets = []
for file in files
targets.concat Dir[file]
end
if not targets.empty?
File::chmod 0777, *targets
File::unlink *targets
end
end
$orgerr = $stderr.dup
$orgout = $stdout.dup
def xsystem command
@ -67,7 +78,7 @@ def try_link(src, opt="")
begin
try_link0(src, opt)
ensure
system "rm -f conftest*"
rm_f "conftest*"
end
end
@ -78,7 +89,7 @@ def try_cpp(src, opt="")
begin
xsystem(format(CPP, $CFLAGS, opt))
ensure
system "rm -f conftest*"
rm_f "conftest*"
end
end
@ -89,7 +100,7 @@ def egrep_cpp(pat, src, opt="")
begin
xsystem(format(CPP+"|egrep #{pat}", $CFLAGS, opt))
ensure
system "rm -f conftest*"
rm_f "conftest*"
end
end
@ -105,7 +116,7 @@ def try_run(src, opt="")
nil
end
ensure
system "rm -f conftest*"
rm_f "conftest*"
end
end
@ -317,7 +328,7 @@ end
def create_makefile(target)
print "creating Makefile\n"
system "rm -f conftest*"
rm_f "conftest*"
STDOUT.flush
if CONFIG["DLEXT"] == $OBJEXT
libs = $libs.split
@ -387,15 +398,16 @@ TARGET = #{target}
DLLIB = $(TARGET).#{CONFIG["DLEXT"]}
RUBY = #{CONFIG["ruby_install_name"]}
RM = $(RUBY) -r ftools -e 'File::rm_f *Dir[ARGV.join " "]'
EXEEXT = #{CONFIG["EXEEXT"]}
all: $(DLLIB)
clean:; @rm -f *.#{$OBJEXT} *.so *.sl *.a $(DLLIB)
@rm -f $(TARGET).lib $(TARGET).exp
@rm -f Makefile extconf.h conftest.*
@rm -f core ruby$(EXEEXT) *~
clean:; @$(RM) *.#{$OBJEXT} *.so *.sl *.a $(DLLIB)
@$(RM) $(TARGET).lib $(TARGET).exp
@$(RM) Makefile extconf.h conftest.*
@$(RM) core ruby$(EXEEXT) *~
realclean: clean

4
main.c
View file

@ -20,6 +20,10 @@ unsigned int _stklen = 0x180000;
int _stacksize = 262144;
#endif
#if defined __MINGW32__
int _CRT_glob = 0;
#endif
#if defined(__MACOS__) && defined(__MWERKS__)
#include <console.h>
#endif

2
ruby.h
View file

@ -389,6 +389,8 @@ void xfree _((void*));
#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(n))
#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(n))
void rb_glob _((char*,void(*)(),VALUE));
VALUE rb_define_class _((const char*,VALUE));
VALUE rb_define_module _((const char*));
VALUE rb_define_class_under _((VALUE, const char*, VALUE));

View file

@ -1,4 +1,4 @@
#define RUBY_VERSION "1.5.4"
#define RUBY_RELEASE_DATE "2000-05-25"
#define RUBY_RELEASE_DATE "2000-05-28"
#define RUBY_VERSION_CODE 154
#define RUBY_RELEASE_CODE 20000525
#define RUBY_RELEASE_CODE 20000528

View file

@ -194,7 +194,7 @@ NtInitialize(int *argc, char ***argv) {
char *getlogin()
{
char buffer[200];
int len = 200;
DWORD len = 200;
extern char *NTLoginName;
if (NTLoginName == NULL) {
@ -587,7 +587,7 @@ int
mypclose(FILE *fp)
{
int i;
int exitcode;
DWORD exitcode;
Sleep(100);
for (i = 0; i < MYPOPENSIZE; i++) {
@ -771,6 +771,7 @@ NtFreeCmdLine(void)
// any existing files, just leave it in the list.
//
#if 0
void
NtCmdGlob (NtCmdLineElement *patt)
{
@ -844,6 +845,54 @@ NtCmdGlob (NtCmdLineElement *patt)
free(patt->str);
// free(patt); //TODO: memory leak occures here. we have to fix it.
}
#else
typedef struct {
NtCmdLineElement *head;
NtCmdLineElement *tail;
} ListInfo;
static void
insert(char *path, ListInfo *listinfo)
{
NtCmdLineElement *tmpcurr;
tmpcurr = ALLOC(NtCmdLineElement);
MEMZERO(tmpcurr, NtCmdLineElement, 1);
tmpcurr->len = strlen(path);
tmpcurr->str = ALLOC_N(char, tmpcurr->len + 1);
tmpcurr->flags |= NTMALLOC;
strcpy(tmpcurr->str, path);
if (listinfo->tail) {
listinfo->tail->next = tmpcurr;
tmpcurr->prev = listinfo->tail;
listinfo->tail = tmpcurr;
}
else {
listinfo->tail = listinfo->head = tmpcurr;
}
}
NtCmdGlob (NtCmdLineElement *patt)
{
ListInfo listinfo;
listinfo.head = listinfo.tail = 0;
rb_glob(patt->str, insert, (VALUE)&listinfo);
if (listinfo.head && listinfo.tail) {
listinfo.head->prev = patt->prev;
listinfo.tail->next = patt->next;
if (listinfo.head->prev)
listinfo.head->prev->next = listinfo.head;
if (listinfo.tail->next)
listinfo.tail->next->prev = listinfo.tail;
}
if (patt->flags & NTMALLOC)
free(patt->str);
// free(patt); //TODO: memory leak occures here. we have to fix it.
}
#endif
//
// Check a command string to determine if it has I/O redirection
@ -913,6 +962,8 @@ NtMakeCmdVector (char *cmdline, char ***vec, int InputCmd)
return 0;
}
cmdline = strdup(cmdline);
//
// strip trailing white space
//
@ -922,36 +973,6 @@ NtMakeCmdVector (char *cmdline, char ***vec, int InputCmd)
--ptr;
*++ptr = '\0';
//
// check for newlines and formfeeds. If we find any, make a new
// command string that replaces them with escaped sequences (\n or \f)
//
for (ptr = cmdline, newline = 0; *ptr; ptr++) {
if (*ptr == '\n' || *ptr == '\f')
newline++;
}
if (newline) {
base = ALLOC_N(char, strlen(cmdline) + 1 + newline + slashes);
if (base == NULL) {
fprintf(stderr, "malloc failed!\n");
return 0;
}
for (i = 0, ptr = base; (unsigned) i < strlen(cmdline); i++) {
switch (cmdline[i]) {
case '\n':
*ptr++ = '\\';
*ptr++ = 'n';
break;
default:
*ptr++ = cmdline[i];
}
}
*ptr = '\0';
cmdline = base;
need_free++;
}
//
// Ok, parse the command line, building a list of CmdLineElements.
@ -982,6 +1003,9 @@ NtMakeCmdVector (char *cmdline, char ***vec, int InputCmd)
//
switch (*ptr) {
case '\\':
if (ptr[1] == '"') ptr++;
break;
case ' ':
case '\t':
#if 0
@ -1066,12 +1090,6 @@ NtMakeCmdVector (char *cmdline, char ***vec, int InputCmd)
//
curr = ALLOC(NtCmdLineElement);
if (curr == NULL) {
NtFreeCmdLine();
fprintf(stderr, "Out of memory!!\n");
*vec = NULL;
return 0;
}
memset (curr, 0, sizeof(*curr));
len = ptr - base;
@ -1081,9 +1099,19 @@ NtMakeCmdVector (char *cmdline, char ***vec, int InputCmd)
// we can remove them.
//
if (InputCmd &&
((base[0] == '\"' && base[len-1] == '\"') ||
(base[0] == '\'' && base[len-1] == '\''))) {
if (InputCmd && (base[0] == '\"' && base[len-1] == '\"')) {
char *p;
base++;
len -= 2;
base[len] = 0;
for (p = base; p < base + len; p++) {
if ((p[0] == '\\' || p[0] == '\"') && p[1] == '"') {
strcpy(p, p + 1);
len--;
}
}
}
else if (InputCmd && (base[0] == '\'' && base[len-1] == '\'')) {
base++;
len -= 2;
}
@ -1132,12 +1160,6 @@ NtMakeCmdVector (char *cmdline, char ***vec, int InputCmd)
len = (elements+1)*sizeof(char *) + strsz;
buffer = ALLOC_N(char, len);
if (buffer == NULL) {
fprintf(stderr, "Out of memory!!\n");
NtFreeCmdLine();
*vec = NULL;
return 0;
}
memset (buffer, 0, len);
@ -1165,6 +1187,7 @@ NtMakeCmdVector (char *cmdline, char ***vec, int InputCmd)
}
NtFreeCmdLine();
*vec = (char **) buffer;
free(cmdline);
return elements;
}