fcgi 0.8.5 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,26 @@
1
+ Fri Apr 1 10:20:14 JST 2005 sugi@nemui.org
2
+ * Include errno.h
3
+
4
+ Fri Apr 1 08:09:13 JST 2005 aredridel@nbtsc.org
5
+ * Report actual errors
6
+
7
+ Adds reporting of errors fcgi experiences. Credit to David Heinemier Hansson
8
+ for discovery.
9
+
10
+ Fri Apr 1 08:08:07 JST 2005 aredridel@nbtsc.org
11
+ * FHS Include Paths
12
+
13
+ Wed Mar 30 21:45:11 JST 2005 sugi@nemui.org
14
+ * 16k+request-memleak
15
+ fix memory leak when 16k+/reqest.
16
+ from http://enigo.com/projects/iowa/fcgipatch.html
17
+
18
+ Wed Mar 30 21:43:02 JST 2005 sugi@nemui.org
19
+ * fix-check_stream_error
20
+ Simple fix in CHECK_STREAM_ERROR for Potential DoS
21
+ see http://groups-beta.google.com/group/comp.lang.ruby/browse_thread/thread/f51e79974a454b70/54fe207411e9eb05
22
+ for details.
23
+
24
+ Wed Mar 30 21:40:22 JST 2005 sugi@nemui.org
25
+ * init-from-0.8.5
26
+ Initalize DARCS repository from MoonWolf's 0.8.5 release.
@@ -0,0 +1,131 @@
1
+
2
+ SHELL = /bin/sh
3
+
4
+ #### Start of system configuration section. ####
5
+
6
+ srcdir = ext/fcgi
7
+ topdir = /opt/local/lib/ruby/1.8/powerpc-darwin8.1.0
8
+ hdrdir = $(topdir)
9
+ VPATH = $(srcdir)
10
+ prefix = $(DESTDIR)/opt/local
11
+ exec_prefix = $(prefix)
12
+ sitedir = $(prefix)/lib/ruby/site_ruby
13
+ rubylibdir = $(libdir)/ruby/$(ruby_version)
14
+ builddir = $(ac_builddir)
15
+ archdir = $(rubylibdir)/$(arch)
16
+ sbindir = $(exec_prefix)/sbin
17
+ vendordir = $(prefix)/lib/ruby/vendor_ruby
18
+ compile_dir = $(DESTDIR)/opt/local/var/db/dports/build/file._opt_local_var_db_dports_sources_rsync.rsync.opendarwin.org_dpupdate_dports_lang_ruby/work/ruby-1.8.2
19
+ datadir = $(prefix)/share
20
+ includedir = $(prefix)/include
21
+ infodir = $(prefix)/info
22
+ top_builddir = $(ac_top_builddir)
23
+ sysconfdir = $(prefix)/etc
24
+ mandir = $(DESTDIR)/opt/local/share/man
25
+ libdir = $(exec_prefix)/lib
26
+ sharedstatedir = $(prefix)/com
27
+ oldincludedir = $(DESTDIR)/usr/include
28
+ sitearchdir = $(sitelibdir)/$(sitearch)
29
+ vendorarchdir = $(vendorlibdir)/$(vendorarch)
30
+ bindir = $(exec_prefix)/bin
31
+ localstatedir = $(prefix)/var
32
+ vendorlibdir = $(vendordir)/$(ruby_version)
33
+ sitelibdir = $(sitedir)/$(ruby_version)
34
+ libexecdir = $(exec_prefix)/libexec
35
+
36
+ CC = gcc
37
+ LIBRUBY = $(LIBRUBY_SO)
38
+ LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
39
+ LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
40
+ LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
41
+
42
+ CFLAGS = -fno-common -O -pipe -I/opt/local/include -fno-common -pipe -fno-common
43
+ CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir) -DHAVE_FCGIAPP_H -O -pipe -I/opt/local/include
44
+ CXXFLAGS = $(CFLAGS)
45
+ DLDFLAGS = -L/opt/local/lib
46
+ LDSHARED = cc -dynamic -bundle -undefined suppress -flat_namespace
47
+ AR = ar
48
+ EXEEXT =
49
+
50
+ RUBY_INSTALL_NAME = ruby
51
+ RUBY_SO_NAME = $(RUBY_INSTALL_NAME)
52
+ arch = powerpc-darwin8.1.0
53
+ sitearch = powerpc-darwin8.1.0
54
+ vendorarch = powerpc-darwin8.1.0
55
+ ruby_version = 1.8
56
+ ruby = /opt/local/bin/ruby
57
+ RUBY = $(ruby)
58
+ RM = $(RUBY) -run -e rm -- -f
59
+ MAKEDIRS = $(RUBY) -run -e mkdir -- -p
60
+ INSTALL_PROG = $(RUBY) -run -e install -- -vpm 0755
61
+ INSTALL_DATA = $(RUBY) -run -e install -- -vpm 0644
62
+
63
+ #### End of system configuration section. ####
64
+
65
+
66
+ LIBPATH = -L"$(libdir)"
67
+ DEFFILE =
68
+
69
+ CLEANFILES =
70
+ DISTCLEANFILES =
71
+
72
+ target_prefix =
73
+ LOCAL_LIBS =
74
+ LIBS = $(LIBRUBYARG_SHARED) -lfcgi -ldl -lobjc
75
+ OBJS = fcgi.o
76
+ TARGET = fcgi
77
+ DLLIB = $(TARGET).bundle
78
+ STATIC_LIB = $(TARGET).a
79
+
80
+ RUBYCOMMONDIR = $(sitedir)$(target_prefix)
81
+ RUBYLIBDIR = $(sitelibdir)$(target_prefix)
82
+ RUBYARCHDIR = $(sitearchdir)$(target_prefix)
83
+
84
+ CLEANLIBS = "$(TARGET).{lib,exp,il?,tds,map}" $(DLLIB)
85
+ CLEANOBJS = "*.{o,a,s[ol],pdb,bak}"
86
+
87
+ all: $(DLLIB)
88
+ static: $(STATIC_LIB)
89
+
90
+ clean:
91
+ @$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
92
+
93
+ distclean: clean
94
+ @$(RM) Makefile extconf.h conftest.* mkmf.log
95
+ @$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
96
+
97
+ realclean: distclean
98
+ install: $(RUBYARCHDIR)
99
+ install: $(RUBYARCHDIR)/$(DLLIB)
100
+ $(RUBYARCHDIR)/$(DLLIB): $(DLLIB) $(RUBYARCHDIR)
101
+ @$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
102
+ $(RUBYARCHDIR):
103
+ @$(MAKEDIRS) $(RUBYARCHDIR)
104
+
105
+ site-install: install
106
+
107
+ .SUFFIXES: .c .cc .m .cxx .cpp .C .o
108
+
109
+ .cc.o:
110
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
111
+
112
+ .cpp.o:
113
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
114
+
115
+ .cxx.o:
116
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
117
+
118
+ .C.o:
119
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $<
120
+
121
+ .c.o:
122
+ $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
123
+
124
+ $(DLLIB): $(OBJS)
125
+ @-$(RM) $@
126
+ $(LDSHARED) $(DLDFLAGS) $(LIBPATH) -o $(DLLIB) $(OBJS) $(LOCAL_LIBS) $(LIBS)
127
+
128
+ $(STATIC_LIB): $(OBJS)
129
+ $(AR) cru $@ $(OBJS)
130
+ @-ranlib $(DLLIB) 2> /dev/null || true
131
+
data/README CHANGED
@@ -5,7 +5,7 @@ Version 0.8.5
5
5
  == Depends
