* djgpp/GNUmakefile.in: removed. Ruby no longer supports djgpp.

* djgpp/README.djgpp: ditto.

* djgpp/config.hin: ditto.

* djgpp/config.sed: ditto.

* djgpp/configure.bat: ditto.

* djgpp/mkver.sed: ditto.

* ext/Setup.dj: ditto.

* dln.c: removed djgpp supports.

* file.c: ditto.

* gc.c: ditto.

* io.c: ditto.

* process.c: ditto.

* ruby.c: ditto.

* signal.c: ditto.

* util.c: ditto.

* vm_core.h: ditto.

* lib/fileutils.rb: ditto.

* lib/mkmf.rb: ditto.

* ext/socket/socket.c: ditto.

* test/fileutils/test_fileutils.rb: ditto.

* test/ruby/test_env.rb: ditto.

* test/ruby/test_path.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
yugui 2008-10-04 13:25:12 +00:00
Родитель bbbd9c0b7b
Коммит 8dd118c0db
23 изменённых файлов: 67 добавлений и 526 удалений

Просмотреть файл

@ -1,3 +1,49 @@
Sat Oct 4 22:14:15 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
* djgpp/GNUmakefile.in: removed. Ruby no longer supports djgpp.
* djgpp/README.djgpp: ditto.
* djgpp/config.hin: ditto.
* djgpp/config.sed: ditto.
* djgpp/configure.bat: ditto.
* djgpp/mkver.sed: ditto.
* ext/Setup.dj: ditto.
* dln.c: removed djgpp supports.
* file.c: ditto.
* gc.c: ditto.
* io.c: ditto.
* process.c: ditto.
* ruby.c: ditto.
* signal.c: ditto.
* util.c: ditto.
* vm_core.h: ditto.
* lib/fileutils.rb: ditto.
* lib/mkmf.rb: ditto.
* ext/socket/socket.c: ditto.
* test/fileutils/test_fileutils.rb: ditto.
* test/ruby/test_env.rb: ditto.
* test/ruby/test_path.rb: ditto.
Sat Oct 4 21:59:39 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp> Sat Oct 4 21:59:39 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp>
* x68/_dtos18.c: removed. Ruby no longer supports human68k. * x68/_dtos18.c: removed. Ruby no longer supports human68k.

Просмотреть файл

@ -1,3 +0,0 @@
include Makefile
VPATH = $(srcdir) $(srcdir)/missing
include uncommon.mk

Просмотреть файл

@ -1,21 +0,0 @@
* How to compile and install on djgpp
This is what you need to do to compile and install Ruby:
1. Run configure.bat, which will generate config.h and Makefile
(GNU sed required).
Message like this is normal:
sed.exe: can't read 123456789: No such file or directory (ENOENT)
2. Edit defines.h if you need. Probably this step will not need.
3. Remove comment mark(#) before the module names from ext/Setup.dj (or
add module names if not present).
4. Run make.
5. Optionally, run 'make test' to check whether the compiled Ruby
interpreter works well. If you see the message "test succeeded",
your ruby works as it should (hopefully).
6. Run 'make install'

Просмотреть файл

@ -1,114 +0,0 @@
#define PACKAGE_NAME ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""
#define PACKAGE_STRING ""
#define PACKAGE_BUGREPORT ""
#define USE_BUILTIN_FRAME_ADDRESS 1
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_UNISTD_H 1
#define HAVE_LONG_LONG 1
#define HAVE_OFF_T 1
#define SIZEOF_INT 4
#define SIZEOF_SHORT 2
#define SIZEOF_LONG 4
#define SIZEOF_LONG_LONG 8
#define SIZEOF___INT64 0
#define SIZEOF_OFF_T 4
#define SIZEOF_VOIDP 4
#define SIZEOF_FLOAT 4
#define SIZEOF_DOUBLE 8
#define HAVE_PROTOTYPES 1
#define TOKEN_PASTE(x,y) x##y
#define HAVE_STDARG_PROTOTYPES 1
#define NORETURN(x) x __attribute__ ((noreturn))
#define HAVE_DECL_SYS_NERR 1
#define HAVE_DIRENT_H 1
#define STDC_HEADERS 1
#define HAVE_SYS_WAIT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_UNISTD_H 1
#define HAVE_LIMITS_H 1
#define HAVE_SYS_FILE_H 1
#define HAVE_SYS_IOCTL_H 1
#define HAVE_FCNTL_H 1
#define HAVE_SYS_FCNTL_H 1
#define HAVE_SYS_TIME_H 1
#define HAVE_SYS_TIMES_H 1
#define HAVE_SYS_PARAM_H 1
#define HAVE_PWD_H 1
#define HAVE_UTIME_H 1
#define HAVE_MEMORY_H 1
#define HAVE_DIRECT_H 1
#define HAVE_SYS_RESOURCE_H 1
#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
#define HAVE_ST_BLKSIZE 1
#define HAVE_STRUCT_STAT_ST_RDEV 1
#define HAVE_ST_RDEV 1
#define GETGROUPS_T gid_t
#define RETSIGTYPE void
#define HAVE_ALLOCA 1
#define HAVE_DUP2 1
#define HAVE_MEMMOVE 1
#define HAVE_MKDIR 1
#define HAVE_STRCASECMP 1
#define HAVE_STRNCASECMP 1
#define HAVE_STRERROR 1
#define HAVE_STRFTIME 1
#define HAVE_STRCHR 1
#define HAVE_STRSTR 1
#define HAVE_STRTOUL 1
#define HAVE_ISINF 1
#define HAVE_ISNAN 1
#define HAVE_FINITE 1
#define HAVE_HYPOT 1
#define HAVE_ACOSH 1
#define HAVE_FMOD 1
#define HAVE_WAITPID 1
#define HAVE_FSYNC 1
#define HAVE_TRUNCATE 1
#define HAVE_CHSIZE 1
#define HAVE_TIMES 1
#define HAVE_UTIMES 1
#define HAVE_FCNTL 1
#define HAVE_SYMLINK 1
#define HAVE_SETITIMER 1
#define HAVE_PAUSE 1
#define HAVE_GETPGRP 1
#define HAVE_SETPGID 1
#define HAVE_GETGROUPS 1
#define HAVE_GETRLIMIT 1
#define HAVE_SIGPROCMASK 1
#define HAVE_SIGACTION 1
#define HAVE_SETSID 1
#define HAVE_TELLDIR 1
#define HAVE_SEEKDIR 1
#define HAVE_MKTIME 1
#define HAVE_COSH 1
#define HAVE_SINH 1
#define HAVE_TANH 1
#define HAVE_STRUCT_TM_TM_ZONE 1
#define HAVE_TM_ZONE 1
#define HAVE_STRUCT_TM_TM_GMTOFF 1
#define POSIX_SIGNAL 1
#define GETPGRP_VOID 1
#define SETPGRP_VOID 1
#define RSHIFT(x,y) ((x)>>(int)y)
#define FILE_COUNT _cnt
#define FILE_READPTR _ptr
#define NEED_IO_FLUSH_BETWEEN_RW 1
#define DEFAULT_KCODE KCODE_NONE
#define DLEXT ".so"
#define RUBY_LIB "/lib/ruby/@MAJOR@.@MINOR@.@TEENY@"
#define RUBY_SITE_LIB "/lib/ruby/site_ruby"
#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/@MAJOR@.@MINOR@.@TEENY@"
#define RUBY_PLATFORM "i386-msdosdjgpp"
#define RUBY_ARCHLIB "/lib/ruby/@MAJOR@.@MINOR@.@TEENY@/i386-msdosdjgpp"
#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/@MAJOR@.@MINOR@.@TEENY@/i386-msdosdjgpp"

Просмотреть файл

