From 7ea2ceddb832b9973694fecac9fe3c30400735ba Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 16 Jan 1998 12:19:22 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r11, which included commits to RCS files with non-trunk default branches. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/Setup | 2 +- ext/curses/curses.c | 67 ++++----- ext/dbm/dbm.c | 8 +- ext/dbm/depend | 2 +- ext/etc/depend | 2 +- ext/extmk.rb.in | 76 ++++++---- ext/extmk.rb.nt | 115 ++++++++------ ext/fcntl/depend | 2 +- ext/kconv/depend | 2 +- ext/kconv/kconv.c | 122 ++++++++++++--- ext/md5/depend | 2 +- ext/socket/depend | 2 +- ext/socket/extconf.rb | 17 ++- ext/socket/socket.c | 404 +++++++++++++++++++++++++++++++++++++------------- ext/tkutil/depend | 2 +- 15 files changed, 564 insertions(+), 261 deletions(-) (limited to 'ext') diff --git a/ext/Setup b/ext/Setup index a5dd7978c3..c92ac53e00 100644 --- a/ext/Setup +++ b/ext/Setup @@ -6,7 +6,7 @@ #etc #fcntl #kconv -#marshal #md5 #socket #tkutil +#tcltklib diff --git a/ext/curses/curses.c b/ext/curses/curses.c index 6e8e49684f..3ae8db192d 100644 --- a/ext/curses/curses.c +++ b/ext/curses/curses.c @@ -32,7 +32,8 @@ struct windata { WINDOW *window; }; -#define NUM2CHAR(x) (char)NUM2INT(x) +#define NUM2CHAR(x) ((TYPE(x) == T_STRING)&&(RSTRING(x)->len>=1))?\ + RSTRING(x)->ptr[0]:(char)NUM2INT(x) #define CHAR2FIX(x) INT2FIX((int)x) static void @@ -46,13 +47,7 @@ no_window() if (winp->window == 0) no_window();\ } -static void -curses_err() -{ - Fail("curses error"); -} - -#define CHECK(c) if ((c)==ERR) {curses_err();} +#define CHECK(c) c static void free_window(winp) @@ -99,7 +94,7 @@ curses_init_screen() static VALUE curses_stdscr() { - if (!rb_stdscr) curses_init_screen(); + if (rb_stdscr == 0) curses_init_screen(); return rb_stdscr; } @@ -107,7 +102,7 @@ curses_stdscr() static VALUE curses_close_screen() { - CHECK(endwin()); + endwin(); return Qnil; } @@ -139,7 +134,7 @@ static VALUE curses_refresh(obj) VALUE obj; { - CHECK(refresh()); + refresh(); return Qnil; } @@ -148,7 +143,7 @@ static VALUE curses_doupdate(obj) VALUE obj; { - CHECK(doupdate()); + doupdate(); return Qnil; } @@ -157,7 +152,7 @@ static VALUE curses_echo(obj) VALUE obj; { - CHECK(echo()); + echo(); return Qnil; } @@ -166,7 +161,7 @@ static VALUE curses_noecho(obj) VALUE obj; { - CHECK(noecho()); + noecho(); return Qnil; } @@ -175,7 +170,7 @@ static VALUE curses_raw(obj) VALUE obj; { - CHECK(raw()); + raw(); return Qnil; } @@ -184,7 +179,7 @@ static VALUE curses_noraw(obj) VALUE obj; { - CHECK(noraw()); + noraw(); return Qnil; } @@ -193,7 +188,7 @@ static VALUE curses_cbreak(obj) VALUE obj; { - CHECK(cbreak()); + cbreak(); return Qnil; } @@ -202,7 +197,7 @@ static VALUE curses_nocbreak(obj) VALUE obj; { - CHECK(nocbreak()); + nocbreak(); return Qnil; } @@ -211,7 +206,7 @@ static VALUE curses_nl(obj) VALUE obj; { - CHECK(nl()); + nl(); return Qnil; } @@ -220,7 +215,7 @@ static VALUE curses_nonl(obj) VALUE obj; { - CHECK(nonl()); + nonl(); return Qnil; } @@ -251,7 +246,7 @@ curses_ungetch(obj, ch) VALUE ch; { #ifdef HAVE_UNGETCH - CHECK(ungetch(NUM2INT(ch))); + ungetch(NUM2INT(ch)); #else rb_notimplement(); #endif @@ -265,7 +260,7 @@ curses_setpos(obj, y, x) VALUE y; VALUE x; { - CHECK(move(NUM2INT(y), NUM2INT(x))); + move(NUM2INT(y), NUM2INT(x)); return Qnil; } @@ -301,7 +296,7 @@ curses_addch(obj, ch) VALUE obj; VALUE ch; { - CHECK(addch(NUM2CHAR(ch))); + addch(NUM2CHAR(ch)); return Qnil; } @@ -311,7 +306,7 @@ curses_insch(obj, ch) VALUE obj; VALUE ch; { - CHECK(insch(NUM2CHAR(ch))); + insch(NUM2CHAR(ch)); return Qnil; } @@ -339,7 +334,7 @@ curses_getstr(obj) VALUE obj; { char rtn[1024]; /* This should be big enough.. I hope */ - CHECK(getstr(rtn)); + getstr(rtn); return str_taint(str_new2(rtn)); } @@ -348,7 +343,7 @@ static VALUE curses_delch(obj) VALUE obj; { - CHECK(delch()); + delch(); return Qnil; } @@ -357,7 +352,7 @@ static VALUE curses_deleteln(obj) VALUE obj; { - CHECK(deleteln()); + deleteln(); return Qnil; } @@ -443,7 +438,7 @@ window_refresh(obj) struct windata *winp; GetWINDOW(obj, winp); - CHECK(wrefresh(winp->window)); + wrefresh(winp->window); return Qnil; } @@ -474,7 +469,7 @@ window_move(obj, y, x) struct windata *winp; GetWINDOW(obj, winp); - CHECK(mvwin(winp->window, NUM2INT(y), NUM2INT(x))); + mvwin(winp->window, NUM2INT(y), NUM2INT(x)); return Qnil; } @@ -489,7 +484,7 @@ window_setpos(obj, y, x) struct windata *winp; GetWINDOW(obj, winp); - CHECK(wmove(winp->window, NUM2INT(y), NUM2INT(x))); + wmove(winp->window, NUM2INT(y), NUM2INT(x)); return Qnil; } @@ -639,7 +634,7 @@ window_addch(obj, ch) struct windata *winp; GetWINDOW(obj, winp); - CHECK(waddch(winp->window, NUM2CHAR(ch))); + waddch(winp->window, NUM2CHAR(ch)); return Qnil; } @@ -653,7 +648,7 @@ window_insch(obj, ch) struct windata *winp; GetWINDOW(obj, winp); - CHECK(winsch(winp->window, NUM2CHAR(ch))); + winsch(winp->window, NUM2CHAR(ch)); return Qnil; } @@ -667,7 +662,7 @@ window_addstr(obj, str) struct windata *winp; GetWINDOW(obj, winp); - CHECK(waddstr(winp->window, RSTRING(str)->ptr)); + waddstr(winp->window, RSTRING(str)->ptr); return Qnil; } @@ -702,7 +697,7 @@ window_getstr(obj) char rtn[1024]; /* This should be big enough.. I hope */ GetWINDOW(obj, winp); - CHECK(wgetstr(winp->window, rtn)); + wgetstr(winp->window, rtn); return str_taint(str_new2(rtn)); } @@ -714,7 +709,7 @@ window_delch(obj) struct windata *winp; GetWINDOW(obj, winp); - CHECK(wdelch(winp->window)); + wdelch(winp->window); return Qnil; } @@ -726,7 +721,7 @@ window_deleteln(obj) struct windata *winp; GetWINDOW(obj, winp); - CHECK(wdeleteln(winp->window)); + wdeleteln(winp->window); return Qnil; } diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c index ea0ac1930f..b416802241 100644 --- a/ext/dbm/dbm.c +++ b/ext/dbm/dbm.c @@ -122,17 +122,15 @@ fdbm_fetch(obj, keystr) } static VALUE -fdbm_indexes(obj, args) - VALUE obj; - struct RArray *args; +fdbm_indexes(obj, ag) + VALUE obj, ag; { VALUE *p, *pend; VALUE new; int i = 0; + struct RArray *args = RARRAY(rb_Array(ag)); - args = (struct RArray*)rb_to_a(args); new = ary_new2(args->len); - p = args->ptr; pend = p + args->len; while (p < pend) { ary_push(new, fdbm_fetch(obj, *p++)); diff --git a/ext/dbm/depend b/ext/dbm/depend index 40139962a7..d7f1f419d4 100644 --- a/ext/dbm/depend +++ b/ext/dbm/depend @@ -1 +1 @@ -dbm.o: dbm.c ../../ruby.h ../../config.h ../../defines.h +dbm.o: dbm.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h diff --git a/ext/etc/depend b/ext/etc/depend index 5c95ef117a..fb3318a0c6 100644 --- a/ext/etc/depend +++ b/ext/etc/depend @@ -1 +1 @@ -etc.o : etc.c ../../ruby.h ../../config.h ../../defines.h +etc.o : etc.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h diff --git a/ext/extmk.rb.in b/ext/extmk.rb.in index 78fe3070a2..e1d318d19c 100644 --- a/ext/extmk.rb.in +++ b/ext/extmk.rb.in @@ -1,5 +1,7 @@ #! /usr/local/bin/ruby +$".push 'mkmf.rb' + if ARGV[0] == 'static' $force_static = TRUE ARGV.shift @@ -21,16 +23,17 @@ $topdir = "@top_srcdir@" if $topdir !~ "^/" # get absolute path save = Dir.pwd - Dir.chdir ".." + Dir.chdir $topdir $topdir = Dir.pwd Dir.chdir save end +$dots = if "@INSTALL@" =~ /^\// then "" else "#{$topdir}/ext/" end if File.exist?("config.cache") then f = open("config.cache", "r") while f.gets case $_ - when /^lib: ([\w_]+) (yes|no)/ + when /^lib: (.+) (yes|no)/ $lib_cache[$1] = $2 when /^func: ([\w_]+) (yes|no)/ $func_cache[$1] = $2 @@ -215,6 +218,8 @@ SHELL = /bin/sh srcdir = #{$srcdir} VPATH = #{$srcdir} +hdrdir = #{$topdir} + CC = @CC@ CFLAGS = %s -I#{$topdir} %s #$CFLAGS %s @@ -233,20 +238,22 @@ libdir = @libdir@/$(RUBY_INSTALL_NAME)/@arch@ @SET_MAKE@ #### End of system configuration section. #### + " mfile.printf "LOCAL_LIBS = %s\n", $local_libs if $local_libs mfile.printf "LIBS = %s\n", $libs mfile.printf "OBJS = " if !$objs then - $objs = Dir["#{$topdir}/ext/#{target}/*.c"] - for f in $objs - f.sub!(/\.c$/, ".o") + $objs = [] + for f in Dir["#{$topdir}/ext/#{target}/*.{c,cc}"] + f = File.basename(f) + f.sub!(/\.(c|cc)$/, ".o") + $objs.push f end end mfile.printf $objs.join(" ") mfile.printf "\n" - dots = if "@INSTALL@" =~ /^\// then "" else "#{$topdir}/ext/" end mfile.printf "\ TARGET = %s.%s @@ -262,28 +269,29 @@ clean:; @rm -f *.o *.so *.sl realclean: clean ", target, - if $static then "o" else "@DLEXT@" end, dots + if $static then "o" else "@DLEXT@" end, $dots - if !$static - mfile.printf "\ + mfile.printf "\ install: +" + if !$static + mfile.printf " @test -d $(libdir) || mkdir $(libdir) $(INSTALL) $(TARGET) $(libdir)/$(TARGET) -" - else - mfile.printf "\ - -install:; " end + for rb in Dir["lib/*.rb"] + mfile.printf "\t$(INSTALL) %s @libdir@/$(RUBY_INSTALL_NAME)\n", rb + end + mfile.printf "\n" if !$static && "@DLEXT@" != "o" mfile.printf "\ $(TARGET): $(OBJS) $(LDSHARED) $(DLDFLAGS) -o $(TARGET) $(OBJS) $(LOCAL_LIBS) $(LIBS) " - elsif not File.exist?(target + ".c") + elsif not File.exist?(target + ".c") and not File.exist?(target + ".cc") if PLATFORM == "m68k-human" mfile.printf "\ $(TARGET): $(OBJS) @@ -316,9 +324,6 @@ $(TARGET): $(OBJS) dfile.close end mfile.close - if $static - $extlist.push [$static,target] - end end def extmake(target) @@ -343,16 +348,19 @@ def extmake(target) !File.exist?("./Makefile") || older("./Makefile", "#{$topdir}/ext/@setup@") || older("./Makefile", "../extmk.rb") || - older("./Makefile", "./extconf.rb") + older("./Makefile", "#{$topdir}/ext/#{target}/extconf.rb") then $defs = [] - if File.exist?("extconf.rb") - load "extconf.rb" + if File.exist?("#{$topdir}/ext/#{target}/extconf.rb") + load "#{$topdir}/ext/#{target}/extconf.rb" else create_makefile(target); end end if File.exist?("./Makefile") + if $static + $extlist.push [$static,target] + end if $install system "make install" elsif $clean @@ -373,19 +381,22 @@ end # get static-link modules $static_ext = {} -if File.file? "#{$topdir}/ext/@setup@" - f = open("#{$topdir}/ext/@setup@") - while f.gets() - $_.chop! - sub!(/#.*$/, '') - next if /^\s*$/ - if /^option +nodynamic/ - $nodynamic = TRUE - next +for setup in ["@setup@", "#{$topdir}/ext/@setup@"] + if File.file? setup + f = open(setup) + while f.gets() + $_.chop! + sub!(/#.*$/, '') + next if /^\s*$/ + if /^option +nodynamic/ + $nodynamic = TRUE + next + end + $static_ext[$_.split[0]] = TRUE end - $static_ext[$_.split[0]] = TRUE + f.close + break end - f.close end for d in Dir["#{$topdir}/ext/*"] @@ -418,6 +429,7 @@ if $cache_mod end exit if $install or $clean +$extinit += "" if $extlist.size > 0 for s,t in $extlist f = format("%s/%s.o", s, t) diff --git a/ext/extmk.rb.nt b/ext/extmk.rb.nt index 04b9e4071d..6792f2717b 100644 --- a/ext/extmk.rb.nt +++ b/ext/extmk.rb.nt @@ -18,7 +18,8 @@ $lib_cache = {} $func_cache = {} $hdr_cache = {} -$dllopt = '-MD' +#$dllopt = '-MD' +$dllopt = '' if File.exist?("config.cache") then f = open("config.cache", "r") @@ -48,11 +49,15 @@ def older(file1, file2) return FALSE end -LINK = "cl -o conftest -I../.. -Zi -O -I. %s %s conftest.c %s > nul" -CPP = "cl -E -I../.. -I../../missing -I. -Zi -O %s conftest.c > nul" +#LINK = "cl -o conftest.exe -I../.. -Zi -O -I. %s conftest.c %s > nul" +LINK = "cl -o conftest.exe -Zi -O %s conftest.c %s > nul" +CPP = "cl -E -I../.. -I../../missing -I../../win32 -I. -Zi -O %s conftest.c > nul" def try_link(libs) - system(format(LINK, $CFLAGS, $LDFLAGS, libs)) + #print(format("try #{LINK}", $CFLAGS, $LDFLAGS, libs)) + #system(format(LINK, $CFLAGS, $LDFLAGS, libs)) + print(format("try #{LINK}\n", $CFLAGS, libs)) + system(format(LINK, $CFLAGS, libs)) end def try_cpp @@ -60,12 +65,13 @@ def try_cpp end def have_library(lib, func) + #print format("have_library(%s, %s)\n", lib, func) if $lib_cache[lib] if $lib_cache[lib] == "yes" - if $libs - $libs = "-l" + lib + " " + $libs + if $libs# + $libs = lib + ".lib " + $libs else - $libs = "-l" + lib + $libs = lib + ".lib " end return TRUE else @@ -75,6 +81,8 @@ def have_library(lib, func) cfile = open("conftest.c", "w") cfile.printf "\ +#include +#include int main() { return 0; } int t() { %s(); return 0; } ", func @@ -86,7 +94,9 @@ int t() { %s(); return 0; } else libs = lib + ".lib" end + #print "libs=#{libs}\n" unless try_link(libs) + #print "fail : #{libs}\n" $lib_cache[lib] = 'no' $cache_mod = TRUE return FALSE @@ -113,7 +123,9 @@ def have_func(func) cfile = open("conftest.c", "w") cfile.printf "\ -char %s(); +#include +#include +//char %s(); int main() { return 0; } int t() { %s(); return 0; } ", func, func @@ -123,6 +135,7 @@ int t() { %s(); return 0; } libs = "" if libs == nil begin + #print "libs=#{libs}\n" unless try_link(libs) $func_cache[func] = 'no' $cache_mod = TRUE @@ -186,7 +199,7 @@ def create_makefile(target) if $libs and "obj" == "obj" libs = $libs.split for lib in libs - lib.sub!(/(.*)/, '"lib\1.lib"') + lib.sub!(/(.*)/, '"\1.lib"') if /.lib$/ !~ lib end $defs.push(format("-DEXTLIB='%s'", libs.join(","))) end @@ -203,7 +216,7 @@ VPATH = . CC = cl -CFLAGS = %s -I../.. -I../../missing -I. -O -DNT %s #$CFLAGS %s +CFLAGS = %s -I../.. -I../../missing -I../../win32 -I. -O -DNT %s #$CFLAGS %s RUBYLIB = ../../ruby.lib DLDFLAGS = /DLL @@ -211,9 +224,9 @@ LDSHARED = ", if $static then "" else "-fpic" end, $dllopt, $defs.join(" ") if $force_static - print "static\n" + print "static\n" else - print "non static\n" + print "non static\n" end mfile.printf "\ @@ -245,7 +258,7 @@ DEFFILE = %s.def all: $(TARGET) -clean:; @rm -f *.obj *.lib *.exp *.pdb *.bak +clean:; @rm -f *.obj *.lib *.exp vc*.pdb *.bak *.def @rm -f Makefile extconf.h conftest.* realclean: clean @@ -274,8 +287,8 @@ $(TARGET): $(OBJS) lib /OUT:$(TARGET) $(OBJS) " else - mfile.printf "\ -$(DEFFILE): + mfile.printf "\ +$(DEFFILE): echo $(DEFFILE) $(TARGET): $(OBJS) $(DEFFILE) @@ -293,11 +306,28 @@ $(TARGET): $(OBJS) $(DEFFILE) end mfile.close if $static - printf format("push %s,%s\n", $static, target); ##debug print## + #printf format("push %s,%s\n", $static, target); ##debug print## $extlist.push [$static,target] end end +#template of .def file. +def create_def(basename) + defname = sprintf("%s.def", basename) + f = open(defname, "w") + f.printf "\ +LIBRARY %s.dll +CODE LOADONCALL +DATA LOADONCALL +DESCRIPTION 'win32 %s.dll' +EXPORTS + + Init_%s +", basename, basename, basename + f.close + +end + def extmake(target) if $force_static or $static_ext[target] $static = target @@ -328,6 +358,11 @@ def extmake(target) create_makefile(target); end end + + if !File.exist?("#{target}.def") + create_def(target) + end + if File.exist?("./Makefile") if $install system "nmake install" @@ -339,10 +374,12 @@ def extmake(target) elsif $clean system "nmake clean" else + #print "!!!make!!!\n" system "nmake all" end end if $static + #$extlibs = " " $extlibs += " " + $LDFLAGS if $LDFLAGS $extlibs += " " + $local_libs if $local_libs $extlibs += " " + $libs if $libs @@ -360,7 +397,8 @@ if File.file? "./Setup" $_.chop! sub!(/#.*$/, '') next if /^\s*$/ - print $_, "\n" + #print $_, "\n" + if /^option +nodynamic/ $nodynamic = TRUE next @@ -401,20 +439,19 @@ end exit if $install or $clean if $extlist.size > 0 - #for s,t in $extlist - for s,t in $static_ext + for s,t in $extlist + #for s,t in $static_ext #f = format("%s/%s.obj", s, t) #f = format("%s/%s.obj", s, s) - l = format("%s/%s.lib", s, s) - #print format("%s/%s.obj\n", s, s) ##debug print## + l = format("%s/%s.lib", s, s) if File.exist?(l) $extinit += format("\ \tInit_%s();\n\ \trb_provide(\"%s.o\");\n\ ", s, s) $extobjs += "ext/" - #$extobjs += f # *.obj - $extobjs += l # *.lib + #$extobjs += f # *.obj + $extobjs += l # *.lib $extobjs += " " else FALSE @@ -441,7 +478,12 @@ if $extlist.size > 0 end $extobjs = "ext/extinit.obj " + $extobjs - $extlibs = "" + #$extlibs = "" + #print "EXTLIBS=#{$extlibs}\n" + $extlibs.gsub!("-L/usr/local/lib", "") if $extlibs + $extlibs.gsub!(" +", " ") if $extlibs + #print "EXTLIBS=#{$extlibs}\n" + system format('nmake ruby.exe EXTOBJS="%s" EXTLIBS="%s"', $extobjs, $extlibs) else Dir.chdir ".." @@ -450,31 +492,6 @@ else `cp miniruby.exe ruby.exe` end end - -#template of .def file. -#LIBRARY kconv.dll -#CODE LOADONCALL -#DATA LOADONCALL -#DESCRIPTION 'win32 kconv.dll' -#EXPORTS -# -# Init_kconv -def makedef(basename) - defname = sprintf("%s.def", basename) - f = open(defname, "w") - f.printf "\ -LIBRARY %s.dll -CODE LOADONCALL -DATA LOADONCALL -DESCRIPTION 'win32 %s.dll' -EXPORTS - - Init_%s -", basename, basename - f.close - -end - #Local variables: # mode: ruby #end: diff --git a/ext/fcntl/depend b/ext/fcntl/depend index 3c7ef8485e..a7915c7d92 100644 --- a/ext/fcntl/depend +++ b/ext/fcntl/depend @@ -1 +1 @@ -fcntl.o: fcntl.c ../../ruby.h ../../config.h ../../defines.h +fcntl.o: fcntl.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h diff --git a/ext/kconv/depend b/ext/kconv/depend index e87b1fdea7..8f09d95130 100644 --- a/ext/kconv/depend +++ b/ext/kconv/depend @@ -1 +1 @@ -kconv.o: kconv.c ../../ruby.h ../../config.h ../../defines.h +kconv.o: kconv.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h diff --git a/ext/kconv/kconv.c b/ext/kconv/kconv.c index 3c59cb6acf..6778afcfe6 100644 --- a/ext/kconv/kconv.c +++ b/ext/kconv/kconv.c @@ -88,6 +88,9 @@ static char *Patchlevel = #define _JIS 1 #define _EUC 2 #define _SJIS 3 +#define _BINARY 4 +#define _NOCONV 4 +#define _UNKNOWN _AUTO #if (defined(__TURBOC__) || defined(LSI_C)) && !defined(MSDOS) #define MSDOS @@ -596,7 +599,7 @@ do_kconv(i, o, siz, out_code, in_code) outptr = o; /* output buffer */ outsiz = siz; /* output buffer size */ outlen = 0; /* current length of output string */ - x0201_f = FALSE; /* don't assume JISX0201 kana */ + x0201_f = TRUE; /* don't assume JISX0201 kana */ rot_f = FALSE; /* rot14/43 mode */ input_f = FALSE; /* non fixed input code */ alpha_f = FALSE; /* convert JISX0208 alphbet to ASCII */ @@ -1774,7 +1777,7 @@ kconv_kconv(argc, argv) int argc; VALUE *argv; { - struct RString *src, *dst; + VALUE src, dst; VALUE in, out; int in_code, out_code; @@ -1786,63 +1789,134 @@ kconv_kconv(argc, argv) } else { out_code = NUM2INT(out); + if (out_code == _NOCONV) return (VALUE)src; } if (NIL_P(in)) { in_code = _AUTO; } else { in_code = NUM2INT(in); + if (in_code == _NOCONV) return (VALUE)src; } - dst = RSTRING(str_new(0, src->len*3+10)); /* large enough? */ - dst->len = do_kconv(src->ptr, dst->ptr, dst->len, out_code, in_code); + dst = str_new(0, RSTRING(src)->len*3+10); /* large enough? */ + RSTRING(dst)->len = do_kconv(RSTRING(src)->ptr, RSTRING(dst)->ptr, RSTRING(dst)->len, out_code, in_code); - return (VALUE)dst; + return dst; } static VALUE kconv_tojis(obj, src) - VALUE obj; - struct RString *src; + VALUE obj, src; { - struct RString *dst; + VALUE dst; Check_Type(src, T_STRING); - dst = RSTRING(str_new(0, src->len*3+10)); /* large enough? */ - dst->len = do_kconv(src->ptr, dst->ptr, dst->len, _JIS, _AUTO); + dst = str_new(0, RSTRING(src)->len*3+10); /* large enough? */ + RSTRING(dst)->len = do_kconv(RSTRING(src)->ptr, RSTRING(dst)->ptr, RSTRING(dst)->len, _JIS, _AUTO); - return (VALUE)dst; + return dst; } static VALUE kconv_toeuc(obj, src) - VALUE obj; - struct RString* src; + VALUE obj, src; { - struct RString *dst; + VALUE dst; Check_Type(src, T_STRING); - dst = RSTRING(str_new(0, src->len*3+10)); /* large enough? */ - dst->len = do_kconv(src->ptr, dst->ptr, dst->len, _EUC, _AUTO); + dst = str_new(0, RSTRING(src)->len*3+10); /* large enough? */ + RSTRING(dst)->len = do_kconv(RSTRING(src)->ptr, RSTRING(dst)->ptr, RSTRING(dst)->len, _EUC, _AUTO); return (VALUE)dst; } static VALUE kconv_tosjis(obj, src) - VALUE obj; - struct RString* src; + VALUE obj, src; { - struct RString *dst; + VALUE dst; Check_Type(src, T_STRING); - dst = RSTRING(str_new(0, src->len*3+10)); /* large enough? */ - dst->len = do_kconv(src->ptr, dst->ptr, dst->len, _SJIS, _AUTO); + dst = str_new(0, RSTRING(src)->len*3+10); /* large enough? */ + RSTRING(dst)->len = do_kconv(RSTRING(src)->ptr, RSTRING(dst)->ptr, RSTRING(dst)->len, _SJIS, _AUTO); - return (VALUE)dst; + return dst; +} + +/* + * Character code detection - Algorithm described in: + * Ken Lunde. `Understanding Japanese Information Processing' + * Sebastopol, CA: O'Reilly & Associates. + */ + +static VALUE +kconv_guess(obj, src) + VALUE obj, src; +{ + unsigned char *p = RSTRING(src)->ptr; + unsigned char *pend = p + RSTRING(src)->len; + +#define INCR {p++;if (p==pend) return INT2FIX(_UNKNOWN);} + + while (p= 0x40) { + if (*p >= 0x81) { + if (0x8d <= *p || (0x8f <= *p && *p <= 0x9f)) { + return INT2FIX(_SJIS); + } + else if (0xfd <= *p && *p <= 0xfe) { + return INT2FIX(_EUC); + } + } + } + } + if (*p <= 0x9f) { + return INT2FIX(_SJIS); + } + } + if (0xf0 <= *p && *p <= 0xfe) { + return INT2FIX(_EUC); + } + if (0xe0 <= *p && *p <= 0xef) { + INCR; + if ((0x40 <= *p && *p <= 0x7e) || + (0x80 <= *p && *p <= 0xa0)) { + return INT2FIX(_SJIS); + } + if (0xfd <= *p && *p <= 0xfe) { + return INT2FIX(_EUC); + } + } + p++; + } + return INT2FIX(_UNKNOWN); } void @@ -1854,11 +1928,15 @@ Init_kconv() rb_define_module_function(mKconv, "tojis", kconv_tojis, 1); rb_define_module_function(mKconv, "toeuc", kconv_toeuc, 1); rb_define_module_function(mKconv, "tosjis", kconv_tosjis, 1); + rb_define_module_function(mKconv, "guess", kconv_guess, 1); rb_define_const(mKconv, "AUTO", INT2FIX(_AUTO)); rb_define_const(mKconv, "JIS", INT2FIX(_JIS)); rb_define_const(mKconv, "EUC", INT2FIX(_EUC)); rb_define_const(mKconv, "SJIS", INT2FIX(_SJIS)); + rb_define_const(mKconv, "BINARY", INT2FIX(_BINARY)); + rb_define_const(mKconv, "NOCONV", INT2FIX(_NOCONV)); + rb_define_const(mKconv, "UNKNOWN", INT2FIX(_UNKNOWN)); } /** diff --git a/ext/md5/depend b/ext/md5/depend index be56da89b9..abb2a47419 100644 --- a/ext/md5/depend +++ b/ext/md5/depend @@ -1,2 +1,2 @@ md5c.o: md5c.c md5.h -md5init.o: md5init.c ../../ruby.h ../../config.h ../../defines.h md5.h +md5init.o: md5init.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h md5.h diff --git a/ext/socket/depend b/ext/socket/depend index e6ede5a411..3d54fa073c 100644 --- a/ext/socket/depend +++ b/ext/socket/depend @@ -1 +1 @@ -socket.o : socket.c ../../ruby.h ../../config.h ../../defines.h ../../io.h ../../sig.h +socket.o : socket.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h $(hdrdir)/io.h $(hdrdir)/sig.h diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb index bbde1a0c35..f719723864 100644 --- a/ext/socket/extconf.rb +++ b/ext/socket/extconf.rb @@ -1,9 +1,18 @@ $LDFLAGS = "-L/usr/local/lib" -have_library("wsock32", "cygwin32_socket") or have_library("socket", "socket") -have_library("inet", "gethostbyname") -have_library("nsl", "gethostbyname") +case PLATFORM +when /mswin32/ + test_func = "WSACleanup" + have_library("wsock32", "WSACleanup") +when /cygwin32/ + test_func = "cygwin32_socket" +else + test_func = "socket" + have_library("socket", "socket") + have_library("inet", "gethostbyname") + have_library("nsl", "gethostbyname") +end have_header("sys/un.h") -if have_func("socket") or have_func("cygwin32_socket") +if have_func(test_func) have_func("hsterror") unless have_func("gethostname") have_func("uname") diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 9128e26de7..f5d191b056 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -12,9 +12,11 @@ #include "io.h" #include #include +#ifndef NT #include #include #include +#endif #include #ifdef HAVE_SYS_UN_H #include @@ -36,8 +38,10 @@ extern VALUE cIO; extern VALUE cInteger; VALUE cBasicSocket; +VALUE cIPsocket; VALUE cTCPsocket; VALUE cTCPserver; +VALUE cUDPsocket; #ifdef AF_UNIX VALUE cUNIXsocket; VALUE cUNIXserver; @@ -85,8 +89,6 @@ sock_new(class, fd) fp->f = rb_fdopen(fd, "r"); #ifdef NT fp->finalize = sock_finalize; -#else - setbuf(fp->f, NULL); #endif fp->f2 = rb_fdopen(fd, "w"); fp->mode = FMODE_READWRITE; @@ -254,24 +256,29 @@ bsock_send(argc, argv, sock) return INT2FIX(n); } -static VALUE tcpaddr _((struct sockaddr_in*)); +static VALUE ipaddr _((struct sockaddr_in*)); #ifdef HAVE_SYS_UN_H static VALUE unixaddr _((struct sockaddr_un*)); #endif +enum sock_recv_type { + RECV_RECV, /* BasicSocket#recv(no from) */ + RECV_TCP, /* TCPsocket#recvfrom */ + RECV_UDP, /* UDPsocket#recvfrom */ + RECV_UNIX, /* UNIXsocket#recvfrom */ + RECV_SOCKET, /* Socket#recvfrom */ +}; + static VALUE s_recv(sock, argc, argv, from) VALUE sock; int argc; VALUE *argv; - int from; /* 0 - recv, - 1 - TCPsocket#recvfrom, - 2 - UNIXsocket#recvfrom, - 3 - Socket#recvfrom */ + enum sock_recv_type from; { OpenFile *fptr; FILE f; - struct RString *str; + VALUE str; char buf[1024]; int fd, alen = sizeof buf; VALUE len, flg; @@ -282,7 +289,7 @@ s_recv(sock, argc, argv, from) if (flg == Qnil) flags = 0; else flags = NUM2INT(flg); - str = (struct RString*)str_new(0, NUM2INT(len)); + str = str_new(0, NUM2INT(len)); GetOpenFile(sock, fptr); fd = fileno(fptr->f); @@ -291,11 +298,11 @@ s_recv(sock, argc, argv, from) #endif TRAP_BEG; retry: - str->len = recvfrom(fd, str->ptr, str->len, flags, - (struct sockaddr*)buf, &alen); + RSTRING(str)->len = recvfrom(fd, RSTRING(str)->ptr, RSTRING(str)->len, flags, + (struct sockaddr*)buf, &alen); TRAP_END; - if (str->len < 0) { + if (RSTRING(str)->len < 0) { switch (errno) { case EINTR: case EWOULDBLOCK: @@ -311,21 +318,28 @@ s_recv(sock, argc, argv, from) } str_taint(str); switch (from) { - case 0: + case RECV_RECV: return (VALUE)str; - case 1: + case RECV_TCP: if (alen != sizeof(struct sockaddr_in)) { TypeError("sockaddr size differs - should not happen"); } - return assoc_new(str, tcpaddr((struct sockaddr_in *)buf)); + return assoc_new(str, ipaddr((struct sockaddr_in *)buf)); + case RECV_UDP: + { + VALUE addr = ipaddr((struct sockaddr_in *)buf); + + return assoc_new(str, assoc_new(RARRAY(addr)->ptr[2], + RARRAY(addr)->ptr[1])); + } #ifdef HAVE_SYS_UN_H - case 2: + case RECV_UNIX: if (alen != sizeof(struct sockaddr_un)) { TypeError("sockaddr size differs - should not happen"); } return assoc_new(str, unixaddr((struct sockaddr_un *)buf)); #endif - case 3: + case RECV_SOCKET: return assoc_new(str, str_new(buf, alen)); } } @@ -336,7 +350,7 @@ bsock_recv(argc, argv, sock) VALUE *argv; VALUE sock; { - return s_recv(sock, argc, argv, 0); + return s_recv(sock, argc, argv, RECV_RECV); } #if defined(THREAD) && defined(HAVE_FCNTL) @@ -470,7 +484,7 @@ open_inet(class, h, serv, type) Raise(eSocket, "no such proto %s", servent->s_proto); } - fd = socket(PF_INET, SOCK_STREAM, protoent->p_proto); + fd = socket(AF_INET, SOCK_STREAM, protoent->p_proto); memset(&sockaddr, 0, sizeof(sockaddr)); sockaddr.sin_family = AF_INET; @@ -515,9 +529,7 @@ open_inet(class, h, serv, type) if (type == INET_SERVER) listen(fd, 5); /* create new instance */ - sock = sock_new(class, fd); - - return sock; + return sock_new(class, fd); } static VALUE @@ -606,6 +618,15 @@ tcp_accept(sock) (struct sockaddr*)&from, &fromlen); } +static VALUE +tcp_recvfrom(argc, argv, sock) + int argc; + VALUE *argv; + VALUE sock; +{ + return s_recv(sock, argc, argv, RECV_TCP); +} + #ifdef HAVE_SYS_UN_H static VALUE open_unix(class, path, server) @@ -619,7 +640,7 @@ open_unix(class, path, server) OpenFile *fptr; Check_SafeStr(path); - fd = socket(PF_UNIX, SOCK_STREAM, 0); + fd = socket(AF_UNIX, SOCK_STREAM, 0); if (fd < 0) rb_sys_fail("socket(2)"); memset(&sockaddr, 0, sizeof(sockaddr)); @@ -700,7 +721,7 @@ mkipaddr(x) } static VALUE -tcpaddr(sockaddr) +ipaddr(sockaddr) struct sockaddr_in *sockaddr; { VALUE family, port, addr1, addr2; @@ -725,7 +746,7 @@ tcpaddr(sockaddr) } static VALUE -tcp_addr(sock) +ip_addr(sock) VALUE sock; { OpenFile *fptr; @@ -736,11 +757,11 @@ tcp_addr(sock) if (getsockname(fileno(fptr->f), (struct sockaddr*)&addr, &len) < 0) rb_sys_fail("getsockname(2)"); - return tcpaddr(&addr); + return ipaddr(&addr); } static VALUE -tcp_peeraddr(sock) +ip_peeraddr(sock) VALUE sock; { OpenFile *fptr; @@ -751,24 +772,14 @@ tcp_peeraddr(sock) if (getpeername(fileno(fptr->f), (struct sockaddr*)&addr, &len) < 0) rb_sys_fail("getpeername(2)"); - return tcpaddr(&addr); + return ipaddr(&addr); } static VALUE -tcp_recvfrom(argc, argv, sock) - int argc; - VALUE *argv; - VALUE sock; -{ - return s_recv(sock, argc, argv, 1); -} - -static VALUE -tcp_s_getaddress(obj, host) +ip_s_getaddress(obj, host) VALUE obj, host; { struct sockaddr_in addr; - struct hostent *h; if (obj_is_kind_of(host, cInteger)) { int i = NUM2INT(host); @@ -782,6 +793,148 @@ tcp_s_getaddress(obj, host) return mkipaddr(addr.sin_addr.s_addr); } +static VALUE +udp_s_open(class) + VALUE class; +{ + return sock_new(class, socket(AF_INET, SOCK_DGRAM, 0)); +} + +static void +udp_addrsetup(host, port, addr) + VALUE host, port; + struct sockaddr_in *addr; +{ + struct hostent *hostent; + + memset(addr, 0, sizeof(struct sockaddr_in)); + addr->sin_family = AF_INET; + if (NIL_P(host)) { + addr->sin_addr.s_addr = INADDR_ANY; + } + else if (obj_is_kind_of(host, cInteger)) { + int i = NUM2INT(host); + addr->sin_addr.s_addr = htonl(i); + } + else { + Check_Type(host, T_STRING); + setipaddr(RSTRING(host)->ptr, addr); + } + if (FIXNUM_P(port)) { + addr->sin_port = FIX2INT(port); + } + else { + struct servent *servent; + + Check_Type(port, T_STRING); + servent = getservbyname(RSTRING(port)->ptr, "udp"); + if (servent) { + addr->sin_port = servent->s_port; + } + else { + int port = strtoul(RSTRING(port)->ptr, 0, 0); + + if (port == -1) { + Raise(eSocket, "no such servce %s", RSTRING(port)->ptr); + } + addr->sin_port = htons(port); + } + } +} + +static VALUE +udp_connect(sock, host, port) + VALUE sock, host, port; +{ + struct sockaddr_in addr; + OpenFile *fptr; + + udp_addrsetup(host, port, &addr); + GetOpenFile(sock, fptr); + retry: + if (connect(fileno(fptr->f), (struct sockaddr*)&addr, sizeof(addr))<0) { + switch (errno) { + case EINTR: + case EWOULDBLOCK: +#if EAGAIN != EWOULDBLOCK + case EAGAIN: +#endif +#ifdef THREAD + thread_schedule(); +#endif + goto retry; + } + rb_sys_fail("connect(2)"); + } + + return INT2FIX(0); +} + +static VALUE +udp_bind(sock, host, port) + VALUE sock, host, port; +{ + struct sockaddr_in addr; + OpenFile *fptr; + + udp_addrsetup(host, port, &addr); + GetOpenFile(sock, fptr); + if (bind(fileno(fptr->f), (struct sockaddr*)&addr, sizeof(addr))<0) { + rb_sys_fail("bind(2)"); + } + return INT2FIX(0); +} + +static VALUE +udp_send(argc, argv, sock) + int argc; + VALUE *argv; + VALUE sock; +{ + VALUE mesg, flags, host, port; + struct sockaddr_in addr; + OpenFile *fptr; + FILE *f; + int n; + + if (argc == 2) { + return bsock_send(argc, argv, sock); + } + rb_scan_args(argc, argv, "4", &mesg, &flags, &host, &port); + Check_Type(mesg, T_STRING); + + udp_addrsetup(host, port, &addr); + GetOpenFile(sock, fptr); + f = fptr->f2?fptr->f2:fptr->f; + retry: + n = sendto(fileno(f), RSTRING(mesg)->ptr, RSTRING(mesg)->len, + NUM2INT(flags), (struct sockaddr*)&addr, sizeof(addr)); + if (n < 0) { + switch (errno) { + case EINTR: + case EWOULDBLOCK: +#if EAGAIN != EWOULDBLOCK + case EAGAIN: +#endif +#ifdef THREAD + thread_schedule(); +#endif + goto retry; + } + rb_sys_fail("sendto(2)"); + } + return INT2FIX(n); +} + +static VALUE +udp_recvfrom(argc, argv, sock) + int argc; + VALUE *argv; + VALUE sock; +{ + return s_recv(sock, argc, argv, RECV_UDP); +} + #ifdef HAVE_SYS_UN_H static VALUE unix_s_sock_open(sock, path) @@ -820,7 +973,7 @@ unix_recvfrom(argc, argv, sock) VALUE *argv; VALUE sock; { - return s_recv(sock, argc, argv, 2); + return s_recv(sock, argc, argv, RECV_UNIX); } static VALUE @@ -884,7 +1037,25 @@ setup_domain_and_type(domain, dv, type, tv) if (TYPE(domain) == T_STRING) { ptr = RSTRING(domain)->ptr; - if (strcmp(ptr, "PF_INET") == 0) + if (strcmp(ptr, "AF_INET") == 0) + *dv = AF_INET; +#ifdef AF_UNIX + else if (strcmp(ptr, "AF_UNIX") == 0) + *dv = AF_UNIX; +#endif +#ifdef AF_ISO + else if (strcmp(ptr, "AF_ISO") == 0) + *dv = AF_ISO; +#endif +#ifdef AF_NS + else if (strcmp(ptr, "AF_NS") == 0) + *dv = AF_NS; +#endif +#ifdef AF_IMPLINK + else if (strcmp(ptr, "AF_IMPLINK") == 0) + *dv = AF_IMPLINK; +#endif + else if (strcmp(ptr, "PF_INET") == 0) *dv = PF_INET; #ifdef PF_UNIX else if (strcmp(ptr, "PF_UNIX") == 0) @@ -893,6 +1064,8 @@ setup_domain_and_type(domain, dv, type, tv) #ifdef PF_IMPLINK else if (strcmp(ptr, "PF_IMPLINK") == 0) *dv = PF_IMPLINK; + else if (strcmp(ptr, "AF_IMPLINK") == 0) + *dv = AF_IMPLINK; #endif #ifdef PF_AX25 else if (strcmp(ptr, "PF_AX25") == 0) @@ -978,8 +1151,7 @@ sock_s_socketpair(class, domain, type, protocol) static VALUE sock_connect(sock, addr) - VALUE sock; - struct RString *addr; + VALUE sock, addr; { OpenFile *fptr; @@ -988,7 +1160,7 @@ sock_connect(sock, addr) GetOpenFile(sock, fptr); retry: - if (connect(fileno(fptr->f), (struct sockaddr*)addr->ptr, addr->len) < 0) { + if (connect(fileno(fptr->f), (struct sockaddr*)RSTRING(addr)->ptr, RSTRING(addr)->len) < 0) { switch (errno) { case EINTR: case EWOULDBLOCK: @@ -1008,8 +1180,7 @@ sock_connect(sock, addr) static VALUE sock_bind(sock, addr) - VALUE sock; - struct RString *addr; + VALUE sock, addr; { OpenFile *fptr; @@ -1017,7 +1188,7 @@ sock_bind(sock, addr) str_modify(addr); GetOpenFile(sock, fptr); - if (bind(fileno(fptr->f), (struct sockaddr*)addr->ptr, addr->len) < 0) + if (bind(fileno(fptr->f), (struct sockaddr*)RSTRING(addr)->ptr, RSTRING(addr)->len) < 0) rb_sys_fail("bind(2)"); return INT2FIX(0); @@ -1042,7 +1213,7 @@ sock_recvfrom(argc, argv, sock) VALUE *argv; VALUE sock; { - return s_recv(sock, argc, argv, 3); + return s_recv(sock, argc, argv, RECV_SOCKET); } static VALUE @@ -1185,7 +1356,7 @@ sock_s_getservbyaname(argc, argv) VALUE *argv; { VALUE service, protocol; - char *name, *proto; + char *proto; struct servent *sp; int port; @@ -1203,12 +1374,24 @@ sock_s_getservbyaname(argc, argv) return INT2FIX(port); } +static VALUE mConst; + +static void +sock_define_const(name, value) + char *name; + INT value; +{ + rb_define_const(cSocket, name, INT2FIX(value)); + rb_define_const(mConst, name, INT2FIX(value)); +} + Init_socket() { eSocket = rb_define_class("SocketError", eException); cBasicSocket = rb_define_class("BasicSocket", cIO); rb_undef_method(CLASS_OF(cBasicSocket), "new"); + rb_undef_method(CLASS_OF(cBasicSocket), "open"); rb_define_method(cBasicSocket, "shutdown", bsock_shutdown, -1); rb_define_method(cBasicSocket, "setsockopt", bsock_setsockopt, 3); rb_define_method(cBasicSocket, "getsockopt", bsock_getsockopt, 2); @@ -1217,12 +1400,14 @@ Init_socket() rb_define_method(cBasicSocket, "send", bsock_send, -1); rb_define_method(cBasicSocket, "recv", bsock_recv, -1); - cTCPsocket = rb_define_class("TCPsocket", cBasicSocket); + cIPsocket = rb_define_class("IPsocket", cBasicSocket); + rb_define_method(cIPsocket, "addr", ip_addr, 0); + rb_define_method(cIPsocket, "peeraddr", ip_peeraddr, 0); + rb_define_singleton_method(cIPsocket, "getaddress", ip_s_getaddress, 1); + + cTCPsocket = rb_define_class("TCPsocket", cIPsocket); rb_define_singleton_method(cTCPsocket, "open", tcp_s_open, 2); rb_define_singleton_method(cTCPsocket, "new", tcp_s_open, 2); - rb_define_method(cTCPsocket, "addr", tcp_addr, 0); - rb_define_method(cTCPsocket, "peeraddr", tcp_peeraddr, 0); - rb_define_singleton_method(cTCPsocket, "getaddress", tcp_s_getaddress, 1); rb_define_method(cTCPsocket, "recvfrom", tcp_recvfrom, -1); #ifdef SOCKS @@ -1236,6 +1421,14 @@ Init_socket() rb_define_singleton_method(cTCPserver, "new", tcp_svr_s_open, -1); rb_define_method(cTCPserver, "accept", tcp_accept, 0); + cUDPsocket = rb_define_class("UDPsocket", cIPsocket); + rb_define_singleton_method(cUDPsocket, "open", udp_s_open, 0); + rb_define_singleton_method(cUDPsocket, "new", udp_s_open, 0); + rb_define_method(cUDPsocket, "connect", udp_connect, 2); + rb_define_method(cUDPsocket, "bind", udp_bind, 2); + rb_define_method(cUDPsocket, "send", udp_send, -1); + rb_define_method(cUDPsocket, "recvfrom", udp_recvfrom, -1); + #ifdef HAVE_SYS_UN_H cUNIXsocket = rb_define_class("UNIXsocket", cBasicSocket); rb_define_singleton_method(cUNIXsocket, "open", unix_s_sock_open, 1); @@ -1271,137 +1464,138 @@ Init_socket() rb_define_singleton_method(cSocket, "getservbyname", sock_s_getservbyaname, -1); /* constants */ - rb_define_const(cSocket, "SOCK_STREAM", INT2FIX(SOCK_STREAM)); - rb_define_const(cSocket, "SOCK_DGRAM", INT2FIX(SOCK_DGRAM)); - rb_define_const(cSocket, "SOCK_RAW", INT2FIX(SOCK_RAW)); + mConst = rb_define_module_under(cSocket, "Constants"); + sock_define_const("SOCK_STREAM", SOCK_STREAM); + sock_define_const("SOCK_DGRAM", SOCK_DGRAM); + sock_define_const("SOCK_RAW", SOCK_RAW); #ifdef SOCK_RDM - rb_define_const(cSocket, "SOCK_RDM", INT2FIX(SOCK_RDM)); + sock_define_const("SOCK_RDM", SOCK_RDM); #endif #ifdef SOCK_SEQPACKET - rb_define_const(cSocket, "SOCK_SEQPACKET", INT2FIX(SOCK_SEQPACKET)); + sock_define_const("SOCK_SEQPACKET", SOCK_SEQPACKET); #endif #ifdef SOCK_PACKET - rb_define_const(cSocket, "SOCK_PACKET", INT2FIX(SOCK_PACKET)); + sock_define_const("SOCK_PACKET", SOCK_PACKET); #endif - rb_define_const(cSocket, "AF_INET", INT2FIX(AF_INET)); - rb_define_const(cSocket, "PF_INET", INT2FIX(PF_INET)); + sock_define_const("AF_INET", AF_INET); + sock_define_const("PF_INET", PF_INET); #ifdef AF_UNIX - rb_define_const(cSocket, "AF_UNIX", INT2FIX(AF_UNIX)); - rb_define_const(cSocket, "PF_UNIX", INT2FIX(PF_UNIX)); + sock_define_const("AF_UNIX", AF_UNIX); + sock_define_const("PF_UNIX", PF_UNIX); #endif #ifdef AF_AX25 - rb_define_const(cSocket, "AF_AX25", INT2FIX(AF_AX25)); - rb_define_const(cSocket, "PF_AX25", INT2FIX(PF_AX25)); + sock_define_const("AF_AX25", AF_AX25); + sock_define_const("PF_AX25", PF_AX25); #endif #ifdef AF_IPX - rb_define_const(cSocket, "AF_IPX", INT2FIX(AF_IPX)); - rb_define_const(cSocket, "PF_IPX", INT2FIX(PF_IPX)); + sock_define_const("AF_IPX", AF_IPX); + sock_define_const("PF_IPX", PF_IPX); #endif #ifdef AF_APPLETALK - rb_define_const(cSocket, "AF_APPLETALK", INT2FIX(AF_APPLETALK)); - rb_define_const(cSocket, "PF_APPLETALK", INT2FIX(PF_APPLETALK)); + sock_define_const("AF_APPLETALK", AF_APPLETALK); + sock_define_const("PF_APPLETALK", PF_APPLETALK); #endif - rb_define_const(cSocket, "MSG_OOB", INT2FIX(MSG_OOB)); - rb_define_const(cSocket, "MSG_PEEK", INT2FIX(MSG_PEEK)); - rb_define_const(cSocket, "MSG_DONTROUTE", INT2FIX(MSG_DONTROUTE)); + sock_define_const("MSG_OOB", MSG_OOB); + sock_define_const("MSG_PEEK", MSG_PEEK); + sock_define_const("MSG_DONTROUTE", MSG_DONTROUTE); - rb_define_const(cSocket, "SOL_SOCKET", INT2FIX(SOL_SOCKET)); + sock_define_const("SOL_SOCKET", SOL_SOCKET); #ifdef SOL_IP - rb_define_const(cSocket, "SOL_IP", INT2FIX(SOL_IP)); + sock_define_const("SOL_IP", SOL_IP); #endif #ifdef SOL_IPX - rb_define_const(cSocket, "SOL_IPX", INT2FIX(SOL_IPX)); + sock_define_const("SOL_IPX", SOL_IPX); #endif #ifdef SOL_AX25 - rb_define_const(cSocket, "SOL_AX25", INT2FIX(SOL_AX25)); + sock_define_const("SOL_AX25", SOL_AX25); #endif #ifdef SOL_ATALK - rb_define_const(cSocket, "SOL_ATALK", INT2FIX(SOL_ATALK)); + sock_define_const("SOL_ATALK", SOL_ATALK); #endif #ifdef SOL_TCP - rb_define_const(cSocket, "SOL_TCP", INT2FIX(SOL_TCP)); + sock_define_const("SOL_TCP", SOL_TCP); #endif #ifdef SOL_UDP - rb_define_const(cSocket, "SOL_UDP", INT2FIX(SOL_UDP)); + sock_define_const("SOL_UDP", SOL_UDP); #endif #ifdef SO_DEBUG - rb_define_const(cSocket, "SO_DEBUG", INT2FIX(SO_DEBUG)); + sock_define_const("SO_DEBUG", SO_DEBUG); #endif - rb_define_const(cSocket, "SO_REUSEADDR", INT2FIX(SO_REUSEADDR)); + sock_define_const("SO_REUSEADDR", SO_REUSEADDR); #ifdef SO_TYPE - rb_define_const(cSocket, "SO_TYPE", INT2FIX(SO_TYPE)); + sock_define_const("SO_TYPE", SO_TYPE); #endif #ifdef SO_ERROR - rb_define_const(cSocket, "SO_ERROR", INT2FIX(SO_ERROR)); + sock_define_const("SO_ERROR", SO_ERROR); #endif #ifdef SO_DONTROUTE - rb_define_const(cSocket, "SO_DONTROUTE", INT2FIX(SO_DONTROUTE)); + sock_define_const("SO_DONTROUTE", SO_DONTROUTE); #endif #ifdef SO_BROADCAST - rb_define_const(cSocket, "SO_BROADCAST", INT2FIX(SO_BROADCAST)); + sock_define_const("SO_BROADCAST", SO_BROADCAST); #endif #ifdef SO_SNDBUF - rb_define_const(cSocket, "SO_SNDBUF", INT2FIX(SO_SNDBUF)); + sock_define_const("SO_SNDBUF", SO_SNDBUF); #endif #ifdef SO_RCVBUF - rb_define_const(cSocket, "SO_RCVBUF", INT2FIX(SO_RCVBUF)); + sock_define_const("SO_RCVBUF", SO_RCVBUF); #endif - rb_define_const(cSocket, "SO_KEEPALIVE", INT2FIX(SO_KEEPALIVE)); + sock_define_const("SO_KEEPALIVE", SO_KEEPALIVE); #ifdef SO_OOBINLINE - rb_define_const(cSocket, "SO_OOBINLINE", INT2FIX(SO_OOBINLINE)); + sock_define_const("SO_OOBINLINE", SO_OOBINLINE); #endif #ifdef SO_NO_CHECK - rb_define_const(cSocket, "SO_NO_CHECK", INT2FIX(SO_NO_CHECK)); + sock_define_const("SO_NO_CHECK", SO_NO_CHECK); #endif #ifdef SO_PRIORITY - rb_define_const(cSocket, "SO_PRIORITY", INT2FIX(SO_PRIORITY)); + sock_define_const("SO_PRIORITY", SO_PRIORITY); #endif - rb_define_const(cSocket, "SO_LINGER", INT2FIX(SO_LINGER)); + sock_define_const("SO_LINGER", SO_LINGER); #ifdef SOPRI_INTERACTIVE - rb_define_const(cSocket, "SOPRI_INTERACTIVE", INT2FIX(SOPRI_INTERACTIVE)); + sock_define_const("SOPRI_INTERACTIVE", SOPRI_INTERACTIVE); #endif #ifdef SOPRI_NORMAL - rb_define_const(cSocket, "SOPRI_NORMAL", INT2FIX(SOPRI_NORMAL)); + sock_define_const("SOPRI_NORMAL", SOPRI_NORMAL); #endif #ifdef SOPRI_BACKGROUND - rb_define_const(cSocket, "SOPRI_BACKGROUND", INT2FIX(SOPRI_BACKGROUND)); + sock_define_const("SOPRI_BACKGROUND", SOPRI_BACKGROUND); #endif #ifdef IP_MULTICAST_IF - rb_define_const(cSocket, "IP_MULTICAST_IF", INT2FIX(IP_MULTICAST_IF)); + sock_define_const("IP_MULTICAST_IF", IP_MULTICAST_IF); #endif #ifdef IP_MULTICAST_TTL - rb_define_const(cSocket, "IP_MULTICAST_TTL", INT2FIX(IP_MULTICAST_TTL)); + sock_define_const("IP_MULTICAST_TTL", IP_MULTICAST_TTL); #endif #ifdef IP_MULTICAST_LOOP - rb_define_const(cSocket, "IP_MULTICAST_LOOP", INT2FIX(IP_MULTICAST_LOOP)); + sock_define_const("IP_MULTICAST_LOOP", IP_MULTICAST_LOOP); #endif #ifdef IP_ADD_MEMBERSHIP - rb_define_const(cSocket, "IP_ADD_MEMBERSHIP", INT2FIX(IP_ADD_MEMBERSHIP)); + sock_define_const("IP_ADD_MEMBERSHIP", IP_ADD_MEMBERSHIP); #endif #ifdef IP_DEFAULT_MULTICAST_TTL - rb_define_const(cSocket, "IP_DEFAULT_MULTICAST_TTL", INT2FIX(IP_DEFAULT_MULTICAST_TTL)); + sock_define_const("IP_DEFAULT_MULTICAST_TTL", IP_DEFAULT_MULTICAST_TTL); #endif #ifdef IP_DEFAULT_MULTICAST_LOOP - rb_define_const(cSocket, "IP_DEFAULT_MULTICAST_LOOP", INT2FIX(IP_DEFAULT_MULTICAST_LOOP)); + sock_define_const("IP_DEFAULT_MULTICAST_LOOP", IP_DEFAULT_MULTICAST_LOOP); #endif #ifdef IP_MAX_MEMBERSHIPS - rb_define_const(cSocket, "IP_MAX_MEMBERSHIPS", INT2FIX(IP_MAX_MEMBERSHIPS)); + sock_define_const("IP_MAX_MEMBERSHIPS", IP_MAX_MEMBERSHIPS); #endif #ifdef IPX_TYPE - rb_define_const(cSocket, "IPX_TYPE", INT2FIX(IPX_TYPE)); + sock_define_const("IPX_TYPE", IPX_TYPE); #endif #ifdef TCP_NODELAY - rb_define_const(cSocket, "TCP_NODELAY", INT2FIX(TCP_NODELAY)); + sock_define_const("TCP_NODELAY", TCP_NODELAY); #endif #ifdef TCP_MAXSEG - rb_define_const(cSocket, "TCP_MAXSEG", INT2FIX(TCP_MAXSEG)); + sock_define_const("TCP_MAXSEG", TCP_MAXSEG); #endif } diff --git a/ext/tkutil/depend b/ext/tkutil/depend index ead83eda57..e325a82c0f 100644 --- a/ext/tkutil/depend +++ b/ext/tkutil/depend @@ -1 +1 @@ -tkutil.o: tkutil.c ../../ruby.h ../../config.h ../../defines.h +tkutil.o: tkutil.c $(hdrdir)/ruby.h $(hdrdir)/config.h $(hdrdir)/defines.h -- cgit v1.2.3