[#24065] Perl/Ruby Conference in Kyoto — Noritsugu Nakamura <nnakamur@...>
[#24073] Ruby で使える XML パーザーについて — Takaharu Yamashita <takayan@...2.so-net.ne.jp>
はじめまして。
[#24088] mod_ruby-0.1.8 and postgres-0.6.1 — Teruki Shigitani <shigi@...>
鴫谷と申します. はじめまして.
[#24095] p <obj> の返値 — ARIMA Yasuhiro <fit0298@...>
有馬です。
[#24102] Perl/Ruby Conference 開催決定 ! — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#24109] gtk+ なクラスブラウザ — kadu <kadu3@...16.alpha-net.ne.jp>
みなさんはじめまして、kaduというものです。
[#24112] ある method がどこで def されたか調べる方法 — Yasushi Shoji <yashi@...>
やすしです。
[#24126] embedded Ruby for Verilog — "Kikutani, Makoto" <kikutani@...>
VerilogにRubyを組み込もうと思ってはじめたのですが、最初からつまづきました。
[#24134] File.rename error message — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
In message <200008081252.AA00846@VZF07161.nifty.ne.jp>
もりきゅうです。
In message <200008081648.AA00863@VZF07161.nifty.ne.jp>
In article <200008082329.e78NTWZ20292@edge.sky.yamashina.kyoto.jp>,
In message <hvo66pbgvfa.fsf@serein.m17n.org>
[#24158] Hash の初期値に [] を使う — Mitsuhiro Kondo <kondo@...>
rubyを使っていて不思議に思ったことがあります。
[#24176] FreeBSD ports — "Akinori -Aki- MUSHA" <knu@...>
こんにちは、 knu です。
ごとけんです
こんばんは。御指摘ありがとうございます。
In message <86og2yofwu.wl@localhost.local.idaemons.org>
最近ports関連はすっかりさぼっている福間@福岡 です。
こんにちは。
In message <86vgx5fv7j.wl@daemon.local.idaemons.org>
福間@福岡 です。
ごとけんです
福間@福岡 です。
[#24191] drb.rb: 0x40155740 is recycled object (IndexError) — Hideto ISHIBASHI <hideto-i@...4u.or.jp>
おひさしぶりです。石橋秀仁です。
石橋秀仁です。咳さん、お返事ありがとうございます。
石橋秀仁です。咳さん、お返事ありがとうございます。
石橋さん、今日は、上手(かみて@XP-ML)です。
おや、上手さん。こちらでは始めまして。(Subject変えました)
[#24210] install guide — gotoken@... (GOTO Kentaro)
ごとけんです
From: gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro)
[#24222] FreeBSD ports #3 — "Akinori -Aki- MUSHA" <knu@...>
今日は以下の FreeBSD ports を追加しました。
[#24226] Ruby で日本語とスペイン語の混在文は? — Kakuzi TAKAHASI <ktaka@...>
はじめまして。
まつもと ゆきひろです
[#24250] コマンドの STDERR への出力を補足したい。 — Kengo Nakajima <ringo@...>
こんにちは
[#24257] デバッグ用にデータをダンプしたい — Mitsuhiro Kondo <kondo@...>
rubyでプログラムを作っていてデータをダンプしたくなったので、
[#24267] What's the biggest Ruby development? — Dave Thomas <Dave@...>
[#24274] About sub with multilines — kiri@...
はじめまして 桐山@鳥羽商船高等専門学校 と申します。
[#24280] RE: [ruby-list:24268] cygwinでconfigure不能:cygwin1.dllの問題 — "Mitsuo Igarashi" <mitsu5@...>
mitsu5 です。
[#24284] 拡張ライブラリ作成時の NULL ポインター — Akimichi Tatsukawa <akimichi@...>
こんばんは、立川と申します。
[#24294] grep(!/hoge/)? — kiri@...
桐山です。
[#24298] Re: cygwin で configure 不能 :cygwin1.dll の問題 — "Mitsuo Igarashi" <mitsu5@...>
mitsu5 です
[#24323] HP-UX 上での ruby1.4.6 make getaddrinfo.c err — yasuaki onishi <yasuaki@...4u.or.jp>
初めての投稿する大西と申します。
[#24324] ruby の発展の為に — "Mitsuo Igarashi" <mitsu5@...>
Windows に ruby をインストールしようとして、皆様に助けられ
思いっ切りUNIXな者からの、おそらく偏ってるであろう意見です。
桐山です。
ごとけんです
From: gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro)
ごとけんです
新井です。
Koji Arai <JCA02266@nifty.ne.jp> wrote:
From: Koji Arai <JCA02266@nifty.ne.jp>
From: rubikitch <rubikitch@ruby-lang.org>
新井です。
From: Koji Arai <JCA02266@nifty.ne.jp>
新井です。
From: Koji Arai <JCA02266@nifty.ne.jp>
新井です。
From: Koji Arai <JCA02266@nifty.ne.jp>
師星です。
From: MOROHOSHI Akihiko <moro@remus.dti.ne.jp>
師星です。
From: MOROHOSHI Akihiko <moro@remus.dti.ne.jp>
新井です。
新井です。
ふなばです (RD の話題についていけてない)。
新井です。
ふなばです。
新井です。
ふなばです。
新井です。
ふなばです。
Toshです。
ふなばです。
Toshです。
From: Koji Arai <JCA02266@nifty.ne.jp>
ふなばです。
[#24329] Coerce between Range and Boolean — NISHIKAWA <nyasu@...3web.ne.jp>
こんばんは。にゃす@3web です。
ごとけんです
[#24341] install guide draft — gotoken@... (GOTO Kentaro)
ごとけんです
桐山です。
ごとけんです
At Tue, 22 Aug 2000 17:23:47 +0900,
T.Shimomura です。
rpm系はrpmの入手先や存在するrpmが違うだけでインストール方法などは
ごとけんです
At Wed, 23 Aug 2000 23:50:01 +0900,
なかだです。
"Nobuyoshi.Nakada" <nobu.nakada@nifty.ne.jp> wrote:
高橋征義です。
ごとけんです
高橋征義です。
ごとけんです
In message "[ruby-list:24448] Re: did commit install guide"
助田です。
ごとけんです
なかだです。
こんばんは、伊達と申します。
ごとけんです
渡辺哲也です。
ごとけんです
渡辺哲也です。
[#24447] (RDP) tempfile.rd — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>
Toshです。
[#24469] レンタルサーバで eruby — Tokita Kousui <ktokita@...>
前にレンタルサーバでerubyを動かせないと騒いでた時田です(^^;
たけうちかほりです。
前田です。
前田です。
[#24473] RD for(?) Cygwin — polygon <kiyose@...>
ポリゴンです。
[#24499] FreeBSD port: x11-toolkits/rubytk — Yasuhiro Fukuma <yasuf@...>
福間@福岡 です。
[#24522] (RDP) readline — Koji Arai <JCA02266@...>
新井です。
[#24531] RD 質問 — Koji Arai <JCA02266@...>
新井です。
新井です。
Koji Arai <JCA02266@nifty.ne.jp> wrote:
[#24550] Array への nil の代入について — Kenya Ogata <k_ogata@...>
おがたといいます。
おがたです
Kenya Ogata <k_ogata@mbd.nifty.com> wrote:
# reject されて悔しいからもう一回書く :-)
[#24592] perl to ruby — "Yasuyuki Imai" <waver@...3.ttcn.ne.jp>
[#24631] Re: RubyDocumentationProject( 仮 ) — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
From: TAKAHASHI Masayoshi <maki@inac.co.jp>
[#24648] RDP のフォーマット案 — Koji Arai <JCA02266@...>
新井です。
まつもと ゆきひろです
[#24673] regex search on the charaters with MSBs on — Jun Adachi <adachi@...>
安達@沖データです。
まつもと ゆきひろです
まつもと ゆきひろです
[ruby-list:24615] Re: レンタルサーバで eruby
前田です。
At Fri, 25 Aug 2000 17:08:51 +0900,
Shugo Maeda <shugo@ruby-lang.org> wrote:
> > #!/bin/sh
> > /usr/local/bin/eruby -KS
>
> erubyが#!行の引数を見るようにすればこういうトリックは要らないはず
> なんですよね。
> この点は対応したいです。
試しに実装しました。
ついでに、
-C [charset] specifies charset parameter for Content-Type
というoptionを追加しました。
(#!行で見るのは-Kと-Cだけです。)
#!/usr/bin/eruby -Ks -C shift_jis
のようにファイルの先頭に書いておけば、それっぽい動作をするはずで
す。
--
前田 修吾
Index: eruby.c
===================================================================
RCS file: /home/cvs/eruby/eruby.c,v
retrieving revision 1.7
diff -u -r1.7 eruby.c
--- eruby.c 2000/05/30 02:36:05 1.7
+++ eruby.c 2000/08/28 08:25:41
@@ -5,6 +5,11 @@
#include "ruby.h"
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <errno.h>
#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
@@ -31,6 +36,94 @@
#define EOP (-2)
+static int parse_options(FILE *in, FILE *out)
+{
+ int c;
+
+ do {
+ c = getc(in);
+ if (c == EOF) return 0;
+ } while (!isspace(c));
+
+ for (;;) {
+ c = getc(in);
+ again:
+ switch (c) {
+ case EOF:
+ return 0;
+ case '\n':
+ putc(c, out);
+ return 0;
+ case '-':
+ c = getc(in);
+ switch (c) {
+ case 'K':
+ {
+ char tmp[1];
+
+ c = getc(in);
+ if (c == EOF || c == '\n')
+ return -1;
+ tmp[0] = c;
+ rb_set_kcode(tmp);
+ while (c != EOF && !isspace(c)) {
+ c = getc(in);
+ }
+ goto again;
+ }
+ case 'C':
+ {
+ int term;
+ char tmp[1];
+ VALUE charset = rb_str_new("", 0);
+
+ c = getc(in);
+ while (isspace(c)) {
+ if (c == '\n') return -1;
+ c = getc(in);
+ }
+ if (c == EOF) {
+ return -1;
+ }
+ else if (c == '"' || c == '\'') {
+ term = c;
+ c = getc(in);
+ while (c != EOF && c != term) {
+ tmp[0] = c;
+ rb_str_cat(charset, tmp, 1);
+ c = getc(in);
+ }
+ eruby_charset = charset;
+ }
+ else {
+ while (c != EOF && !isspace(c)) {
+ tmp[0] = c;
+ rb_str_cat(charset, tmp, 1);
+ c = getc(in);
+ }
+ eruby_charset = charset;
+ goto again;
+ }
+ break;
+ }
+ default:
+ return -1;
+ }
+ break;
+ case ' ':
+ case '\t':
+ case '\v':
+ case '\f':
+ case '\r':
+ break;
+ default:
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
static int parse_embedded_program(FILE *in, FILE *out,
enum embedded_program_type type)
{
@@ -122,13 +215,20 @@
c = getc(in);
if (c == '#') {
- do {
- c = getc(in);
- if (c == '\n') {
- putc('\n', out);
- break;
+ c = getc(in);
+ if (c == '!') {
+ if (parse_options(in, out) == -1)
+ return ERUBY_INVALID_OPTION;
+ }
+ else {
+ while (c != EOF) {
+ c = getc(in);
+ if (c == '\n') {
+ putc(c, out);
+ break;
+ }
}
- } while (c != EOF);
+ }
}
else {
ungetc(c, in);
@@ -276,6 +376,7 @@
char *tmp;
VALUE scriptname;
FILE *in, *out;
+ int fd;
int err;
if (strcmp(filename, "-") == 0) {
@@ -285,18 +386,29 @@
if ((in = fopen(filename, "r")) == NULL)
rb_sys_fail(filename);
}
+ retry:
if ((tmp = eruby_mktemp(filename)) == NULL)
- rb_fatal("Can't mktemp");
+ rb_fatal("can't mktemp");
+ fd = open(tmp, O_CREAT |O_EXCL | O_WRONLY, 0600);
+ if (fd < 0) {
+ free(tmp);
+ if (errno == EEXIST)
+ goto retry;
+ rb_fatal("cannot open temporary file: %s", tmp);
+ }
scriptname = rb_str_new2(tmp);
free(tmp);
- if ((out = fopen(RSTRING(scriptname)->ptr, "w")) == NULL)
- rb_fatal("Cannot open temporary file: %s", RSTRING(scriptname)->ptr);
+ if ((out = fdopen(fd, "w")) == NULL)
+ rb_fatal("cannot open temporary file: %s", RSTRING(scriptname)->ptr);
err = eruby_compile(in, out);
if (in != stdin) fclose(in);
fclose(out);
switch (err) {
case ERUBY_MISSING_END_DELIMITER:
rb_raise(rb_eSyntaxError, "missing end delimiter");
+ break;
+ case ERUBY_INVALID_OPTION:
+ rb_raise(rb_eSyntaxError, "invalid #! line");
break;
case ERUBY_SYSTEM_ERROR:
rb_sys_fail(filename);
Index: eruby.h
===================================================================
RCS file: /home/cvs/eruby/eruby.h,v
retrieving revision 1.7
diff -u -r1.7 eruby.h
--- eruby.h 2000/05/18 08:09:13 1.7
+++ eruby.h 2000/08/28 08:25:41
@@ -11,6 +11,7 @@
enum eruby_compile_status {
ERUBY_OK = 0,
ERUBY_MISSING_END_DELIMITER,
+ ERUBY_INVALID_OPTION,
ERUBY_SYSTEM_ERROR
};
Index: eruby_main.c
===================================================================
RCS file: /home/cvs/eruby/eruby_main.c,v
retrieving revision 1.12
diff -u -r1.12 eruby_main.c
--- eruby_main.c 2000/08/25 07:41:44 1.12
+++ eruby_main.c 2000/08/28 08:25:41
@@ -433,7 +433,7 @@
static VALUE defout_cancel(VALUE self)
{
- if (RSTRING(self)->len == 0) return;
+ if (RSTRING(self)->len == 0) return Qnil;
RSTRING(self)->len = 0;
RSTRING(self)->ptr[0] = '\0';
return Qnil;
@@ -483,6 +483,7 @@
f: filter mode\n\
c: CGI mode\n\
n: NPH-CGI mode\n\
+ -C [charset] specifies charset parameter for Content-Type\n\
-n, --noheader disables CGI header output\n\
-v, --verbose enables verbose mode\n\
--version print version information and exit\n\
@@ -564,9 +565,28 @@
break;
#endif
case 'K':
- rb_set_kcode(++s);
s++;
+ if (*s == '\0') {
+ fprintf(stderr, "%s: no arg given for -K\n", argv[0]);
+ exit(2);
+ }
+ rb_set_kcode(s);
+ s++;
goto again;
+ case 'C':
+ s++;
+ if (*s == '\0') {
+ i++;
+ if (i == argc) {
+ fprintf(stderr, "%s: no arg given for -C\n", argv[0]);
+ exit(2);
+ }
+ eruby_charset = rb_str_new2(argv[i]);
+ }
+ else {
+ eruby_charset = rb_str_new2(s);
+ }
+ break;
case 'd':
ruby_debug = Qtrue;
s++;
@@ -625,6 +645,18 @@
char *out;
int nout;
+ ruby_init();
+#if RUBY_VERSION_CODE >= 145
+ rb_ary_push(rb_load_path, rb_str_new2("."));
+#endif
+ if (eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI)
+ rb_set_safe_level(1);
+
+ rb_defout = rb_str_new("", 0);
+ rb_define_singleton_method(rb_defout, "write", defout_write, 1);
+ rb_define_singleton_method(rb_defout, "cancel", defout_cancel, 0);
+ eruby_init();
+
parse_options(argc, argv);
if (eruby_mode == MODE_UNKNOWN)
eruby_mode = guess_mode();
@@ -643,17 +675,6 @@
eruby_filename = "-";
}
- ruby_init();
-#if RUBY_VERSION_CODE >= 145
- rb_ary_push(rb_load_path, rb_str_new2("."));
-#endif
- if (eruby_mode == MODE_CGI || eruby_mode == MODE_NPHCGI)
- rb_set_safe_level(1);
-
- rb_defout = rb_str_new("", 0);
- rb_define_singleton_method(rb_defout, "write", defout_write, 1);
- rb_define_singleton_method(rb_defout, "cancel", defout_cancel, 0);
- eruby_init();
script = eruby_load(eruby_filename, 0, &state);
if (state && !rb_obj_is_kind_of(ruby_errinfo, rb_eSystemExit)) {
error_print(state, eruby_mode, script);