@ -1,128 +0,0 @@
/^SHELL/s,/bin/sh,$(COMSPEC),
;s%/bin/rm%rm%
;s%|| true%%
;/\/dev\/null/ {
;s,/dev/null 2>&1, nul,
;s,2> /dev/null,,
;}
;/^config.status/ {
; N;N;N;N;N;d
;}
:t
/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
s,@srcdir@,.,g;t t
s,@top_srcdir@,..,;t t
s,@PATH_SEPARATOR@,:,;t t
s,@PACKAGE_NAME@,,;t t
s,@PACKAGE_TARNAME@,,;t t
s,@PACKAGE_VERSION@,,;t t
s,@PACKAGE_STRING@,,;t t
s,@PACKAGE_BUGREPORT@,,;t t
s,@exec_prefix@,${prefix},;t t
s,@prefix@,/dev/env/DJDIR,;t t
s%@program_transform_name@%s,^,,%;t t
s,@bindir@,${exec_prefix}/bin,;t t
s,@sbindir@,${exec_prefix}/sbin,;t t
s,@libexecdir@,${exec_prefix}/libexec,;t t
s,@datadir@,${prefix}/share,;t t
s,@sysconfdir@,${prefix}/etc,;t t
s,@sharedstatedir@,${prefix}/com,;t t
s,@localstatedir@,${prefix}/var,;t t
s,@libdir@,${exec_prefix}/lib,;t t
s,@includedir@,${prefix}/include,;t t
s,@oldincludedir@,/usr/include,;t t
s,@infodir@,${prefix}/info,;t t
s,@mandir@,${prefix}/man,;t t
s,@build_alias@,i586-pc-msdosdjgpp,;t t
s,@host_alias@,i586-pc-msdosdjgpp,;t t
s,@target_alias@,i386-msdosdjgpp,;t t
s,@DEFS@,,;t t
s,@ECHO_C@,,;t t
s,@ECHO_N@,-n,;t t
s,@ECHO_T@,,;t t
s,@LIBS@,-lm ,;t t
s,@MAJOR@,1,;t t
s,@MINOR@,7,;t t
s,@TEENY@,3,;t t
s,@build@,i586-pc-msdosdjgpp,;t t
s,@build_cpu@,i586,;t t
s,@build_vendor@,pc,;t t
s,@build_os@,msdosdjgpp,;t t
s,@host@,i586-pc-msdosdjgpp,;t t
s,@host_cpu@,i586,;t t
s,@host_vendor@,pc,;t t
s,@host_os@,msdosdjgpp,;t t
s,@target@,i386-pc-msdosdjgpp,;t t
s,@target_cpu@,i386,;t t
s,@target_vendor@,pc,;t t
s,@target_os@,msdosdjgpp,;t t
s,@CC@,gcc,;t t
s,@ac_ct_CC@,,;t t
s,@CFLAGS@,-Os,;t t
s,@LDFLAGS@,,;t t
s,@CPPFLAGS@,,;t t
s,@EXEEXT@,.exe,;t t
s,@OBJEXT@,o,;t t
s,@CPP@,gcc -E,;t t
s,@EGREP@,grep -E,;t t
s,@GNU_LD@,yes,;t t
s,@CPPOUTFILE@,-o conftest.i,;t t
s,@OUTFLAG@,-o ,;t t
s,@YACC@,bison -y,;t t
s,@RANLIB@,ranlib,;t t
s,@ac_ct_RANLIB@,,;t t
s,@AR@,ar,;t t
s,@ac_ct_AR@,,;t t
s,@NM@,,;t t
s,@ac_ct_NM@,,;t t
s,@WINDRES@,,;t t
s,@ac_ct_WINDRES@,,;t t
s,@DLLWRAP@,,;t t
s,@ac_ct_DLLWRAP@,,;t t
s,@LN_S@,ln -s,;t t
s,@SET_MAKE@,,;t t
s,@LIBOBJS@,crypt.o flock.o vsnprintf.o,;t t
s,@ALLOCA@,,;t t
s,@XCFLAGS@,,;t t
s,@XLDFLAGS@, -L.,;t t
s,@DLDFLAGS@,,;t t
s,@STATIC@,,;t t
s,@CCDLFLAGS@,,;t t
s,@LDSHARED@,ld,;t t
s,@DLEXT@,so,;t t
s,@DLEXT2@,,;t t
s,@LIBEXT@,a,;t t
s,@LINK_SO@,,;t t
s,@LIBPATHFLAG@, -L%s,;t t
s,@STRIP@,strip,;t t
s,@EXTSTATIC@,,;t t
s,@setup@,Setup.dj,;t t
s,@MINIRUBY@,./miniruby,;t t
s,@PREP@,,;t t
s,@ARCHFILE@,,;t t
s,@LIBRUBY_LDSHARED@,ld,;t t
s,@LIBRUBY_DLDFLAGS@,,;t t
s,@RUBY_INSTALL_NAME@,ruby,;t t
s,@rubyw_install_name@,,;t t
s,@RUBYW_INSTALL_NAME@,,;t t
s,@RUBY_SO_NAME@,$(RUBY_INSTALL_NAME),;t t
s,@LIBRUBY_A@,lib$(RUBY_INSTALL_NAME).a,;t t
s,@LIBRUBY_SO@,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR).$(TEENY),;t t
s,@LIBRUBY_ALIASES@,lib$(RUBY_SO_NAME).so,;t t
s,@LIBRUBY@,$(LIBRUBY_A),;t t
s,@LIBRUBYARG@,-l$(RUBY_INSTALL_NAME),;t t
s,@SOLIBS@,,;t t
s,@DLDLIBS@,-lc,;t t
s,@ENABLE_SHARED@,no,;t t
s,@MAINLIBS@,,;t t
s,@COMMON_LIBS@,,;t t
s,@COMMON_MACROS@,,;t t
s,@COMMON_HEADERS@,,;t t
s,@EXPORT_PREFIX@,,;t t
s,@MAKEFILES@,Makefile,;t t
s,@arch@,i386-msdosdjgpp,;t t
s,@sitearch@,i386-msdosdjgpp,;t t
s,@sitedir@,${prefix}/lib/ruby/site_ruby,;t t
s,@configure_args@,,;t t
/^,THIS_IS_DUMMY_PATTERN_/i\
ac_given_srcdir=.

