mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
WinCE patch merged
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e193fd8d66
commit
90c4dae08f
48 changed files with 5461 additions and 68 deletions
|
@ -808,6 +808,8 @@ if test "$with_dln_a_out" != yes; then
|
|||
DLDFLAGS="${DLDFLAGS} "'$(DEFFILE)'
|
||||
rb_cv_dlopen=yes ;;
|
||||
hiuxmpp) LDSHARED='ld -r' ;;
|
||||
atheos*) LDSHARED="$CC -shared"
|
||||
rb_cv_dlopen=yes ;;
|
||||
*) LDSHARED='ld' ;;
|
||||
esac
|
||||
AC_MSG_RESULT($rb_cv_dlopen)
|
||||
|
@ -955,9 +957,6 @@ rb_cv_missing_fconvert=yes, rb_cv_missing_fconvert=no, rb_cv_missing_fconvert=no
|
|||
*djgpp*)
|
||||
setup=Setup.dj
|
||||
;;
|
||||
atheos*)
|
||||
setup=Setup.atheos
|
||||
;;
|
||||
*)
|
||||
setup=Setup
|
||||
;;
|
||||
|
@ -1085,6 +1084,10 @@ if test "$enable_shared" = 'yes'; then
|
|||
LIBRUBY_DLDFLAGS='-install_name $(libdir)/lib$(RUBY_SO_NAME).dylib -current_version $(MAJOR).$(MINOR).$(TEENY) -compatibility_version $(MAJOR).$(MINOR)'
|
||||
LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).$(MAJOR).$(MINOR).dylib lib$(RUBY_SO_NAME).dylib'
|
||||
;;
|
||||
atheos*)
|
||||
LIBRUBY_DLDFLAGS='-Wl,-soname,lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR)'
|
||||
LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).so.$(MAJOR).$(MINOR) lib$(RUBY_SO_NAME).so'
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -88,7 +88,7 @@ void xfree _((void*));
|
|||
|
||||
/* define RUBY_USE_EUC/SJIS for default kanji-code */
|
||||
#ifndef DEFAULT_KCODE
|
||||
#if defined(MSDOS) || defined(__CYGWIN__) || defined(__human68k__) || defined(__MACOS__) || defined(__EMX__) || defined(OS2) || defined(NT)
|
||||
#if defined(MSDOS) || defined(__CYGWIN__) || defined(__human68k__) || defined(__MACOS__) || defined(__EMX__) || defined(OS2) || defined(NT) || defined(_WIN32_WCE)
|
||||
#define DEFAULT_KCODE KCODE_SJIS
|
||||
#else
|
||||
#define DEFAULT_KCODE KCODE_EUC
|
||||
|
@ -106,7 +106,7 @@ void xfree _((void*));
|
|||
#define HAVE_SYS_WAIT_H /* configure fails to find this */
|
||||
#endif /* NeXT */
|
||||
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
#include "win32/win32.h"
|
||||
#endif
|
||||
|
||||
|
@ -141,7 +141,7 @@ void xfree _((void*));
|
|||
#define DOSISH 1
|
||||
#endif
|
||||
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(OS2)
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(OS2) || defined(_WIN32_WCE)
|
||||
#define PATH_SEP ";"
|
||||
#elif defined(riscos)
|
||||
#define PATH_SEP ","
|
||||
|
|
12
dir.c
12
dir.c
|
@ -21,10 +21,10 @@
|
|||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#if defined HAVE_DIRENT_H && !defined NT
|
||||
#if defined HAVE_DIRENT_H && !defined NT && !defined _WIN32_WCE
|
||||
# include <dirent.h>
|
||||
# define NAMLEN(dirent) strlen((dirent)->d_name)
|
||||
#elif defined HAVE_DIRECT_H && !defined NT
|
||||
#elif defined HAVE_DIRECT_H && !defined NT && !defined _WIN32_WCE
|
||||
# include <direct.h>
|
||||
# define NAMLEN(dirent) strlen((dirent)->d_name)
|
||||
#else
|
||||
|
@ -39,7 +39,7 @@
|
|||
# if HAVE_NDIR_H
|
||||
# include <ndir.h>
|
||||
# endif
|
||||
# if defined(NT)
|
||||
# if defined(NT) || defined(_WIN32_WCE)
|
||||
# include "win32/dir.h"
|
||||
# endif
|
||||
#endif
|
||||
|
@ -79,6 +79,10 @@ char *strchr _((char*,char));
|
|||
# define CharNext(p) ((p) + 1)
|
||||
# endif
|
||||
#endif
|
||||
#ifdef _WIN32_WCE
|
||||
#undef CharNext
|
||||
#define CharNext CharNextA
|
||||
#endif
|
||||
#if defined DOSISH
|
||||
#define isdirsep(c) ((c) == '/' || (c) == '\\')
|
||||
static char *
|
||||
|
@ -534,7 +538,7 @@ dir_s_mkdir(argc, argv, obj)
|
|||
|
||||
SafeStringValue(path);
|
||||
rb_secure(2);
|
||||
#if !defined(NT)
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
if (mkdir(RSTRING(path)->ptr, mode) == -1)
|
||||
rb_sys_fail(RSTRING(path)->ptr);
|
||||
#else
|
||||
|
|
25
dln.c
25
dln.c
|
@ -48,7 +48,7 @@ void *xrealloc();
|
|||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#if defined(NT) || defined(__VMS)
|
||||
#if defined(NT) || defined(__VMS) || defined(_WIN32_WCE)
|
||||
#include "missing/file.h"
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
|
@ -69,7 +69,7 @@ void *xrealloc();
|
|||
# include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifndef NT
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
char *getenv();
|
||||
#endif
|
||||
|
||||
|
@ -1149,6 +1149,15 @@ dln_sym(name)
|
|||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
#undef FormatMessage
|
||||
#define FormatMessage FormatMessageA
|
||||
#undef LoadLibrary
|
||||
#define LoadLibrary LoadLibraryA
|
||||
#undef GetProcAddress
|
||||
#define GetProcAddress GetProcAddressA
|
||||
#endif
|
||||
|
||||
static const char *
|
||||
dln_strerror()
|
||||
{
|
||||
|
@ -1589,7 +1598,7 @@ dln_find_exe(fname, path)
|
|||
}
|
||||
|
||||
if (!path) {
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(__MACOS__)
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(__MACOS__) || defined(_WIN32_WCE)
|
||||
path = "/usr/local/bin;/usr/ucb;/usr/bin;/bin;.";
|
||||
#else
|
||||
path = "/usr/local/bin:/usr/ucb:/usr/bin:/bin:.";
|
||||
|
@ -1660,7 +1669,7 @@ dln_find_1(fname, path, exe_flag)
|
|||
if (strncmp("./", fname, 2) == 0 || strncmp("../", fname, 3) == 0)
|
||||
return fname;
|
||||
if (exe_flag && strchr(fname, '/')) return fname;
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(__EMX__)
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(__EMX__) || defined(_WIN32_WCE)
|
||||
if (fname[0] == '\\') return fname;
|
||||
if (strlen(fname) > 2 && fname[1] == ':') return fname;
|
||||
if (strncmp(".\\", fname, 2) == 0 || strncmp("..\\", fname, 3) == 0)
|
||||
|
@ -1692,7 +1701,7 @@ dln_find_1(fname, path, exe_flag)
|
|||
*/
|
||||
|
||||
if (*dp == '~' && (l == 1 ||
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(__EMX__)
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(__EMX__) || defined(_WIN32_WCE)
|
||||
dp[1] == '\\' ||
|
||||
#endif
|
||||
dp[1] == '/')) {
|
||||
|
@ -1750,7 +1759,7 @@ dln_find_1(fname, path, exe_flag)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(__EMX__)
|
||||
#if defined(MSDOS) || defined(NT) || defined(__human68k__) || defined(__EMX__) || defined(_WIN32_WCE)
|
||||
if (exe_flag) {
|
||||
static const char *extension[] = {
|
||||
#if defined(MSDOS)
|
||||
|
@ -1758,9 +1767,9 @@ dln_find_1(fname, path, exe_flag)
|
|||
#if defined(DJGPP)
|
||||
".btm", ".sh", ".ksh", ".pl", ".sed",
|
||||
#endif
|
||||
#elif defined(__EMX__) || defined(NT)
|
||||
#elif defined(__EMX__) || defined(NT) || defined(_WIN32_WCE)
|
||||
".exe", ".com", ".cmd", ".bat",
|
||||
/* end of __EMX__ or NT*/
|
||||
/* end of __EMX__ or NT or WINCE */
|
||||
#else
|
||||
".r", ".R", ".x", ".X", ".bat", ".BAT",
|
||||
/* __human68k__ */
|
||||
|
|
2
error.c
2
error.c
|
@ -645,7 +645,7 @@ void
|
|||
rb_sys_fail(mesg)
|
||||
const char *mesg;
|
||||
{
|
||||
#if !defined(NT) && !defined(__VMS)
|
||||
#if !defined(NT) && !defined(__VMS) && !defined(_WIN32_WCE)
|
||||
char *strerror();
|
||||
#endif
|
||||
char *err;
|
||||
|
|
2
eval.c
2
eval.c
|
@ -7328,7 +7328,7 @@ win32_set_exception_list(p)
|
|||
# endif
|
||||
}
|
||||
|
||||
#ifndef SAVE_WIN32_EXCEPTION_LIST
|
||||
#if !defined SAVE_WIN32_EXCEPTION_LIST && !defined _WIN32_WCE
|
||||
# error unsupported platform
|
||||
#endif
|
||||
#endif
|
||||
|
|
25
file.c
25
file.c
|
@ -12,7 +12,7 @@
|
|||
|
||||
**********************************************************************/
|
||||
|
||||
#ifdef NT
|
||||
#if defined NT || defined _WIN32_WCE
|
||||
#include "missing/file.h"
|
||||
#endif
|
||||
|
||||
|
@ -43,12 +43,12 @@ int flock _((int, int));
|
|||
#ifdef HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
#else
|
||||
#ifndef NT
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
struct timeval {
|
||||
long tv_sec; /* seconds */
|
||||
long tv_usec; /* and microseconds */
|
||||
};
|
||||
#endif /* NT */
|
||||
#endif /* NT, WINCE */
|
||||
#endif
|
||||
|
||||
VALUE rb_time_new _((time_t, time_t));
|
||||
|
@ -76,6 +76,11 @@ char *strrchr _((const char*,const char));
|
|||
#define lstat(path,st) stat(path,st)
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
#undef CharNext
|
||||
#define CharNext CharNextA
|
||||
#endif
|
||||
|
||||
VALUE rb_cFile;
|
||||
VALUE rb_mFileTest;
|
||||
static VALUE rb_cStat;
|
||||
|
@ -110,7 +115,7 @@ rb_file_path(obj)
|
|||
return rb_str_new2(fptr->path);
|
||||
}
|
||||
|
||||
#ifdef NT
|
||||
#if defined NT || defined _WIN32_WCE
|
||||
#include "missing/file.h"
|
||||
#endif
|
||||
|
||||
|
@ -440,7 +445,7 @@ static int
|
|||
group_member(gid)
|
||||
GETGROUPS_T gid;
|
||||
{
|
||||
#if !defined(NT)
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
if (getgid() == gid)
|
||||
return Qtrue;
|
||||
|
||||
|
@ -780,7 +785,7 @@ static VALUE
|
|||
test_grpowned(obj, fname)
|
||||
VALUE obj, fname;
|
||||
{
|
||||
#ifndef NT
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
struct stat st;
|
||||
|
||||
if (rb_stat(fname, &st) < 0) return Qfalse;
|
||||
|
@ -1115,7 +1120,7 @@ rb_file_chown(obj, owner, group)
|
|||
|
||||
rb_secure(2);
|
||||
GetOpenFile(obj, fptr);
|
||||
#if defined(DJGPP) || defined(__CYGWIN32__) || defined(NT) || defined(__EMX__)
|
||||
#if defined(DJGPP) || defined(__CYGWIN32__) || defined(NT) || defined(__EMX__) || defined(_WIN32_WCE)
|
||||
if (!fptr->path) return Qnil;
|
||||
if (chown(fptr->path, NUM2INT(owner), NUM2INT(group)) == -1)
|
||||
rb_sys_fail(fptr->path);
|
||||
|
@ -1208,7 +1213,7 @@ rb_file_s_utime(argc, argv)
|
|||
#else
|
||||
|
||||
#ifndef HAVE_UTIME_H
|
||||
# ifdef NT
|
||||
# if defined NT || defined _WIN32_WCE
|
||||
# if defined(__BORLANDC__)
|
||||
# include <utime.h>
|
||||
# else
|
||||
|
@ -1711,7 +1716,7 @@ rb_file_s_truncate(klass, path, len)
|
|||
{
|
||||
int tmpfd;
|
||||
|
||||
# if defined(NT)
|
||||
# if defined(NT) || defined(_WIN32_WCE)
|
||||
if ((tmpfd = open(RSTRING(path)->ptr, O_RDWR)) < 0) {
|
||||
rb_sys_fail(RSTRING(path)->ptr);
|
||||
}
|
||||
|
@ -2136,7 +2141,7 @@ static VALUE
|
|||
rb_stat_grpowned(obj)
|
||||
VALUE obj;
|
||||
{
|
||||
#ifndef NT
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
if (get_stat(obj)->st_gid == getegid()) return Qtrue;
|
||||
#endif
|
||||
return Qfalse;
|
||||
|
|
2
hash.c
2
hash.c
|
@ -942,7 +942,7 @@ rb_hash_update(hash1, hash2)
|
|||
static int path_tainted = -1;
|
||||
|
||||
static char **origenviron;
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
#define GET_ENVIRON(e) (e = rb_w32_get_environ())
|
||||
#define FREE_ENVIRON(e) rb_w32_free_environ(e)
|
||||
static char **my_environ;
|
||||
|
|
18
io.c
18
io.c
|
@ -24,7 +24,7 @@
|
|||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
|
||||
#if defined(MSDOS) || defined(__BOW__) || defined(__CYGWIN__) || defined(NT) || defined(__human68k__) || defined(__EMX__) || defined(__BEOS__)
|
||||
#if defined(MSDOS) || defined(__BOW__) || defined(__CYGWIN__) || defined(NT) || defined(__human68k__) || defined(__EMX__) || defined(__BEOS__) || defined(_WIN32_WCE)
|
||||
# define NO_SAFE_RENAME
|
||||
#endif
|
||||
|
||||
|
@ -41,10 +41,10 @@
|
|||
#endif
|
||||
|
||||
#include <sys/types.h>
|
||||
#if !defined(DJGPP) && !defined(NT) && !defined(__human68k__)
|
||||
#if !defined(DJGPP) && !defined(NT) && !defined(__human68k__) && !defined(_WIN32_WCE)
|
||||
#include <sys/ioctl.h>
|
||||
#endif
|
||||
#if defined(HAVE_FCNTL_H) || defined(NT)
|
||||
#if defined(HAVE_FCNTL_H) || defined(NT) || defined(_WIN32_WCE)
|
||||
#include <fcntl.h>
|
||||
#elif defined(HAVE_SYS_FCNTL_H)
|
||||
#include <sys/fcntl.h>
|
||||
|
@ -1536,7 +1536,7 @@ VALUE
|
|||
rb_io_binmode(io)
|
||||
VALUE io;
|
||||
{
|
||||
#if defined(NT) || defined(DJGPP) || defined(__CYGWIN__) || defined(__human68k__) || defined(__EMX__)
|
||||
#if defined(NT) || defined(DJGPP) || defined(__CYGWIN__) || defined(__human68k__) || defined(__EMX__) || defined(_WIN32_WCE)
|
||||
OpenFile *fptr;
|
||||
|
||||
GetOpenFile(io, fptr);
|
||||
|
@ -1825,7 +1825,7 @@ rb_file_sysopen(fname, flags, mode)
|
|||
return rb_file_sysopen_internal(io, fname, flags, mode);
|
||||
}
|
||||
|
||||
#if defined (NT) || defined(DJGPP) || defined(__CYGWIN__) || defined(__human68k__) || defined(__VMS)
|
||||
#if defined (NT) || defined(DJGPP) || defined(__CYGWIN__) || defined(__human68k__) || defined(__VMS) || defined(_WIN32_WCE)
|
||||
static struct pipe_list {
|
||||
OpenFile *fptr;
|
||||
struct pipe_list *next;
|
||||
|
@ -1867,7 +1867,7 @@ pipe_del_fptr(fptr)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined (NT) || defined(DJGPP) || defined(__CYGWIN__) || defined(__human68k__) || defined(__VMS)
|
||||
#if defined (NT) || defined(DJGPP) || defined(__CYGWIN__) || defined(__human68k__) || defined(__VMS) || defined(_WIN32_WCE)
|
||||
static void
|
||||
pipe_atexit _((void))
|
||||
{
|
||||
|
@ -1888,7 +1888,7 @@ static void
|
|||
pipe_finalize(fptr)
|
||||
OpenFile *fptr;
|
||||
{
|
||||
#if !defined (__CYGWIN__) && !defined(NT)
|
||||
#if !defined (__CYGWIN__) && !defined(NT) && !defined(_WIN32_WCE)
|
||||
extern VALUE rb_last_status;
|
||||
int status;
|
||||
if (fptr->f) {
|
||||
|
@ -1951,7 +1951,7 @@ pipe_open(pname, mode)
|
|||
return (VALUE)port;
|
||||
}
|
||||
#else
|
||||
#if defined(NT)
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
int pid;
|
||||
FILE *fpr, *fpw;
|
||||
|
||||
|
@ -3469,7 +3469,7 @@ rb_io_s_pipe()
|
|||
int pipes[2];
|
||||
VALUE r, w;
|
||||
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
if (_pipe(pipes, 1024, O_BINARY) == -1)
|
||||
#else
|
||||
if (pipe(pipes) == -1)
|
||||
|
|
2
main.c
2
main.c
|
@ -38,7 +38,7 @@ main(argc, argv, envp)
|
|||
int argc;
|
||||
char **argv, **envp;
|
||||
{
|
||||
#if defined(NT)
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
NtInitialize(&argc, &argv);
|
||||
#endif
|
||||
#if defined(__MACOS__) && defined(__MWERKS__)
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
|
||||
#if defined(HAVE_SYS_TIME_H)
|
||||
# include <sys/time.h>
|
||||
#elif !defined(NT)
|
||||
#elif !defined(NT) && !defined(_WIN32_WCE)
|
||||
# define time_t long
|
||||
struct timeval {
|
||||
time_t tv_sec; /* seconds */
|
||||
|
|
12
process.c
12
process.c
|
@ -42,7 +42,7 @@ struct timeval rb_time_interval _((VALUE));
|
|||
#include <sys/times.h>
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_TIMES) || defined(NT)
|
||||
#if defined(HAVE_TIMES) || defined(NT) || defined(_WIN32_WCE)
|
||||
static VALUE S_Tms;
|
||||
#endif
|
||||
|
||||
|
@ -74,7 +74,7 @@ get_pid()
|
|||
static VALUE
|
||||
get_ppid()
|
||||
{
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
return INT2FIX(0);
|
||||
#else
|
||||
return INT2FIX(getppid());
|
||||
|
@ -703,7 +703,7 @@ static VALUE
|
|||
rb_f_fork(obj)
|
||||
VALUE obj;
|
||||
{
|
||||
#if !defined(__human68k__) && !defined(NT) && !defined(__MACOS__) && !defined(__EMX__) && !defined(__VMS)
|
||||
#if !defined(__human68k__) && !defined(NT) && !defined(__MACOS__) && !defined(__EMX__) && !defined(__VMS) && !defined(_WIN32_WCE)
|
||||
int pid;
|
||||
|
||||
rb_secure(2);
|
||||
|
@ -796,7 +796,7 @@ rb_f_system(argc, argv)
|
|||
int argc;
|
||||
VALUE *argv;
|
||||
{
|
||||
#if defined(NT) || defined(__EMX__)
|
||||
#if defined(NT) || defined(__EMX__) || defined(_WIN32_WCE)
|
||||
VALUE cmd;
|
||||
int status;
|
||||
|
||||
|
@ -1286,7 +1286,7 @@ Init_process()
|
|||
|
||||
rb_mProcess = rb_define_module("Process");
|
||||
|
||||
#if !defined(NT) && !defined(DJGPP)
|
||||
#if !defined(NT) && !defined(DJGPP) && !defined(_WIN32_WCE)
|
||||
#ifdef WNOHANG
|
||||
rb_define_const(rb_mProcess, "WNOHANG", INT2FIX(WNOHANG));
|
||||
#else
|
||||
|
@ -1358,7 +1358,7 @@ Init_process()
|
|||
|
||||
rb_define_module_function(rb_mProcess, "times", rb_proc_times, 0);
|
||||
|
||||
#if defined(HAVE_TIMES) || defined(NT)
|
||||
#if defined(HAVE_TIMES) || defined(NT) || defined(_WIN32_WCE)
|
||||
S_Tms = rb_struct_define("Tms", "utime", "stime", "cutime", "cstime", 0);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#ifndef SIG_H
|
||||
#define SIG_H
|
||||
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
typedef LONG rb_atomic_t;
|
||||
|
||||
# define ATOMIC_TEST(var) InterlockedExchange(&(var), 0)
|
||||
|
|
12
signal.c
12
signal.c
|
@ -369,7 +369,7 @@ static RETSIGTYPE
|
|||
sighandler(sig)
|
||||
int sig;
|
||||
{
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
#define IN_MAIN_CONTEXT(f, a) (rb_w32_main_context(a, f) ? (void)0 : f(a))
|
||||
#else
|
||||
#define IN_MAIN_CONTEXT(f, a) f(a)
|
||||
|
@ -453,7 +453,7 @@ rb_trap_exec()
|
|||
}
|
||||
|
||||
struct trap_arg {
|
||||
#if !defined(NT)
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
# ifdef HAVE_SIGPROCMASK
|
||||
sigset_t mask;
|
||||
# else
|
||||
|
@ -594,7 +594,7 @@ trap(arg)
|
|||
|
||||
trap_list[sig] = command;
|
||||
/* enable at least specified signal. */
|
||||
#if !defined(NT)
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
#ifdef HAVE_SIGPROCMASK
|
||||
sigdelset(&arg->mask, sig);
|
||||
#else
|
||||
|
@ -604,7 +604,7 @@ trap(arg)
|
|||
return old;
|
||||
}
|
||||
|
||||
#if !defined(NT)
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
static VALUE
|
||||
trap_ensure(arg)
|
||||
struct trap_arg *arg;
|
||||
|
@ -623,7 +623,7 @@ trap_ensure(arg)
|
|||
void
|
||||
rb_trap_restore_mask()
|
||||
{
|
||||
#if !defined(NT)
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
# ifdef HAVE_SIGPROCMASK
|
||||
sigprocmask(SIG_SETMASK, &trap_last_mask, NULL);
|
||||
# else
|
||||
|
@ -655,7 +655,7 @@ sig_trap(argc, argv)
|
|||
if (OBJ_TAINTED(arg.cmd)) {
|
||||
rb_raise(rb_eSecurityError, "Insecure: tainted signal trap");
|
||||
}
|
||||
#if !defined(NT)
|
||||
#if !defined(NT) && !defined(_WIN32_WCE)
|
||||
/* disable interrupt */
|
||||
# ifdef HAVE_SIGPROCMASK
|
||||
sigfillset(&arg.mask);
|
||||
|
|
2
st.c
2
st.c
|
@ -7,7 +7,7 @@
|
|||
#include <stdlib.h>
|
||||
#include "st.h"
|
||||
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
|
||||
|
|
10
util.c
10
util.c
|
@ -16,7 +16,7 @@
|
|||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
#include "missing/file.h"
|
||||
#endif
|
||||
|
||||
|
@ -75,11 +75,11 @@ scan_hex(start, len, retlen)
|
|||
# define S_ISDIR(m) ((m & S_IFMT) == S_IFDIR)
|
||||
#endif
|
||||
|
||||
#ifdef NT
|
||||
#if defined(NT) || defined(_WIN32_WCE)
|
||||
#include "missing/file.h"
|
||||
#endif
|
||||
|
||||
#if defined(MSDOS) || defined(__CYGWIN32__) || defined(NT)
|
||||
#if defined(MSDOS) || defined(__CYGWIN32__) || defined(NT) || defined(_WIN32_WCE)
|
||||
/*
|
||||
* Copyright (c) 1993, Intergraph Corporation
|
||||
*
|
||||
|
@ -173,7 +173,7 @@ ruby_add_suffix(str, suffix)
|
|||
rb_fatal("Cannot do inplace edit on long filename (%ld characters)",
|
||||
RSTRING(str)->len);
|
||||
|
||||
#if defined(DJGPP) || defined(__CYGWIN32__) || defined(NT)
|
||||
#if defined(DJGPP) || defined(__CYGWIN32__) || defined(NT) || defined(_WIN32_WCE)
|
||||
/* Style 0 */
|
||||
slen = RSTRING(str)->len;
|
||||
rb_str_cat(str, suffix, extlen);
|
||||
|
@ -229,7 +229,7 @@ fallback:
|
|||
memcpy(RSTRING(str)->ptr, buf, RSTRING(str)->len);
|
||||
}
|
||||
|
||||
#if defined(__CYGWIN32__) || defined(NT)
|
||||
#if defined(__CYGWIN32__) || defined(NT) || defined(_WIN32_WCE)
|
||||
static int
|
||||
valid_filename(char *s)
|
||||
{
|
||||
|
|
2
util.h
2
util.h
|
@ -39,7 +39,7 @@ unsigned long scan_oct _((const char*, int, int*));
|
|||
#define scan_hex ruby_scan_hex
|
||||
unsigned long scan_hex _((const char*, int, int*));
|
||||
|
||||
#if defined(MSDOS) || defined(__CYGWIN32__) || defined(NT)
|
||||
#if defined(MSDOS) || defined(__CYGWIN32__) || defined(NT) || defined(_WIN32_WCE)
|
||||
void ruby_add_suffix();
|
||||
#define add_suffix ruby_add_suffix
|
||||
#endif
|
||||
|
|
|
@ -29,6 +29,9 @@
|
|||
#endif
|
||||
#include "win32.h"
|
||||
#include "win32/dir.h"
|
||||
#ifdef _WIN32_WCE
|
||||
#include "wince.h"
|
||||
#endif
|
||||
#ifndef index
|
||||
#define index(x, y) strchr((x), (y))
|
||||
#endif
|
||||
|
@ -49,7 +52,7 @@
|
|||
# undef WIN95
|
||||
#endif
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#if defined __BORLANDC__ || defined _WIN32_WCE
|
||||
# define _filbuf _fgetc
|
||||
# define _flsbuf _fputc
|
||||
# define enough_to_get(n) (--(n) >= 0)
|
||||
|
@ -91,7 +94,7 @@ static int valid_filename(char *s);
|
|||
static void StartSockets ();
|
||||
static char *str_grow(struct RString *str, size_t new_size);
|
||||
static DWORD wait_events(HANDLE event, DWORD timeout);
|
||||
#ifndef __BORLANDC__
|
||||
#if !defined(__BORLANDC__) && !defined(_WIN32_WCE)
|
||||
static int rb_w32_open_osfhandle(long osfhandle, int flags);
|
||||
#else
|
||||
#define rb_w32_open_osfhandle(osfhandle, flags) _open_osfhandle(osfhandle, flags)
|
||||
|
@ -287,6 +290,11 @@ NtInitialize(int *argc, char ***argv)
|
|||
|
||||
// Initialize Winsock
|
||||
StartSockets();
|
||||
|
||||
#ifdef _WIN32_WCE
|
||||
// free commandline buffer
|
||||
wce_FreeCommandLine();
|
||||
#endif
|
||||
}
|
||||
|
||||
char *getlogin()
|
||||
|
@ -1387,7 +1395,7 @@ typedef struct {
|
|||
#define _CRTIMP __declspec(dllimport)
|
||||
#endif
|
||||
|
||||
#ifndef __BORLANDC__
|
||||
#if !defined(__BORLANDC__) && !defined(_WIN32_WCE)
|
||||
EXTERN_C _CRTIMP ioinfo * __pioinfo[];
|
||||
|
||||
#define IOINFO_L2E 5
|
||||
|
@ -2707,8 +2715,10 @@ static void setup_call(CONTEXT* ctx, struct handler_arg_t *harg)
|
|||
ctx->Esp = (DWORD)esp;
|
||||
ctx->Eip = (DWORD)rb_w32_call_handler;
|
||||
#else
|
||||
#ifndef _WIN32_WCE
|
||||
#error unsupported processor
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
int rb_w32_main_context(int arg, void (*handler)(int))
|
||||
|
@ -2792,13 +2802,16 @@ static void catch_interrupt(void)
|
|||
int rb_w32_getc(FILE* stream)
|
||||
{
|
||||
int c, trap_immediate = rb_trap_immediate;
|
||||
#ifndef _WIN32_WCE
|
||||
if (enough_to_get(stream->FILE_COUNT)) {
|
||||
c = (unsigned char)*stream->FILE_READPTR++;
|
||||
rb_trap_immediate = trap_immediate;
|
||||
}
|
||||
else {
|
||||
else
|
||||
#endif
|
||||
{
|
||||
c = _filbuf(stream);
|
||||
#ifdef __BORLANDC__
|
||||
#if defined __BORLANDC__ || defined _WIN32_WCE
|
||||
if( ( c == EOF )&&( errno == EPIPE ) )
|
||||
{
|
||||
clearerr(stream);
|
||||
|
@ -2814,11 +2827,14 @@ int rb_w32_getc(FILE* stream)
|
|||
int rb_w32_putc(int c, FILE* stream)
|
||||
{
|
||||
int trap_immediate = rb_trap_immediate;
|
||||
#ifndef _WIN32_WCE
|
||||
if (enough_to_put(stream->FILE_COUNT)) {
|
||||
c = (unsigned char)(*stream->FILE_READPTR++ = (char)c);
|
||||
rb_trap_immediate = trap_immediate;
|
||||
}
|
||||
else {
|
||||
else
|
||||
#endif
|
||||
{
|
||||
c = _flsbuf(c, stream);
|
||||
rb_trap_immediate = trap_immediate;
|
||||
catch_interrupt();
|
||||
|
|
62
wince/README.wince
Normal file
62
wince/README.wince
Normal file
|
@ -0,0 +1,62 @@
|
|||
=begin
|
||||
|
||||
= How to build ruby using eMbedded Visual C++
|
||||
|
||||
== Requirement
|
||||
|
||||
(1) eMbedded Visual C++ 3.0 or later.
|
||||
|
||||
== How to compile and install
|
||||
|
||||
(1) Move to ruby\wince directory.
|
||||
|
||||
(2) if you changed install directories of eMVC and SDK from default
|
||||
settings, please modify .\configure.bat in order to set
|
||||
environment valuables such as "PATH", "INCLUDE", and "LIB".
|
||||
|
||||
(2) Execute .\configure.bat on "ruby\wince" directory.
|
||||
You can specify the target platform as an argument.
|
||||
For example, run:
|
||||
[CPU] [OS ver.]
|
||||
StrongARM HPC2000 : `configure ARM HPC2K'
|
||||
MIPS PocketPC : `configure MIPS PPC'
|
||||
SH3 PocketPC : `configure SH3 PPC'
|
||||
SH4 HPCPro : `configure SH4 HPCPRO'
|
||||
(caution: "HPCPro" is not supported yet.)
|
||||
|
||||
(3) Execute `.\make.bat'.
|
||||
|
||||
(4) Copy mswince-ruby17.dll, ruby.exe, and irb.exe to your WinCE machine.
|
||||
|
||||
== Icons
|
||||
|
||||
Any icon files(*.ico) in the build directory, directories specified with
|
||||
((|icondirs|)) make variable and (({win32})) directory under the ruby
|
||||
source directory will be included in DLL or executable files, according
|
||||
to their base names.
|
||||
$(RUBY_INSTALL_NAME).ico or ruby.ico --> $(RUBY_INSTALL_NAME).exe
|
||||
$(RUBYW_INSTALL_NAME).ico or rubyw.ico --> $(RUBYW_INSTALL_NAME).exe
|
||||
the others --> $(RUBY_SO_NAME).dll
|
||||
|
||||
Although no icons are distributed with the ruby source or in the official
|
||||
site, you can use anything you like. For example, followings are written
|
||||
in Japanese, but you can download at least.
|
||||
|
||||
* ((<URL:http://member.nifty.ne.jp/ueivu/rubyico.html>)) or
|
||||
((<zipped icons|URL:http://member.nifty.ne.jp/ueivu/Ruby_ico.zip>))
|
||||
* ((<URL:http://homepage1.nifty.com/a_nakata/ruby/>)) or
|
||||
((<icon itself|URL:http://homepage1.nifty.com/a_nakata/ruby/RubyIcon.ico>))
|
||||
|
||||
== Build examples
|
||||
|
||||
ex.)
|
||||
current directory: C:\
|
||||
ruby source directory: C:\ruby
|
||||
target CPU: StrongARM
|
||||
target OS version: PocketPC
|
||||
|
||||
cd \ruby\wince
|
||||
.\configure ARM PPC
|
||||
.\make.bat
|
||||
|
||||
=end
|
4
wince/assert.h
Normal file
4
wince/assert.h
Normal file
|
@ -0,0 +1,4 @@
|
|||
#ifndef _ASSERT_H_
|
||||
#define _ASSERT_H_
|
||||
|
||||
#endif
|
141
wince/config
Normal file
141
wince/config
Normal file
|
@ -0,0 +1,141 @@
|
|||
/* config.h */
|
||||
/* based on mswin32's. */
|
||||
#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_OFF_T 1
|
||||
#define SIZEOF_INT 4
|
||||
#define SIZEOF_SHORT 2
|
||||
#define SIZEOF_LONG 4
|
||||
#define SIZEOF_LONG_LONG 0
|
||||
#define SIZEOF___INT64 8
|
||||
#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
|
||||
#if _MSC_VER > 1100 && !defined NORETURN
|
||||
#define NORETURN(x) __declspec(noreturn) x
|
||||
#else
|
||||
#define NORETURN(x) x
|
||||
#endif
|
||||
#define HAVE_DECL_SYS_NERR 1
|
||||
#define STDC_HEADERS 1
|
||||
#define HAVE_STDLIB_H 1
|
||||
#define HAVE_STRING_H 1
|
||||
#define HAVE_LIMITS_H 1
|
||||
#define HAVE_FCNTL_H 1
|
||||
#define HAVE_SYS_UTIME_H 1
|
||||
#define HAVE_MEMORY_H 1
|
||||
#define uid_t int
|
||||
#define gid_t int
|
||||
#define HAVE_STRUCT_STAT_ST_RDEV 1
|
||||
#define HAVE_ST_RDEV 1
|
||||
#define GETGROUPS_T int
|
||||
#define RETSIGTYPE void
|
||||
#define HAVE_ALLOCA 1
|
||||
#define HAVE_DUP2 1
|
||||
#define HAVE_MEMCMP 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_STRTOD 1
|
||||
#define HAVE_STRTOL 1
|
||||
#define HAVE_STRTOUL 1
|
||||
#define HAVE_FLOCK 1
|
||||
#define HAVE_VSNPRINTF 1
|
||||
#define HAVE_FINITE 1
|
||||
#define HAVE_FMOD 1
|
||||
#define HAVE_FREXP 1
|
||||
#define HAVE_HYPOT 1
|
||||
#define HAVE_MODF 1
|
||||
#define HAVE_WAITPID 1
|
||||
#define HAVE_CHSIZE 1
|
||||
#define HAVE_TIMES 1
|
||||
#define HAVE__SETJMP 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_EXECVE 1
|
||||
#define HAVE_TZNAME 1
|
||||
#define HAVE_DAYLIGHT 1
|
||||
#define SETPGRP_VOID 1
|
||||
#define inline __inline
|
||||
#define RSHIFT(x,y) ((x)>>(int)y)
|
||||
/*#define FILE_COUNT _cnt*/
|
||||
/*#define FILE_READPTR _ptr*/
|
||||
#define DEFAULT_KCODE KCODE_NONE
|
||||
#define DLEXT ".so"
|
||||
#define DLEXT2 ".dll"
|
||||
/*#define NT 1*/
|
||||
#define RUBY_LIB "/lib/ruby/1.7"
|
||||
#define RUBY_SITE_LIB "/lib/ruby/site_ruby"
|
||||
#define RUBY_SITE_LIB2 "/lib/ruby/site_ruby/1.7"
|
||||
/*#define RUBY_PLATFORM "mips-mswince"*/
|
||||
/*#define RUBY_ARCHLIB "/lib/ruby/1.7/mips-mswince"*/
|
||||
/*#define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.7/mips-mswince"*/
|
||||
|
||||
|
||||
/* below wince's original definition. */
|
||||
#define fdopen _fdopen
|
||||
#define dup _dup
|
||||
#define _dup2 dup2
|
||||
|
||||
#ifdef FormatMessage
|
||||
#undef FormatMessage
|
||||
#define FormatMessage FormatMessageA
|
||||
#endif
|
||||
|
||||
#ifdef GetModuleFileName
|
||||
#undef GetModuleFileName
|
||||
#define GetModuleFileName GetModuleFileNameA
|
||||
#endif
|
||||
|
||||
#ifdef CharNext
|
||||
#undef CharNext
|
||||
#define CharNext CharNextA
|
||||
#endif
|
||||
|
||||
#ifdef CharPrev
|
||||
#undef CharPrev
|
||||
#define CharPrev CharPrevA
|
||||
#endif
|
||||
|
||||
#ifdef LoadLibrary
|
||||
#undef LoadLibrary
|
||||
#define LoadLibrary LoadLibraryA
|
||||
#endif
|
||||
|
||||
#ifdef GetProcAddress
|
||||
#undef GetProcAddress
|
||||
#define GetProcAddress GetProcAddressA
|
||||
#endif
|
||||
|
||||
#if _WIN32_WCE < 300
|
||||
/* for Handheld PC Pro. */
|
||||
#define isascii(c) ( (c>=0x00&&c<=0x7f)?1:0 )
|
||||
#define isspace(c) ( ((c>=0x09&&c<=0x0d)||c==0x20)?1:0 )
|
||||
#define isdigit(c) ( (c>=0x00&&c<=0x09)?1:0 )
|
||||
#define isupper(c) ( (c>='A'&&c<='Z')?1:0 )
|
||||
#define isalpha(c) ( ((c>='A'&&c<='Z')||(c>='a'&&c<='z'))?1:0 )
|
||||
#define isprint(c) ( (c>=0x20&&c<=0x7e)?1:0 )
|
||||
#define isalnum(c) ( (isalpha(c)||isdigit(c))?1:0 )
|
||||
#define iscntrl(c) ( ((c>=0x00&&c<=0x1f)||c==0x7f)?1:0 )
|
||||
#define islower(c) ( (c>='a'&&c<='z')?1:0 )
|
||||
#define ispunct(c) ( !(isalnum(c)||isspace(c))?1:0 )
|
||||
#define isxdigit(c) ( ((c>=0&&c<=9)||(c>='A'&&c<='F')||(c>='a'&&c<='f'))?1:0 )
|
||||
#endif
|
||||
|
133
wince/configure.bat
Normal file
133
wince/configure.bat
Normal file
|
@ -0,0 +1,133 @@
|
|||
@echo off
|
||||
|
||||
if "%1"=="" goto error
|
||||
if "%2"=="" goto error
|
||||
|
||||
if exist make.bat @del make.bat
|
||||
|
||||
if "%1"=="MIPS" goto mips
|
||||
if "%1"=="ARM" goto arm
|
||||
if "%1"=="SH3" goto sh3
|
||||
if "%1"=="SH4" goto sh4
|
||||
|
||||
:mips
|
||||
|
||||
copy config config.h
|
||||
echo #define RUBY_PLATFORM "mips-mswince" >> config.h
|
||||
echo #define RUBY_ARCHLIB "/lib/ruby/1.7/mips-mswince" >> config.h
|
||||
echo #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.7/mips-mswince" >> config.h
|
||||
|
||||
if "%2"=="HPC2K" goto mipshpc2k
|
||||
if "%2"=="PPC" goto mipsppc
|
||||
if "%2"=="HPCPRO" goto mipshpcpro
|
||||
|
||||
:mipshpc2k
|
||||
echo nmake /f "dll.mak" CFG=MIPS >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=MIPS >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
|
||||
set include=c:\windows ce tools\wce300\hpc2000\include
|
||||
set lib=C:\Windows CE Tools\wce300\hpc2000\lib\mips
|
||||
goto normalend
|
||||
:mipsppc
|
||||
echo nmake /f "dll.mak" CFG=MIPS >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=MIPS >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
|
||||
set include=c:\windows ce tools\wce300\MS Pocket PC\include
|
||||
set lib=c:\windows ce tools\wce300\MS Pocket PC\lib\mips
|
||||
goto normalend
|
||||
:mipshpcpro
|
||||
echo nmake /f "dll.mak" CFG=MIPS CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=MIPS CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE211\BIN
|
||||
set include=C:\Windows CE Tools\wce211\MS HPC Pro\include
|
||||
set lib=C:\Windows CE Tools\wce211\MS HPC Pro\lib\mips
|
||||
goto normalend
|
||||
|
||||
:arm
|
||||
|
||||
copy config config.h
|
||||
echo #define RUBY_PLATFORM "arm-mswince" >> config.h
|
||||
echo #define RUBY_ARCHLIB "/lib/ruby/1.7/arm-mswince" >> config.h
|
||||
echo #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.7/arm-mswince" >> config.h
|
||||
|
||||
if "%2"=="HPC2K" goto armhpc2k
|
||||
if "%2"=="PPC" goto armppc
|
||||
if "%2"=="HPCPRO" goto armhpcpro
|
||||
|
||||
:armhpc2k
|
||||
echo nmake /f "dll.mak" CFG=ARM >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=ARM >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
|
||||
set include=c:\windows ce tools\wce300\hpc2000\include
|
||||
set lib=C:\Windows CE Tools\wce300\hpc2000\lib\arm
|
||||
goto normalend
|
||||
:armppc
|
||||
echo nmake /f "dll.mak" CFG=ARM >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=ARM >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
|
||||
set include=c:\windows ce tools\wce300\MS Pocket PC\include
|
||||
set lib=c:\windows ce tools\wce300\MS Pocket PC\lib\arm
|
||||
goto normalend
|
||||
:armhpcpro
|
||||
echo nmake /f "dll.mak" CFG=ARM CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=ARM CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE211\BIN
|
||||
set include=C:\Windows CE Tools\wce211\MS HPC Pro\include
|
||||
set lib=C:\Windows CE Tools\wce211\MS HPC Pro\lib\arm
|
||||
goto normalend
|
||||
|
||||
:sh3
|
||||
|
||||
copy config config.h
|
||||
echo #define RUBY_PLATFORM "sh3-mswince" >> config.h
|
||||
echo #define RUBY_ARCHLIB "/lib/ruby/1.7/sh3-mswince" >> config.h
|
||||
echo #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.7/sh3-mswince" >> config.h
|
||||
|
||||
if "%2"=="HPC2K" goto error
|
||||
if "%2"=="PPC" goto sh3ppc
|
||||
if "%2"=="HPCPRO" goto sh3hpcpro
|
||||
|
||||
:sh3ppc
|
||||
echo nmake /f "dll.mak" CFG=SH3 >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=SH3 >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN
|
||||
set include=c:\windows ce tools\wce300\MS Pocket PC\include
|
||||
set lib=c:\windows ce tools\wce300\MS Pocket PC\lib\sh3
|
||||
goto normalend
|
||||
:sh3hpcpro
|
||||
echo nmake /f "dll.mak" CFG=SH3 CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=SH3 CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE211\BIN
|
||||
set include=C:\Windows CE Tools\wce211\MS HPC Pro\include
|
||||
set lib=C:\Windows CE Tools\wce211\MS HPC Pro\lib\sh3
|
||||
goto normalend
|
||||
|
||||
:sh4
|
||||
|
||||
copy config config.h
|
||||
echo #define RUBY_PLATFORM "sh4-mswince" >> config.h
|
||||
echo #define RUBY_ARCHLIB "/lib/ruby/1.7/sh4-mswince" >> config.h
|
||||
echo #define RUBY_SITE_ARCHLIB "/lib/ruby/site_ruby/1.7/sh4-mswince" >> config.h
|
||||
|
||||
if "%2"=="HPC2K" goto error
|
||||
if "%2"=="PPC" goto error
|
||||
if "%2"=="HPCPRO" goto sh4hpcpro
|
||||
|
||||
:sh4hpcpro
|
||||
echo nmake /f "dll.mak" CFG=SH4 CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
|
||||
echo nmake /f "exe.mak" CFG=SH4 CESubsystem=windowsce,2.11 CEVersion=211 >> make.bat
|
||||
set path=c:\program files\microsoft embedded tools\common\evc\bin;C:\Program Files\Microsoft eMbedded Tools\EVC\WCE211\BIN
|
||||
set include=C:\Windows CE Tools\wce211\MS HPC Pro\include
|
||||
set lib=C:\Windows CE Tools\wce211\MS HPC Pro\lib\sh4
|
||||
goto normalend
|
||||
|
||||
|
||||
:error
|
||||
echo ERROR. Please check arguments.
|
||||
goto end
|
||||
|
||||
:normalend
|
||||
echo configure OK. Please type ".\make.bat".
|
||||
goto end
|
||||
|
||||
:end
|
54
wince/direct.c
Normal file
54
wince/direct.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
/***************************************************************
|
||||
direct.c
|
||||
***************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include <direct.h>
|
||||
#include "wince.h" /* for wce_mbtowc */
|
||||
|
||||
/* global for chdir, getcwd */
|
||||
static char _currentdir[MAX_PATH+1];
|
||||
|
||||
|
||||
char *_getcwd(char* buffer, int maxlen)
|
||||
{
|
||||
strcpy( buffer, _currentdir );
|
||||
return buffer;
|
||||
}
|
||||
|
||||
int _chdir(const char * dirname)
|
||||
{
|
||||
if( MAX_PATH < strlen(dirname) )
|
||||
return -1;
|
||||
|
||||
strcpy( _currentdir, dirname );
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _rmdir(const char * dir)
|
||||
{
|
||||
wchar_t *wdir;
|
||||
BOOL rc;
|
||||
|
||||
/* replace with RemoveDirectory. */
|
||||
wdir = wce_mbtowc(dir);
|
||||
rc = RemoveDirectoryW(wdir);
|
||||
free(wdir);
|
||||
|
||||
return rc==TRUE ? 0 : -1;
|
||||
}
|
||||
|
||||
int _mkdir(const char * dir)
|
||||
{
|
||||
wchar_t* wdir;
|
||||
BOOL rc;
|
||||
|
||||
/* replace with CreateDirectory. */
|
||||
wdir = wce_mbtowc(dir);
|
||||
rc = CreateDirectoryW(wdir, NULL);
|
||||
free(wdir);
|
||||
|
||||
return rc==TRUE ? 0 : -1;
|
||||
}
|
||||
|
23
wince/direct.h
Normal file
23
wince/direct.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
#ifndef DIRECT_H
|
||||
#define DIRECT_H 1
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
char *_getcwd(char* buffer, int maxlen);
|
||||
int _chdir(const char * dirname);
|
||||
int _rmdir(const char * dir);
|
||||
int _mkdir(const char * dir);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#define getcwd _getcwd
|
||||
#define chdir _chdir
|
||||
#define rmdir _rmdir
|
||||
#define mkdir _mkdir
|
||||
|
||||
#endif
|
1547
wince/dll.mak
Normal file
1547
wince/dll.mak
Normal file
File diff suppressed because it is too large
Load diff
11
wince/errno.c
Normal file
11
wince/errno.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
/***************************************************************
|
||||
errno.c
|
||||
***************************************************************/
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
|
||||
int errno;
|
||||
int _doserrno;
|
||||
int _sys_nerr;
|
||||
|
55
wince/errno.h
Normal file
55
wince/errno.h
Normal file
|
@ -0,0 +1,55 @@
|
|||
#ifndef ERRNO_H
|
||||
#define ERRNO_H 1
|
||||
|
||||
|
||||
#define EPERM 1
|
||||
#define ENOENT 2
|
||||
#define ESRCH 3
|
||||
#define EINTR 4
|
||||
#define EIO 5
|
||||
#define ENXIO 6
|
||||
#define E2BIG 7
|
||||
#define ENOEXEC 8
|
||||
#define EBADF 9
|
||||
#define ECHILD 10
|
||||
#define EAGAIN 11
|
||||
#define ENOMEM 12
|
||||
#define EACCES 13
|
||||
#define EFAULT 14
|
||||
#define EOSERR 15 // rk
|
||||
#define EBUSY 16
|
||||
#define EEXIST 17
|
||||
#define EXDEV 18
|
||||
#define ENODEV 19
|
||||
#define ENOTDIR 20
|
||||
#define EISDIR 21
|
||||
#define EINVAL 22
|
||||
#define ENFILE 23
|
||||
#define EMFILE 24
|
||||
#define ENOTTY 25
|
||||
#define EFBIG 27
|
||||
#define ENOSPC 28
|
||||
#define ESPIPE 29
|
||||
#define EROFS 30
|
||||
#define EMLINK 31
|
||||
#define EPIPE 32
|
||||
#define EDOM 33
|
||||
#define ERANGE 34
|
||||
#define EDEADLK 36
|
||||
#define ENOSYS 37
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int errno;
|
||||
extern int _doserrno;
|
||||
extern int _sys_nerr;
|
||||
|
||||
#define sys_nerr _sys_nerr
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
353
wince/exe.mak
Normal file
353
wince/exe.mak
Normal file
|
@ -0,0 +1,353 @@
|
|||
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=MIPS
|
||||
!MESSAGE CFG not specified. use MIPS.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CESubsystem)" == ""
|
||||
#CESubsystem=windowsce,2.0
|
||||
CESubsystem=windowsce,3.0
|
||||
#!MESSAGE CESubsystem not specified. use windowsce,2.11.
|
||||
!MESSAGE CESubsystem not specified. use windowsce,3.0.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CEVersion)" == ""
|
||||
#CEVersion=200
|
||||
CEVersion=300
|
||||
#!MESSAGE CEVersion not specified. use 211.
|
||||
!MESSAGE CEVersion not specified. use 300.
|
||||
!ENDIF
|
||||
|
||||
!IF $(CEVersion) < 201
|
||||
CECrt=L
|
||||
CECrtDebug=Ld
|
||||
CECrtMT=T
|
||||
CECrtMTDebug=Td
|
||||
CENoDefaultLib=corelibc.lib
|
||||
CEx86Corelibc=
|
||||
!ELSE
|
||||
CECrt=C
|
||||
CECrtDebug=C
|
||||
CECrtMT=C
|
||||
CECrtMTDebug=C
|
||||
CENoDefaultLib=libc.lib /nodefaultlib:libcd.lib /nodefaultlib:libcmt.lib /nodefaultlib:libcmtd.lib /nodefaultlib:msvcrt.lib /nodefaultlib:msvcrtd.lib
|
||||
CEx86Corelibc=corelibc.lib
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CE_PLATFORM)"==""
|
||||
CePlatform=WIN32_PLATFORM_UNKNOWN
|
||||
!ELSE
|
||||
CePlatform=$(CE_PLATFORM)
|
||||
!ENDIF
|
||||
|
||||
!IF "$(OS)" == "Windows_NT"
|
||||
NULL=
|
||||
!ELSE
|
||||
NULL=nul
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" == "MIPS"
|
||||
|
||||
OUTDIR=.\MIPSRel
|
||||
INTDIR=.\MIPSRel
|
||||
# Begin Custom Macros
|
||||
OutDir=.\MIPSRel
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\ruby.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\main.obj"
|
||||
-@erase "$(INTDIR)\wincemain.obj"
|
||||
-@erase "$(OUTDIR)\ruby.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
RSC=rc.exe
|
||||
CPP=clmips.exe
|
||||
CPP_PROJ=/nologo /W3 /I "." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /Fp"$(INTDIR)\ruby.pch" /YX /Fo"$(INTDIR)\\" /Oxs /M$(CECrtMT) /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
MTL=midl.exe
|
||||
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ruby.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=commctrl.lib coredll.lib mswince_ruby17.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /incremental:no /pdb:"$(OUTDIR)\ruby.pdb" /nodefaultlib:"$(CENoDefaultLib)" /out:"$(OUTDIR)\ruby.exe" /libpath:"$(OUTDIR)" /subsystem:$(CESubsystem) /MACHINE:MIPS
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\main.obj" \
|
||||
"$(INTDIR)\wincemain.obj"
|
||||
|
||||
"$(OUTDIR)\ruby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "SH4"
|
||||
|
||||
OUTDIR=.\SH4Rel
|
||||
INTDIR=.\SH4Rel
|
||||
# Begin Custom Macros
|
||||
OutDir=.\SH4Rel
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\ruby.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\main.obj"
|
||||
-@erase "$(INTDIR)\wincemain.obj"
|
||||
-@erase "$(OUTDIR)\ruby.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
RSC=rc.exe
|
||||
CPP=shcl.exe
|
||||
CPP_PROJ=/nologo /W3 /I "." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /Fp"$(INTDIR)\ruby.pch" /YX /Fo"$(INTDIR)\\" /Qsh4 /Oxs /M$(CECrtMT) /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
MTL=midl.exe
|
||||
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ruby.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=commctrl.lib coredll.lib mswince_ruby17.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /incremental:no /pdb:"$(OUTDIR)\ruby.pdb" /nodefaultlib:"$(CENoDefaultLib)" /out:"$(OUTDIR)\ruby.exe" /libpath:"$(OUTDIR)" /subsystem:$(CESubsystem) /MACHINE:SH4
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\main.obj" \
|
||||
"$(INTDIR)\wincemain.obj"
|
||||
|
||||
"$(OUTDIR)\ruby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "SH3"
|
||||
|
||||
OUTDIR=.\SH3Rel
|
||||
INTDIR=.\SH3Rel
|
||||
# Begin Custom Macros
|
||||
OutDir=.\SH3Rel
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\ruby.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\main.obj"
|
||||
-@erase "$(INTDIR)\wincemain.obj"
|
||||
-@erase "$(OUTDIR)\ruby.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
RSC=rc.exe
|
||||
CPP=shcl.exe
|
||||
CPP_PROJ=/nologo /W3 /I "." /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /Fp"$(INTDIR)\ruby.pch" /YX /Fo"$(INTDIR)\\" /Oxs /M$(CECrtMT) /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
MTL=midl.exe
|
||||
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ruby.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=commctrl.lib coredll.lib mswince_ruby17.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /incremental:no /pdb:"$(OUTDIR)\ruby.pdb" /nodefaultlib:"$(CENoDefaultLib)" /out:"$(OUTDIR)\ruby.exe" /libpath:"$(OUTDIR)" /subsystem:$(CESubsystem) /MACHINE:SH3
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\main.obj" \
|
||||
"$(INTDIR)\wincemain.obj"
|
||||
|
||||
"$(OUTDIR)\ruby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == ARM"
|
||||
|
||||
OUTDIR=.\ARMRel
|
||||
INTDIR=.\ARMRel
|
||||
# Begin Custom Macros
|
||||
OutDir=.\ARMRel
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\ruby.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\main.obj"
|
||||
-@erase "$(INTDIR)\wincemain.obj"
|
||||
-@erase "$(OUTDIR)\ruby.exe"
|
||||
|
||||
"$(OUTDIR)" :
|
||||
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
|
||||
|
||||
RSC=rc.exe
|
||||
CPP=clarm.exe
|
||||
CPP_PROJ=/nologo /W3 /I "C:\_develops\eMVT\ruby17\ruby\wince" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /Fp"$(INTDIR)\ruby.pch" /YX /Fo"$(INTDIR)\\" /Oxs /M$(CECrtMT) /c
|
||||
|
||||
.c{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.c{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cpp{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
.cxx{$(INTDIR)}.sbr::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
MTL=midl.exe
|
||||
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ruby.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=commctrl.lib coredll.lib mswince_ruby17.lib /nologo /base:"0x00010000" /stack:0x10000,0x1000 /entry:"WinMainCRTStartup" /incremental:no /pdb:"$(OUTDIR)\ruby.pdb" /nodefaultlib:"$(CENoDefaultLib)" /out:"$(OUTDIR)\ruby.exe" /libpath:"$(OUTDIR)" /subsystem:$(CESubsystem) /align:"4096" /MACHINE:ARM
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\main.obj" \
|
||||
"$(INTDIR)\wincemain.obj"
|
||||
|
||||
"$(OUTDIR)\ruby.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
..\main.c : \
|
||||
"..\defines.h"\
|
||||
"..\intern.h"\
|
||||
"..\missing.h"\
|
||||
"..\ruby.h"\
|
||||
"..\vms\vms.h"\
|
||||
"..\win32\win32.h"\
|
||||
|
||||
.\wincemain.c : \
|
||||
".\wince.h"\
|
||||
|
||||
|
||||
SOURCE=..\main.c
|
||||
|
||||
"$(INTDIR)\main.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
SOURCE=.\wincemain.c
|
||||
|
||||
"$(INTDIR)\wincemain.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
42
wince/fcntl.h
Normal file
42
wince/fcntl.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
|
||||
#ifndef FCNTL_H
|
||||
#define FCNTL_H 1
|
||||
|
||||
|
||||
#define F_SETFL 1
|
||||
#define F_SETFD 2
|
||||
#define F_GETFL 3
|
||||
|
||||
#define _O_RDONLY 0x0000 /* open for reading only */
|
||||
#define _O_WRONLY 0x0001 /* open for writing only */
|
||||
#define _O_RDWR 0x0002 /* open for reading and writing */
|
||||
|
||||
#define _O_NONBLOCK 0x0004
|
||||
|
||||
#define _O_APPEND 0x0008 /* writes done at eof */
|
||||
#define _O_CREAT 0x0100 /* create and open file */
|
||||
#define _O_TRUNC 0x0200 /* open and truncate */
|
||||
#define _O_EXCL 0x0400 /* open only if file doesn't already exist */
|
||||
#define _O_TEXT 0x4000 /* file mode is text (translated) */
|
||||
#define _O_BINARY 0x8000 /* file mode is binary (untranslated) */
|
||||
#define _O_ACCMODE 0x10000
|
||||
|
||||
#define _O_NOINHERIT 0
|
||||
#define O_NOINHERIT _O_NOINHERIT
|
||||
|
||||
#define O_RDONLY _O_RDONLY
|
||||
#define O_WRONLY _O_WRONLY
|
||||
#define O_RDWR _O_RDWR
|
||||
|
||||
#define O_NONBLOCK _O_NONBLOCK
|
||||
|
||||
#define O_APPEND _O_APPEND
|
||||
#define O_CREAT _O_CREAT
|
||||
#define O_TRUNC _O_TRUNC
|
||||
#define O_EXCL _O_EXCL
|
||||
#define O_TEXT _O_TEXT
|
||||
#define O_BINARY _O_BINARY
|
||||
#define O_ACCMODE _O_ACCMODE
|
||||
|
||||
|
||||
#endif
|
222
wince/io.c
Normal file
222
wince/io.c
Normal file
|
@ -0,0 +1,222 @@
|
|||
/***************************************************************
|
||||
io.c
|
||||
|
||||
author : uema2
|
||||
date : Nov 30, 2002
|
||||
|
||||
You can freely use, copy, modify, and redistribute
|
||||
the whole contents.
|
||||
***************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdlib.h>
|
||||
#include <io.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include "wince.h" /* for wce_mbtowc */
|
||||
|
||||
extern int _errno;
|
||||
|
||||
|
||||
int _rename(const char *oldname, const char *newname)
|
||||
{
|
||||
wchar_t *wold, *wnew;
|
||||
BOOL rc;
|
||||
|
||||
wold = wce_mbtowc(oldname);
|
||||
wnew = wce_mbtowc(newname);
|
||||
|
||||
/* replace with MoveFile. */
|
||||
rc = MoveFileW(wold, wnew);
|
||||
|
||||
free(wold);
|
||||
free(wnew);
|
||||
|
||||
return rc==TRUE ? 0 : -1;
|
||||
}
|
||||
|
||||
int _unlink(const char *file)
|
||||
{
|
||||
wchar_t *wfile;
|
||||
BOOL rc;
|
||||
|
||||
/* replace with DeleteFile. */
|
||||
wfile = wce_mbtowc(file);
|
||||
rc = DeleteFileW(wfile);
|
||||
free(wfile);
|
||||
|
||||
return rc==TRUE ? 0 : -1;
|
||||
}
|
||||
|
||||
/* replace "open" with "CreateFile", etc. */
|
||||
int _open(const char *file, int mode, va_list arg)
|
||||
{
|
||||
wchar_t *wfile;
|
||||
DWORD access=0, share=0, create=0;
|
||||
HANDLE h;
|
||||
|
||||
if( (mode&_O_RDWR) != 0 )
|
||||
access = GENERIC_READ|GENERIC_WRITE;
|
||||
else if( (mode&_O_RDONLY) != 0 )
|
||||
access = GENERIC_READ;
|
||||
else if( (mode&_O_WRONLY) != 0 )
|
||||
access = GENERIC_WRITE;
|
||||
|
||||
if( (mode&_O_CREAT) != 0 )
|
||||
create = CREATE_ALWAYS;
|
||||
else
|
||||
create = OPEN_ALWAYS;
|
||||
|
||||
wfile = wce_mbtowc(file);
|
||||
|
||||
h = CreateFileW(wfile, access, share, NULL,
|
||||
create, 0, NULL );
|
||||
|
||||
free(wfile);
|
||||
return (int)h;
|
||||
}
|
||||
|
||||
int _close(int fd)
|
||||
{
|
||||
CloseHandle( (HANDLE)fd );
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _read(int fd, void *buffer, int length)
|
||||
{
|
||||
DWORD dw;
|
||||
ReadFile( (HANDLE)fd, buffer, length, &dw, NULL );
|
||||
return (int)dw;
|
||||
}
|
||||
|
||||
int _write(int fd, const void *buffer, unsigned count)
|
||||
{
|
||||
DWORD dw;
|
||||
WriteFile( (HANDLE)fd, buffer, count, &dw, NULL );
|
||||
return (int)dw;
|
||||
}
|
||||
|
||||
long _lseek(int handle, long offset, int origin)
|
||||
{
|
||||
DWORD flag, ret;
|
||||
|
||||
switch(origin)
|
||||
{
|
||||
case SEEK_SET: flag = FILE_BEGIN; break;
|
||||
case SEEK_CUR: flag = FILE_CURRENT; break;
|
||||
case SEEK_END: flag = FILE_END; break;
|
||||
default: flag = FILE_CURRENT; break;
|
||||
}
|
||||
|
||||
ret = SetFilePointer( (HANDLE)handle, offset, NULL, flag );
|
||||
return ret==0xFFFFFFFF ? -1 : 0;
|
||||
}
|
||||
|
||||
/* _findfirst, _findnext, _findclose. */
|
||||
/* replace them with FindFirstFile, etc. */
|
||||
long _findfirst( char *file, struct _finddata_t *fi )
|
||||
{
|
||||
HANDLE h;
|
||||
WIN32_FIND_DATAA fda;
|
||||
|
||||
h = FindFirstFileA( file, &fda );
|
||||
if( h==NULL )
|
||||
{
|
||||
errno = EINVAL; return -1;
|
||||
}
|
||||
|
||||
fi->attrib = fda.dwFileAttributes;
|
||||
fi->time_create = wce_FILETIME2time_t( &fda.ftCreationTime );
|
||||
fi->time_access = wce_FILETIME2time_t( &fda.ftLastAccessTime );
|
||||
fi->time_write = wce_FILETIME2time_t( &fda.ftLastWriteTime );
|
||||
fi->size = fda.nFileSizeLow + (fda.nFileSizeHigh<<32);
|
||||
strcpy( fi->name, fda.cFileName );
|
||||
|
||||
return (long)h;
|
||||
}
|
||||
|
||||
int _findnext( long handle, struct _finddata_t *fi )
|
||||
{
|
||||
WIN32_FIND_DATAA fda;
|
||||
BOOL b;
|
||||
|
||||
b = FindNextFileA( (HANDLE)handle, &fda );
|
||||
|
||||
if( b==FALSE )
|
||||
{
|
||||
errno = ENOENT; return -1;
|
||||
}
|
||||
|
||||
fi->attrib = fda.dwFileAttributes;
|
||||
fi->time_create = wce_FILETIME2time_t( &fda.ftCreationTime );
|
||||
fi->time_access = wce_FILETIME2time_t( &fda.ftLastAccessTime );
|
||||
fi->time_write = wce_FILETIME2time_t( &fda.ftLastWriteTime );
|
||||
fi->size = fda.nFileSizeLow + (fda.nFileSizeHigh<<32);
|
||||
strcpy( fi->name, fda.cFileName );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _findclose( long handle )
|
||||
{
|
||||
BOOL b;
|
||||
b = FindClose( (HANDLE)handle );
|
||||
return b==FALSE ? -1 : 0;
|
||||
}
|
||||
|
||||
/* below functions unsupported... */
|
||||
/* I have no idea how to replace... */
|
||||
int _chsize(int handle, long size)
|
||||
{
|
||||
errno = EACCES;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int _umask(int cmask)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _chmod(const char *path, int mode)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _dup( int handle )
|
||||
{
|
||||
errno = EBADF;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int _isatty(int fd)
|
||||
{
|
||||
if( fd==(int)_fileno(stdin) ||
|
||||
fd==(int)_fileno(stdout)||
|
||||
fd==(int)_fileno(stderr) )
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _pipe(int *phandles, unsigned int psize, int textmode)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
int _access(const char *filename, int flags)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _open_osfhandle( long osfhandle, int flags)
|
||||
{
|
||||
/* return 0; */
|
||||
return (int)osfhandle;
|
||||
}
|
||||
|
||||
long _get_osfhandle( int filehandle )
|
||||
{
|
||||
/* return 0; */
|
||||
return (long)filehandle;
|
||||
}
|
65
wince/io.h
Normal file
65
wince/io.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
|
||||
#ifndef _IO_H_
|
||||
#define _IO_H_
|
||||
|
||||
#ifndef _FSIZE_T_DEFINED
|
||||
typedef unsigned long _fsize_t; /* Could be 64 bits for Win32 */
|
||||
#define _FSIZE_T_DEFINED
|
||||
#endif
|
||||
|
||||
#ifndef _FINDDATA_T_DEFINED
|
||||
struct _finddata_t {
|
||||
unsigned attrib;
|
||||
time_t time_create; /* -1 for FAT file systems */
|
||||
time_t time_access; /* -1 for FAT file systems */
|
||||
time_t time_write;
|
||||
_fsize_t size;
|
||||
char name[260];
|
||||
};
|
||||
#define _FINDDATA_T_DEFINED
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int _chsize(int handle, long size);
|
||||
int _rename (const char *oldname, const char *newname);
|
||||
int _unlink(const char *file);
|
||||
int _umask(int cmask);
|
||||
int _chmod(const char *path, int mode);
|
||||
int _dup( int handle );
|
||||
int _isatty(int fd);
|
||||
int _pipe(int *phandles, unsigned int psize, int textmode);
|
||||
int _access(const char *filename, int flags);
|
||||
int _open_osfhandle ( long osfhandle, int flags);
|
||||
long _get_osfhandle( int filehandle );
|
||||
int _open(const char *file, int mode,...);
|
||||
int _close(int fd);
|
||||
int _read(int fd, void *buffer, int length);
|
||||
int _write(int fd, const void *buffer, unsigned count);
|
||||
long _lseek(int handle, long offset, int origin);
|
||||
long _findfirst( char *filespec, struct _finddata_t *fileinfo );
|
||||
int _findnext( long handle, struct _finddata_t *fileinfo );
|
||||
int _findclose( long handle );
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#define chsize _chsize
|
||||
#define rename _rename
|
||||
#define unlink _unlink
|
||||
#define open _open
|
||||
//#define close _close
|
||||
#define read _read
|
||||
#define write _write
|
||||
#define umask _umask
|
||||
#define dup _dup
|
||||
#define isatty _isatty
|
||||
#define access _access
|
||||
#define pipe _pipe
|
||||
|
||||
#endif
|
||||
|
814
wince/mswince-ruby17.def
Normal file
814
wince/mswince-ruby17.def
Normal file
|
@ -0,0 +1,814 @@
|
|||
EXPORTS
|
||||
ChildRecord
|
||||
GetCurrentThreadHandle
|
||||
Init_Array
|
||||
Init_Bignum
|
||||
Init_Comparable
|
||||
Init_Dir
|
||||
Init_Enumerable
|
||||
Init_Exception
|
||||
Init_File
|
||||
Init_GC
|
||||
Init_Hash
|
||||
Init_IO
|
||||
Init_Math
|
||||
Init_Numeric
|
||||
Init_Object
|
||||
Init_Precision
|
||||
Init_Proc
|
||||
Init_Random
|
||||
Init_Range
|
||||
Init_Regexp
|
||||
Init_String
|
||||
Init_Struct
|
||||
Init_Thread
|
||||
Init_Time
|
||||
Init_eval
|
||||
Init_ext
|
||||
Init_heap
|
||||
Init_load
|
||||
Init_marshal
|
||||
Init_pack
|
||||
Init_process
|
||||
Init_signal
|
||||
Init_stack
|
||||
Init_sym
|
||||
Init_var_tables
|
||||
Init_version
|
||||
NTLoginName
|
||||
NtCmdGlob
|
||||
NtCmdHead
|
||||
NtCmdTail
|
||||
NtFreeCmdLine
|
||||
NtInitialize
|
||||
NtMakeCmdVector
|
||||
NtSyncProcess
|
||||
SafeFree
|
||||
acosh
|
||||
asinh
|
||||
atanh
|
||||
chown
|
||||
crypt
|
||||
definekey
|
||||
dln_find_exe
|
||||
dln_find_file
|
||||
dln_load
|
||||
do_spawn
|
||||
eaccess
|
||||
encrypt
|
||||
endhostent
|
||||
endnetent
|
||||
endprotoent
|
||||
endservent
|
||||
flock
|
||||
getegid
|
||||
geteuid
|
||||
getgid
|
||||
getlogin
|
||||
getnetbyaddr
|
||||
getnetbyname
|
||||
getnetent
|
||||
getprotoent
|
||||
getservent
|
||||
gettimeofday
|
||||
getuid
|
||||
ioctl
|
||||
isInternalCmd
|
||||
isinf
|
||||
isnan
|
||||
kill
|
||||
link
|
||||
pipe_exec
|
||||
rb_Array
|
||||
rb_Float
|
||||
rb_Integer
|
||||
rb_String
|
||||
rb_add_method
|
||||
rb_alias
|
||||
rb_alias_variable
|
||||
rb_any_to_s
|
||||
rb_apply
|
||||
rb_argv
|
||||
rb_argv0
|
||||
rb_ary_aref
|
||||
rb_ary_assoc
|
||||
rb_ary_clear
|
||||
rb_ary_cmp
|
||||
rb_ary_concat
|
||||
rb_ary_delete
|
||||
rb_ary_delete_at
|
||||
rb_ary_dup
|
||||
rb_ary_each
|
||||
rb_ary_entry
|
||||
rb_ary_freeze
|
||||
rb_ary_includes
|
||||
rb_ary_join
|
||||
rb_ary_new
|
||||
rb_ary_new2
|
||||
rb_ary_new3
|
||||
rb_ary_new4
|
||||
rb_ary_plus
|
||||
rb_ary_pop
|
||||
rb_ary_push
|
||||
rb_ary_rassoc
|
||||
rb_ary_reverse
|
||||
rb_ary_shift
|
||||
rb_ary_sort
|
||||
rb_ary_sort_bang
|
||||
rb_ary_store
|
||||
rb_ary_to_ary
|
||||
rb_ary_to_s
|
||||
rb_ary_unshift
|
||||
rb_assoc_new
|
||||
rb_attr
|
||||
rb_autoload
|
||||
rb_autoload_defined
|
||||
rb_autoload_load
|
||||
rb_backref_get
|
||||
rb_backref_set
|
||||
rb_backtrace
|
||||
rb_big2dbl
|
||||
rb_big2ll
|
||||
rb_big2long
|
||||
rb_big2str
|
||||
rb_big2ull
|
||||
rb_big2ulong
|
||||
rb_big_2comp
|
||||
rb_big_and
|
||||
rb_big_clone
|
||||
rb_big_divmod
|
||||
rb_big_lshift
|
||||
rb_big_minus
|
||||
rb_big_mul
|
||||
rb_big_norm
|
||||
rb_big_or
|
||||
rb_big_plus
|
||||
rb_big_pow
|
||||
rb_big_rand
|
||||
rb_big_xor
|
||||
rb_block_given_p
|
||||
rb_bug
|
||||
rb_cArray
|
||||
rb_cBignum
|
||||
rb_cClass
|
||||
rb_cData
|
||||
rb_cDir
|
||||
rb_cFalseClass
|
||||
rb_cFile
|
||||
rb_cFixnum
|
||||
rb_cFloat
|
||||
rb_cHash
|
||||
rb_cIO
|
||||
rb_cInteger
|
||||
rb_cModule
|
||||
rb_cNilClass
|
||||
rb_cNumeric
|
||||
rb_cObject
|
||||
rb_cProc
|
||||
rb_cRange
|
||||
rb_cRegexp
|
||||
rb_cString
|
||||
rb_cStruct
|
||||
rb_cSymbol
|
||||
rb_cThread
|
||||
rb_cTime
|
||||
rb_cTrueClass
|
||||
rb_call_inits
|
||||
rb_call_super
|
||||
rb_catch
|
||||
rb_check_convert_type
|
||||
rb_check_frozen
|
||||
rb_check_safe_str
|
||||
rb_check_type
|
||||
rb_class2name
|
||||
rb_class_boot
|
||||
rb_class_inherited
|
||||
rb_class_instance_methods
|
||||
rb_class_new
|
||||
rb_class_new_instance
|
||||
rb_class_path
|
||||
rb_class_private_instance_methods
|
||||
rb_class_protected_instance_methods
|
||||
rb_class_public_instance_methods
|
||||
rb_class_real
|
||||
rb_class_tbl
|
||||
rb_clear_cache
|
||||
rb_cmpint
|
||||
rb_compile_cstr
|
||||
rb_compile_error
|
||||
rb_compile_error_append
|
||||
rb_compile_file
|
||||
rb_compile_string
|
||||
rb_const_assign
|
||||
rb_const_defined
|
||||
rb_const_defined_at
|
||||
rb_const_get
|
||||
rb_const_get_at
|
||||
rb_const_list
|
||||
rb_const_set
|
||||
rb_convert_type
|
||||
rb_copy_generic_ivar
|
||||
rb_cstr2inum
|
||||
rb_cstr_to_dbl
|
||||
rb_cstr_to_inum
|
||||
rb_cv_get
|
||||
rb_cv_set
|
||||
rb_cvar_defined
|
||||
rb_cvar_get
|
||||
rb_cvar_set
|
||||
rb_data_object_alloc
|
||||
rb_dbl2big
|
||||
rb_dbl_cmp
|
||||
rb_default_rs
|
||||
rb_define_alias
|
||||
rb_define_attr
|
||||
rb_define_class
|
||||
rb_define_class_id
|
||||
rb_define_class_under
|
||||
rb_define_class_variable
|
||||
rb_define_const
|
||||
rb_define_global_const
|
||||
rb_define_global_function
|
||||
rb_define_hooked_variable
|
||||
rb_define_method
|
||||
rb_define_method_id
|
||||
rb_define_module
|
||||
rb_define_module_function
|
||||
rb_define_module_id
|
||||
rb_define_module_under
|
||||
rb_define_private_method
|
||||
rb_define_protected_method
|
||||
rb_define_readonly_variable
|
||||
rb_define_singleton_method
|
||||
rb_define_variable
|
||||
rb_define_virtual_variable
|
||||
rb_defout
|
||||
rb_disable_super
|
||||
rb_dvar_curr
|
||||
rb_dvar_defined
|
||||
rb_dvar_push
|
||||
rb_dvar_ref
|
||||
rb_eArgError
|
||||
rb_eEOFError
|
||||
rb_eException
|
||||
rb_eFatal
|
||||
rb_eFloatDomainError
|
||||
rb_eIOError
|
||||
rb_eIndexError
|
||||
rb_eInterrupt
|
||||
rb_eLoadError
|
||||
rb_eNameError
|
||||
rb_eNoMemError
|
||||
rb_eNoMethodError
|
||||
rb_eNotImpError
|
||||
rb_eRangeError
|
||||
rb_eRuntimeError
|
||||
rb_eScriptError
|
||||
rb_eSecurityError
|
||||
rb_eSignal
|
||||
rb_eStandardError
|
||||
rb_eSyntaxError
|
||||
rb_eSystemCallError
|
||||
rb_eSystemExit
|
||||
rb_eTypeError
|
||||
rb_eZeroDivError
|
||||
rb_each
|
||||
rb_enable_super
|
||||
rb_ensure
|
||||
rb_env_path_tainted
|
||||
rb_eof_error
|
||||
rb_eql
|
||||
rb_equal
|
||||
rb_error_frozen
|
||||
rb_eval_cmd
|
||||
rb_eval_string
|
||||
rb_eval_string_protect
|
||||
rb_eval_string_wrap
|
||||
rb_exc_fatal
|
||||
rb_exc_new
|
||||
rb_exc_new2
|
||||
rb_exc_new3
|
||||
rb_exc_raise
|
||||
rb_exec_end_proc
|
||||
rb_exit
|
||||
rb_extend_object
|
||||
rb_f_autoload
|
||||
rb_f_exec
|
||||
rb_f_global_variables
|
||||
rb_f_kill
|
||||
rb_f_lambda
|
||||
rb_f_require
|
||||
rb_f_sprintf
|
||||
rb_f_trace_var
|
||||
rb_f_untrace_var
|
||||
rb_fatal
|
||||
rb_fdopen
|
||||
rb_file_const
|
||||
rb_file_open
|
||||
rb_file_s_expand_path
|
||||
rb_file_sysopen
|
||||
rb_find_file
|
||||
rb_find_file_ext
|
||||
rb_fix2int
|
||||
rb_fix2str
|
||||
rb_float_new
|
||||
rb_fopen
|
||||
rb_frame_last_func
|
||||
rb_free_generic_ivar
|
||||
rb_frozen_class_p
|
||||
rb_fs
|
||||
rb_funcall
|
||||
rb_funcall2
|
||||
rb_funcall3
|
||||
rb_gc
|
||||
rb_gc_call_finalizer_at_exit
|
||||
rb_gc_disable
|
||||
rb_gc_enable
|
||||
rb_gc_force_recycle
|
||||
rb_gc_mark
|
||||
rb_gc_mark_frame
|
||||
rb_gc_mark_global_tbl
|
||||
rb_gc_mark_locations
|
||||
rb_gc_mark_maybe
|
||||
rb_gc_mark_parser
|
||||
rb_gc_mark_threads
|
||||
rb_gc_mark_trap_list
|
||||
rb_gc_register_address
|
||||
rb_gc_stack_start
|
||||
rb_gc_start
|
||||
rb_gc_unregister_address
|
||||
rb_generic_ivar_table
|
||||
rb_get_kcode
|
||||
rb_getc
|
||||
rb_gets
|
||||
rb_glob
|
||||
rb_global_entry
|
||||
rb_global_variable
|
||||
rb_globi
|
||||
rb_gv_get
|
||||
rb_gv_set
|
||||
rb_gvar_defined
|
||||
rb_gvar_get
|
||||
rb_gvar_set
|
||||
rb_hash
|
||||
rb_hash_aref
|
||||
rb_hash_aset
|
||||
rb_hash_delete
|
||||
rb_hash_delete_if
|
||||
rb_hash_freeze
|
||||
rb_hash_new
|
||||
rb_hash_reject_bang
|
||||
rb_hash_select
|
||||
rb_id2name
|
||||
rb_id_attrset
|
||||
rb_include_module
|
||||
rb_inspect
|
||||
rb_inspecting_p
|
||||
rb_int2big
|
||||
rb_int2inum
|
||||
rb_intern
|
||||
rb_interrupt
|
||||
rb_invalid_str
|
||||
rb_io_addstr
|
||||
rb_io_binmode
|
||||
rb_io_check_closed
|
||||
rb_io_check_readable
|
||||
rb_io_check_writable
|
||||
rb_io_close
|
||||
rb_io_eof
|
||||
rb_io_fptr_finalize
|
||||
rb_io_fread
|
||||
rb_io_getc
|
||||
rb_io_gets
|
||||
rb_io_mode_flags
|
||||
rb_io_print
|
||||
rb_io_printf
|
||||
rb_io_puts
|
||||
rb_io_synchronized
|
||||
rb_io_taint_check
|
||||
rb_io_unbuffered
|
||||
rb_io_ungetc
|
||||
rb_io_wait_readable
|
||||
rb_io_wait_writable
|
||||
rb_io_write
|
||||
rb_is_class_id
|
||||
rb_is_const_id
|
||||
rb_is_instance_id
|
||||
rb_is_junk_id
|
||||
rb_is_local_id
|
||||
rb_iter_break
|
||||
rb_iterate
|
||||
rb_iterator_p
|
||||
rb_iv_get
|
||||
rb_iv_set
|
||||
rb_ivar_defined
|
||||
rb_ivar_get
|
||||
rb_ivar_set
|
||||
rb_jump_tag
|
||||
rb_kcode
|
||||
rb_last_status
|
||||
rb_lastline_get
|
||||
rb_lastline_set
|
||||
rb_ll2big
|
||||
rb_ll2inum
|
||||
rb_load
|
||||
rb_load_fail
|
||||
rb_load_file
|
||||
rb_load_path
|
||||
rb_load_protect
|
||||
rb_loaderror
|
||||
rb_mComparable
|
||||
rb_mEnumerable
|
||||
rb_mErrno
|
||||
rb_mFileTest
|
||||
rb_mGC
|
||||
rb_mKernel
|
||||
rb_mMath
|
||||
rb_mPrecision
|
||||
rb_mProcess
|
||||
rb_make_metaclass
|
||||
rb_mark_end_proc
|
||||
rb_mark_generic_ivar
|
||||
rb_mark_generic_ivar_tbl
|
||||
rb_mark_hash
|
||||
rb_mark_tbl
|
||||
rb_marshal_dump
|
||||
rb_marshal_load
|
||||
rb_match_busy
|
||||
rb_mem_clear
|
||||
rb_memcicmp
|
||||
rb_memcmp
|
||||
rb_memerror
|
||||
rb_method_boundp
|
||||
rb_mod_ancestors
|
||||
rb_mod_class_variables
|
||||
rb_mod_clone
|
||||
rb_mod_const_at
|
||||
rb_mod_const_of
|
||||
rb_mod_constants
|
||||
rb_mod_dup
|
||||
rb_mod_include_p
|
||||
rb_mod_included_modules
|
||||
rb_mod_module_eval
|
||||
rb_mod_name
|
||||
rb_mod_remove_const
|
||||
rb_mod_remove_cvar
|
||||
rb_module_new
|
||||
rb_name_class
|
||||
rb_name_error
|
||||
rb_newobj
|
||||
rb_node_newnode
|
||||
rb_notimplement
|
||||
rb_num2dbl
|
||||
rb_num2fix
|
||||
rb_num2int
|
||||
rb_num2ll
|
||||
rb_num2long
|
||||
rb_num2ull
|
||||
rb_num2ulong
|
||||
rb_num_coerce_bin
|
||||
rb_num_zerodiv
|
||||
rb_obj_alloc
|
||||
rb_obj_as_string
|
||||
rb_obj_become
|
||||
rb_obj_call_init
|
||||
rb_obj_class
|
||||
rb_obj_clone
|
||||
rb_obj_dup
|
||||
rb_obj_freeze
|
||||
rb_obj_id
|
||||
rb_obj_id_obsolete
|
||||
rb_obj_instance_eval
|
||||
rb_obj_instance_variables
|
||||
rb_obj_is_instance_of
|
||||
rb_obj_is_kind_of
|
||||
rb_obj_remove_instance_variable
|
||||
rb_obj_singleton_methods
|
||||
rb_obj_taint
|
||||
rb_obj_tainted
|
||||
rb_obj_type
|
||||
rb_obj_untaint
|
||||
rb_origenviron
|
||||
rb_output_fs
|
||||
rb_output_rs
|
||||
rb_p
|
||||
rb_parser_append_print
|
||||
rb_parser_while_loop
|
||||
rb_path2class
|
||||
rb_path_check
|
||||
rb_proc_exec
|
||||
rb_proc_new
|
||||
rb_proc_times
|
||||
rb_progname
|
||||
rb_prohibit_interrupt
|
||||
rb_protect
|
||||
rb_protect_inspect
|
||||
rb_provide
|
||||
rb_provided
|
||||
rb_quad_pack
|
||||
rb_quad_unpack
|
||||
rb_raise
|
||||
rb_range_beg_len
|
||||
rb_range_new
|
||||
rb_read_check
|
||||
rb_read_pending
|
||||
rb_reg_adjust_startpos
|
||||
rb_reg_last_match
|
||||
rb_reg_match
|
||||
rb_reg_match2
|
||||
rb_reg_match_last
|
||||
rb_reg_match_post
|
||||
rb_reg_match_pre
|
||||
rb_reg_mbclen2
|
||||
rb_reg_new
|
||||
rb_reg_nth_defined
|
||||
rb_reg_nth_match
|
||||
rb_reg_options
|
||||
rb_reg_quote
|
||||
rb_reg_regcomp
|
||||
rb_reg_regsub
|
||||
rb_reg_search
|
||||
rb_remove_method
|
||||
rb_require
|
||||
rb_rescue
|
||||
rb_rescue2
|
||||
rb_reserved_word
|
||||
rb_respond_to
|
||||
rb_rs
|
||||
rb_scan_args
|
||||
rb_secure
|
||||
rb_set_class_path
|
||||
rb_set_end_proc
|
||||
rb_set_kcode
|
||||
rb_set_safe_level
|
||||
rb_singleton_class
|
||||
rb_singleton_class_attached
|
||||
rb_singleton_class_clone
|
||||
rb_source_filename
|
||||
rb_stderr
|
||||
rb_stdin
|
||||
rb_stdout
|
||||
rb_str2cstr
|
||||
rb_str2inum
|
||||
rb_str_append
|
||||
rb_str_associate
|
||||
rb_str_associated
|
||||
rb_str_buf_append
|
||||
rb_str_buf_cat
|
||||
rb_str_buf_cat2
|
||||
rb_str_buf_new
|
||||
rb_str_buf_new2
|
||||
rb_str_cat
|
||||
rb_str_cat2
|
||||
rb_str_cmp
|
||||
rb_str_concat
|
||||
rb_str_dump
|
||||
rb_str_dup
|
||||
rb_str_dup_frozen
|
||||
rb_str_freeze
|
||||
rb_str_hash
|
||||
rb_str_inspect
|
||||
rb_str_intern
|
||||
rb_str_modify
|
||||
rb_str_new
|
||||
rb_str_new2
|
||||
rb_str_new3
|
||||
rb_str_new4
|
||||
rb_str_new5
|
||||
rb_str_plus
|
||||
rb_str_resize
|
||||
rb_str_setter
|
||||
rb_str_split
|
||||
rb_str_substr
|
||||
rb_str_times
|
||||
rb_str_to_dbl
|
||||
rb_str_to_inum
|
||||
rb_str_to_str
|
||||
rb_str_update
|
||||
rb_str_upto
|
||||
rb_string_value
|
||||
rb_string_value_ptr
|
||||
rb_struct_alloc
|
||||
rb_struct_aref
|
||||
rb_struct_aset
|
||||
rb_struct_define
|
||||
rb_struct_getmember
|
||||
rb_struct_iv_get
|
||||
rb_struct_new
|
||||
rb_svar
|
||||
rb_sym_all_symbols
|
||||
rb_sys_fail
|
||||
rb_sys_warning
|
||||
rb_syswait
|
||||
rb_tainted_str_new
|
||||
rb_tainted_str_new2
|
||||
rb_thread_alone
|
||||
rb_thread_atfork
|
||||
rb_thread_create
|
||||
rb_thread_critical
|
||||
rb_thread_current
|
||||
rb_thread_fd_close
|
||||
rb_thread_fd_writable
|
||||
rb_thread_interrupt
|
||||
rb_thread_list
|
||||
rb_thread_local_aref
|
||||
rb_thread_local_aset
|
||||
rb_thread_main
|
||||
rb_thread_pending
|
||||
rb_thread_polling
|
||||
rb_thread_run
|
||||
rb_thread_schedule
|
||||
rb_thread_select
|
||||
rb_thread_signal_raise
|
||||
rb_thread_sleep
|
||||
rb_thread_sleep_forever
|
||||
rb_thread_stop
|
||||
rb_thread_tick
|
||||
rb_thread_trap_eval
|
||||
rb_thread_wait_fd
|
||||
rb_thread_wait_for
|
||||
rb_thread_wakeup
|
||||
rb_throw
|
||||
rb_time_interval
|
||||
rb_time_new
|
||||
rb_time_timeval
|
||||
rb_to_id
|
||||
rb_to_int
|
||||
rb_trap_exec
|
||||
rb_trap_exit
|
||||
rb_trap_immediate
|
||||
rb_trap_pending
|
||||
rb_trap_restore_mask
|
||||
rb_uint2big
|
||||
rb_uint2inum
|
||||
rb_ull2big
|
||||
rb_ull2inum
|
||||
rb_undef
|
||||
rb_undef_method
|
||||
rb_w32_accept
|
||||
rb_w32_asynchronize
|
||||
rb_w32_bind
|
||||
rb_w32_close
|
||||
rb_w32_closedir
|
||||
rb_w32_connect
|
||||
rb_w32_enter_critical
|
||||
rb_w32_fclose
|
||||
rb_w32_fdclr
|
||||
rb_w32_fdisset
|
||||
rb_w32_fdset
|
||||
rb_w32_free_environ
|
||||
rb_w32_get_environ
|
||||
rb_w32_get_osfhandle
|
||||
rb_w32_getc
|
||||
rb_w32_getcwd
|
||||
rb_w32_getenv
|
||||
rb_w32_gethostbyaddr
|
||||
rb_w32_gethostbyname
|
||||
rb_w32_gethostname
|
||||
rb_w32_getpeername
|
||||
rb_w32_getpid
|
||||
rb_w32_getprotobyname
|
||||
rb_w32_getprotobynumber
|
||||
rb_w32_getservbyname
|
||||
rb_w32_getservbyport
|
||||
rb_w32_getsockname
|
||||
rb_w32_getsockopt
|
||||
rb_w32_ioctlsocket
|
||||
rb_w32_leave_critical
|
||||
rb_w32_listen
|
||||
rb_w32_main_context
|
||||
rb_w32_opendir
|
||||
rb_w32_putc
|
||||
rb_w32_readdir
|
||||
rb_w32_recv
|
||||
rb_w32_recvfrom
|
||||
rb_w32_rename
|
||||
rb_w32_rewinddir
|
||||
rb_w32_seekdir
|
||||
rb_w32_select
|
||||
rb_w32_send
|
||||
rb_w32_sendto
|
||||
rb_w32_setsockopt
|
||||
rb_w32_shutdown
|
||||
rb_w32_sleep
|
||||
rb_w32_socket
|
||||
rb_w32_stat
|
||||
rb_w32_strerror
|
||||
rb_w32_telldir
|
||||
rb_w32_times
|
||||
rb_waitpid
|
||||
rb_warn
|
||||
rb_warning
|
||||
rb_with_disable_interrupt
|
||||
rb_yield
|
||||
re_mbctab
|
||||
re_set_syntax
|
||||
ruby__end__seen
|
||||
ruby_add_suffix
|
||||
ruby_class
|
||||
ruby_cleanup
|
||||
ruby_current_node
|
||||
ruby_debug
|
||||
ruby_dln_librefs
|
||||
ruby_dyna_vars
|
||||
ruby_errinfo
|
||||
ruby_eval_tree
|
||||
ruby_eval_tree_begin
|
||||
ruby_exec
|
||||
ruby_finalize
|
||||
ruby_frame
|
||||
ruby_getcwd
|
||||
ruby_ignorecase
|
||||
ruby_in_compile
|
||||
ruby_in_eval
|
||||
ruby_incpush
|
||||
ruby_init
|
||||
ruby_init_loadpath
|
||||
ruby_inplace_mode
|
||||
ruby_nerrs
|
||||
ruby_options
|
||||
ruby_parser_stack_on_heap
|
||||
ruby_process_options
|
||||
ruby_prog_init
|
||||
ruby_qsort
|
||||
ruby_re_adjust_startpos
|
||||
ruby_re_compile_fastmap
|
||||
ruby_re_compile_pattern
|
||||
ruby_re_copy_registers
|
||||
ruby_re_free_pattern
|
||||
ruby_re_free_registers
|
||||
ruby_re_match
|
||||
ruby_re_mbcinit
|
||||
ruby_re_search
|
||||
ruby_re_set_casetable
|
||||
ruby_run
|
||||
ruby_safe_level
|
||||
ruby_scan_hex
|
||||
ruby_scan_oct
|
||||
ruby_scope
|
||||
ruby_script
|
||||
ruby_set_argv
|
||||
ruby_set_current_source
|
||||
ruby_setenv
|
||||
ruby_show_copyright
|
||||
ruby_show_version
|
||||
ruby_sourcefile
|
||||
ruby_sourceline
|
||||
ruby_stack_check
|
||||
ruby_stack_length
|
||||
ruby_stop
|
||||
ruby_strdup
|
||||
ruby_strtod
|
||||
ruby_top_self
|
||||
ruby_unsetenv
|
||||
ruby_verbose
|
||||
ruby_xcalloc
|
||||
ruby_xfree
|
||||
ruby_xmalloc
|
||||
ruby_xrealloc
|
||||
ruby_yychar
|
||||
ruby_yydebug
|
||||
ruby_yylval
|
||||
ruby_yyparse
|
||||
setgid
|
||||
sethostent
|
||||
setnetent
|
||||
setprotoent
|
||||
setservent
|
||||
setuid
|
||||
st_add_direct
|
||||
st_cleanup_safe
|
||||
st_copy
|
||||
st_delete
|
||||
st_delete_safe
|
||||
st_foreach
|
||||
st_free_table
|
||||
st_init_numtable
|
||||
st_init_numtable_with_size
|
||||
st_init_strtable
|
||||
st_init_strtable_with_size
|
||||
st_init_table
|
||||
st_init_table_with_size
|
||||
st_insert
|
||||
st_lookup
|
||||
wait
|
||||
waitpid
|
||||
yycheck
|
||||
yydefred
|
||||
yydgoto
|
||||
yyerrflag
|
||||
yygindex
|
||||
yylen
|
||||
yylhs
|
||||
yyname
|
||||
yynerrs
|
||||
yyrindex
|
||||
yyrule
|
||||
yysindex
|
||||
yyss
|
||||
yyssp
|
||||
yytable
|
||||
yyval
|
||||
yyvs
|
||||
yyvsp
|
||||
wce_SetCommandLine
|
47
wince/process.c
Normal file
47
wince/process.c
Normal file
|
@ -0,0 +1,47 @@
|
|||
/***************************************************************
|
||||
process.c
|
||||
***************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
#include "process.h"
|
||||
|
||||
int _getpid(void)
|
||||
{
|
||||
return (int)GetCurrentProcessId();
|
||||
}
|
||||
|
||||
/* I wonder _exec and _swawn should be replaced with CreateProcess... */
|
||||
int _execl(const char *cmdname, const char *arg0,
|
||||
va_list va_args)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int execv(const char *path, char *const argv[])
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void abort(void)
|
||||
{
|
||||
}
|
||||
|
||||
int _cwait( int *termstat, int procHandle, int action )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
intptr_t _spawnle(int mode,
|
||||
const char *cmdname, const char *arg0,
|
||||
va_list va_argn)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
intptr_t _spawnvpe(int mode,
|
||||
const char *cmdname, const char *const *argv,
|
||||
const char *const *envp)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
44
wince/process.h
Normal file
44
wince/process.h
Normal file
|
@ -0,0 +1,44 @@
|
|||
#ifndef PROCESS_H
|
||||
#define PROCESS_H 1
|
||||
|
||||
|
||||
#define _P_WAIT 0
|
||||
#define _P_NOWAIT 1
|
||||
#define _P_DETACH 4
|
||||
|
||||
#define P_WAIT _P_WAIT
|
||||
#define P_NOWAIT _P_NOWAIT
|
||||
#define P_DETACH _P_DETACH
|
||||
|
||||
#ifndef _INTPTR_T_DEFINED
|
||||
typedef int intptr_t;
|
||||
#define _INTPTR_T_DEFINED
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int _getpid(void);
|
||||
|
||||
int _cwait(int *, int, int);
|
||||
void abort(void);
|
||||
|
||||
int _execl(const char *, const char *, ...);
|
||||
//int _execv(const char *, const char * const *);
|
||||
int execv(const char *path, char *const argv[]);
|
||||
|
||||
intptr_t _spawnle(int, const char *, const char *, ...);
|
||||
intptr_t _spawnvpe(int, const char *, const char * const *,
|
||||
const char * const *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
//#define getpid _getpid
|
||||
#define execl _execl
|
||||
#define execv _execv
|
||||
|
||||
|
||||
#endif
|
26
wince/signal.c
Normal file
26
wince/signal.c
Normal file
|
@ -0,0 +1,26 @@
|
|||
/***************************************************************
|
||||
signal.c
|
||||
***************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
#include "signal.h"
|
||||
|
||||
/* lazy replacement... (^^; */
|
||||
int raise(int sig)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
//#ifdef _WIN32_WCE
|
||||
//#ifdef _WIN32_WCE_EMULATION
|
||||
//void (* signal(int sig, void (*func)))
|
||||
//{
|
||||
// return sig;
|
||||
//}
|
||||
//#else
|
||||
void (* signal(int sig, void (__cdecl *func)(int)))(int)
|
||||
{
|
||||
return sig;
|
||||
}
|
||||
//#endif
|
||||
//#endif
|
71
wince/signal.h
Normal file
71
wince/signal.h
Normal file
|
@ -0,0 +1,71 @@
|
|||
#ifndef SIGNAL_H
|
||||
#define SIGNAL_H 1
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#define SIGHUP 1
|
||||
#define SIGINT 2
|
||||
#define SIGQUIT 3
|
||||
#define SIGILL 4
|
||||
#define SIGPIPE 5
|
||||
#define SIGFPE 8
|
||||
#define SIGUSR1 10
|
||||
#define SIGSEGV 11
|
||||
#define SIGUSR2 12
|
||||
#define SIGTERM 15
|
||||
#define SIGCHLD 17
|
||||
#define SIGTSTP 20
|
||||
#define SIGBREAK 21
|
||||
#define SIGABRT 22
|
||||
#define NSIG 22
|
||||
|
||||
#define SA_NOCLDSTOP 1
|
||||
#define SA_SHIRQ 0x04000000
|
||||
#define SA_STACK 0x08000000
|
||||
#define SA_RESTART 0x10000000
|
||||
#define SA_INTERRUPT 0x20000000
|
||||
#define SA_NOMASK 0x40000000
|
||||
#define SA_ONESHOT 0x80000000
|
||||
|
||||
/* signal action codes */
|
||||
|
||||
#define SIG_DFL (void (*)(int))0 /* default signal action */
|
||||
#define SIG_IGN (void (*)(int))1 /* ignore signal */
|
||||
#define SIG_SGE (void (*)(int))3 /* signal gets error */
|
||||
#define SIG_ACK (void (*)(int))4 /* acknowledge */
|
||||
#define SIG_ERR (void (*)(int))-1 /* signal error value */
|
||||
|
||||
#define SIG_BLOCK 0 /* for blocking signals */
|
||||
#define SIG_UNBLOCK 1 /* for unblocking signals */
|
||||
#define SIG_SETMASK 2 /* for setting the signal mask */
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef void (* SIGHANDLER)(int);
|
||||
typedef void (* sighandler_t)(int);
|
||||
|
||||
typedef int sig_atomic_t;
|
||||
typedef unsigned int sigset_t;
|
||||
|
||||
struct sigaction{
|
||||
sighandler_t sa_handler;
|
||||
sigset_t sa_mask;
|
||||
unsigned long sa_flags;
|
||||
void (*sa_restorer)(void);
|
||||
};
|
||||
|
||||
int raise(int sig);
|
||||
//#ifndef _WIN32_WCE_EMULATION
|
||||
void (* signal(int sig, void (__cdecl *func)(int)))(int);
|
||||
//#else
|
||||
// void (* signal(int sig, void (*func)));
|
||||
//#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
5
wince/stddef.h
Normal file
5
wince/stddef.h
Normal file
|
@ -0,0 +1,5 @@
|
|||
|
||||
#ifndef _STDDEF_H_
|
||||
#define _STDDEF_H_
|
||||
|
||||
#endif
|
36
wince/stdio.c
Normal file
36
wince/stdio.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
/***************************************************************
|
||||
stdio.c
|
||||
***************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
#include "wince.h" /* for wce_mbtowc */
|
||||
|
||||
|
||||
FILE *freopen(const char *filename, const char *mode, FILE *file)
|
||||
{
|
||||
wchar_t *wfilename, *wmode;
|
||||
FILE *fp;
|
||||
|
||||
wfilename = wce_mbtowc(filename);
|
||||
wmode = wce_mbtowc(mode);
|
||||
|
||||
fp = _wfreopen(wfilename, wmode, file);
|
||||
|
||||
free(wfilename);
|
||||
free(wmode);
|
||||
|
||||
return fp;
|
||||
}
|
||||
|
||||
FILE *_fdopen( int handle, const char *mode )
|
||||
{
|
||||
wchar_t *wmode;
|
||||
FILE* fp;
|
||||
|
||||
wmode = wce_mbtowc(mode);
|
||||
fp = _wfdopen( (void*)handle, wmode );
|
||||
|
||||
free(wmode);
|
||||
return fp;
|
||||
}
|
||||
|
22
wince/stdlib.c
Normal file
22
wince/stdlib.c
Normal file
|
@ -0,0 +1,22 @@
|
|||
/***************************************************************
|
||||
stdlib.c
|
||||
***************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
char **environ;
|
||||
extern char * rb_w32_getenv(const char *);
|
||||
|
||||
/* getenv should replace with rb_w32_getenv. */
|
||||
char *getenv(const char *env)
|
||||
{
|
||||
return rb_w32_getenv(env);
|
||||
}
|
||||
|
||||
char *_fullpath(char *absPath, const char *relPath,
|
||||
size_t maxLength)
|
||||
{
|
||||
strcpy( absPath, relPath );
|
||||
return absPath;
|
||||
}
|
||||
|
71
wince/string.c
Normal file
71
wince/string.c
Normal file
|
@ -0,0 +1,71 @@
|
|||
/***************************************************************
|
||||
string.c
|
||||
***************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
#include "wince.h" /* for wce_mbtowc */
|
||||
|
||||
extern char* rb_w32_strerror(int errno);
|
||||
|
||||
/* _strdup already exists in stdlib.h? */
|
||||
char *strdup(const char * str)
|
||||
{
|
||||
char *p;
|
||||
|
||||
p = malloc( strlen(str)+1 );
|
||||
strcpy( p, str );
|
||||
return p;
|
||||
}
|
||||
|
||||
/* strerror shoud replace with rb_w32_strerror. */
|
||||
char* strerror(int errno)
|
||||
{
|
||||
return rb_w32_strerror(errno);
|
||||
}
|
||||
|
||||
/* _strnicmp already exists in stdlib.h? */
|
||||
int _strnicmp( const char *s1, const char *s2, size_t count )
|
||||
{
|
||||
wchar_t *w1, *w2;
|
||||
int n;
|
||||
|
||||
w1 = wce_mbtowc(s1);
|
||||
w2 = wce_mbtowc(s2);
|
||||
|
||||
n = wcsnicmp(w1, w2, count);
|
||||
|
||||
free(w1);
|
||||
free(w2);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
#if _WIN32_WCE < 300
|
||||
#include "..\missing\strtoul.c"
|
||||
|
||||
char *strrchr( const char *p, int c )
|
||||
{
|
||||
char *pp;
|
||||
for( pp=(char*)p+strlen(p); pp!=p; p-- )
|
||||
{
|
||||
if( *pp==c ) break;
|
||||
}
|
||||
return pp==p ? NULL : pp;
|
||||
}
|
||||
|
||||
int _stricmp( const char *s1, const char *s2 )
|
||||
{
|
||||
wchar_t *w1, *w2;
|
||||
int n;
|
||||
|
||||
w1 = wce_mbtowc(s1);
|
||||
w2 = wce_mbtowc(s2);
|
||||
|
||||
n = wcsicmp(w1, w2);
|
||||
|
||||
free(w1);
|
||||
free(w2);
|
||||
|
||||
return n;
|
||||
}
|
||||
#endif
|
299
wince/time.c
Normal file
299
wince/time.c
Normal file
|
@ -0,0 +1,299 @@
|
|||
/***************************************************************
|
||||
time.c
|
||||
|
||||
author : uema2
|
||||
date : Nov 30, 2002
|
||||
|
||||
You can freely use, copy, modify, and redistribute
|
||||
the whole contents.
|
||||
***************************************************************/
|
||||
|
||||
/*#define __SCRATCH_TIMEC_DEBUG__ */
|
||||
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include <time.h>
|
||||
|
||||
/* globals */
|
||||
const __int64 _onesec_in100ns = (__int64)10000000;
|
||||
int timezone, _timezone, altzone;
|
||||
int daylight;
|
||||
char *tzname[2];
|
||||
|
||||
|
||||
/* __int64 <--> FILETIME */
|
||||
static __int64 wce_FILETIME2int64(FILETIME f)
|
||||
{
|
||||
__int64 t;
|
||||
|
||||
t = f.dwHighDateTime;
|
||||
t <<= 32;
|
||||
t |= f.dwLowDateTime;
|
||||
return t;
|
||||
}
|
||||
|
||||
static FILETIME wce_int642FILETIME(__int64 t)
|
||||
{
|
||||
FILETIME f;
|
||||
|
||||
f.dwHighDateTime = (DWORD)((t >> 32) & 0x00000000FFFFFFFF);
|
||||
f.dwLowDateTime = (DWORD)( t & 0x00000000FFFFFFFF);
|
||||
return f;
|
||||
}
|
||||
|
||||
/* FILETIME utility */
|
||||
static FILETIME wce_getFILETIMEFromYear(WORD year)
|
||||
{
|
||||
SYSTEMTIME s={0};
|
||||
FILETIME f;
|
||||
|
||||
s.wYear = year;
|
||||
s.wMonth = 1;
|
||||
s.wDayOfWeek = 1;
|
||||
s.wDay = 1;
|
||||
|
||||
SystemTimeToFileTime( &s, &f );
|
||||
return f;
|
||||
}
|
||||
|
||||
static time_t wce_getYdayFromSYSTEMTIME(const SYSTEMTIME* s)
|
||||
{
|
||||
__int64 t;
|
||||
FILETIME f1, f2;
|
||||
|
||||
f1 = wce_getFILETIMEFromYear( s->wYear );
|
||||
SystemTimeToFileTime( s, &f2 );
|
||||
|
||||
t = wce_FILETIME2int64(f2)-wce_FILETIME2int64(f1);
|
||||
|
||||
return (time_t)((t/_onesec_in100ns)/(60*60*24));
|
||||
}
|
||||
|
||||
/* tm <--> SYSTEMTIME */
|
||||
static SYSTEMTIME wce_tm2SYSTEMTIME(struct tm *t)
|
||||
{
|
||||
SYSTEMTIME s;
|
||||
|
||||
s.wYear = t->tm_year + 1900;
|
||||
s.wMonth = t->tm_mon + 1;
|
||||
s.wDayOfWeek = t->tm_wday;
|
||||
s.wDay = t->tm_mday;
|
||||
s.wHour = t->tm_hour;
|
||||
s.wMinute = t->tm_min;
|
||||
s.wSecond = t->tm_sec;
|
||||
s.wMilliseconds = 0;
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
static struct tm wce_SYSTEMTIME2tm(SYSTEMTIME *s)
|
||||
{
|
||||
struct tm t;
|
||||
|
||||
t.tm_year = s->wYear - 1900;
|
||||
t.tm_mon = s->wMonth- 1;
|
||||
t.tm_wday = s->wDayOfWeek;
|
||||
t.tm_mday = s->wDay;
|
||||
t.tm_yday = wce_getYdayFromSYSTEMTIME(s);
|
||||
t.tm_hour = s->wHour;
|
||||
t.tm_min = s->wMinute;
|
||||
t.tm_sec = s->wSecond;
|
||||
t.tm_isdst = 0;
|
||||
|
||||
return t;
|
||||
}
|
||||
|
||||
/* FILETIME <--> time_t */
|
||||
time_t wce_FILETIME2time_t(const FILETIME* f)
|
||||
{
|
||||
FILETIME f1601, f1970;
|
||||
__int64 t, offset;
|
||||
|
||||
f1601 = wce_getFILETIMEFromYear(1601);
|
||||
f1970 = wce_getFILETIMEFromYear(1970);
|
||||
|
||||
offset = wce_FILETIME2int64(f1970) - wce_FILETIME2int64(f1601);
|
||||
|
||||
t = wce_FILETIME2int64(*f);
|
||||
|
||||
t -= offset;
|
||||
return (time_t)(t / _onesec_in100ns);
|
||||
}
|
||||
|
||||
FILETIME wce_time_t2FILETIME(const time_t t)
|
||||
{
|
||||
FILETIME f, f1970;
|
||||
__int64 time;
|
||||
|
||||
f1970 = wce_getFILETIMEFromYear(1970);
|
||||
|
||||
time = t;
|
||||
time *= _onesec_in100ns;
|
||||
time += wce_FILETIME2int64(f1970);
|
||||
|
||||
f = wce_int642FILETIME(time);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
/* time.h difinition */
|
||||
time_t time( time_t *timer )
|
||||
{
|
||||
SYSTEMTIME s;
|
||||
FILETIME f;
|
||||
|
||||
GetSystemTime( &s );
|
||||
|
||||
SystemTimeToFileTime( &s, &f );
|
||||
|
||||
*timer = wce_FILETIME2time_t(&f);
|
||||
return *timer;
|
||||
}
|
||||
|
||||
struct tm *localtime( const time_t *timer )
|
||||
{
|
||||
SYSTEMTIME ss, ls, s;
|
||||
FILETIME sf, lf, f;
|
||||
__int64 t, diff;
|
||||
static struct tm tms;
|
||||
|
||||
GetSystemTime(&ss);
|
||||
GetLocalTime(&ls);
|
||||
|
||||
SystemTimeToFileTime( &ss, &sf );
|
||||
SystemTimeToFileTime( &ls, &lf );
|
||||
|
||||
diff = wce_FILETIME2int64(sf) - wce_FILETIME2int64(lf);
|
||||
|
||||
f = wce_time_t2FILETIME(*timer);
|
||||
t = wce_FILETIME2int64(f) - diff;
|
||||
f = wce_int642FILETIME(t);
|
||||
|
||||
FileTimeToSystemTime( &f, &s );
|
||||
|
||||
tms = wce_SYSTEMTIME2tm(&s);
|
||||
|
||||
return &tms;
|
||||
}
|
||||
|
||||
time_t mktime(struct tm* pt)
|
||||
{
|
||||
SYSTEMTIME ss, ls, s;
|
||||
FILETIME sf, lf, f;
|
||||
__int64 diff;
|
||||
|
||||
GetSystemTime(&ss);
|
||||
GetLocalTime(&ls);
|
||||
SystemTimeToFileTime( &ss, &sf );
|
||||
SystemTimeToFileTime( &ls, &lf );
|
||||
|
||||
diff = (wce_FILETIME2int64(lf)-wce_FILETIME2int64(sf))/_onesec_in100ns;
|
||||
|
||||
s = wce_tm2SYSTEMTIME(pt);
|
||||
SystemTimeToFileTime( &s, &f );
|
||||
return wce_FILETIME2time_t(&f) - (time_t)diff;
|
||||
}
|
||||
|
||||
struct tm *gmtime(const time_t *t)
|
||||
{
|
||||
FILETIME f;
|
||||
SYSTEMTIME s;
|
||||
static struct tm tms;
|
||||
|
||||
f = wce_time_t2FILETIME(*t);
|
||||
FileTimeToSystemTime(&f, &s);
|
||||
tms = wce_SYSTEMTIME2tm(&s);
|
||||
return &tms;
|
||||
}
|
||||
|
||||
char* ctime( const time_t *t )
|
||||
{
|
||||
// Wed Jan 02 02:03:55 1980\n\0
|
||||
static char buf[30]={0};
|
||||
char week[] = "Sun Mon Tue Wed Thr Fri Sat ";
|
||||
char month[]= "Jan Feb Mar Apl May Jun Jul Aug Sep Oct Nov Dec ";
|
||||
struct tm tms;
|
||||
|
||||
tms = *localtime(t);
|
||||
|
||||
strncpy( buf, week+tms.tm_wday*4, 4 );
|
||||
strncpy( buf+4, month+tms.tm_mon*4, 4 );
|
||||
sprintf( buf+8, "%02d ", tms.tm_mday );
|
||||
sprintf( buf+11, "%02d:%02d:%02d %d\n",
|
||||
tms.tm_hour, tms.tm_min, tms.tm_sec, tms.tm_year+1900 );
|
||||
return buf;
|
||||
}
|
||||
|
||||
char *asctime(const struct tm *pt)
|
||||
{
|
||||
static char buf[30]={0};
|
||||
char week[] = "Sun Mon Tue Wed Thr Fri Sat ";
|
||||
char month[]= "Jan Feb Mar Apl May Jun Jul Aug Sep Oct Nov Dec ";
|
||||
|
||||
strncpy( buf, week+pt->tm_wday*4, 4 );
|
||||
strncpy( buf+4, month+pt->tm_mon*4, 4 );
|
||||
sprintf( buf+8, "%02d ", pt->tm_mday );
|
||||
sprintf( buf+11, "%02d:%02d:%02d %d\n",
|
||||
pt->tm_hour, pt->tm_min, pt->tm_sec, pt->tm_year+1900 );
|
||||
return buf;
|
||||
}
|
||||
|
||||
void tzset()
|
||||
{
|
||||
daylight = 1;
|
||||
_timezone = 28800;
|
||||
timezone = 28800;
|
||||
}
|
||||
|
||||
int clock(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------
|
||||
#ifdef __SCRATCH_TIMEC_DEBUG__
|
||||
|
||||
int main()
|
||||
{
|
||||
time_t t1, t2;
|
||||
struct tm tm1, tm2;
|
||||
|
||||
time( &t1 );
|
||||
tm1 = *localtime(&t1);
|
||||
t1 = mktime(&tm1);
|
||||
tm1 = *gmtime(&t1);
|
||||
|
||||
_time( &t2 );
|
||||
tm2 = *_localtime(&t2);
|
||||
t2 = _mktime(&tm2);
|
||||
tm2 = *_gmtime(&t2);
|
||||
|
||||
// time, mktime
|
||||
if( t1==t2 )
|
||||
OutputDebugString( "ok\n" );
|
||||
else
|
||||
{
|
||||
static char buf[128];
|
||||
wsprintf( buf, "ng : %d, %d\n", t1, t2 );
|
||||
OutputDebugString( buf );
|
||||
}
|
||||
|
||||
// localtime, gmtime
|
||||
if( 0==memcmp( &tm1, &tm2, sizeof(struct tm) ) )
|
||||
OutputDebugString( "ok\n" );
|
||||
else
|
||||
OutputDebugString( "ng\n" );
|
||||
|
||||
// ctime
|
||||
OutputDebugString( ctime(&t1) );
|
||||
OutputDebugString( _ctime(&t2) );
|
||||
|
||||
// asctime
|
||||
OutputDebugString( asctime(&tm1) );
|
||||
OutputDebugString( _asctime(&tm2) );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
63
wince/time.h
Normal file
63
wince/time.h
Normal file
|
@ -0,0 +1,63 @@
|
|||
#ifndef TIME_H
|
||||
#define TIME_H 1
|
||||
|
||||
#include <winbase.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern int daylight;
|
||||
extern int _timezone, timezone;
|
||||
extern char *tzname[2];
|
||||
|
||||
#if 0
|
||||
#define _DAY_SEC (24L * 60L * 60L) /* secs in a day */
|
||||
#define _YEAR_SEC (365L * _DAY_SEC) /* secs in a year */
|
||||
#define _FOUR_YEAR_SEC (1461L * _DAY_SEC) /* secs in a 4 year interval */
|
||||
#define _DEC_SEC 315532800L /* secs in 1970-1979 */
|
||||
#define _BASE_YEAR 70L /* 1970 is the base year */
|
||||
#define _BASE_DOW 4 /* 01-01-70 was a Thursday */
|
||||
#define _LEAP_YEAR_ADJUST 17L /* Leap years 1900 - 1970 */
|
||||
#define _MAX_YEAR 138L /* 2038 is the max year */
|
||||
#endif
|
||||
|
||||
#ifndef _TM_DEFINED
|
||||
struct tm {
|
||||
int tm_sec; /* seconds after the minute - [0,59] */
|
||||
int tm_min; /* minutes after the hour - [0,59] */
|
||||
int tm_hour; /* hours since midnight - [0,23] */
|
||||
int tm_mday; /* day of the month - [1,31] */
|
||||
int tm_mon; /* months since January - [0,11] */
|
||||
int tm_year; /* years since 1900 */
|
||||
int tm_wday; /* days since Sunday - [0,6] */
|
||||
int tm_yday; /* days since January 1 - [0,365] */
|
||||
int tm_isdst; /* daylight savings time flag */
|
||||
};
|
||||
#define _TM_DEFINED
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct {
|
||||
int yr; // year of interest
|
||||
int yd; // day of year
|
||||
long ms; // milli-seconds in the day
|
||||
} transitionTime;
|
||||
|
||||
time_t mktime(struct tm* pt);
|
||||
time_t time( time_t *timer );
|
||||
struct tm *localtime(const time_t *ptime);
|
||||
struct tm *gmtime(const time_t *tod);
|
||||
char* ctime( const time_t *t );
|
||||
char* asctime(const struct tm *tptr);
|
||||
void tzset();
|
||||
int clock(void);
|
||||
time_t wce_FILETIME2time_t(const FILETIME* pf);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
34
wince/varargs.h
Normal file
34
wince/varargs.h
Normal file
|
@ -0,0 +1,34 @@
|
|||
|
||||
#ifndef VARARGS_H
|
||||
#define VARARGS_H 1
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef _VA_LIST_DEFINED
|
||||
typedef char *va_list;
|
||||
#define _VA_LIST_DEFINED
|
||||
#endif
|
||||
|
||||
//#ifdef MIPS
|
||||
#define va_alist __va_alist, __va_alist2, __va_alist3, __va_alist4
|
||||
#define va_dcl int __va_alist, __va_alist2, __va_alist3, __va_alist4;
|
||||
#define va_start(list) list = (char *) &__va_alist
|
||||
#define va_end(list)
|
||||
#define va_arg(list, mode) ((mode *)(list =\
|
||||
(char *) ((((int)list + (__builtin_alignof(mode)<=4?3:7)) &\
|
||||
(__builtin_alignof(mode)<=4?-4:-8))+sizeof(mode))))[-1]
|
||||
#else
|
||||
#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
|
||||
#define va_dcl va_list va_alist;
|
||||
#define va_start(ap) ap = (va_list)&va_alist
|
||||
#define va_arg(ap,t) ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
|
||||
#define va_end(ap) ap = (va_list)0
|
||||
//#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
535
wince/wince.c
Normal file
535
wince/wince.c
Normal file
|
@ -0,0 +1,535 @@
|
|||
/***************************************************************
|
||||
wince.c
|
||||
|
||||
author : uema2
|
||||
date : Nov 30, 2002
|
||||
|
||||
You can freely use, copy, modify, and redistribute
|
||||
the whole contents.
|
||||
***************************************************************/
|
||||
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
#include "wince.h"
|
||||
|
||||
/* global for GetCommandLineA */
|
||||
char *_commandLine;
|
||||
|
||||
/* make up Win32API except wce_* functions. */
|
||||
|
||||
DWORD GetModuleFileNameA(
|
||||
HMODULE hModule, LPSTR lpFileName,
|
||||
DWORD size )
|
||||
{
|
||||
LPWSTR lpFileNameW;
|
||||
LPSTR mb;
|
||||
size_t len;
|
||||
|
||||
lpFileNameW = (LPWSTR)malloc( size*sizeof(wchar_t) );
|
||||
GetModuleFileNameW( hModule, lpFileNameW, size );
|
||||
mb = wce_wctomb(lpFileNameW);
|
||||
len = min(strlen(mb),size);
|
||||
strncpy(lpFileName, mb, len);
|
||||
lpFileName[len-1] = '\0';
|
||||
free(mb);
|
||||
free(lpFileNameW);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if _WIN32_WCE < 300
|
||||
FARPROC GetProcAddressA(HMODULE hModule, LPCSTR lpProcName)
|
||||
{
|
||||
FARPROC p;
|
||||
LPWSTR lpwProcName;
|
||||
|
||||
lpwProcName = wce_mbtowc( lpProcName );
|
||||
p = GetProcAddressW( hModule, lpwProcName );
|
||||
free( lpwProcName );
|
||||
return p;
|
||||
}
|
||||
#endif
|
||||
|
||||
char * GetCommandLineA(void)
|
||||
{
|
||||
return _commandLine;
|
||||
}
|
||||
|
||||
/* this is not Win32API. GetCommandLineA helper. */
|
||||
void wce_SetCommandLine(LPCWSTR wcmd)
|
||||
{
|
||||
char* acmd;
|
||||
|
||||
acmd = wce_wctomb( wcmd );
|
||||
_commandLine = (char*)malloc( strlen(acmd)+5 );
|
||||
sprintf( _commandLine, "ruby %s", acmd );
|
||||
free(acmd);
|
||||
}
|
||||
|
||||
/* this is not Win32API. GetCommandLineA helper. */
|
||||
void wce_FreeCommandLine(void)
|
||||
{
|
||||
free(_commandLine);
|
||||
_commandLine = NULL;
|
||||
}
|
||||
|
||||
/* I have no idea how to replace this. */
|
||||
BOOL GetProcessTimes(HANDLE hprocess,
|
||||
LPFILETIME lpCreationTime, LPFILETIME lpExitTime,
|
||||
LPFILETIME lpKernelTime, LPFILETIME lpUserTime)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* -------------- file attributes functions. ------------------- */
|
||||
DWORD GetFileAttributesA(LPCSTR lpFileName)
|
||||
{
|
||||
LPWSTR lpwFileName;
|
||||
DWORD dw;
|
||||
|
||||
lpwFileName = wce_mbtowc(lpFileName);
|
||||
dw = GetFileAttributesW(lpwFileName);
|
||||
free(lpwFileName);
|
||||
return dw;
|
||||
}
|
||||
|
||||
BOOL SetFileAttributesA(
|
||||
LPCSTR lpFileName, DWORD attributes)
|
||||
{
|
||||
LPWSTR lpwFileName;
|
||||
BOOL b;
|
||||
|
||||
lpwFileName = wce_mbtowc(lpFileName);
|
||||
b = SetFileAttributesW(lpwFileName, attributes);
|
||||
free(lpwFileName);
|
||||
return b;
|
||||
}
|
||||
|
||||
/* --------------- move and remove functions. ------------------- */
|
||||
BOOL MoveFileA(LPCSTR fn1, LPCSTR fn2)
|
||||
{
|
||||
LPWSTR wfn1, wfn2;
|
||||
BOOL b;
|
||||
|
||||
wfn1 = wce_mbtowc(fn1);
|
||||
wfn2 = wce_mbtowc(fn2);
|
||||
b = MoveFileW(wfn1, wfn2);
|
||||
free(wfn1);
|
||||
free(wfn2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL MoveFileEx(LPCSTR oldname, LPCSTR newname, DWORD dwFlags)
|
||||
{
|
||||
LPWSTR woldname, wnewname;
|
||||
BOOL b;
|
||||
|
||||
woldname = wce_mbtowc(oldname);
|
||||
wnewname = wce_mbtowc(newname);
|
||||
|
||||
if( (dwFlags&MOVEFILE_REPLACE_EXISTING)!=0 )
|
||||
DeleteFileW( wnewname );
|
||||
|
||||
b = MoveFileW( woldname, wnewname );
|
||||
|
||||
free(woldname);
|
||||
free(wnewname);
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
BOOL DeleteFileA(LPCSTR path)
|
||||
{
|
||||
LPWSTR wpath;
|
||||
BOOL b;
|
||||
|
||||
wpath = wce_mbtowc(path);
|
||||
b = DeleteFileW(wpath);
|
||||
free(wpath);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* --------------- EnvironmentVariable functions. ----------------- */
|
||||
DWORD GetEnvironmentVariable(
|
||||
LPCSTR name, LPSTR value, DWORD size)
|
||||
{
|
||||
/* use registry instead of "environment valuable". */
|
||||
HKEY hk;
|
||||
LONG lret;
|
||||
LPBYTE lpData;
|
||||
DWORD dwType=REG_SZ, cbData;
|
||||
TCHAR buf[MAX_PATH]={0};
|
||||
LPWSTR wname;
|
||||
LPSTR avalue;
|
||||
|
||||
lret = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
|
||||
_T("Software\\ruby_mswince"),
|
||||
0, KEY_QUERY_VALUE, &hk );
|
||||
|
||||
if ( lret != ERROR_SUCCESS )
|
||||
{
|
||||
strcpy( value, "" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
lpData = (LPBYTE)buf;
|
||||
cbData = MAX_PATH*sizeof(*buf);
|
||||
wname = wce_mbtowc( name );
|
||||
|
||||
lret = RegQueryValueEx( hk, wname,
|
||||
NULL, &dwType, lpData, &cbData );
|
||||
RegCloseKey( hk );
|
||||
|
||||
if ( lret != ERROR_SUCCESS )
|
||||
{
|
||||
strcpy( value, "" );
|
||||
free( wname );
|
||||
return 0;
|
||||
}
|
||||
|
||||
avalue = wce_wctomb( (LPCTSTR)lpData );
|
||||
strcpy( value, avalue );
|
||||
free( avalue );
|
||||
free( wname );
|
||||
|
||||
return strlen(value);
|
||||
}
|
||||
|
||||
BOOL SetEnvironmentVariable(LPCSTR name, LPCSTR value)
|
||||
{
|
||||
/* use registry instead of "environment valuable". */
|
||||
HKEY hk;
|
||||
LONG lret;
|
||||
LPBYTE lpData;
|
||||
DWORD ret, dwType=REG_SZ, cbData;
|
||||
LPWSTR wname, wvalue;
|
||||
|
||||
lret = RegCreateKeyEx( HKEY_LOCAL_MACHINE,
|
||||
_T("Software\\ruby_mswince"),
|
||||
0, _T(""), 0,
|
||||
0, NULL, &hk, &ret );
|
||||
if( lret != ERROR_SUCCESS )
|
||||
return FALSE;
|
||||
|
||||
wname = wce_mbtowc(name);
|
||||
wvalue = wce_mbtowc(value);
|
||||
|
||||
lpData = (LPBYTE)wvalue;
|
||||
cbData = (wcslen(wvalue) + 1) * sizeof(*wvalue);
|
||||
lret = RegSetValueEx( hk, wname,
|
||||
0, dwType, lpData, cbData );
|
||||
RegCloseKey( hk );
|
||||
free(wname);
|
||||
free(wvalue);
|
||||
return lret == ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
LPVOID GetEnvironmentStrings(VOID)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
BOOL FreeEnvironmentStrings(LPSTR lpszEnvironmentBlock)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* DuplicateHandle, LockFile, etc... */
|
||||
/* I have no idea... */
|
||||
BOOL GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,
|
||||
DWORD dwProcessGroupID)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL DuplicateHandle(
|
||||
HANDLE source_process, HANDLE source,
|
||||
HANDLE dest_process, HANDLE *dest,
|
||||
DWORD access, BOOL inherit, DWORD options)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL LockFile(HANDLE hFile,
|
||||
DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh,
|
||||
DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL LockFileEx(HANDLE hFile,
|
||||
DWORD dwFlags, DWORD dwReserved,
|
||||
DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
|
||||
LPOVERLAPPED lpOverlapped)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL UnlockFile( HFILE hFile,
|
||||
DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh,
|
||||
DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL UnlockFileEx(HANDLE hFile,
|
||||
DWORD dwReserved, DWORD nNumberOfBytesToUnlockLow,
|
||||
DWORD nNumberOfBytesToUnlockHigh, LPOVERLAPPED lpOverlapped)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* --------------------- etc, etc, etc... ----------------------- */
|
||||
BOOL GetVersionExA(OSVERSIONINFOA *v)
|
||||
{
|
||||
OSVERSIONINFOW wv;
|
||||
BOOL b;
|
||||
LPSTR mb;
|
||||
|
||||
b = GetVersionExW(&wv);
|
||||
mb = wce_wctomb(wv.szCSDVersion);
|
||||
|
||||
strcpy( v->szCSDVersion, mb );
|
||||
free(mb);
|
||||
return b;
|
||||
}
|
||||
|
||||
DWORD WaitForMultipleObjectsEx(DWORD count,
|
||||
const HANDLE *handles, BOOL wait_all,
|
||||
DWORD timeout, BOOL alertable)
|
||||
{
|
||||
return WaitForMultipleObjects(
|
||||
count, handles, wait_all,
|
||||
timeout );
|
||||
}
|
||||
|
||||
BOOL CreateProcessA(LPCSTR appname, LPCSTR commandline,
|
||||
LPSECURITY_ATTRIBUTES att, LPSECURITY_ATTRIBUTES threadatt,
|
||||
BOOL bOpt, DWORD dwFlag, LPVOID lpEnv, LPSTR dir,
|
||||
LPSTARTUPINFO lpsi, LPPROCESS_INFORMATION lppi)
|
||||
{
|
||||
LPWSTR wappname, wcommandline, wdir;
|
||||
BOOL b;
|
||||
|
||||
wappname = wce_mbtowc(appname);
|
||||
wcommandline = wce_mbtowc(commandline);
|
||||
wdir = wce_mbtowc(dir);
|
||||
|
||||
b = CreateProcessW(wappname, wcommandline,
|
||||
att, threadatt, bOpt, dwFlag, lpEnv,
|
||||
wdir, lpsi, lppi);
|
||||
|
||||
free(wappname);
|
||||
free(wcommandline);
|
||||
free(wdir);
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
HANDLE CreateEventA(SECURITY_ATTRIBUTES *sa,
|
||||
BOOL manual_reset, BOOL initial_state, LPCSTR name)
|
||||
{
|
||||
HANDLE h;
|
||||
LPWSTR wname;
|
||||
|
||||
wname = wce_mbtowc(name);
|
||||
h = CreateEventW(sa, manual_reset,
|
||||
initial_state, wname);
|
||||
free(wname);
|
||||
|
||||
return h;
|
||||
}
|
||||
|
||||
DWORD FormatMessageA(DWORD dwFlags, LPCVOID lpSource,
|
||||
DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer,
|
||||
DWORD nSize, va_list* args)
|
||||
{
|
||||
DWORD dw;
|
||||
LPWSTR lpWBuffer;
|
||||
|
||||
lpWBuffer = wce_mbtowc(lpBuffer);
|
||||
dw = FormatMessageW( dwFlags, lpSource,
|
||||
dwMessageId, dwLanguageId,
|
||||
lpWBuffer, nSize, (va_list*)args );
|
||||
free(lpWBuffer);
|
||||
return dw;
|
||||
}
|
||||
|
||||
/*---------------- FindFirstFile, FindNextFile ------------------ */
|
||||
HANDLE FindFirstFileA(LPCSTR path,
|
||||
WIN32_FIND_DATAA *data)
|
||||
{
|
||||
LPWSTR wpath;
|
||||
LPSTR mb;
|
||||
HANDLE h;
|
||||
WIN32_FIND_DATAW wdata;
|
||||
|
||||
wpath = wce_mbtowc(path);
|
||||
h = FindFirstFileW( wpath, &wdata );
|
||||
free(wpath);
|
||||
|
||||
mb = wce_wctomb( wdata.cFileName );
|
||||
strcpy( data->cFileName, mb );
|
||||
free(mb);
|
||||
|
||||
return h;
|
||||
}
|
||||
|
||||
BOOL FindNextFileA(HANDLE handle,
|
||||
WIN32_FIND_DATAA *data)
|
||||
{
|
||||
BOOL b;
|
||||
WIN32_FIND_DATAW wdata;
|
||||
LPSTR mb1;
|
||||
|
||||
b = FindNextFileW(handle, &wdata);
|
||||
|
||||
mb1 = wce_wctomb( wdata.cFileName );
|
||||
strcpy( data->cFileName, mb1 );
|
||||
free(mb1);
|
||||
|
||||
return b;
|
||||
}
|
||||
|
||||
/* CreateFile doesn't support SECURITY_ATTRIBUTES in WinCE. */
|
||||
/* it must be NULL. */
|
||||
HANDLE CreateFileA(LPCSTR filename, DWORD access,
|
||||
DWORD sharing, LPSECURITY_ATTRIBUTES sa,
|
||||
DWORD creation, DWORD attributes, HANDLE template)
|
||||
{
|
||||
LPWSTR wfilename;
|
||||
HANDLE h;
|
||||
|
||||
wfilename = wce_mbtowc(filename);
|
||||
h = CreateFileW(wfilename, access, sharing,
|
||||
NULL, creation, 0, NULL);
|
||||
free(wfilename);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ---------------- CharNext, CharPrev. ---------------------*/
|
||||
LPSTR CharNextA(LPCSTR a)
|
||||
{
|
||||
char *p=(char *)a;
|
||||
if( TRUE==IsDBCSLeadByteEx(CP_ACP, (BYTE)*a) )
|
||||
p+=2;
|
||||
else
|
||||
p++;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
LPSTR CharPrevA(LPCSTR start, LPCSTR ptr)
|
||||
{
|
||||
if( start==ptr ) return (LPSTR)start;
|
||||
else if( start+1==ptr ) return (LPSTR)start;
|
||||
else if( TRUE==IsDBCSLeadByteEx(CP_ACP, (BYTE)*(ptr-2)) )
|
||||
return (LPSTR)(ptr-2);
|
||||
else
|
||||
return (LPSTR)(ptr-1);
|
||||
}
|
||||
|
||||
/* WinCE doesn't have "drives". */
|
||||
DWORD GetLogicalDrives(VOID)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* WinCE doesn't have "user name". */
|
||||
BOOL GetUserName(LPSTR lpBuffer, LPDWORD nSize)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*------------------- LoadLibrary -----------------------*/
|
||||
HINSTANCE LoadLibraryA(LPCSTR libname)
|
||||
{
|
||||
HINSTANCE h;
|
||||
LPWSTR wlibname;
|
||||
|
||||
wlibname = wce_mbtowc(libname);
|
||||
h = LoadLibraryW(wlibname);
|
||||
free(wlibname);
|
||||
return h;
|
||||
}
|
||||
|
||||
HINSTANCE LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
HINSTANCE h;
|
||||
LPWSTR wlibname;
|
||||
|
||||
wlibname = wce_mbtowc(lpLibFileName);
|
||||
#if _WIN32_WCE < 300
|
||||
h = LoadLibraryW(wlibname);
|
||||
#else
|
||||
h = LoadLibraryExW(wlibname, hFile, dwFlags);
|
||||
#endif
|
||||
free(wlibname);
|
||||
return h;
|
||||
}
|
||||
|
||||
/* WinCE doesn't have "CreatePipe". */
|
||||
BOOL CreatePipe(PHANDLE hReadPipe, PHANDLE hWritePipe,
|
||||
LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* WinCE doesn't have "Standard Devices". */
|
||||
HANDLE GetStdHandle(DWORD nStdHandle)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
BOOL SetStdHandle(DWORD nStdHandle, HANDLE h)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#if _WIN32_WCE < 300
|
||||
VOID ZeroMemory(PVOID p, DWORD length)
|
||||
{
|
||||
memset(p,0,length);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* need in ruby/io.c. */
|
||||
int ReadDataPending()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*---------------- helper functions. ---------------------------- */
|
||||
|
||||
/* char -> wchar_t */
|
||||
wchar_t* wce_mbtowc(const char* a)
|
||||
{
|
||||
int length;
|
||||
wchar_t *wbuf;
|
||||
|
||||
length = MultiByteToWideChar(CP_ACP, 0,
|
||||
a, -1, NULL, 0);
|
||||
wbuf = (wchar_t*)malloc( (length+1)*sizeof(wchar_t) );
|
||||
MultiByteToWideChar(CP_ACP, 0,
|
||||
a, -1, wbuf, length);
|
||||
|
||||
return wbuf;
|
||||
}
|
||||
|
||||
/* wchar_t -> char */
|
||||
char* wce_wctomb(const wchar_t* w)
|
||||
{
|
||||
DWORD charlength;
|
||||
char* pChar;
|
||||
|
||||
charlength = WideCharToMultiByte(CP_ACP, 0, w,
|
||||
-1, NULL, 0, NULL, NULL);
|
||||
pChar = (char*)malloc(charlength+1);
|
||||
WideCharToMultiByte(CP_ACP, 0, w,
|
||||
-1, pChar, charlength, NULL, NULL);
|
||||
|
||||
return pChar;
|
||||
}
|
216
wince/wince.h
Normal file
216
wince/wince.h
Normal file
|
@ -0,0 +1,216 @@
|
|||
|
||||
#ifndef _EXT_CE_
|
||||
#define _EXT_CE_
|
||||
|
||||
/* unique difinition in wince platform. */
|
||||
|
||||
#ifndef _MIPS_
|
||||
#define CONTEXT_FLOATING_POINT 0x00000002L
|
||||
#endif
|
||||
|
||||
/* LockFile difinition. */
|
||||
#define LOCKFILE_FAIL_IMMEDIATELY 0x00000001
|
||||
#define LOCKFILE_EXCLUSIVE_LOCK 0x00000002
|
||||
|
||||
/* Dual Mode difinition. */
|
||||
#define STARTF_USESHOWWINDOW 0x00000001
|
||||
#define STARTF_USESIZE 0x00000002
|
||||
#define STARTF_USEPOSITION 0x00000004
|
||||
#define STARTF_USECOUNTCHARS 0x00000008
|
||||
#define STARTF_USEFILLATTRIBUTE 0x00000010
|
||||
#define STARTF_RUNFULLSCREEN 0x00000020
|
||||
#define STARTF_FORCEONFEEDBACK 0x00000040
|
||||
#define STARTF_FORCEOFFFEEDBACK 0x00000080
|
||||
#define STARTF_USESTDHANDLES 0x00000100
|
||||
/* #define STARTF_USEHOTKEY 0x00000200 */
|
||||
|
||||
#define STD_INPUT_HANDLE (DWORD)-10
|
||||
#define STD_OUTPUT_HANDLE (DWORD)-11
|
||||
#define STD_ERROR_HANDLE (DWORD)-12
|
||||
|
||||
#define NORMAL_PRIORITY_CLASS 0x00000020
|
||||
#define IDLE_PRIORITY_CLASS 0x00000040
|
||||
#define HIGH_PRIORITY_CLASS 0x00000080
|
||||
#define REALTIME_PRIORITY_CLASS 0x00000100
|
||||
|
||||
|
||||
/* WINSOCK.H? */
|
||||
#define SO_SYNCHRONOUS_NONALERT 0x20
|
||||
|
||||
/* MoveFileEx definition. */
|
||||
#define MOVEFILE_REPLACE_EXISTING 0x00000001
|
||||
/*
|
||||
#define MOVEFILE_COPY_ALLOWED 0x00000002
|
||||
#define MOVEFILE_DELAY_UNTIL_REBOOT 0x00000004
|
||||
#define MOVEFILE_WRITE_THROUGH 0x00000008
|
||||
#define MOVEFILE_CREATE_HARDLINK 0x00000010
|
||||
#define MOVEFILE_FAIL_IF_NOT_TRACKABLE 0x00000020
|
||||
*/
|
||||
|
||||
#define _fgetc fgetc
|
||||
#define _fputc fputc
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Win32 API redifinition. */
|
||||
|
||||
#ifdef GetCommandLine
|
||||
#undef GetCommandLine
|
||||
#define GetCommandLine GetCommandLineA
|
||||
#else
|
||||
#define GetCommandLine GetCommandLineA
|
||||
#endif
|
||||
|
||||
#ifdef SetFileAttributes
|
||||
#undef SetFileAttributes
|
||||
#define SetFileAttributes SetFileAttributesA
|
||||
#endif
|
||||
|
||||
#ifdef GetFileAttributes
|
||||
#undef GetFileAttributes
|
||||
#define GetFileAttributes GetFileAttributesA
|
||||
#endif
|
||||
|
||||
#ifdef FormatMessage
|
||||
#undef FormatMessage
|
||||
#define FormatMessage FormatMessageA
|
||||
#endif
|
||||
|
||||
#ifdef GetModuleFileName
|
||||
#undef GetModuleFileName
|
||||
#define GetModuleFileName GetModuleFileNameA
|
||||
#endif
|
||||
|
||||
#ifdef CreateFile
|
||||
#undef CreateFile
|
||||
#define CreateFile CreateFileA
|
||||
#endif
|
||||
|
||||
#ifdef MoveFile
|
||||
#undef MoveFile
|
||||
#define MoveFile MoveFileA
|
||||
#endif
|
||||
|
||||
#ifdef DeleteFile
|
||||
#undef DeleteFile
|
||||
#define DeleteFile DeleteFileA
|
||||
#endif
|
||||
|
||||
#ifdef CreateProcess
|
||||
#undef CreateProcess
|
||||
#define CreateProcess CreateProcessA
|
||||
#endif
|
||||
|
||||
#ifdef CharNext
|
||||
#undef CharNext
|
||||
#define CharNext CharNextA
|
||||
#endif
|
||||
|
||||
#ifdef CharPrev
|
||||
#undef CharPrev
|
||||
#define CharPrev CharPrevA
|
||||
#endif
|
||||
|
||||
#ifdef WIN32_FIND_DATA
|
||||
#undef WIN32_FIND_DATA
|
||||
#define WIN32_FIND_DATA WIN32_FIND_DATAA
|
||||
#endif
|
||||
|
||||
#ifdef FindFirstFile
|
||||
#undef FindFirstFile
|
||||
#define FindFirstFile FindFirstFileA
|
||||
#endif
|
||||
|
||||
#ifdef FindNextFile
|
||||
#undef FindNextFile
|
||||
#define FindNextFile FindNextFileA
|
||||
#endif
|
||||
|
||||
/* stdio.c */
|
||||
FILE *freopen(const char *filename, const char *mode, FILE *file);
|
||||
FILE *_fdopen( int handle, const char *mode );
|
||||
|
||||
#define fdopen _fdopen
|
||||
|
||||
/* stdlib.c */
|
||||
char *getenv(const char *charstuff);
|
||||
char *_fullpath(char *absPath, const char *relPath, size_t maxLength);
|
||||
|
||||
/* string.c */
|
||||
char *strdup(const char * str);
|
||||
/* char *strerror(int errno); */
|
||||
int _strnicmp( const char *s1, const char *s2, size_t count );
|
||||
|
||||
#define strnicmp _strnicmp
|
||||
|
||||
/* for win32.c */
|
||||
BOOL MoveFileEx(LPCSTR oldname, LPCSTR newname, DWORD dwFlags);
|
||||
BOOL DuplicateHandle(
|
||||
HANDLE source_process, HANDLE source,
|
||||
HANDLE dest_process, HANDLE *dest,
|
||||
DWORD access, BOOL inherit, DWORD options);
|
||||
BOOL LockFile(HANDLE hFile,
|
||||
DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh,
|
||||
DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh);
|
||||
BOOL LockFileEx(HANDLE hFile,
|
||||
DWORD dwFlags, DWORD dwReserved,
|
||||
DWORD nNumberOfBytesToLockLow, DWORD nNumberOfBytesToLockHigh,
|
||||
LPOVERLAPPED lpOverlapped);
|
||||
BOOL UnlockFile( HFILE hFile,
|
||||
DWORD dwFileOffsetLow, DWORD dwFileOffsetHigh,
|
||||
DWORD nNumberOfBytesToUnlockLow, DWORD nNumberOfBytesToUnlockHigh);
|
||||
BOOL UnlockFileEx(HANDLE hFile,
|
||||
DWORD dwReserved, DWORD nNumberOfBytesToUnlockLow,
|
||||
DWORD nNumberOfBytesToUnlockHigh, LPOVERLAPPED lpOverlapped);
|
||||
BOOL GetUserName(LPSTR lpBuffer, LPDWORD nSize);
|
||||
BOOL CreatePipe(PHANDLE hReadPipe, PHANDLE hWritePipe,
|
||||
LPSECURITY_ATTRIBUTES lpPipeAttributes, DWORD nSize);
|
||||
HANDLE GetStdHandle(DWORD nStdHandle);
|
||||
BOOL SetStdHandle(DWORD nStdHandle, HANDLE h);
|
||||
DWORD GetLogicalDrives(VOID);
|
||||
DWORD WaitForMultipleObjectsEx(DWORD count,
|
||||
const HANDLE *handles, BOOL wait_all,
|
||||
DWORD timeout, BOOL alertable);
|
||||
DWORD GetEnvironmentVariable(LPCSTR name, LPSTR value, DWORD size);
|
||||
LPVOID GetEnvironmentStrings(VOID);
|
||||
BOOL FreeEnvironmentStrings(LPSTR lpszEnvironmentBlock);
|
||||
BOOL GenerateConsoleCtrlEvent(DWORD dwCtrlEvent,
|
||||
DWORD dwProcessGroupID);
|
||||
BOOL GetProcessTimes(HANDLE hprocess,
|
||||
LPFILETIME lpCreationTime, LPFILETIME lpExitTime,
|
||||
LPFILETIME lpKernelTime, LPFILETIME lpUserTime);
|
||||
|
||||
/* char -> wchar_t, wchar_t -> char */
|
||||
wchar_t* wce_mbtowc(const char* a);
|
||||
char* wce_wctomb(const wchar_t* w);
|
||||
/* other helpers. */
|
||||
void wce_SetCommandLine(LPCWSTR wcmd);
|
||||
void wce_FreeCommandLine(void);
|
||||
|
||||
#if _WIN32_WCE < 300
|
||||
/* for Handheld PC Pro. */
|
||||
char *strrchr( const char *p, int c );
|
||||
int _stricmp( const char *p1, const char *p2 );
|
||||
VOID ZeroMemory(PVOID p, DWORD length);
|
||||
|
||||
#define isascii(c) ( (c>=0x00&&c<=0x7f)?1:0 )
|
||||
#define isspace(c) ( ((c>=0x09&&c<=0x0d)||c==0x20)?1:0 )
|
||||
#define isdigit(c) ( (c>=0x00&&c<=0x09)?1:0 )
|
||||
#define isupper(c) ( (c>='A'&&c<='Z')?1:0 )
|
||||
#define isalpha(c) ( ((c>='A'&&c<='Z')||(c>='a'&&c<='z'))?1:0 )
|
||||
#define isprint(c) ( (c>=0x20&&c<=0x7e)?1:0 )
|
||||
#define isalnum(c) ( (isalpha(c)||isdigit(c))?1:0 )
|
||||
#define iscntrl(c) ( ((c>=0x00&&c<=0x1f)||c==0x7f)?1:0 )
|
||||
#define islower(c) ( (c>='a'&&c<='z')?1:0 )
|
||||
#define ispunct(c) ( !(isalnum(c)||isspace(c))?1:0 )
|
||||
#define isxdigit(c) ( ((c>=0&&c<=9)||(c>='A'&&c<='F')||(c>='a'&&c<='f'))?1:0 )
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _EXT_CE_ */
|
16
wince/wincemain.c
Normal file
16
wince/wincemain.c
Normal file
|
@ -0,0 +1,16 @@
|
|||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include "wince.h"
|
||||
|
||||
extern int main(int, char**, char**);
|
||||
|
||||
int WINAPI
|
||||
WinMain(HINSTANCE current, HINSTANCE prev, LPWSTR wcmd, int showcmd)
|
||||
{
|
||||
/* wchar_t -> char */
|
||||
wce_SetCommandLine(wcmd);
|
||||
|
||||
/* main. */
|
||||
return main(0, NULL, NULL);
|
||||
}
|
||||
|
7
wince/wincon.h
Normal file
7
wince/wincon.h
Normal file
|
@ -0,0 +1,7 @@
|
|||
|
||||
#ifndef _WINCON_H_
|
||||
#define _WINCON_H_
|
||||
|
||||
#define CTRL_C_EVENT 0
|
||||
|
||||
#endif
|
338
wince/winsock2.c
Normal file
338
wince/winsock2.c
Normal file
|
@ -0,0 +1,338 @@
|
|||
/***************************************************************
|
||||
winsock2.c
|
||||
***************************************************************/
|
||||
|
||||
//#define _WINSOCK2_C_DEBUG_MAIN_
|
||||
|
||||
#include <windows.h>
|
||||
#include "wince.h"
|
||||
#ifdef _WINSOCK2_C_DEBUG_MAIN_
|
||||
#include <winsock.h>
|
||||
#endif
|
||||
|
||||
#ifndef _WINSOCK2_C_DEBUG_MAIN_
|
||||
struct servent{
|
||||
char* s_name; /* official service name */
|
||||
char** s_aliases; /* alias list */
|
||||
short s_port; /* port # */
|
||||
char* s_proto; /* protocol to use */
|
||||
};
|
||||
struct protoent{
|
||||
char* p_name; /* official protocol name */
|
||||
char** p_aliases; /* alias list */
|
||||
short p_proto; /* protocol # */
|
||||
};
|
||||
#endif
|
||||
|
||||
struct sproto{
|
||||
short num;
|
||||
char name[10];
|
||||
};
|
||||
struct sserv{
|
||||
short num;
|
||||
char protoname[10];
|
||||
char servname[20];
|
||||
};
|
||||
|
||||
static struct sproto _proto_table[11]={
|
||||
0, "ip",
|
||||
1, "icmp",
|
||||
3, "ggp",
|
||||
6, "tcp",
|
||||
8, "egp",
|
||||
12, "pup",
|
||||
17, "udp",
|
||||
20, "hmp",
|
||||
22, "xns-idp",
|
||||
27, "rdp",
|
||||
66, "rvd",
|
||||
};
|
||||
|
||||
static struct sserv _serv_table[142]={
|
||||
7, "tcp", "echo",
|
||||
7, "udp", "echo",
|
||||
9, "tcp", "discard",
|
||||
9, "udp", "discard",
|
||||
11, "tcp", "systat",
|
||||
11, "udp", "systat",
|
||||
13, "tcp", "daytime",
|
||||
13, "udp", "daytime",
|
||||
15, "tcp", "netstat",
|
||||
17, "tcp", "qotd",
|
||||
17, "udp", "qotd",
|
||||
19, "tcp", "chargen",
|
||||
19, "udp", "chargen",
|
||||
20, "tcp", "ftp-data",
|
||||
21, "tcp", "ftp",
|
||||
23, "tcp", "telnet",
|
||||
25, "tcp", "smtp",
|
||||
37, "tcp", "time",
|
||||
37, "udp", "time",
|
||||
39, "udp", "rlp",
|
||||
42, "tcp", "name",
|
||||
42, "udp", "name",
|
||||
43, "tcp", "whois",
|
||||
53, "tcp", "domain",
|
||||
53, "udp", "domain",
|
||||
53, "tcp", "nameserver",
|
||||
53, "udp", "nameserver",
|
||||
57, "tcp", "mtp",
|
||||
67, "udp", "bootp",
|
||||
69, "udp", "tftp",
|
||||
77, "tcp", "rje",
|
||||
79, "tcp", "finger",
|
||||
87, "tcp", "link",
|
||||
95, "tcp", "supdup",
|
||||
101, "tcp", "hostnames",
|
||||
102, "tcp", "iso-tsap",
|
||||
103, "tcp", "dictionary",
|
||||
103, "tcp", "x400",
|
||||
104, "tcp", "x400-snd",
|
||||
105, "tcp", "csnet-ns",
|
||||
109, "tcp", "pop",
|
||||
109, "tcp", "pop2",
|
||||
110, "tcp", "pop3",
|
||||
111, "tcp", "portmap",
|
||||
111, "udp", "portmap",
|
||||
111, "tcp", "sunrpc",
|
||||
111, "udp", "sunrpc",
|
||||
113, "tcp", "auth",
|
||||
115, "tcp", "sftp",
|
||||
117, "tcp", "path",
|
||||
117, "tcp", "uucp-path",
|
||||
119, "tcp", "nntp",
|
||||
123, "udp", "ntp",
|
||||
137, "udp", "nbname",
|
||||
138, "udp", "nbdatagram",
|
||||
139, "tcp", "nbsession",
|
||||
144, "tcp", "NeWS",
|
||||
153, "tcp", "sgmp",
|
||||
158, "tcp", "tcprepo",
|
||||
161, "tcp", "snmp",
|
||||
162, "tcp", "snmp-trap",
|
||||
170, "tcp", "print-srv",
|
||||
175, "tcp", "vmnet",
|
||||
315, "udp", "load",
|
||||
400, "tcp", "vmnet0",
|
||||
500, "udp", "sytek",
|
||||
512, "udp", "biff",
|
||||
512, "tcp", "exec",
|
||||
513, "tcp", "login",
|
||||
513, "udp", "who",
|
||||
514, "tcp", "shell",
|
||||
514, "udp", "syslog",
|
||||
515, "tcp", "printer",
|
||||
517, "udp", "talk",
|
||||
518, "udp", "ntalk",
|
||||
520, "tcp", "efs",
|
||||
520, "udp", "route",
|
||||
525, "udp", "timed",
|
||||
526, "tcp", "tempo",
|
||||
530, "tcp", "courier",
|
||||
531, "tcp", "conference",
|
||||
531, "udp", "rvd-control",
|
||||
532, "tcp", "netnews",
|
||||
533, "udp", "netwall",
|
||||
540, "tcp", "uucp",
|
||||
543, "tcp", "klogin",
|
||||
544, "tcp", "kshell",
|
||||
550, "udp", "new-rwho",
|
||||
556, "tcp", "remotefs",
|
||||
560, "udp", "rmonitor",
|
||||
561, "udp", "monitor",
|
||||
600, "tcp", "garcon",
|
||||
601, "tcp", "maitrd",
|
||||
602, "tcp", "busboy",
|
||||
700, "udp", "acctmaster",
|
||||
701, "udp", "acctslave",
|
||||
702, "udp", "acct",
|
||||
703, "udp", "acctlogin",
|
||||
704, "udp", "acctprinter",
|
||||
704, "udp", "elcsd",
|
||||
705, "udp", "acctinfo",
|
||||
706, "udp", "acctslave2",
|
||||
707, "udp", "acctdisk",
|
||||
750, "tcp", "kerberos",
|
||||
750, "udp", "kerberos",
|
||||
751, "tcp", "kerberos_master",
|
||||
751, "udp", "kerberos_master",
|
||||
752, "udp", "passwd_server",
|
||||
753, "udp", "userreg_server",
|
||||
754, "tcp", "krb_prop",
|
||||
888, "tcp", "erlogin",
|
||||
1109, "tcp", "kpop",
|
||||
1167, "udp", "phone",
|
||||
1524, "tcp", "ingreslock",
|
||||
1666, "udp", "maze",
|
||||
2049, "udp", "nfs",
|
||||
2053, "tcp", "knetd",
|
||||
2105, "tcp", "eklogin",
|
||||
5555, "tcp", "rmt",
|
||||
5556, "tcp", "mtb",
|
||||
9535, "tcp", "man",
|
||||
9536, "tcp", "w",
|
||||
9537, "tcp", "mantst",
|
||||
10000, "tcp", "bnews",
|
||||
10000, "udp", "rscs0",
|
||||
10001, "tcp", "queue",
|
||||
10001, "udp", "rscs1",
|
||||
10002, "tcp", "poker",
|
||||
10002, "udp", "rscs2",
|
||||
10003, "tcp", "gateway",
|
||||
10003, "udp", "rscs3",
|
||||
10004, "tcp", "remp",
|
||||
10004, "udp", "rscs4",
|
||||
10005, "udp", "rscs5",
|
||||
10006, "udp", "rscs6",
|
||||
10007, "udp", "rscs7",
|
||||
10008, "udp", "rscs8",
|
||||
10009, "udp", "rscs9",
|
||||
10010, "udp", "rscsa",
|
||||
10011, "udp", "rscsb",
|
||||
10012, "tcp", "qmaster",
|
||||
10012, "udp", "qmaster",
|
||||
};
|
||||
|
||||
/* WinCE doesn't have /etc/protocols. */
|
||||
struct protoent* getprotobyname(const char* name)
|
||||
{
|
||||
static struct protoent pe;
|
||||
int i;
|
||||
int len = strlen(name);
|
||||
|
||||
memset( &pe, 0, sizeof(struct protoent) );
|
||||
|
||||
for(i=0; i<9; i++)
|
||||
{
|
||||
if( 0==strnicmp(_proto_table[i].name, name, len) )
|
||||
{
|
||||
pe.p_name = _proto_table[i].name;
|
||||
pe.p_proto= _proto_table[i].num;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return &pe;
|
||||
}
|
||||
|
||||
struct protoent* getprotobynumber(int proto)
|
||||
{
|
||||
static struct protoent pe={0};
|
||||
int i;
|
||||
|
||||
memset( &pe, 0, sizeof(struct protoent) );
|
||||
|
||||
for(i=0; i<9; i++)
|
||||
{
|
||||
if( proto == _proto_table[i].num )
|
||||
{
|
||||
pe.p_name = _proto_table[i].name;
|
||||
pe.p_proto= _proto_table[i].num;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return &pe;
|
||||
}
|
||||
|
||||
/* WinCE doesn't have /etc/services. */
|
||||
struct servent* getservbyname(const char* name,
|
||||
const char* proto)
|
||||
{
|
||||
static struct servent se;
|
||||
int i;
|
||||
int slen = strlen(name), plen = strlen(proto);
|
||||
|
||||
memset( &se, 0, sizeof(struct servent) );
|
||||
|
||||
if( proto==NULL ) return NULL;
|
||||
if( 0!=strnicmp( proto, "tcp", 3 ) &&
|
||||
0!=strnicmp( proto, "udp", 3 ) )
|
||||
return NULL;
|
||||
|
||||
for( i=0; i<142; i++ )
|
||||
{
|
||||
if( 0==strnicmp( name, _serv_table[i].servname, slen ) &&
|
||||
0==strnicmp( proto, _serv_table[i].protoname, plen ) )
|
||||
{
|
||||
char hc, lc;
|
||||
se.s_name = _serv_table[i].servname;
|
||||
se.s_proto= _serv_table[i].protoname;
|
||||
hc = (_serv_table[i].num&0xFF00)>>8;
|
||||
lc = _serv_table[i].num&0xFF;
|
||||
se.s_port = (lc<<8) + hc;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return &se;
|
||||
}
|
||||
|
||||
struct servent* getservbyport(int port, const char* proto)
|
||||
{
|
||||
static struct servent se;
|
||||
int i;
|
||||
int plen = strlen(proto);
|
||||
short sport;
|
||||
char lc, hc;
|
||||
|
||||
hc = (port&0xFF00)>>8;
|
||||
lc = port&0xFF;
|
||||
|
||||
sport = (lc<<8) + hc;
|
||||
|
||||
memset( &se, 0, sizeof(struct servent) );
|
||||
|
||||
if( proto==NULL ) return NULL;
|
||||
if( 0!=strnicmp( proto, "tcp", 3 ) &&
|
||||
0!=strnicmp( proto, "udp", 3 ) )
|
||||
return NULL;
|
||||
|
||||
for( i=0; i<142; i++ )
|
||||
{
|
||||
if( sport == _serv_table[i].num &&
|
||||
0==strnicmp( proto, _serv_table[i].protoname, plen ) )
|
||||
{
|
||||
se.s_name = _serv_table[i].servname;
|
||||
se.s_proto= _serv_table[i].protoname;
|
||||
se.s_port = port;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return &se;
|
||||
}
|
||||
|
||||
|
||||
#ifdef _WINSOCK2_C_DEBUG_MAIN_
|
||||
|
||||
int main()
|
||||
{
|
||||
WORD wVersionRequested = MAKEWORD(1,1);
|
||||
WSADATA wsaData;
|
||||
int nErrorStatus;
|
||||
struct protoent pe1, pe2;
|
||||
struct servent se1, se2;
|
||||
|
||||
nErrorStatus = WSAStartup(wVersionRequested, &wsaData);
|
||||
if(nErrorStatus != 0)
|
||||
return -1;
|
||||
|
||||
pe1 = *getprotobyname("UDP");
|
||||
pe2 = *_getprotobyname("UDP");
|
||||
|
||||
// pe1 = *getprotobynumber(17);
|
||||
// pe2 = *_getprotobynumber(17);
|
||||
|
||||
// se1 = *getservbyname("gateway", "tcp");
|
||||
// se2 = *_getservbyname("gateway", "tcp");
|
||||
|
||||
se1 = *getservbyport(0x1327, "tcp");
|
||||
se2 = *_getservbyport(0x1327, "tcp");
|
||||
|
||||
WSACleanup();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue