• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

シェルスクリプト言語xyzshのソースコード。


コミットメタ情報

リビジョン7ff76ca6a8e9398f6a2bc4fa1138c2a040b4bdc1 (tree)
日時2013-01-20 12:52:21
作者ab25cq <ab25cq@gmai...>
コミッターab25cq

ログメッセージ

1.3.2

変更サマリ

差分

--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,16 @@
11
2+2013 20th January version 1.3.2
3+
4+ 1. Added "strip" and "objinfo" inner command
5+
6+ 2. Improved some object completions
7+
8+2013 1月20日 version 1.3.2
9+
10+ 1. stripとobjinfoコマンドを追加。
11+
12+ 2. コマンドライン補完をいくつか修正。
13+
214 2013 17th January version 1.3.1
315
416 1. Refactoring.
@@ -25,9 +37,9 @@
2537
2638 2013 1月10日 version 1.3.0
2739
28- 1. ダイナミックライブラリーのバージョンアップ
40+ 1. ダイナミックライブラリーのバージョンアップ
2941
30- 2. リファクタリング。memcheckerの廃止。オブジェクトの消費メモリが少なくなりました。(1オブジェクトを32バイトまで落とせた)
42+ 2. リファクタリング。memcheckerの廃止。オブジェクトの消費メモリが少なくなりました。(1オブジェクトを32バイトまで落とせた)
3143
3244 mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzshに対応します。
3345
@@ -71,21 +83,21 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh
7183
7284 2012 12月20日 version 1.2.7
7385
74- 1. グロブの展開がパーサー時ではなくて実行時に起こるように変更。
86+ 1. グロブの展開がパーサー時ではなくて実行時に起こるように変更。
7587
76- いままでだとスクリプトをloadして、その中にグロブの記述がある場合、もし中でcdをしても、スクリプトをloadした時点でのカレントディレクトリでグロブが検索されていました。
88+ いままでだとスクリプトをloadして、その中にグロブの記述がある場合、もし中でcdをしても、スクリプトをloadした時点でのカレントディレクトリでグロブが検索されていました。
7789
78- > vim a.xyzsh
79- cd /
80- echo *
81- > echo *
82- a.c b.c d.c
83- > load a.xyzsh
84- a.c b.c d.c
90+ > vim a.xyzsh
91+ cd /
92+ echo *
93+ > echo *
94+ a.c b.c d.c
95+ > load a.xyzsh
96+ a.c b.c d.c
8597
86- ↑おかしい
98+ ↑おかしい
8799
88- 2. ダイナミックライブラリのバージョンアップ。mfiler4にも影響があります。mfiler4は1.0.6から、このxyzshに対応します。
100+ 2. ダイナミックライブラリのバージョンアップ。mfiler4にも影響があります。mfiler4は1.0.6から、このxyzshに対応します。
89101
90102 2012 12月14日 version 1.2.6
91103
@@ -100,76 +112,76 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh
100112 1. readlineコマンドが入力が空の時落ちていました。
101113
102114 2012 8th December version 1.2.5c
103-
115+
104116 1. If input was empty, readline command would occur error on xyzsh previous version.
105117
106118 2012 12月08日 version 1.2.5b
107119
108- 1. 最適化レベルを3にしてみました。問題があればまた1に戻します。
120+ 1. 最適化レベルを3にしてみました。問題があればまた1に戻します。
109121
110122 2012 8th December version 1.2.5b
111-
112- 1. Up optimize level from 1 to 3.
123+
124+ 1. Up optimize level from 1 to 3.
113125
114126 2012 12月04日 version 1.2.5a
115127
116- 1. クォートの仕様が変わっています。
128+ 1. クォートの仕様が変わっています。
117129
118- シングルクォートは今までと同じです。ダブルクォートはダブルクォートの中でクォートを使った場合動きが変わっています。
130+ シングルクォートは今までと同じです。ダブルクォートはダブルクォートの中でクォートを使った場合動きが変わっています。
119131
120- > print "Hello World\n"
121- Hello World
132+ > print "Hello World\n"
133+ Hello World
122134
123- > print "\\\\ \n"
124- \\
135+ > print "\\\\ \n"
136+ \\
125137
126- 普通のスクリプト言語やbashと同じようになっています。
138+ 普通のスクリプト言語やbashと同じようになっています。
127139
128- シングルクォートの場合は今までと同じです。
140+ シングルクォートの場合は今までと同じです。
129141
130- > print 'Hello World\n'
131- Hello World\n
142+ > print 'Hello World\n'
143+ Hello World\n
132144
133- > print '\\\\'
134- \\\\
145+ > print '\\\\'
146+ \\\\
135147
136148 2012 4th December version 1.2.5a
137149
138- 1. Changed double quote way like below
150+ 1. Changed double quote way like below
139151
140- > print "Hello World\n"
141- Hello World
152+ > print "Hello World\n"
153+ Hello World
142154
143- > print "\\\\ \n"
144- \\
155+ > print "\\\\ \n"
156+ \\
145157
146- Sigle quote way is
158+ Sigle quote way is
147159
148- > print 'Hello World\n'
149- Hello World\n
160+ > print 'Hello World\n'
161+ Hello World\n
150162
151- > print '\\\\'
152- \\\\
163+ > print '\\\\'
164+ \\\\
153165
154166 2012 11月30日 version 1.2.5
155167
156- 1. オプションに変数展開があると変数が展開されないバグを修正
168+ 1. オプションに変数展開があると変数が展開されないバグを修正
157169
158170 2012 30th November version 1.2.5
159171
160- 1. Fixed a bug with expanding variables in option argument.
172+ 1. Fixed a bug with expanding variables in option argument.
161173
162174 2012 11月29日 version 1.2.4a
163175
164- 1. xyzshの設定ファイルを修正。
176+ 1. xyzshの設定ファイルを修正。
165177
166- 2. forコマンドを追加
178+ 2. forコマンドを追加
167179
168180 2012 29th November version 1.2.4a
169181
170182 1. Changed xyzsh.xyzsh setting file.
171183
172- 2. Added "for" iner command.
184+ 2. Added "for" iner command.
173185
174186 2012 11月26日 version 1.2.4
175187
@@ -267,51 +279,51 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh
267279
268280 2012 11月25日 version 1.2.2d
269281
270- 1. グローバルパイプに追記機能を追加しました。
282+ 1. グローバルパイプに追記機能を追加しました。
271283
272284 2012 25th November version 1.2.2d
273285
274- 1. Added appending data function to global pipe with |>>
286+ 1. Added appending data function to global pipe with |>>
275287
276288 2012 11月24日 version 1.2.2c
277289
278- 1. 環境変数の補完を入れました。
290+ 1. 環境変数の補完を入れました。
279291
280- 2. readlineで=が単語の区切りになりました。
292+ 2. readlineで=が単語の区切りになりました。
281293
282294 2012 24th November version 1.2.2c
283295
284- 1. Implematation of environment variable completion.
296+ 1. Implematation of environment variable completion.
285297
286- 2. Begin to use = character as word break character.
298+ 2. Begin to use = character as word break character.
287299
288300 2012 11月24日 version 1.2.2b
289301
290- 1. パイプの中のオブジェクト数に制限をかけました。128個以上になるとエラーを出して止まります。
302+ 1. パイプの中のオブジェクト数に制限をかけました。128個以上になるとエラーを出して止まります。
291303
292- 2. print ""\nとした場合パーサーがエラーを出していたバグを修正。
304+ 2. print ""\nとした場合パーサーがエラーを出していたバグを修正。
293305
294306 2012 24th November version 1.2.2b
295307
296- 1. Set limit to the number of objects in pipe.
308+ 1. Set limit to the number of objects in pipe.
297309
298- 2. Fixed bug which is err with 'print ""\n'.
310+ 2. Fixed bug which is err with 'print ""\n'.
299311
300312 2012 11月22日 version 1.2.2a
301313
302- 1. ダイナミックライブラリのバージョンが1.5.1にあがりました。
314+ 1. ダイナミックライブラリのバージョンが1.5.1にあがりました。
303315
304- 2. var, ary, hash, objectに-newオプションができました。
316+ 2. var, ary, hash, objectに-newオプションができました。
305317
306- 3. times 関数を追加。
318+ 3. times 関数を追加。
307319
308320 2012 22th November version 1.2.2a
309321
310- 1. Version up dynamic linked library
322+ 1. Version up dynamic linked library
311323
312- 2. Added -new option to "var", "ary", "hash", and "object" inner command.
324+ 2. Added -new option to "var", "ary", "hash", and "object" inner command.
313325
314- 3. Added "times" function.
326+ 3. Added "times" function.
315327
316328 2012 11月22日 version 1.2.2
317329
@@ -331,21 +343,21 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh
331343
332344 2012 22th November version 1.2.1
333345
334- 1. Add -local option to "ref" command.
346+ 1. Add -local option to "ref" command.
335347
336- 2. Fixed sweep [object name] bug.
348+ 2. Fixed sweep [object name] bug.
337349
338350 2012 11月22日 version 1.2.1
339351
340- 1. refコマンドに-localオプションを追加
352+ 1. refコマンドに-localオプションを追加
341353
342- 2. sweep オブジェクト名でxyzshが落ちていたバグを修正。
354+ 2. sweep オブジェクト名でxyzshが落ちていたバグを修正。
343355
344356 2012 22th November version 1.2.1
345357
346- 1. Add -local option to "ref" command.
358+ 1. Add -local option to "ref" command.
347359
348- 2. Fixed sweep [object name] bug.
360+ 2. Fixed sweep [object name] bug.
349361
350362 2012 11月12日 version 1.2.0
351363
@@ -399,24 +411,24 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh
399411
400412 2012 5th Norvember version 1.1.8a
401413
402- Fixed errror message.
414+ Fixed errror message.
403415
404416 2012 30th Octorber version 1.1.8
405417
406- Added -index option to "add" inner command and "del" inner command.
418+ Added -index option to "add" inner command and "del" inner command.
407419
408- Added ~/.xyzsh/program mechanizm to entry external program for root
409- object. See USAGE or USAGE.ja
420+ Added ~/.xyzsh/program mechanizm to entry external program for root
421+ object. See USAGE or USAGE.ja
410422
411423 2012 30th Octorber version 1.1.7a
412424
413- Deleted castamized code for CYGWIN. It has not been required.
425+ Deleted castamized code for CYGWIN. It has not been required.
414426
415427 2012 30th Octorber version 1.1.7
416428
417- Fixed a bug with expanding environmet on redirects
429+ Fixed a bug with expanding environmet on redirects
418430
419- Fixed Makefile.in
431+ Fixed Makefile.in
420432
421433 2012 30th Octorber version 1.1.6
422434
@@ -555,68 +567,68 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh
555567
556568 2012 2nd Octorber version 1.0.2
557569
558- Version up dynamic linked library
570+ Version up dynamic linked library
559571
560- Add interface for xyzsh
572+ Add interface for xyzsh
561573
562- Made sObject memory size smaller
574+ Made sObject memory size smaller
563575
564576 2012 12th August version 1.0.1a
565577
566- Version up dynamic linked library
578+ Version up dynamic linked library
567579
568- Add interface for xyzsh
580+ Add interface for xyzsh
569581
570582 2012 12th August version 1.0.1
571583
572- Deleted write command which behave like a redirect, and make newer write command.
584+ Deleted write command which behave like a redirect, and make newer write command.
573585
574586 2012 12th August version 1.0.0b
575587
576- Fixed valid file archive type.
588+ Fixed valid file archive type.
577589
578590 2012 12th August version 1.0.0a
579-
580- Fixed dead lock of pipes with big data.
591+
592+ Fixed dead lock of pipes with big data.
581593
582594 2012 12th August version 1.0.0
583-
584- Added redirects(<) to xyzsh.
595+
596+ Added redirects(<) to xyzsh.
585597
586- Fixed write inner command.
598+ Fixed write inner command.
587599
588600 2012 12th August version 0.9.9g
589-
590- Fixed WINCH signal.
601+
602+ Fixed WINCH signal.
591603
592604 2012 12th August version 0.9.9f
593-
594- Fixed tcsetpgrp argument.
605+
606+ Fixed tcsetpgrp argument.
595607
596608 2012 12th August version 0.9.9e
597609
598- Gabage Collection bug was fixed.
610+ Gabage Collection bug was fixed.
599611
600612 2012 9th August version 0.9.9d
601613
602- Fixed STDOUT buffer bugs.
614+ Fixed STDOUT buffer bugs.
603615
604616 2012 8th August version 0.9.9c
605617
606- Fiexed completion bugs. I'm sorry I've found the bugs yet.
618+ Fiexed completion bugs. I'm sorry I've found the bugs yet.
607619
608620 2012 8th August version 0.9.9b
609621
610- Fixed completion bugs. I think maybe desipated all completion bugs.
622+ Fixed completion bugs. I think maybe desipated all completion bugs.
611623
612- Version 0.9.9b is Released
624+ Version 0.9.9b is Released
613625
614626 2012 7th August version 0.9.9a
615627
616- Fixed completion bugs
628+ Fixed completion bugs
617629
618- Version 0.9.9a is Released
630+ Version 0.9.9a is Released
619631
620632 2012 5th August version 0.9.9
621- Version 0.9.9 is Released
633+ Version 0.9.9 is Released
622634
--- a/completion.xyzsh
+++ b/completion.xyzsh
@@ -49,21 +49,21 @@ class object_completion (
4949 inputing |chomp | split :: | lines 0..-2 | if( | -n) (
5050 | join ::| var -local PREFIX
5151 if(KIND | = all\n) (
52- eval "${PREFIX}::show" | each ( | if(|=~ ': object$') (| sub '(.+):' '\1:::'; |print ) else (|print) ) | scan '(.+?:?:?):' | each ( | add -number 0 ${PREFIX}:: )
52+ eval "${PREFIX}::show" | each ( | if(|=~ ': object$') (| sub '(.+):' '\1:::' ) else (|print) ) | scan '(.+?:?:?):' | each ( | add -number 0 ${PREFIX}:: )
5353 ) else (
54- eval "${PREFIX}::show" | egrep ": $KIND\$|: object\$" | each ( | if(|=~ ': object$') (| sub '(.+):' '\1:::'; | print ) else (|print) ) | scan '(.+?:?:?):' | each ( | add -number 0 ${PREFIX}:: )
54+ eval "${PREFIX}::show" | egrep ": $KIND\$|: object\$" | each ( | if(|=~ ': object$') (| sub '(.+):' '\1:::' ) else (|print) ) | scan '(.+?:?:?):' | each ( | add -number 0 ${PREFIX}:: )
5555 )
5656 )
5757 ) else (
5858 pwo | var -local current
5959 while(true) (
6060 if(KIND | = all\n) (
61- eval "${current}show" | each ( | if(|=~ ': object$') (| sub '(.+):' '\1:::'; |print ) else (|print) ) | root::scan '(^.+?:?:?):'
61+ eval "${current}::show" | each ( | if(|=~ ': object$') (| sub '(.+):' '\1:::' ) else (|print) ) | root::scan '(^.+?:?:?):'
6262 ) else (
63- eval "${current}show" | egrep ": $KIND\$|: object\$" | each ( | if(|=~ ': object$') (| sub '(.+):' '\1:::'; |print ) else (|print) ) | root::scan '(^.+?:?:?):'
63+ eval "${current}::show" | egrep ": $KIND\$|: object\$" | each ( | if(|=~ ': object$') (| sub '(.+):' '\1:::' ) else (|print) ) | root::scan '(^.+?:?:?):'
6464 )
65- if(current | = root::\n) ( break )
66- current | split :: | lines 0..-4 | join :: |chomp| add :: | var -local current
65+ if(current | = root\n) ( break )
66+ current | strip | split :: | lines 0..-2| join :: | var -local current
6767 )
6868 )
6969 )
@@ -108,6 +108,16 @@ completion ref (
108108 hash COMPLETION_OPTIONS -key ref
109109 )
110110
111+completion defined (
112+ | object_completion all
113+ hash COMPLETION_OPTIONS -key defined
114+)
115+
116+completion objinfo (
117+ | object_completion all
118+ hash COMPLETION_OPTIONS -key defined
119+)
120+
111121 completion export (
112122 sys::env | scan '(.+?)='
113123 )
@@ -117,9 +127,6 @@ completion sweep (
117127 hash COMPLETION_OPTIONS -key sweep
118128 )
119129
120-completion defined (
121- self | egrep -v external\ program\$ | egrep -v native\ function\$ | egrep -v '^root:|^self:|^parent:|^run:'| root::scan '(^.+?):'
122-)
123130
124131 completion help (
125132 root::self | egrep native\ function\$ | root::scan '(^.+?):' | add sub\nsplit\nscan\n | each ( | chomp | quote | pomch )
--- /dev/null
+++ b/config.log
@@ -0,0 +1,184 @@
1+This file contains any messages produced by compilers while
2+running configure, to aid debugging if configure makes a mistake.
3+
4+It was created by configure, which was
5+generated by GNU Autoconf 2.68. Invocation command line was
6+
7+ $ ./configure --with-migemo --with-debug --with-system-migemodir=/usr/local/share/migemo/
8+
9+## --------- ##
10+## Platform. ##
11+## --------- ##
12+
13+hostname = ab25cq-PC
14+uname -m = i686
15+uname -r = 1.7.17(0.262/5/3)
16+uname -s = CYGWIN_NT-6.1-WOW64
17+uname -v = 2012-10-19 14:39
18+
19+/usr/bin/uname -p = unknown
20+/bin/uname -X = unknown
21+
22+/bin/arch = i686
23+/usr/bin/arch -k = unknown
24+/usr/convex/getsysinfo = unknown
25+/usr/bin/hostinfo = unknown
26+/bin/machine = unknown
27+/usr/bin/oslevel = unknown
28+/bin/universe = unknown
29+
30+PATH: /home/ab25cq/bin
31+PATH: /usr/local/bin
32+PATH: /usr/bin
33+PATH: /cygdrive/c/Windows/system32
34+PATH: /cygdrive/c/Windows
35+PATH: /cygdrive/c/Windows/System32/Wbem
36+PATH: /cygdrive/c/Windows/System32/WindowsPowerShell/v1.0
37+PATH: /cygdrive/c/Program Files (x86)/QuickTime/QTSystem
38+PATH: /cygdrive/c/Program Files/Microsoft SQL Server/110/Tools/Binn
39+
40+
41+## ----------- ##
42+## Core tests. ##
43+## ----------- ##
44+
45+configure:2076: checking for gcc
46+configure:2092: found /usr/bin/gcc
47+configure:2103: result: gcc
48+configure:2332: checking for C compiler version
49+configure:2341: gcc --version >&5
50+gcc (GCC) 4.5.3
51+Copyright (C) 2010 Free Software Foundation, Inc.
52+This is free software; see the source for copying conditions. There is NO
53+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
54+
55+configure:2352: $? = 0
56+configure:2341: gcc -v >&5
57+Using built-in specs.
58+COLLECT_GCC=gcc
59+COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-cygwin/4.5.3/lto-wrapper.exe
60+Target: i686-pc-cygwin
61+Configured with: /gnu/gcc/releases/respins/4.5.3-3/gcc4-4.5.3-3/src/gcc-4.5.3/configure --srcdir=/gnu/gcc/releases/respins/4.5.3-3/gcc4-4.5.3-3/src/gcc-4.5.3 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --datarootdir=/usr/share --docdir=/usr/share/doc/gcc4 -C --datadir=/usr/share --infodir=/usr/share/info --mandir=/usr/share/man -v --with-gmp=/usr --with-mpfr=/usr --enable-bootstrap --enable-version-specific-runtime-libs --libexecdir=/usr/lib --enable-static --enable-shared --enable-shared-libgcc --disable-__cxa_atexit --with-gnu-ld --with-gnu-as --with-dwarf2 --disable-sjlj-exceptions --enable-languages=ada,c,c++,fortran,java,lto,objc,obj-c++ --enable-graphite --enable-lto --enable-java-awt=gtk --disable-symvers --enable-libjava --program-suffix=-4 --enable-libgomp --enable-libssp --enable-libada --enable-threads=posix --with-arch=i686 --with-tune=generic --enable-libgcj-sublibs CC=gcc-4 CXX=g++-4 CC_FOR_TARGET=gcc-4 CXX_FOR_TARGET=g++-4 GNATMAKE_FOR_TARGET=gnatmake GNATBIND_FOR_TARGET=gnatbind --with-ecj-jar=/usr/share/java/ecj.jar
62+Thread model: posix
63+gcc version 4.5.3 (GCC)
64+configure:2352: $? = 0
65+configure:2341: gcc -V >&5
66+gcc: '-V' option must have argument
67+configure:2352: $? = 1
68+configure:2341: gcc -qversion >&5
69+gcc: unrecognized option '-qversion'
70+gcc: no input files
71+configure:2352: $? = 1
72+configure:2372: checking whether the C compiler works
73+configure:2394: gcc conftest.c >&5
74+configure:2398: $? = 0
75+configure:2446: result: yes
76+configure:2449: checking for C compiler default output file name
77+configure:2451: result: a.exe
78+configure:2457: checking for suffix of executables
79+configure:2464: gcc -o conftest.exe conftest.c >&5
80+
81+## ---------------- ##
82+## Cache variables. ##
83+## ---------------- ##
84+
85+ac_cv_env_CC_set=
86+ac_cv_env_CC_value=
87+ac_cv_env_CFLAGS_set=
88+ac_cv_env_CFLAGS_value=
89+ac_cv_env_CPPFLAGS_set=
90+ac_cv_env_CPPFLAGS_value=
91+ac_cv_env_CPP_set=
92+ac_cv_env_CPP_value=
93+ac_cv_env_LDFLAGS_set=
94+ac_cv_env_LDFLAGS_value=
95+ac_cv_env_LIBS_set=
96+ac_cv_env_LIBS_value=
97+ac_cv_env_build_alias_set=
98+ac_cv_env_build_alias_value=
99+ac_cv_env_host_alias_set=
100+ac_cv_env_host_alias_value=
101+ac_cv_env_target_alias_set=
102+ac_cv_env_target_alias_value=
103+ac_cv_exeext=.exe
104+ac_cv_prog_ac_ct_CC=gcc
105+
106+## ----------------- ##
107+## Output variables. ##
108+## ----------------- ##
109+
110+CC='gcc'
111+CFLAGS=''
112+CPP=''
113+CPPFLAGS=''
114+DEFS=''
115+ECHO_C=''
116+ECHO_N='-n'
117+ECHO_T=''
118+EGREP=''
119+EXEEXT=''
120+GREP=''
121+INSTALL_DATA=''
122+INSTALL_PROGRAM=''
123+INSTALL_SCRIPT=''
124+LDFLAGS=''
125+LIBOBJS=''
126+LIBS=''
127+LIBXYZSHA=''
128+LIBXYZSHASTRIP=''
129+LIBXYZSHSO1=''
130+LIBXYZSHSO=''
131+LTLIBOBJS=''
132+OBJ=''
133+OBJEXT=''
134+PACKAGE_BUGREPORT=''
135+PACKAGE_NAME=''
136+PACKAGE_STRING=''
137+PACKAGE_TARNAME=''
138+PACKAGE_URL=''
139+PACKAGE_VERSION=''
140+PATH_SEPARATOR=':'
141+SHELL='/bin/sh'
142+SO_VERSION=''
143+SYSTEM_MIGEMODIR=''
144+ac_ct_CC='gcc'
145+bindir='${exec_prefix}/bin'
146+build_alias=''
147+datadir='${datarootdir}'
148+datarootdir='${prefix}/share'
149+docdir='${datarootdir}/doc/${PACKAGE}'
150+dvidir='${docdir}'
151+exec_prefix='NONE'
152+host_alias=''
153+htmldir='${docdir}'
154+includedir='${prefix}/include'
155+infodir='${datarootdir}/info'
156+libdir='${exec_prefix}/lib'
157+libexecdir='${exec_prefix}/libexec'
158+localedir='${datarootdir}/locale'
159+localstatedir='${prefix}/var'
160+mandir='${datarootdir}/man'
161+oldincludedir='/usr/include'
162+pdfdir='${docdir}'
163+prefix='NONE'
164+program_transform_name='s,x,x,'
165+psdir='${docdir}'
166+sbindir='${exec_prefix}/sbin'
167+sharedstatedir='${prefix}/com'
168+sysconfdir='${prefix}/etc'
169+target_alias=''
170+
171+## ----------- ##
172+## confdefs.h. ##
173+## ----------- ##
174+
175+/* confdefs.h */
176+#define PACKAGE_NAME ""
177+#define PACKAGE_TARNAME ""
178+#define PACKAGE_VERSION ""
179+#define PACKAGE_STRING ""
180+#define PACKAGE_BUGREPORT ""
181+#define PACKAGE_URL ""
182+
183+configure: caught signal 2
184+configure: exit 1
--- a/src/cmd_obj.c
+++ b/src/cmd_obj.c
@@ -54,13 +54,14 @@ BOOL cmd_mshow(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
5454 BOOL cmd_defined(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
5555 {
5656 if(runinfo->mArgsNumRuntime > 1) {
57- sObject* object = runinfo->mCurrentObject;
5857 int i;
5958 for(i=1; i<runinfo->mArgsNumRuntime; i++) {
60- sObject* reciever = runinfo->mCurrentObject;
61- sObject* obj = access_object(runinfo->mArgsRuntime[i], &reciever, runinfo->mRunningObject);
59+ sObject* object;
60+ if(!get_object_from_str(&object, runinfo->mArgsRuntime[i], runinfo->mCurrentObject, runinfo->mRunningObject, runinfo)) {
61+ return FALSE;
62+ }
6263
63- if(obj) {
64+ if(object) {
6465 runinfo->mRCode = 0;
6566 }
6667 else {
@@ -73,6 +74,189 @@ BOOL cmd_defined(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
7374 return TRUE;
7475 }
7576
77+BOOL object_info(sObject* object, sObject* nextin, sObject* nextout, sRunInfo* runinfo)
78+{
79+ char buf[128];
80+
81+ switch(TYPE(object)) {
82+ case T_STRING :
83+ snprintf(buf, 128, "Type: string\nLength: %d\nMallocLen: %d\n", SSTRING(object).mLen, SSTRING(object).mMallocLen);
84+
85+ if(!fd_write(nextout, buf, strlen(buf))) {
86+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
87+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
88+ return FALSE;
89+ }
90+ break;
91+
92+ case T_VECTOR:
93+ snprintf(buf, 128, "Type: vector\nTable Size: %d\nCount: %d\n", SVECTOR(object).mTableSize, SVECTOR(object).mCount);
94+
95+ if(!fd_write(nextout, buf, strlen(buf))) {
96+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
97+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
98+ return FALSE;
99+ }
100+ break;
101+
102+ case T_HASH:
103+ snprintf(buf, 128, "Type: hash\nTable Size: %d\nCount: %d\n", SHASH(object).mTableSize, SHASH(object).mCounter);
104+
105+ if(!fd_write(nextout, buf, strlen(buf))) {
106+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
107+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
108+ return FALSE;
109+ }
110+ break;
111+
112+ case T_LIST:
113+ snprintf(buf, 128, "Type: list\nCount: %d\n", SLIST(object).mCount);
114+
115+ if(!fd_write(nextout, buf, strlen(buf))) {
116+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
117+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
118+ return FALSE;
119+ }
120+ break;
121+
122+ case T_NFUN:
123+ snprintf(buf, 128, "Type: native function\nParent: %s\n", SNFUN(object).mParent ? "exists" : "no parent");
124+
125+ if(!fd_write(nextout, buf, strlen(buf))) {
126+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
127+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
128+ return FALSE;
129+ }
130+ break;
131+
132+ case T_BLOCK:
133+ snprintf(buf, 128, "Type: block\nStatment Number: %d\nStatment Size %d\n", SBLOCK(object).mStatmentsNum, SBLOCK(object).mStatmentsSize);
134+
135+ if(!fd_write(nextout, buf, strlen(buf))) {
136+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
137+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
138+ return FALSE;
139+ }
140+ break;
141+
142+ case T_FD:
143+ snprintf(buf, 128, "Type: file discriptor\n\nBuffer Size %d\nBuffer Length: %d\nLine Number %d\nLine Field %d\nReaded Line Number %d\n", SFD(object).mBufSize, SFD(object).mBufLen, vector_count(SFD(object).mLines), SFD(object).mLinesLineField, SFD(object).mReadedLineNumber);
144+
145+ if(!fd_write(nextout, buf, strlen(buf))) {
146+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
147+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
148+ return FALSE;
149+ }
150+ break;
151+
152+ case T_FD2:
153+ snprintf(buf, 128, "Type: file discriptor2\nFile Discriptor %d\n", SFD2(object).mFD);
154+
155+ if(!fd_write(nextout, buf, strlen(buf))) {
156+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
157+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
158+ return FALSE;
159+ }
160+ break;
161+
162+ case T_JOB:
163+ snprintf(buf, 128, "Type: job\nName %s\nProcess Group %d\nSuspended %d\n", SJOB(object).mName, SJOB(object).mPGroup, SJOB(object).mSuspended);
164+
165+ if(!fd_write(nextout, buf, strlen(buf))) {
166+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
167+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
168+ return FALSE;
169+ }
170+ break;
171+
172+ case T_UOBJECT:
173+ snprintf(buf, 128, "Type: user object\nTable Size %d\nCount %d\nName %s\nParent %s", SUOBJECT(object).mTableSize, SUOBJECT(object).mCounter, SUOBJECT(object).mName, SUOBJECT(object).mParent ? SUOBJECT(SUOBJECT(object).mParent).mName: "no parent");
174+
175+ if(!fd_write(nextout, buf, strlen(buf))) {
176+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
177+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
178+ return FALSE;
179+ }
180+ break;
181+
182+ case T_FUN:
183+ snprintf(buf, 128, "Type: function\nParent: %s\nNo StackFrame: %d\n", SFUN(object).mParent ? "exists": "no parent", SFUN(object).mFlags & FUN_FLAGS_NO_STACKFRAME);
184+
185+ if(!fd_write(nextout, buf, strlen(buf))) {
186+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
187+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
188+ return FALSE;
189+ }
190+ break;
191+
192+ case T_CLASS:
193+ snprintf(buf, 128, "Type: class\nParent: %s\nNo StackFrame: %d\n", SCLASS(object).mParent ? "exists": "no parent", SCLASS(object).mFlags & FUN_FLAGS_NO_STACKFRAME);
194+
195+ if(!fd_write(nextout, buf, strlen(buf))) {
196+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
197+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
198+ return FALSE;
199+ }
200+ break;
201+
202+ case T_EXTPROG:
203+ snprintf(buf, 128, "Type: external program\nPath: %s\n", SEXTPROG(object).mPath);
204+
205+ if(!fd_write(nextout, buf, strlen(buf))) {
206+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
207+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
208+ return FALSE;
209+ }
210+ break;
211+
212+ case T_COMPLETION: {
213+ sObject* block = SCOMPLETION(object).mBlock;
214+ snprintf(buf, 128, "Type: completion\nStatment Number: %d\nStatment Size %d\n", SBLOCK(block).mStatmentsNum, SBLOCK(block).mStatmentsSize);
215+
216+ if(!fd_write(nextout, buf, strlen(buf))) {
217+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
218+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
219+ return FALSE;
220+ }
221+ }
222+ break;
223+
224+ case T_EXTOBJ:
225+ if(!fd_write(nextout, "no info", strlen(buf))) {
226+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
227+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
228+ return FALSE;
229+ }
230+ break;
231+
232+ default:
233+ fprintf(stderr,"unexpected err in object_info\n");
234+ exit(1);
235+ }
236+}
237+
238+BOOL cmd_objinfo(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
239+{
240+ if(runinfo->mArgsNumRuntime > 1) {
241+ int i;
242+ for(i=1; i<runinfo->mArgsNumRuntime; i++) {
243+ sObject* object;
244+ if(!get_object_from_str(&object, runinfo->mArgsRuntime[i], runinfo->mCurrentObject, runinfo->mRunningObject, runinfo)) {
245+ return FALSE;
246+ }
247+
248+ if(object) {
249+ if(!object_info(object, nextin, nextout, runinfo)) {
250+ return FALSE;
251+ }
252+ runinfo->mRCode = 0;
253+ }
254+ }
255+ }
256+
257+ return TRUE;
258+}
259+
76260 BOOL cmd_mrun(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
77261 {
78262 if(runinfo->mBlocksNum == 1) {
@@ -148,6 +332,8 @@ BOOL cmd_pwo(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
148332 return FALSE;
149333 }
150334
335+ fd_trunc(nextout, SFD(nextout).mBufLen-2); // delete last ::
336+
151337 if(!fd_write(nextout, "\n", 1)) {
152338 err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
153339 runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
--- a/src/cmd_str.c
+++ b/src/cmd_str.c
@@ -892,6 +892,53 @@ BOOL cmd_chop(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
892892 return TRUE;
893893 }
894894
895+BOOL cmd_strip(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
896+{
897+ if(runinfo->mFilter) {
898+ BOOL first = TRUE;
899+ char* last_point = NULL;
900+ char* p = SFD(nextin).mBuf;
901+ while(*p) {
902+ if(*p == '\n' || *p =='\r' || *p == '\t' || *p == ' ' || *p == '\a')
903+ {
904+ if(!first) {
905+ if(!fd_writec(nextout, *p++)) {
906+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
907+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
908+ return FALSE;
909+ }
910+ }
911+ else {
912+ p++;
913+ }
914+ }
915+ else {
916+ first = FALSE;
917+ last_point = p;
918+ if(!fd_writec(nextout, *p++)) {
919+ err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]);
920+ runinfo->mRCode = RCODE_SIGNAL_INTERRUPT;
921+ return FALSE;
922+ }
923+ }
924+ }
925+
926+ const int space_of_tail_len = SFD(nextin).mBufLen - (last_point - SFD(nextin).mBuf) - 1;
927+ if(space_of_tail_len > 0) {
928+ fd_trunc(nextout, SFD(nextout).mBufLen - space_of_tail_len);
929+ }
930+
931+ if(SFD(nextin).mBufLen == 0) {
932+ runinfo->mRCode = RCODE_NFUN_NULL_INPUT;
933+ }
934+ else {
935+ runinfo->mRCode = 0;
936+ }
937+ }
938+
939+ return TRUE;
940+}
941+
895942 BOOL cmd_pomch(sObject* nextin, sObject* nextout, sRunInfo* runinfo)
896943 {
897944 eLineField lf = gLineField;
--- a/src/fd.c
+++ b/src/fd.c
@@ -352,6 +352,14 @@ BOOL fd_flash(sObject* self, int fd)
352352 return TRUE;
353353 }
354354
355+void fd_trunc(sObject* self, int index)
356+{
357+ if(index >= 0 && index < SFD(self).mBufLen) {
358+ SFD(self).mBufLen = index;
359+ SFD(self).mBuf[SFD(self).mBufLen] = 0;
360+ }
361+}
362+
355363 sObject* fd2_new_on_stack(uint fd)
356364 {
357365 sObject* self = stack_get_free_object(T_FD2);
--- a/src/uobject.c
+++ b/src/uobject.c
@@ -162,6 +162,7 @@ void uobject_root_init(sObject* self)
162162 uobject_put(self, "block", NFUN_NEW_GC(cmd_block, NULL, TRUE));
163163 uobject_put(self, "lc", NFUN_NEW_GC(cmd_lc, NULL, TRUE));
164164 uobject_put(self, "uc", NFUN_NEW_GC(cmd_uc, NULL, TRUE));
165+ uobject_put(self, "strip", NFUN_NEW_GC(cmd_strip, NULL, TRUE));
165166 uobject_put(self, "chomp", NFUN_NEW_GC(cmd_chomp, NULL, TRUE));
166167 uobject_put(self, "chop", NFUN_NEW_GC(cmd_chop, NULL, TRUE));
167168 uobject_put(self, "pomch", NFUN_NEW_GC(cmd_pomch, NULL, TRUE));
@@ -176,6 +177,7 @@ void uobject_root_init(sObject* self)
176177 uobject_put(self, "errmsg", NFUN_NEW_GC(cmd_errmsg, NULL, TRUE));
177178 uobject_put(self, "prompt", NFUN_NEW_GC(cmd_prompt, NULL, TRUE));
178179 uobject_put(self, "defined", NFUN_NEW_GC(cmd_defined, NULL, TRUE));
180+ uobject_put(self, "objinfo", NFUN_NEW_GC(cmd_objinfo, NULL, TRUE));
179181
180182 uobject_put(self, "-n", NFUN_NEW_GC(cmd_condition_n, NULL, TRUE));
181183 uobject_put(self, "-z", NFUN_NEW_GC(cmd_condition_z, NULL, TRUE));
--- a/src/xyzsh.c
+++ b/src/xyzsh.c
@@ -85,7 +85,7 @@ static void xyzsh_read_rc()
8585
8686 void xyzsh_init(enum eAppType app_type, BOOL no_runtime_script)
8787 {
88- setenv("XYZSH_VERSION", "1.3.1", 1);
88+ setenv("XYZSH_VERSION", "1.3.2", 1);
8989 setenv("XYZSH_DATAROOTDIR", DATAROOTDIR, 1);
9090
9191 setlocale(LC_ALL, "");
--- a/src/xyzsh/xyzsh.h
+++ b/src/xyzsh/xyzsh.h
@@ -516,6 +516,7 @@ BOOL fd_write(sObject* self, char* str, int size);
516516 void fd_split(sObject* self, eLineField lf);
517517 BOOL fd_guess_lf(sObject* self, eLineField* lf);
518518 void fd_put(sObject* self, MANAGED char* buf, int buf_size, int buf_len);
519+void fd_trunc(sObject* self, int index);
519520
520521 sObject* fd2_new_on_stack(uint fd);
521522 #define FD2_NEW_STACK(o) fd2_new_on_stack(o)
@@ -562,6 +563,7 @@ typedef BOOL (*fInternalCommand)(sObject*, sObject*, sRunInfo*);
562563 extern fInternalCommand kInternalCommands[kInnerCommand];
563564 extern char * gCommandKindStrs[kCommandMax];
564565
566+BOOL cmd_objinfo(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
565567 BOOL cmd_kanjicode(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
566568 BOOL cmd_defined(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
567569 BOOL cmd_funinfo(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
@@ -689,6 +691,7 @@ BOOL cmd_condition_ef(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
689691 BOOL cmd_condition_re(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
690692 BOOL cmd_sub(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
691693 BOOL cmd_time(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
694+BOOL cmd_strip(sObject* nextin, sObject* nextout, sRunInfo* runinfo);
692695
693696 #if defined(HAVE_MIGEMO_H)
694697 BOOL cmd_migemo_match(sObject* nextin, sObject* nextout, sRunInfo* runinfo);