Skip to content

Commit

Permalink
new version
Browse files Browse the repository at this point in the history
  • Loading branch information
gutenye committed Jan 12, 2011
0 parents commit c03cf86
Show file tree
Hide file tree
Showing 243 changed files with 37,356 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*~
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
source :rubygems

gemspec
14 changes: 14 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
PATH
remote: .
specs:
guten (0.0.1)

GEM
remote: http://rubygems.org/
specs:

PLATFORMS
ruby

DEPENDENCIES
guten!
181 changes: 181 additions & 0 deletions ext/gile/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@

SHELL = /bin/sh

#### Start of system configuration section. ####

srcdir = .
topdir = /usr/include/ruby-1.9.1
hdrdir = /usr/include/ruby-1.9.1
arch_hdrdir = /usr/include/ruby-1.9.1/$(arch)
VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
prefix = $(DESTDIR)/usr
exec_prefix = $(prefix)
vendorhdrdir = $(rubyhdrdir)/vendor_ruby
sitehdrdir = $(rubyhdrdir)/site_ruby
rubyhdrdir = $(includedir)/$(RUBY_INSTALL_NAME)-$(ruby_version)
vendordir = $(libdir)/$(RUBY_INSTALL_NAME)/vendor_ruby
sitedir = $(libdir)/$(RUBY_INSTALL_NAME)/site_ruby
mandir = $(datarootdir)/man
localedir = $(datarootdir)/locale
libdir = $(exec_prefix)/lib
psdir = $(docdir)
pdfdir = $(docdir)
dvidir = $(docdir)
htmldir = $(docdir)
infodir = $(datarootdir)/info
docdir = $(datarootdir)/doc/$(PACKAGE)
oldincludedir = $(DESTDIR)/usr/include
includedir = $(prefix)/include
localstatedir = $(prefix)/var
sharedstatedir = $(prefix)/com
sysconfdir = $(prefix)/etc
datadir = $(datarootdir)
datarootdir = $(prefix)/share
libexecdir = $(exec_prefix)/libexec
sbindir = $(exec_prefix)/sbin
bindir = $(exec_prefix)/bin
rubylibdir = $(libdir)/$(ruby_install_name)/$(ruby_version)
archdir = $(rubylibdir)/$(arch)
sitelibdir = $(sitedir)/$(ruby_version)
sitearchdir = $(sitelibdir)/$(sitearch)
vendorlibdir = $(vendordir)/$(ruby_version)
vendorarchdir = $(vendorlibdir)/$(sitearch)

CC = gcc
CXX = g++
LIBRUBY = $(LIBRUBY_SO)
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
LIBRUBYARG_SHARED = -Wl,-R -Wl,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)
LIBRUBYARG_STATIC = -Wl,-R -Wl,$(libdir) -L$(libdir) -l$(RUBY_SO_NAME)-static
OUTFLAG = -o
COUTFLAG = -o

RUBY_EXTCONF_H =
cflags = $(optflags) $(debugflags) $(warnflags)
optflags = -O2
debugflags = -g
warnflags = -Wall -Wno-parentheses
CFLAGS = -fPIC -march=i686 -mtune=generic -O2 -pipe $(cflags) -fPIC
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
DEFS = -D_FILE_OFFSET_BITS=64
CPPFLAGS = -DHAVE_SYS_STAT_H -DHAVE_MKNOD $(DEFS) $(cppflags)
CXXFLAGS = $(CFLAGS) -march=i686 -mtune=generic -O2 -pipe $(cxxflags)
ldflags = -L. -Wl,--hash-style=gnu -Wl,--as-needed -rdynamic -Wl,-export-dynamic
dldflags =
archflag =
DLDFLAGS = $(ldflags) $(dldflags) $(archflag)
LDSHARED = $(CC) -shared
LDSHAREDXX = $(CXX) -shared
AR = ar
EXEEXT =

RUBY_INSTALL_NAME = ruby
RUBY_SO_NAME = ruby
arch = i686-linux
sitearch = i686-linux
ruby_version = 1.9.1
ruby = /usr/bin/ruby
RUBY = $(ruby)
RM = rm -f
RM_RF = $(RUBY) -run -e rm -- -rf
RMDIRS = $(RUBY) -run -e rmdir -- -p
MAKEDIRS = mkdir -p
INSTALL = /bin/install -c
INSTALL_PROG = $(INSTALL) -m 0755
INSTALL_DATA = $(INSTALL) -m 644
COPY = cp