6
6
 
7
7
  === C version
8
- * http://www.fastcgi.com/#TheDevKit
8
+ * ((<libfcgi|URL:http://www.fastcgi.com/#TheDevKit>))(FastCGI Developer's Kit)
9
9
 
10
10
  === Pure Ruby Version
11
11
  * StringIO
@@ -97,8 +97,8 @@ standard CGI library.
97
97
 
98
98
  == License
99
99
 
100
- * http://www.ruby-lang.org/ja/LICENSE.txt (Japanese)
101
- * http://www.ruby-lang.org/en/LICENSE.txt (English)
100
+ * ((<URL:http://www.ruby-lang.org/ja/LICENSE.txt>)) (Japanese)
101
+ * ((<URL:http://www.ruby-lang.org/en/LICENSE.txt>)) (English)
102
102
 
103
103
  == Copyright
104
104
 
@@ -108,4 +108,3 @@ standard CGI library.
108
108
  fastcgi.rb 0.7 Copyright (C) 2001 Eli Green
109
109
  fcgi.rb 0.8 Copyright (C) 2002 MoonWolf <moonwolf@moonwolf.com>
110
110
  fcgi.rb 0.8.5 Copyright (C) 2004 Minero Aoki
111
-
@@ -0,0 +1,76 @@
1
+ = Handling of SIGUSR1
2
+
3
+ When you request a 'graceful' restart of Apache, mod_fastcgi sends a SIGUSR1
4
+ to each of the fastcgi worker processes. The intention is that each one
5
+ should finish the current request, and then exit, at which point Apache will
6
+ restart it. Of course, if the worker isn't doing anything, it should die
7
+ immediately.
8
+
9
+ This is implemented in the fcgi C library as follows:
10
+
11
+ - a signal handler is installed for SIGUSR1, which just sets a flag
12
+ (shutdownPending) and returns
13
+ - fcgi sits inside an accept() call waiting for a new request
14
+ - if this accept() call terminates with EINTR, and this flag is set, then
15
+ it returns with no request
16
+
17
+ Unfortunately, Ruby defeats this mechanism in at least two ways:
18
+
19
+ 1. Ruby installs its own signal handlers for a host of common signals,
20
+ including USR1. The fcgi library will not install its own handler if it
21
+ detects that a handler has already been set (i.e. the current handler is not
22
+ SIG_DFL)
23
+
24
+ 2. When Ruby installs its own signal handlers, it does so with SA_RESTART
25
+ set. This means that the accept() call does not terminate with EINTR; it is
26
+ restarted automatically by the OS.
27
+
28
+ When a signal comes in during the accept(), Ruby's own handler does nothing
29
+ except store it in a queue to be processed later. It is only when the
30
+ accept() call completes, i.e. when a genuine new request comes in, that Ruby
31
+ takes action. Unfortunately it's too late by then, and if that
32
+ already-accepted request is not honoured, a 500 Internal Error will be
33
+ returned to the client.
34
+
35
+ The simplest solution to this would be to remove Ruby's SIGUSR1 handler
36
+ before initialising the FastCGI library.
37
+
38
+ However, a cleaner solution is to call rb_thread_select before going into
39
+ FastCGI's accept loop. If a signal happens during the select, it can be
40
+ handled using Ruby's normal mechanisms. This also gives a very useful
41
+ side-benefit, which is that FCGI::accept no longer blocks out other Ruby
42
+ threads. The program below demonstrates this problem; its background logging
43
+ thread is supposed to write a message every 10 seconds, but under older
44
+ versions of ruby-fcgi it does not do so if it is waiting for a new request.
45
+
46
+ #!/usr/local/bin/ruby
47
+ require "fcgi"
48
+
49
+ Thread.new do
50
+ f = File.new("/tmp/fcgi.log","a")
51
+ f.sync=true
52
+ while true
53
+ f.puts "#{Time.now.to_s} pid #{$$}"
54
+ sleep 10
55
+ end
56
+ end
57
+
58
+ FCGI.each_cgi {|cgi|
59
+ name = cgi['name'][0]
60
+ puts cgi.header
61
+ puts "Hey! You are #{name} " if name
62
+ puts "Connecting from #{cgi.remote_addr}"
63
+ }
64
+
65
+ Having protected the accept() with a ruby select(), you can then handle
66
+ signals as follows:
67
+
68
+ - call FCGI::accept (it will raise an exception if USR1 is called)
69
+ - install a USR1 handler
70
+ - process the request
71
+ - remove the USR1 handler
72
+
73
+ The USR1 handler should set a flag to note if a USR1 signal came in while
74
+ the request was being processed; you terminate the loop if it was set. The
75
+ overall effect is that USR1 will cause the process to terminate, but without
76
+ causing a half-completed request.
@@ -0,0 +1,171 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rake/rdoctask'
5
+ require 'rake/gempackagetask'
6
+ require 'rake/contrib/rubyforgepublisher'
7
+
8
+ PKG_VERSION = "0.8.6"
9
+ PKG_NAME = "fcgi"
10
+ PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
11
+
12
+ PKG_FILES = FileList[
13
+ "lib/**/*",
14
+ "ext/*",
15
+ "ext/fcgi/fcgi.c*",
16
+ "[A-Z]*",
17
+ ].exclude(/\bCVS\b|~$/)
18
+
19
+
20
+ # Publish beta gem
21
+ desc "Publish the gem on leetsoft"
22
+ task :publish => [:package] do
23
+ Rake::SshFilePublisher.new("leetsoft.com", "dist/gems", "pkg", "#{PKG_FILE_NAME}.gem").upload
24
+ Rake::SshFilePublisher.new("leetsoft.com", "dist/pkg", "pkg", "#{PKG_FILE_NAME}.zip").upload
25
+ Rake::SshFilePublisher.new("leetsoft.com", "dist/pkg", "pkg", "#{PKG_FILE_NAME}.tgz").upload
26
+ `ssh tobi@leetsoft.com './gemupdate'`
27
+ end
28
+
29
+ spec = Gem::Specification.new do |s|
30
+ s.name = PKG_NAME
31
+ s.version = PKG_VERSION
32
+ s.summary = %q{FastCGI ruby binding.}
33
+ s.require_paths = ["."]
34
+ s.email = %q{moonwolf@moonwolf.com}
35
+ s.homepage = %q{http://rwiki.moonwolf.com/rw-cgi.cgi?cmd=view;name=fcgi}
36
+ s.autorequire = %q{fcgi}
37
+ s.has_rdoc = true
38
+ s.files = PKG_FILES
39
+ s.extra_rdoc_files = ["README"]
40
+ s.extensions = ["ext/fcgi/extconf.rb"]
41
+ end
42
+
43
+ Rake::GemPackageTask.new(spec) do |p|
44
+ p.gem_spec = spec
45
+ p.need_tar = true
46
+ p.need_zip = true
47
+ end
48
+
49
+ # --- Ruby forge release manager by florian gross -------------------------------------------------
50
+
51
+ RUBY_FORGE_PROJECT = 'fcgi'
52
+ RUBY_FORGE_USER = 'xal'
53
+ RELEASE_NAME = "REL #{PKG_VERSION}"
54
+
55
+ desc "Publish the release files to RubyForge."
56
+ task :release => [:gem] do
57
+ files = ["gem"].map { |ext| "pkg/#{PKG_FILE_NAME}.#{ext}" }
58
+
59
+ if RUBY_FORGE_PROJECT then
60
+ require 'net/http'
61
+ require 'open-uri'
62
+
63
+ project_uri = "http://rubyforge.org/projects/#{RUBY_FORGE_PROJECT}/"
64
+ project_data = open(project_uri) { |data| data.read }
65
+ group_id = project_data[/[?&]group_id=(\d+)/, 1]
66
+ raise "Couldn't get group id" unless group_id
67
+
68
+ # This echos password to shell which is a bit sucky
69
+ if ENV["RUBY_FORGE_PASSWORD"]
70
+ password = ENV["RUBY_FORGE_PASSWORD"]
71
+ else
72
+ print "#{RUBY_FORGE_USER}@rubyforge.org's password: "
73
+ password = STDIN.gets.chomp
74
+ end
75
+
76
+ login_response = Net::HTTP.start("rubyforge.org", 80) do |http|
77
+ data = [
78
+ "login=1",
79
+ "form_loginname=#{RUBY_FORGE_USER}",
80
+ "form_pw=#{password}"
81
+ ].join("&")
82
+ http.post("/account/login.php", data)
83
+ end
84
+
85
+ cookie = login_response["set-cookie"]
86
+ raise "Login failed" unless cookie
87
+ headers = { "Cookie" => cookie }
88
+
89
+ release_uri = "http://rubyforge.org/frs/admin/?group_id=#{group_id}"
90
+ release_data = open(release_uri, headers) { |data| data.read }
91
+ package_id = release_data[/[?&]package_id=(\d+)/, 1]
92
+ raise "Couldn't get package id" unless package_id
93
+
94
+ first_file = true
95
+ release_id = ""
96
+
97
+ files.each do |filename|
98
+ basename = File.basename(filename)
99
+ file_ext = File.extname(filename)
100
+ file_data = File.open(filename, "rb") { |file| file.read }
101
+
102
+ puts "Releasing #{basename}..."
103
+
104
+ release_response = Net::HTTP.start("rubyforge.org", 80) do |http|
105
+ release_date = Time.now.strftime("%Y-%m-%d %H:%M")
106
+ type_map = {
107
+ ".zip" => "3000",
108
+ ".tgz" => "3110",
109
+ ".gz" => "3110",
110
+ ".gem" => "1400"
111
+ }; type_map.default = "9999"
112
+ type = type_map[file_ext]
113
+ boundary = "rubyqMY6QN9bp6e4kS21H4y0zxcvoor"
114
+
115
+ query_hash = if first_file then
116
+ {
117
+ "group_id" => group_id,
118
+ "package_id" => package_id,
119
+ "release_name" => RELEASE_NAME,
120
+ "release_date" => release_date,
121
+ "type_id" => type,
122
+ "processor_id" => "8000", # Any
123
+ "release_notes" => "",
124
+ "release_changes" => "",
125
+ "preformatted" => "1",
126
+ "submit" => "1"
127
+ }
128
+ else
129
+ {
130
+ "group_id" => group_id,
131
+ "release_id" => release_id,
132
+ "package_id" => package_id,
133
+ "step2" => "1",
134
+ "type_id" => type,
135
+ "processor_id" => "8000", # Any
136
+ "submit" => "Add This File"
137
+ }
138
+ end
139
+
140
+ query = "?" + query_hash.map do |(name, value)|
141
+ [name, URI.encode(value)].join("=")
142
+ end.join("&")
143
+
144
+ data = [
145
+ "--" + boundary,
146
+ "Content-Disposition: form-data; name=\"userfile\"; filename=\"#{basename}\"",
147
+ "Content-Type: application/octet-stream",
148
+ "Content-Transfer-Encoding: binary",
149
+ "", file_data, ""
150
+ ].join("\x0D\x0A")
151
+
152
+ release_headers = headers.merge(
153
+ "Content-Type" => "multipart/form-data; boundary=#{boundary}"
154
+ )
155
+
156
+ target = first_file ? "/frs/admin/qrs.php" : "/frs/admin/editrelease.php"
157
+ http.post(target + query, data, release_headers)
158
+ end
159
+
160
+ if first_file then
161
+ release_id = release_response.body[/release_id=(\d+)/, 1]
162
+ raise("Couldn't get release id") unless release_id
163
+ end
164
+
165
+ first_file = false
166
+ end
167
+ end
168
+ end
169
+
170
+
171
+
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "mkmf"
4
+
5
+ dir_config("fcgi")
6
+
7
+ if (have_header("fcgiapp.h") || have_header("fastcgi/fcgiapp.h")) && have_library("fcgi", "FCGX_Accept")
8
+ create_makefile("fcgi")
9
+ end
@@ -7,9 +7,14 @@
7
7
  #include <stdio.h>
8
8
  #include <sys/types.h>
9
9
  #include <unistd.h>
10
+ #include <errno.h>
10
11
 
11
12
  #include "ruby.h"
13
+ #ifdef HAVE_FASTCGI_FCGIAPP_H
14
+ #include <fastcgi/fcgiapp.h>
15
+ #else
12
16
  #include "fcgiapp.h"
17
+ #endif
13
18
 
14
19
  static VALUE cFCGI;
15
20
  static VALUE eFCGIError;
@@ -37,6 +42,12 @@ static void fcgi_mark(fcgi_data *data)
37
42
  rb_gc_mark(data->env);
38
43
  }
39
44
 
45
+ static void fcgi_free_req(fcgi_data *data)
46
+ {
47
+ free(data->req);
48
+ free(data);
49
+ }
50
+
40
51
  static VALUE fcgi_s_accept(VALUE self)
41
52
  {
42
53
  int status;
@@ -64,7 +75,7 @@ static VALUE fcgi_s_accept(VALUE self)
64
75
  VALUE obj,key, value;
65
76
  char *pkey,*pvalue;
66
77
 
67
- obj = Data_Make_Struct(self, fcgi_data, fcgi_mark, 0, data);
78
+ obj = Data_Make_Struct(self, fcgi_data, fcgi_mark, fcgi_free_req, data);
68
79
  data->req = req;
69
80
  data->in = Data_Wrap_Struct(cFCGIStream, 0, 0, req->in);
70
81
  data->out = Data_Wrap_Struct(cFCGIStream, 0, 0, req->out);
@@ -153,9 +164,11 @@ static VALUE fcgi_finish(VALUE self)
153
164
 
154
165
  #define CHECK_STREAM_ERROR(stream) {\
155
166
  int err = FCGX_GetError(stream);\
167
+ extern int errno; \
156
168
  if (err) {\
157
169
  if (err > 0) {\
158
- rb_sys_fail(0);\
170
+ errno = err;\
171
+ rb_sys_fail(NULL);\
159
172
  }\
160
173
  else {\
161
174
  switch (err) {\
@@ -379,7 +392,10 @@ static VALUE fcgi_stream_read(int argc, VALUE *argv, VALUE self)
379
392
  buff = ALLOC_N(char, 16384);
380
393
  n = FCGX_GetStr(buff, 16384, stream);
381
394
  CHECK_STREAM_ERROR(stream);
382
- if (n == 0) return Qnil;
395
+ if (n == 0) {
396
+ free(buff);
397
+ return Qnil;
398
+ }
383
399
  str = rb_str_new(buff, n);
384
400
  OBJ_TAINT(str);
385
401
 
@@ -389,9 +405,11 @@ static VALUE fcgi_stream_read(int argc, VALUE *argv, VALUE self)
389
405
  if (n > 0) {
390
406
  rb_str_cat(str, buff, n);
391
407
  } else {
408
+ free(buff);
392
409
  return Qnil;
393
410
  }
394
411
  }
412
+ free(buff);
395
413
  return str;
396
414
  }
397
415
 
@@ -404,9 +422,11 @@ static VALUE fcgi_stream_read(int argc, VALUE *argv, VALUE self)
404
422
  if (n > 0) {
405
423
  str = rb_str_new(buff, n);
406
424
  OBJ_TAINT(str);
425
+ free(buff);
407
426
  return str;
408
427
  }
409
428
  else {
429
+ free(buff);
410
430
  return Qnil;
411
431
  }
412
432
  }
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: "0.8"
2
+ rubygems_version: 0.8.10
3
3
  specification_version: 1
4
4
  name: fcgi
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.8.5
7
- date: 2004-10-21
6
+ version: 0.8.6
7
+ date: 2005-06-12
8
8
  summary: FastCGI ruby binding.
9
9
  require_paths:
10
10
  - "."
11
- author: "Network Applied Communication Laboratory, Inc., MoonWolf, Eli Green, Minero Aoki"
12
11
  email: moonwolf@moonwolf.com
13
12
  homepage: http://rwiki.moonwolf.com/rw-cgi.cgi?cmd=view;name=fcgi
14
13
  rubyforge_project:
@@ -25,20 +24,22 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
24
  version: 0.0.0
26
25
  version:
27
26
  platform: ruby
27
+ authors: []
28
28
  files:
29
- - lib
30
- - extconf.rb
31
- - fcgi.c
32
- - MANIFEST
33
- - README
34
- - fcgi.gemspec
35
29
  - lib/fcgi.rb
30
+ - ext/fcgi
31
+ - ext/fcgi/fcgi.c
32
+ - ChangeLog
33
+ - Makefile
34
+ - Rakefile
35
+ - README
36
+ - README.signals
36
37
  test_files: []
37
38
  rdoc_options: []
38
39
  extra_rdoc_files:
39
40
  - README
40
41
  executables: []
41
42
  extensions:
42
- - extconf.rb
43
+ - ext/fcgi/extconf.rb
43
44
  requirements: []
44
45
  dependencies: []
data/MANIFEST DELETED
@@ -1,5 +0,0 @@
1
- MANIFEST
2
- README
3
- extconf.rb
4
- fcgi.c
5
- lib/fcgi.rb
data/extconf.rb DELETED
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "mkmf"
4
-
5
- dir_config("fcgi")
6
-
7
- if have_header("fcgiapp.h") && have_library("fcgi", "FCGX_Accept")
8
- create_makefile("fcgi")
9
- end
@@ -1,16 +0,0 @@
1
- Gem::Specification.new do |s|
2
- s.name = %q{fcgi}
3
- s.version = "0.8.5"
4
- s.date = Time.now
5
- s.require_path = %q{.}
6
- s.summary = %q{FastCGI ruby binding.}
7
- s.author = %q{Network Applied Communication Laboratory, Inc., MoonWolf, Eli Green, Minero Aoki}
8
- s.platform = Gem::Platform::RUBY
9
- s.files = Dir.glob('**/*')
10
- s.email = %q{moonwolf@moonwolf.com}
11
- s.homepage = %q{http://rwiki.moonwolf.com/rw-cgi.cgi?cmd=view;name=fcgi}
12
- s.autorequire = %q{fcgi}
13
- s.extensions = ["extconf.rb"]
14
- s.has_rdoc = true
15
- s.extra_rdoc_files = ["README"]
16
- end