Просмотреть файл

@ -1,20 +0,0 @@
@echo off
if exist configure.bat cd ..
if exist djgpp\version.sed goto exist
sed -n -f djgpp\mkver.sed < version.h > djgpp\version.sed
:exist
set _conv_=-f djgpp\config.sed -f djgpp\version.sed
sed %_conv_% < Makefile.in > Makefile
sed %_conv_% < djgpp\config.hin > config.h
echo LFN check > 12345678
sed -n /LFN/d 123456789 > nul
if errorlevel 2 goto LFN
copy missing\vsnprintf.c missing\vsnprint.c > nul
copy djgpp\config.sed config.sta > nul
goto end
:LFN
copy djgpp\config.sed config.status > nul
:end
set _conv_=
del 12345678
echo Now you must run a make.

Просмотреть файл

@ -1 +0,0 @@
/RUBY_VERSION /s/^.*\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/s,@MAJOR@,\1,;s,@MINOR@,\2,;s,@TEENY@,\3,/p

3
dln.c
Просмотреть файл

@ -1715,9 +1715,6 @@ dln_find_1(const char *fname, const char *path, char *fbuf, int size,
static const char extension[][5] = { static const char extension[][5] = {
#if defined(MSDOS) #if defined(MSDOS)
".com", ".exe", ".bat", ".com", ".exe", ".bat",
#if defined(DJGPP)
".btm", ".sh", ".ksh", ".pl", ".sed",
#endif
#elif defined(__EMX__) || defined(_WIN32) #elif defined(__EMX__) || defined(_WIN32)
".exe", ".com", ".cmd", ".bat", ".exe", ".com", ".cmd", ".bat",
/* end of __EMX__ or _WIN32 */ /* end of __EMX__ or _WIN32 */

Просмотреть файл

@ -1,33 +0,0 @@
option nodynamic
#Win32API
bigdecimal
curses
dbm
digest
digest/md5
digest/rmd160
digest/sha1
digest/sha2
#dl
etc
enumerator
fcntl
gdbm
#iconv
#io/wait
nkf
#openssl
#pty
racc/cparse
readline
ripper
sdbm
#socket
stringio
strscan
syck
#syslog
#tk
#win32ole
zlib

Просмотреть файл

@ -241,7 +241,7 @@ init_sock(VALUE sock, int fd)
MakeOpenFile(sock, fp); MakeOpenFile(sock, fp);
fp->fd = fd; fp->fd = fd;
fp->mode = FMODE_READWRITE|FMODE_DUPLEX; fp->mode = FMODE_READWRITE|FMODE_DUPLEX;
#if defined(_WIN32) || defined(DJGPP) || defined(__CYGWIN__) || defined(__EMX__) #if defined(_WIN32) || defined(__CYGWIN__) || defined(__EMX__)
fp->mode |= FMODE_BINMODE; fp->mode |= FMODE_BINMODE;
#endif #endif
if (do_not_reverse_lookup) { if (do_not_reverse_lookup) {

8
file.c
Просмотреть файл

@ -1989,7 +1989,7 @@ rb_file_chown(VALUE obj, VALUE owner, VALUE group)
o = NIL_P(owner) ? -1 : NUM2INT(owner); o = NIL_P(owner) ? -1 : NUM2INT(owner);
g = NIL_P(group) ? -1 : NUM2INT(group); g = NIL_P(group) ? -1 : NUM2INT(group);
GetOpenFile(obj, fptr); GetOpenFile(obj, fptr);
#if defined(DJGPP) || defined(__CYGWIN32__) || defined(_WIN32) || defined(__EMX__) #if defined(__CYGWIN32__) || defined(_WIN32) || defined(__EMX__)
if (NIL_P(fptr->pathv)) return Qnil; if (NIL_P(fptr->pathv)) return Qnil;
if (chown(RSTRING_PTR(fptr->pathv), o, g) == -1) if (chown(RSTRING_PTR(fptr->pathv), o, g) == -1)
rb_sys_fail_path(fptr->pathv); rb_sys_fail_path(fptr->pathv);
@ -2413,11 +2413,7 @@ rb_file_s_umask(int argc, VALUE *argv)
#endif #endif
#ifndef CharNext /* defined as CharNext[AW] on Windows. */ #ifndef CharNext /* defined as CharNext[AW] on Windows. */
# if defined(DJGPP) # define CharNext(p) ((p) + 1)
# define CharNext(p) ((p) + mblen(p, RUBY_MBCHAR_MAXSIZE))
# else
# define CharNext(p) ((p) + 1)
# endif
#endif #endif
#ifdef DOSISH_DRIVE_LETTER #ifdef DOSISH_DRIVE_LETTER

25
gc.c
Просмотреть файл

@ -1858,31 +1858,6 @@ obj_free(rb_objspace_t *objspace, VALUE obj)
return 0; return 0;
} }
#ifdef __GNUC__
#if defined(DJGPP)
#undef rb_setjmp
#undef rb_jmp_buf
#if defined(DJGPP)
typedef unsigned long rb_jmp_buf[6];
__asm__ (".align 4\n\
_rb_setjmp:\n\
pushl %ebp\n\
movl %esp,%ebp\n\
movl 8(%ebp),%ebp\n\
movl %eax,(%ebp)\n\
movl %ebx,4(%ebp)\n\
movl %ecx,8(%ebp)\n\
movl %edx,12(%ebp)\n\
movl %esi,16(%ebp)\n\
movl %edi,20(%ebp)\n\
popl %ebp\n\
xorl %eax,%eax\n\
ret");
#endif
int rb_setjmp (rb_jmp_buf);
#endif /* DJGPP */
#endif /* __GNUC__ */
#define GC_NOTIFY 0 #define GC_NOTIFY 0
void rb_vm_mark(void *ptr); void rb_vm_mark(void *ptr);

7
io.c
Просмотреть файл

@ -46,7 +46,7 @@
#endif #endif
#include <sys/types.h> #include <sys/types.h>
#if defined(HAVE_SYS_IOCTL_H) && !defined(DJGPP) && !defined(_WIN32) #if defined(HAVE_SYS_IOCTL_H) && !defined(_WIN32)
#include <sys/ioctl.h> #include <sys/ioctl.h>
#endif #endif
#if defined(HAVE_FCNTL_H) || defined(_WIN32) #if defined(HAVE_FCNTL_H) || defined(_WIN32)
@ -4195,9 +4195,6 @@ pipe_finalize(rb_io_t *fptr, int noraise)
} }
fptr->fd = -1; fptr->fd = -1;
fptr->stdio_file = 0; fptr->stdio_file = 0;
#if defined DJGPP
status <<= 8;
#endif
rb_last_status_set(status, fptr->pid); rb_last_status_set(status, fptr->pid);
#else #else
fptr_finalize(fptr, noraise); fptr_finalize(fptr, noraise);
@ -8418,7 +8415,7 @@ Init_IO(void)
rb_define_hooked_variable("$-i", &argf, opt_i_get, opt_i_set); rb_define_hooked_variable("$-i", &argf, opt_i_get, opt_i_set);
rb_define_hooked_variable("$*", &argf, argf_argv_getter, 0); rb_define_hooked_variable("$*", &argf, argf_argv_getter, 0);
#if defined (_WIN32) || defined(DJGPP) || defined(__CYGWIN__) #if defined (_WIN32) || defined(__CYGWIN__)
atexit(pipe_atexit); atexit(pipe_atexit);
#endif #endif

Просмотреть файл

@ -524,7 +524,7 @@ module FileUtils
OPT_TABLE['move'] = [:force, :noop, :verbose, :secure] OPT_TABLE['move'] = [:force, :noop, :verbose, :secure]
def rename_cannot_overwrite_file? #:nodoc: def rename_cannot_overwrite_file? #:nodoc:
/djgpp|cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM /cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM
end end
private_module_function :rename_cannot_overwrite_file? private_module_function :rename_cannot_overwrite_file?

Просмотреть файл

@ -9,7 +9,7 @@ CONFIG = RbConfig::MAKEFILE_CONFIG
ORIG_LIBPATH = ENV['LIB'] ORIG_LIBPATH = ENV['LIB']
CXX_EXT = %w[cc cxx cpp] CXX_EXT = %w[cc cxx cpp]
if /mswin|bccwin|mingw|msdosdjgpp|os2/ !~ CONFIG['build_os'] if /mswin|bccwin|mingw|os2/ !~ CONFIG['build_os']
CXX_EXT.concat(%w[C]) CXX_EXT.concat(%w[C])
end end
SRC_EXT = %w[c m] << CXX_EXT SRC_EXT = %w[c m] << CXX_EXT
@ -1299,7 +1299,7 @@ def configuration(srcdir)
if CONFIG['target_os'] != 'cygwin' if CONFIG['target_os'] != 'cygwin'
vpath = vpath.map {|p| p.sub(/.*/, '$(shell cygpath -u \&)')} vpath = vpath.map {|p| p.sub(/.*/, '$(shell cygpath -u \&)')}
end end
when 'msdosdjgpp', 'mingw32' when 'mingw32'
CONFIG['PATH_SEPARATOR'] = ';' CONFIG['PATH_SEPARATOR'] = ';'
end end
end end

Просмотреть файл

@ -28,9 +28,6 @@
#ifdef HAVE_FCNTL_H #ifdef HAVE_FCNTL_H
#include <fcntl.h> #include <fcntl.h>
#endif #endif
#ifdef __DJGPP__
#include <process.h>
#endif
#include <time.h> #include <time.h>
#include <ctype.h> #include <ctype.h>
@ -1004,12 +1001,12 @@ proc_exec_v(char **argv, const char *prog)
return -1; return -1;
} }
#if (defined(MSDOS) && !defined(DJGPP)) || defined(__EMX__) || defined(OS2) #if defined(MSDOS) || defined(__EMX__) || defined(OS2)
{ {
#if defined(__EMX__) || defined(OS2) /* OS/2 emx */ #if defined(__EMX__) || defined(OS2) /* OS/2 emx */
#define COMMAND "cmd.exe" #define COMMAND "cmd.exe"
#endif #endif
#if (defined(MSDOS) && !defined(DJGPP)) #if defined(MSDOS)
#define COMMAND "command.com" #define COMMAND "command.com"
#endif #endif
char *extension; char *extension;
@ -2667,11 +2664,7 @@ rb_spawn_internal(int argc, VALUE *argv, int default_close_others)
# else # else
if (argc) prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" ")); if (argc) prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
status = system(StringValuePtr(prog)); status = system(StringValuePtr(prog));
# if defined(__DJGPP__)
rb_last_status_set(status == -1 ? 127 : status, 0);
# else
rb_last_status_set((status & 0xff) << 8, 0); rb_last_status_set((status & 0xff) << 8, 0);
# endif
# endif # endif
rb_run_exec_options(&sarg, NULL); rb_run_exec_options(&sarg, NULL);