#### End of system configuration section. ####

preload =

libpath = . $(libdir)
LIBPATH = -L. -L$(libdir) -Wl,-R$(libdir)
DEFFILE =

CLEANFILES = mkmf.log
DISTCLEANFILES =
DISTCLEANDIRS =

extout =
extout_prefix =
target_prefix =
LOCAL_LIBS =
LIBS = $(LIBRUBYARG_SHARED) -lpthread -lrt -ldl -lcrypt -lm -lc
SRCS = gile.c
OBJS = gile.o
TARGET = gile
DLLIB = $(TARGET).so
EXTSTATIC =
STATIC_LIB =

BINDIR = $(bindir)
RUBYCOMMONDIR = $(sitedir)$(target_prefix)
RUBYLIBDIR = $(sitelibdir)$(target_prefix)
RUBYARCHDIR = $(sitearchdir)$(target_prefix)
HDRDIR = $(rubyhdrdir)/ruby$(target_prefix)
ARCHHDRDIR = $(rubyhdrdir)/$(arch)/ruby$(target_prefix)

TARGET_SO = $(DLLIB)
CLEANLIBS = $(TARGET).so
CLEANOBJS = *.o *.bak

all: $(DLLIB)
static: $(STATIC_LIB)

clean-rb-default::
clean-rb::
clean-so::
clean: clean-so clean-rb-default clean-rb
@-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)

distclean-rb-default::
distclean-rb::
distclean-so::
distclean: clean distclean-so distclean-rb-default distclean-rb
@-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
@-$(RMDIRS) $(DISTCLEANDIRS)

realclean: distclean
install: install-so install-rb