5
ruby.c
Просмотреть файл

@ -186,7 +186,7 @@ translate_char(char *p, int from, int to)
} }
#endif #endif
#if defined _WIN32 || defined __CYGWIN__ || defined __DJGPP__ #if defined _WIN32 || defined __CYGWIN__
static VALUE static VALUE
rubylib_mangled_path(const char *s, unsigned int l) rubylib_mangled_path(const char *s, unsigned int l)
{ {
@ -356,9 +356,6 @@ ruby_init_loadpath(void)
#if defined _WIN32 || defined __CYGWIN__ #if defined _WIN32 || defined __CYGWIN__
GetModuleFileName(libruby, libpath, sizeof libpath); GetModuleFileName(libruby, libpath, sizeof libpath);
#elif defined(DJGPP)
extern char *__dos_argv0;
strncpy(libpath, __dos_argv0, sizeof(libpath) - 1);
#elif defined(__EMX__) #elif defined(__EMX__)
_execname(libpath, sizeof(libpath) - 1); _execname(libpath, sizeof(libpath) - 1);
#endif #endif

Просмотреть файл

@ -44,11 +44,7 @@ typedef int rb_atomic_t;
#endif #endif
#ifndef NSIG #ifndef NSIG
# ifdef DJGPP # define NSIG (_SIGMAX + 1) /* For QNX */
# define NSIG SIGMAX
# else
# define NSIG (_SIGMAX + 1) /* For QNX */
# endif
#endif #endif
static const struct signals { static const struct signals {

Просмотреть файл

@ -16,11 +16,11 @@ Dir.mkdir tmproot unless File.directory?(tmproot)
Dir.chdir tmproot Dir.chdir tmproot
def have_drive_letter? def have_drive_letter?
/djgpp|mswin(?!ce)|mingw|bcc|emx/ =~ RUBY_PLATFORM /mswin(?!ce)|mingw|bcc|emx/ =~ RUBY_PLATFORM
end end
def have_file_perm? def have_file_perm?
/djgpp|mswin|mingw|bcc|wince|emx/ !~ RUBY_PLATFORM /mswin|mingw|bcc|wince|emx/ !~ RUBY_PLATFORM
end end
$fileutils_rb_have_symlink = nil $fileutils_rb_have_symlink = nil

Просмотреть файл

@ -1,7 +1,7 @@
require 'test/unit' require 'test/unit'
class TestEnv < Test::Unit::TestCase class TestEnv < Test::Unit::TestCase
IGNORE_CASE = /djgpp|bccwin|mswin|mingw/ =~ RUBY_PLATFORM IGNORE_CASE = /bccwin|mswin|mingw/ =~ RUBY_PLATFORM
PATH_ENV = "PATH" PATH_ENV = "PATH"
def setup def setup

Просмотреть файл

@ -45,7 +45,7 @@ class TestPath < Test::Unit::TestCase
end end
def test_dirname def test_dirname
if /(bcc|ms)win\d|mingw|cygwin|djgpp|emx/ =~ RUBY_PLATFORM if /(bcc|ms)win\d|mingw|cygwin|emx/ =~ RUBY_PLATFORM
# DOSISH_DRIVE_LETTER # DOSISH_DRIVE_LETTER
assert_equal('C:.', File.dirname('C:')) assert_equal('C:.', File.dirname('C:'))
assert_equal('C:.', File.dirname('C:a')) assert_equal('C:.', File.dirname('C:a'))
@ -101,7 +101,7 @@ class TestPath < Test::Unit::TestCase
assert_equal('/', File.dirname('/a/')) assert_equal('/', File.dirname('/a/'))
assert_equal('/a', File.dirname('/a/b')) assert_equal('/a', File.dirname('/a/b'))
if /(bcc|ms|cyg)win|mingw|djgpp|emx/ =~ RUBY_PLATFORM if /(bcc|ms|cyg)win|mingw|emx/ =~ RUBY_PLATFORM
# DOSISH_UNC # DOSISH_UNC
assert_equal('//', File.dirname('//')) assert_equal('//', File.dirname('//'))
assert_equal('//a', File.dirname('//a')) assert_equal('//a', File.dirname('//a'))
@ -135,7 +135,7 @@ class TestPath < Test::Unit::TestCase
end end
def test_basename def test_basename
if /(bcc|ms)win\d|mingw|cygwin|djgpp|emx/ =~ RUBY_PLATFORM if /(bcc|ms)win\d|mingw|cygwin|emx/ =~ RUBY_PLATFORM
# DOSISH_DRIVE_LETTER # DOSISH_DRIVE_LETTER
assert_equal('', File.basename('C:')) assert_equal('', File.basename('C:'))
assert_equal('a', File.basename('C:a')) assert_equal('a', File.basename('C:a'))
@ -189,7 +189,7 @@ class TestPath < Test::Unit::TestCase
assert_equal('a', File.basename('/a/')) assert_equal('a', File.basename('/a/'))
assert_equal('b', File.basename('/a/b')) assert_equal('b', File.basename('/a/b'))
if /(bcc|ms|cyg)win|mingw|djgpp|emx/ =~ RUBY_PLATFORM if /(bcc|ms|cyg)win|mingw|emx/ =~ RUBY_PLATFORM
# DOSISH_UNC # DOSISH_UNC
assert_equal('/', File.basename('//')) assert_equal('/', File.basename('//'))
assert_equal('/', File.basename('//a')) assert_equal('/', File.basename('//a'))

136
util.c
Просмотреть файл

@ -283,15 +283,11 @@ ruby_add_suffix(VALUE str, const char *suffix)
rb_fatal("Cannot do inplace edit on long filename (%ld characters)", rb_fatal("Cannot do inplace edit on long filename (%ld characters)",
RSTRING_LEN(str)); RSTRING_LEN(str));
#if defined(DJGPP) || defined(__CYGWIN32__) || defined(_WIN32) #if defined(__CYGWIN32__) || defined(_WIN32)
/* Style 0 */ /* Style 0 */
slen = RSTRING_LEN(str); slen = RSTRING_LEN(str);
rb_str_cat(str, suffix, extlen); rb_str_cat(str, suffix, extlen);
#if defined(DJGPP)
if (_USE_LFN) return;
#else
if (valid_filename(RSTRING_PTR(str))) return; if (valid_filename(RSTRING_PTR(str))) return;
#endif
/* Fooey, style 0 failed. Fix str before continuing. */ /* Fooey, style 0 failed. Fix str before continuing. */
rb_str_resize(str, slen); rb_str_resize(str, slen);
@ -363,136 +359,6 @@ valid_filename(const char *s)
#endif #endif
#endif #endif
#if defined __DJGPP__
#include <dpmi.h>
static char dbcs_table[256];
int
make_dbcs_table()
{
__dpmi_regs r;
struct {
unsigned char start;
unsigned char end;
} vec;
int offset;
memset(&r, 0, sizeof(r));
r.x.ax = 0x6300;
__dpmi_int(0x21, &r);
offset = r.x.ds * 16 + r.x.si;
for (;;) {
int i;
dosmemget(offset, sizeof vec, &vec);
if (!vec.start && !vec.end)
break;
for (i = vec.start; i <= vec.end; i++)
dbcs_table[i] = 1;
offset += 2;
}
}
int
mblen(const char *s, size_t n)
{
static int need_init = 1;
if (need_init) {
make_dbcs_table();
need_init = 0;
}
if (s) {
if (n == 0 || *s == 0)
return 0;
else if (!s[1])
return 1;
return dbcs_table[(unsigned char)*s] + 1;
}
else
return 1;
}
struct PathList {
struct PathList *next;
char *path;
};
struct PathInfo {
struct PathList *head;
int count;
};
static int
push_element(const char *path, VALUE vinfo)
{
struct PathList *p;
struct PathInfo *info = (struct PathInfo *)vinfo;
p = ALLOC(struct PathList);
MEMZERO(p, struct PathList, 1);
p->path = ruby_strdup(path);
p->next = info->head;
info->head = p;
info->count++;
return 0;
}
#include <dirent.h>
int __opendir_flags = __OPENDIR_PRESERVE_CASE;
char **
__crt0_glob_function(char *path)
{
int len = strlen(path);
int i;
char **rv;
char path_buffer[PATH_MAX];
char *buf = path_buffer;
char *p;
struct PathInfo info;
struct PathList *plist;
if (PATH_MAX <= len)
buf = ruby_xmalloc(len + 1);
strncpy(buf, path, len);
buf[len] = '\0';
for (p = buf; *p; p += mblen(p, RUBY_MBCHAR_MAXSIZE))
if (*p == '\\')
*p = '/';
info.count = 0;
info.head = 0;
ruby_glob(buf, 0, push_element, (VALUE)&info);
if (buf != path_buffer)
ruby_xfree(buf);
if (info.count == 0)
return 0;
rv = ruby_xmalloc((info.count + 1) * sizeof (char *));
plist = info.head;
i = 0;
while (plist) {
struct PathList *cur;
rv[i] = plist->path;
cur = plist;
plist = plist->next;
ruby_xfree(cur);
i++;
}
rv[i] = 0;
return rv;
}
#endif
/* mm.c */ /* mm.c */

Просмотреть файл

@ -35,9 +35,7 @@
#include <signal.h> #include <signal.h>
#ifndef NSIG #ifndef NSIG
# ifdef DJGPP # if defined MACOS_UNUSE_SIGNAL
# define NSIG SIGMAX
# elif defined MACOS_UNUSE_SIGNAL
# define NSIG 1 # define NSIG 1
# else # else
# define NSIG (_SIGMAX + 1) /* For QNX */ # define NSIG (_SIGMAX + 1) /* For QNX */