install-so: $(RUBYARCHDIR)
install-so: $(RUBYARCHDIR)/$(DLLIB)
$(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
install-rb: pre-install-rb install-rb-default
install-rb-default: pre-install-rb-default
pre-install-rb: Makefile
pre-install-rb-default: Makefile
$(RUBYARCHDIR):
$(MAKEDIRS) $@

site-install: site-install-so site-install-rb
site-install-so: install-so
site-install-rb: install-rb

.SUFFIXES: .c .m .cc .cxx .cpp .C .o

.cc.o:
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<

.cxx.o:
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<

.cpp.o:
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<

.C.o:
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<

.c.o:
$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $<

$(DLLIB): $(OBJS) Makefile
@-$(RM) $(@)
$(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)



$(OBJS): $(hdrdir)/ruby.h $(hdrdir)/ruby/defines.h $(arch_hdrdir)/ruby/config.h
6 changes: 6 additions & 0 deletions ext/gile/extconf.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
grequire "mkmf"

have_header("sys/stat.h")
have_function("mknod")

create_makefile("gile")
65 changes: 65 additions & 0 deletions ext/gile/gile.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#include <sys/stat.h>
#include <gruby.h>

VALUE eError, eExist, eNoEnt, ePerm, eNotSupport, eAccess, eNotDir, eIsDir, \
eNotSymlink, eLinkSelf, eDangling;

// type_@ ?c
// mode_@ 0644
// dev_@ 0
VALUE gile_mknod(self, path_, type_, mode_, dev_)
VALUE self, path_, type_, mode_, dev_;
{
#ifdef HAVE_MKNOD

// handle args
char *path = rb_str_newv(path_);
int type = FIX2CHR(type_);
int mode = FIX2INT(mode_);
int dev = FIX2INT(dev_);

// begin
switch (type) {
case 'f': mode |= S_IFREG; break;
case 'c': mode |= S_IFCHR; break;
#ifdef S_IFBLK
case 'b': mode |= S_IFBLK; break;
#endif
#ifdef S_IFIFO
case 'p': mode |= S_IFIFO; break;
#endif
}

if (mknod(path, mode, dev))
rb_sys_fail("mknod");

return INT2FIX(0);
#else
rb_notimplement();
#endif
}

void Init_gile()
{
// class Gile
VALUE cGile = rb_define_class("Gile", rb_cFile);

// Error < Exception
eError = rb_define_class_under(cGile, "Error" , rb_eException);
eExist = rb_define_class_under(cGile, "EExist" , eError);
eNoEnt = rb_define_class_under(cGile, "ENoEnt" , eError);
ePerm = rb_define_class_under(cGile, "EPerm" , eError);
eNotSupport = rb_define_class_under(cGile, "ENotSupport" , eError);
eAccess = rb_define_class_under(cGile, "EAccess" , eError);
eNotDir = rb_define_class_under(cGile, "ENotDir" , eError);
eIsDir = rb_define_class_under(cGile, "EIsDir" , eError);
eNotSymlink = rb_define_class_under(cGile, "ENotSymlink" , eError);
eLinkSelf = rb_define_class_under(cGile, "ELinkSelf" , eError);
eDangling = rb_define_class_under(cGile, "EDangling" , eError);

// method
rb_define_singleton_method(cGile, "mknod", gile_mknod, 4);

}


Binary file added ext/gile/gile.o
Binary file not shown.
49 changes: 49 additions & 0 deletions ext/gile/mkmf.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
have_header: checking for sys/stat.h... -------------------- yes

"gcc -o conftest -I/usr/include/ruby-1.9.1/i686-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -D_FILE_OFFSET_BITS=64 -march=i686 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC conftest.c -L. -L/usr/lib -Wl,-R/usr/lib -L. -Wl,--hash-style=gnu -Wl,--as-needed -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/usr/lib -L/usr/lib -lruby-static -lpthread -lrt -ldl -lcrypt -lm -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main() {return 0;}
/* end */

"gcc -E -I/usr/include/ruby-1.9.1/i686-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -D_FILE_OFFSET_BITS=64 -march=i686 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC conftest.c -o conftest.i"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <sys/stat.h>
/* end */

--------------------

have_func: checking for mknod()... -------------------- yes

"gcc -o conftest -I/usr/include/ruby-1.9.1/i686-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -D_FILE_OFFSET_BITS=64 -march=i686 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC conftest.c -L. -L/usr/lib -Wl,-R/usr/lib -L. -Wl,--hash-style=gnu -Wl,--as-needed -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/usr/lib -L/usr/lib -lruby-static -lpthread -lrt -ldl -lcrypt -lm -lc"
conftest.c: In function ‘t’:
conftest.c:5:53: error: ‘mknod’ undeclared (first use in this function)
conftest.c:5:53: note: each undeclared identifier is reported only once for each function it appears in
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: /*top*/
4: int main() {return 0;}
5: int t() { void ((*volatile p)()); p = (void ((*)()))mknod; return 0; }
/* end */

"gcc -o conftest -I/usr/include/ruby-1.9.1/i686-linux -I/usr/include/ruby-1.9.1/ruby/backward -I/usr/include/ruby-1.9.1 -I. -D_FILE_OFFSET_BITS=64 -march=i686 -mtune=generic -O2 -pipe -O2 -g -Wall -Wno-parentheses -fPIC conftest.c -L. -L/usr/lib -Wl,-R/usr/lib -L. -Wl,--hash-style=gnu -Wl,--as-needed -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/usr/lib -L/usr/lib -lruby-static -lpthread -lrt -ldl -lcrypt -lm -lc"
conftest.c: In function ‘t’:
conftest.c:5:1: warning: implicit declaration of function ‘mknod’
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: /*top*/
4: int main() {return 0;}
5: int t() { mknod(); return 0; }
/* end */

--------------------

26 changes: 26 additions & 0 deletions ext/gile/test_gile.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env ruby

grequire "test"
rrequire "gile.so"

class Test_Gile < Test
def test_mknod
tmpfile = Gile.mktmpfile
Gile.mknod(tmpfile, :chardev, "/dev/console", mode:0777)
assert_equal :chardev, Gile.type(tmpfile)
assert_equal 0100777, Gile.lstat(tmpfile).mode
Gile.rm(tmpfile)

tmpfile = Gile.mktmpfile
Gile.mknod(tmpfile, :fifo)
assert_equal :fifo, Gile.type(tmpfile)
Gile.rm(tmpfile)

tmpfile = Gile.mktmpfile
assert_raise(Gile::Eexist){
Gile.touch(tmpfile)
Gile.mknod(tmpfile, :fifo)
}
Gile.rm(tmpfile)
end if win32?
end
Loading

0 comments on commit c03cf86

Please sign in to comment.