シェルスクリプト言語xyzshのソースコード。
リビジョン | 7ff76ca6a8e9398f6a2bc4fa1138c2a040b4bdc1 (tree) |
---|---|
日時 | 2013-01-20 12:52:21 |
作者 | ab25cq <ab25cq@gmai...> |
コミッター | ab25cq |
1.3.2
@@ -1,4 +1,16 @@ | ||
1 | 1 | |
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 | + | |
2 | 14 | 2013 17th January version 1.3.1 |
3 | 15 | |
4 | 16 | 1. Refactoring. |
@@ -25,9 +37,9 @@ | ||
25 | 37 | |
26 | 38 | 2013 1月10日 version 1.3.0 |
27 | 39 | |
28 | - 1. ダイナミックライブラリーのバージョンアップ | |
40 | + 1. ダイナミックライブラリーのバージョンアップ | |
29 | 41 | |
30 | - 2. リファクタリング。memcheckerの廃止。オブジェクトの消費メモリが少なくなりました。(1オブジェクトを32バイトまで落とせた) | |
42 | + 2. リファクタリング。memcheckerの廃止。オブジェクトの消費メモリが少なくなりました。(1オブジェクトを32バイトまで落とせた) | |
31 | 43 | |
32 | 44 | mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzshに対応します。 |
33 | 45 |
@@ -71,21 +83,21 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh | ||
71 | 83 | |
72 | 84 | 2012 12月20日 version 1.2.7 |
73 | 85 | |
74 | - 1. グロブの展開がパーサー時ではなくて実行時に起こるように変更。 | |
86 | + 1. グロブの展開がパーサー時ではなくて実行時に起こるように変更。 | |
75 | 87 | |
76 | - いままでだとスクリプトをloadして、その中にグロブの記述がある場合、もし中でcdをしても、スクリプトをloadした時点でのカレントディレクトリでグロブが検索されていました。 | |
88 | + いままでだとスクリプトをloadして、その中にグロブの記述がある場合、もし中でcdをしても、スクリプトをloadした時点でのカレントディレクトリでグロブが検索されていました。 | |
77 | 89 | |
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 | |
85 | 97 | |
86 | - ↑おかしい | |
98 | + ↑おかしい | |
87 | 99 | |
88 | - 2. ダイナミックライブラリのバージョンアップ。mfiler4にも影響があります。mfiler4は1.0.6から、このxyzshに対応します。 | |
100 | + 2. ダイナミックライブラリのバージョンアップ。mfiler4にも影響があります。mfiler4は1.0.6から、このxyzshに対応します。 | |
89 | 101 | |
90 | 102 | 2012 12月14日 version 1.2.6 |
91 | 103 |
@@ -100,76 +112,76 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh | ||
100 | 112 | 1. readlineコマンドが入力が空の時落ちていました。 |
101 | 113 | |
102 | 114 | 2012 8th December version 1.2.5c |
103 | - | |
115 | + | |
104 | 116 | 1. If input was empty, readline command would occur error on xyzsh previous version. |
105 | 117 | |
106 | 118 | 2012 12月08日 version 1.2.5b |
107 | 119 | |
108 | - 1. 最適化レベルを3にしてみました。問題があればまた1に戻します。 | |
120 | + 1. 最適化レベルを3にしてみました。問題があればまた1に戻します。 | |
109 | 121 | |
110 | 122 | 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. | |
113 | 125 | |
114 | 126 | 2012 12月04日 version 1.2.5a |
115 | 127 | |
116 | - 1. クォートの仕様が変わっています。 | |
128 | + 1. クォートの仕様が変わっています。 | |
117 | 129 | |
118 | - シングルクォートは今までと同じです。ダブルクォートはダブルクォートの中でクォートを使った場合動きが変わっています。 | |
130 | + シングルクォートは今までと同じです。ダブルクォートはダブルクォートの中でクォートを使った場合動きが変わっています。 | |
119 | 131 | |
120 | - > print "Hello World\n" | |
121 | - Hello World | |
132 | + > print "Hello World\n" | |
133 | + Hello World | |
122 | 134 | |
123 | - > print "\\\\ \n" | |
124 | - \\ | |
135 | + > print "\\\\ \n" | |
136 | + \\ | |
125 | 137 | |
126 | - 普通のスクリプト言語やbashと同じようになっています。 | |
138 | + 普通のスクリプト言語やbashと同じようになっています。 | |
127 | 139 | |
128 | - シングルクォートの場合は今までと同じです。 | |
140 | + シングルクォートの場合は今までと同じです。 | |
129 | 141 | |
130 | - > print 'Hello World\n' | |
131 | - Hello World\n | |
142 | + > print 'Hello World\n' | |
143 | + Hello World\n | |
132 | 144 | |
133 | - > print '\\\\' | |
134 | - \\\\ | |
145 | + > print '\\\\' | |
146 | + \\\\ | |
135 | 147 | |
136 | 148 | 2012 4th December version 1.2.5a |
137 | 149 | |
138 | - 1. Changed double quote way like below | |
150 | + 1. Changed double quote way like below | |
139 | 151 | |
140 | - > print "Hello World\n" | |
141 | - Hello World | |
152 | + > print "Hello World\n" | |
153 | + Hello World | |
142 | 154 | |
143 | - > print "\\\\ \n" | |
144 | - \\ | |
155 | + > print "\\\\ \n" | |
156 | + \\ | |
145 | 157 | |
146 | - Sigle quote way is | |
158 | + Sigle quote way is | |
147 | 159 | |
148 | - > print 'Hello World\n' | |
149 | - Hello World\n | |
160 | + > print 'Hello World\n' | |
161 | + Hello World\n | |
150 | 162 | |
151 | - > print '\\\\' | |
152 | - \\\\ | |
163 | + > print '\\\\' | |
164 | + \\\\ | |
153 | 165 | |
154 | 166 | 2012 11月30日 version 1.2.5 |
155 | 167 | |
156 | - 1. オプションに変数展開があると変数が展開されないバグを修正 | |
168 | + 1. オプションに変数展開があると変数が展開されないバグを修正 | |
157 | 169 | |
158 | 170 | 2012 30th November version 1.2.5 |
159 | 171 | |
160 | - 1. Fixed a bug with expanding variables in option argument. | |
172 | + 1. Fixed a bug with expanding variables in option argument. | |
161 | 173 | |
162 | 174 | 2012 11月29日 version 1.2.4a |
163 | 175 | |
164 | - 1. xyzshの設定ファイルを修正。 | |
176 | + 1. xyzshの設定ファイルを修正。 | |
165 | 177 | |
166 | - 2. forコマンドを追加 | |
178 | + 2. forコマンドを追加 | |
167 | 179 | |
168 | 180 | 2012 29th November version 1.2.4a |
169 | 181 | |
170 | 182 | 1. Changed xyzsh.xyzsh setting file. |
171 | 183 | |
172 | - 2. Added "for" iner command. | |
184 | + 2. Added "for" iner command. | |
173 | 185 | |
174 | 186 | 2012 11月26日 version 1.2.4 |
175 | 187 |
@@ -267,51 +279,51 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh | ||
267 | 279 | |
268 | 280 | 2012 11月25日 version 1.2.2d |
269 | 281 | |
270 | - 1. グローバルパイプに追記機能を追加しました。 | |
282 | + 1. グローバルパイプに追記機能を追加しました。 | |
271 | 283 | |
272 | 284 | 2012 25th November version 1.2.2d |
273 | 285 | |
274 | - 1. Added appending data function to global pipe with |>> | |
286 | + 1. Added appending data function to global pipe with |>> | |
275 | 287 | |
276 | 288 | 2012 11月24日 version 1.2.2c |
277 | 289 | |
278 | - 1. 環境変数の補完を入れました。 | |
290 | + 1. 環境変数の補完を入れました。 | |
279 | 291 | |
280 | - 2. readlineで=が単語の区切りになりました。 | |
292 | + 2. readlineで=が単語の区切りになりました。 | |
281 | 293 | |
282 | 294 | 2012 24th November version 1.2.2c |
283 | 295 | |
284 | - 1. Implematation of environment variable completion. | |
296 | + 1. Implematation of environment variable completion. | |
285 | 297 | |
286 | - 2. Begin to use = character as word break character. | |
298 | + 2. Begin to use = character as word break character. | |
287 | 299 | |
288 | 300 | 2012 11月24日 version 1.2.2b |
289 | 301 | |
290 | - 1. パイプの中のオブジェクト数に制限をかけました。128個以上になるとエラーを出して止まります。 | |
302 | + 1. パイプの中のオブジェクト数に制限をかけました。128個以上になるとエラーを出して止まります。 | |
291 | 303 | |
292 | - 2. print ""\nとした場合パーサーがエラーを出していたバグを修正。 | |
304 | + 2. print ""\nとした場合パーサーがエラーを出していたバグを修正。 | |
293 | 305 | |
294 | 306 | 2012 24th November version 1.2.2b |
295 | 307 | |
296 | - 1. Set limit to the number of objects in pipe. | |
308 | + 1. Set limit to the number of objects in pipe. | |
297 | 309 | |
298 | - 2. Fixed bug which is err with 'print ""\n'. | |
310 | + 2. Fixed bug which is err with 'print ""\n'. | |
299 | 311 | |
300 | 312 | 2012 11月22日 version 1.2.2a |
301 | 313 | |
302 | - 1. ダイナミックライブラリのバージョンが1.5.1にあがりました。 | |
314 | + 1. ダイナミックライブラリのバージョンが1.5.1にあがりました。 | |
303 | 315 | |
304 | - 2. var, ary, hash, objectに-newオプションができました。 | |
316 | + 2. var, ary, hash, objectに-newオプションができました。 | |
305 | 317 | |
306 | - 3. times 関数を追加。 | |
318 | + 3. times 関数を追加。 | |
307 | 319 | |
308 | 320 | 2012 22th November version 1.2.2a |
309 | 321 | |
310 | - 1. Version up dynamic linked library | |
322 | + 1. Version up dynamic linked library | |
311 | 323 | |
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. | |
313 | 325 | |
314 | - 3. Added "times" function. | |
326 | + 3. Added "times" function. | |
315 | 327 | |
316 | 328 | 2012 11月22日 version 1.2.2 |
317 | 329 |
@@ -331,21 +343,21 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh | ||
331 | 343 | |
332 | 344 | 2012 22th November version 1.2.1 |
333 | 345 | |
334 | - 1. Add -local option to "ref" command. | |
346 | + 1. Add -local option to "ref" command. | |
335 | 347 | |
336 | - 2. Fixed sweep [object name] bug. | |
348 | + 2. Fixed sweep [object name] bug. | |
337 | 349 | |
338 | 350 | 2012 11月22日 version 1.2.1 |
339 | 351 | |
340 | - 1. refコマンドに-localオプションを追加 | |
352 | + 1. refコマンドに-localオプションを追加 | |
341 | 353 | |
342 | - 2. sweep オブジェクト名でxyzshが落ちていたバグを修正。 | |
354 | + 2. sweep オブジェクト名でxyzshが落ちていたバグを修正。 | |
343 | 355 | |
344 | 356 | 2012 22th November version 1.2.1 |
345 | 357 | |
346 | - 1. Add -local option to "ref" command. | |
358 | + 1. Add -local option to "ref" command. | |
347 | 359 | |
348 | - 2. Fixed sweep [object name] bug. | |
360 | + 2. Fixed sweep [object name] bug. | |
349 | 361 | |
350 | 362 | 2012 11月12日 version 1.2.0 |
351 | 363 |
@@ -399,24 +411,24 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh | ||
399 | 411 | |
400 | 412 | 2012 5th Norvember version 1.1.8a |
401 | 413 | |
402 | - Fixed errror message. | |
414 | + Fixed errror message. | |
403 | 415 | |
404 | 416 | 2012 30th Octorber version 1.1.8 |
405 | 417 | |
406 | - Added -index option to "add" inner command and "del" inner command. | |
418 | + Added -index option to "add" inner command and "del" inner command. | |
407 | 419 | |
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 | |
410 | 422 | |
411 | 423 | 2012 30th Octorber version 1.1.7a |
412 | 424 | |
413 | - Deleted castamized code for CYGWIN. It has not been required. | |
425 | + Deleted castamized code for CYGWIN. It has not been required. | |
414 | 426 | |
415 | 427 | 2012 30th Octorber version 1.1.7 |
416 | 428 | |
417 | - Fixed a bug with expanding environmet on redirects | |
429 | + Fixed a bug with expanding environmet on redirects | |
418 | 430 | |
419 | - Fixed Makefile.in | |
431 | + Fixed Makefile.in | |
420 | 432 | |
421 | 433 | 2012 30th Octorber version 1.1.6 |
422 | 434 |
@@ -555,68 +567,68 @@ mfiler4にも影響があります。mfiler4は1.0.9以上から、このxyzsh | ||
555 | 567 | |
556 | 568 | 2012 2nd Octorber version 1.0.2 |
557 | 569 | |
558 | - Version up dynamic linked library | |
570 | + Version up dynamic linked library | |
559 | 571 | |
560 | - Add interface for xyzsh | |
572 | + Add interface for xyzsh | |
561 | 573 | |
562 | - Made sObject memory size smaller | |
574 | + Made sObject memory size smaller | |
563 | 575 | |
564 | 576 | 2012 12th August version 1.0.1a |
565 | 577 | |
566 | - Version up dynamic linked library | |
578 | + Version up dynamic linked library | |
567 | 579 | |
568 | - Add interface for xyzsh | |
580 | + Add interface for xyzsh | |
569 | 581 | |
570 | 582 | 2012 12th August version 1.0.1 |
571 | 583 | |
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. | |
573 | 585 | |
574 | 586 | 2012 12th August version 1.0.0b |
575 | 587 | |
576 | - Fixed valid file archive type. | |
588 | + Fixed valid file archive type. | |
577 | 589 | |
578 | 590 | 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. | |
581 | 593 | |
582 | 594 | 2012 12th August version 1.0.0 |
583 | - | |
584 | - Added redirects(<) to xyzsh. | |
595 | + | |
596 | + Added redirects(<) to xyzsh. | |
585 | 597 | |
586 | - Fixed write inner command. | |
598 | + Fixed write inner command. | |
587 | 599 | |
588 | 600 | 2012 12th August version 0.9.9g |
589 | - | |
590 | - Fixed WINCH signal. | |
601 | + | |
602 | + Fixed WINCH signal. | |
591 | 603 | |
592 | 604 | 2012 12th August version 0.9.9f |
593 | - | |
594 | - Fixed tcsetpgrp argument. | |
605 | + | |
606 | + Fixed tcsetpgrp argument. | |
595 | 607 | |
596 | 608 | 2012 12th August version 0.9.9e |
597 | 609 | |
598 | - Gabage Collection bug was fixed. | |
610 | + Gabage Collection bug was fixed. | |
599 | 611 | |
600 | 612 | 2012 9th August version 0.9.9d |
601 | 613 | |
602 | - Fixed STDOUT buffer bugs. | |
614 | + Fixed STDOUT buffer bugs. | |
603 | 615 | |
604 | 616 | 2012 8th August version 0.9.9c |
605 | 617 | |
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. | |
607 | 619 | |
608 | 620 | 2012 8th August version 0.9.9b |
609 | 621 | |
610 | - Fixed completion bugs. I think maybe desipated all completion bugs. | |
622 | + Fixed completion bugs. I think maybe desipated all completion bugs. | |
611 | 623 | |
612 | - Version 0.9.9b is Released | |
624 | + Version 0.9.9b is Released | |
613 | 625 | |
614 | 626 | 2012 7th August version 0.9.9a |
615 | 627 | |
616 | - Fixed completion bugs | |
628 | + Fixed completion bugs | |
617 | 629 | |
618 | - Version 0.9.9a is Released | |
630 | + Version 0.9.9a is Released | |
619 | 631 | |
620 | 632 | 2012 5th August version 0.9.9 |
621 | - Version 0.9.9 is Released | |
633 | + Version 0.9.9 is Released | |
622 | 634 |
@@ -49,21 +49,21 @@ class object_completion ( | ||
49 | 49 | inputing |chomp | split :: | lines 0..-2 | if( | -n) ( |
50 | 50 | | join ::| var -local PREFIX |
51 | 51 | 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}:: ) | |
53 | 53 | ) 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}:: ) | |
55 | 55 | ) |
56 | 56 | ) |
57 | 57 | ) else ( |
58 | 58 | pwo | var -local current |
59 | 59 | while(true) ( |
60 | 60 | 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 '(^.+?:?:?):' | |
62 | 62 | ) 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 '(^.+?:?:?):' | |
64 | 64 | ) |
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 | |
67 | 67 | ) |
68 | 68 | ) |
69 | 69 | ) |
@@ -108,6 +108,16 @@ completion ref ( | ||
108 | 108 | hash COMPLETION_OPTIONS -key ref |
109 | 109 | ) |
110 | 110 | |
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 | + | |
111 | 121 | completion export ( |
112 | 122 | sys::env | scan '(.+?)=' |
113 | 123 | ) |
@@ -117,9 +127,6 @@ completion sweep ( | ||
117 | 127 | hash COMPLETION_OPTIONS -key sweep |
118 | 128 | ) |
119 | 129 | |
120 | -completion defined ( | |
121 | - self | egrep -v external\ program\$ | egrep -v native\ function\$ | egrep -v '^root:|^self:|^parent:|^run:'| root::scan '(^.+?):' | |
122 | -) | |
123 | 130 | |
124 | 131 | completion help ( |
125 | 132 | root::self | egrep native\ function\$ | root::scan '(^.+?):' | add sub\nsplit\nscan\n | each ( | chomp | quote | pomch ) |
@@ -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 |
@@ -54,13 +54,14 @@ BOOL cmd_mshow(sObject* nextin, sObject* nextout, sRunInfo* runinfo) | ||
54 | 54 | BOOL cmd_defined(sObject* nextin, sObject* nextout, sRunInfo* runinfo) |
55 | 55 | { |
56 | 56 | if(runinfo->mArgsNumRuntime > 1) { |
57 | - sObject* object = runinfo->mCurrentObject; | |
58 | 57 | int i; |
59 | 58 | 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 | + } | |
62 | 63 | |
63 | - if(obj) { | |
64 | + if(object) { | |
64 | 65 | runinfo->mRCode = 0; |
65 | 66 | } |
66 | 67 | else { |
@@ -73,6 +74,189 @@ BOOL cmd_defined(sObject* nextin, sObject* nextout, sRunInfo* runinfo) | ||
73 | 74 | return TRUE; |
74 | 75 | } |
75 | 76 | |
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 | + | |
76 | 260 | BOOL cmd_mrun(sObject* nextin, sObject* nextout, sRunInfo* runinfo) |
77 | 261 | { |
78 | 262 | if(runinfo->mBlocksNum == 1) { |
@@ -148,6 +332,8 @@ BOOL cmd_pwo(sObject* nextin, sObject* nextout, sRunInfo* runinfo) | ||
148 | 332 | return FALSE; |
149 | 333 | } |
150 | 334 | |
335 | + fd_trunc(nextout, SFD(nextout).mBufLen-2); // delete last :: | |
336 | + | |
151 | 337 | if(!fd_write(nextout, "\n", 1)) { |
152 | 338 | err_msg("signal interrupt", runinfo->mSName, runinfo->mSLine, runinfo->mArgs[0]); |
153 | 339 | runinfo->mRCode = RCODE_SIGNAL_INTERRUPT; |
@@ -892,6 +892,53 @@ BOOL cmd_chop(sObject* nextin, sObject* nextout, sRunInfo* runinfo) | ||
892 | 892 | return TRUE; |
893 | 893 | } |
894 | 894 | |
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 | + | |
895 | 942 | BOOL cmd_pomch(sObject* nextin, sObject* nextout, sRunInfo* runinfo) |
896 | 943 | { |
897 | 944 | eLineField lf = gLineField; |
@@ -352,6 +352,14 @@ BOOL fd_flash(sObject* self, int fd) | ||
352 | 352 | return TRUE; |
353 | 353 | } |
354 | 354 | |
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 | + | |
355 | 363 | sObject* fd2_new_on_stack(uint fd) |
356 | 364 | { |
357 | 365 | sObject* self = stack_get_free_object(T_FD2); |
@@ -162,6 +162,7 @@ void uobject_root_init(sObject* self) | ||
162 | 162 | uobject_put(self, "block", NFUN_NEW_GC(cmd_block, NULL, TRUE)); |
163 | 163 | uobject_put(self, "lc", NFUN_NEW_GC(cmd_lc, NULL, TRUE)); |
164 | 164 | uobject_put(self, "uc", NFUN_NEW_GC(cmd_uc, NULL, TRUE)); |
165 | + uobject_put(self, "strip", NFUN_NEW_GC(cmd_strip, NULL, TRUE)); | |
165 | 166 | uobject_put(self, "chomp", NFUN_NEW_GC(cmd_chomp, NULL, TRUE)); |
166 | 167 | uobject_put(self, "chop", NFUN_NEW_GC(cmd_chop, NULL, TRUE)); |
167 | 168 | uobject_put(self, "pomch", NFUN_NEW_GC(cmd_pomch, NULL, TRUE)); |
@@ -176,6 +177,7 @@ void uobject_root_init(sObject* self) | ||
176 | 177 | uobject_put(self, "errmsg", NFUN_NEW_GC(cmd_errmsg, NULL, TRUE)); |
177 | 178 | uobject_put(self, "prompt", NFUN_NEW_GC(cmd_prompt, NULL, TRUE)); |
178 | 179 | uobject_put(self, "defined", NFUN_NEW_GC(cmd_defined, NULL, TRUE)); |
180 | + uobject_put(self, "objinfo", NFUN_NEW_GC(cmd_objinfo, NULL, TRUE)); | |
179 | 181 | |
180 | 182 | uobject_put(self, "-n", NFUN_NEW_GC(cmd_condition_n, NULL, TRUE)); |
181 | 183 | uobject_put(self, "-z", NFUN_NEW_GC(cmd_condition_z, NULL, TRUE)); |
@@ -85,7 +85,7 @@ static void xyzsh_read_rc() | ||
85 | 85 | |
86 | 86 | void xyzsh_init(enum eAppType app_type, BOOL no_runtime_script) |
87 | 87 | { |
88 | - setenv("XYZSH_VERSION", "1.3.1", 1); | |
88 | + setenv("XYZSH_VERSION", "1.3.2", 1); | |
89 | 89 | setenv("XYZSH_DATAROOTDIR", DATAROOTDIR, 1); |
90 | 90 | |
91 | 91 | setlocale(LC_ALL, ""); |
@@ -516,6 +516,7 @@ BOOL fd_write(sObject* self, char* str, int size); | ||
516 | 516 | void fd_split(sObject* self, eLineField lf); |
517 | 517 | BOOL fd_guess_lf(sObject* self, eLineField* lf); |
518 | 518 | void fd_put(sObject* self, MANAGED char* buf, int buf_size, int buf_len); |
519 | +void fd_trunc(sObject* self, int index); | |
519 | 520 | |
520 | 521 | sObject* fd2_new_on_stack(uint fd); |
521 | 522 | #define FD2_NEW_STACK(o) fd2_new_on_stack(o) |
@@ -562,6 +563,7 @@ typedef BOOL (*fInternalCommand)(sObject*, sObject*, sRunInfo*); | ||
562 | 563 | extern fInternalCommand kInternalCommands[kInnerCommand]; |
563 | 564 | extern char * gCommandKindStrs[kCommandMax]; |
564 | 565 | |
566 | +BOOL cmd_objinfo(sObject* nextin, sObject* nextout, sRunInfo* runinfo); | |
565 | 567 | BOOL cmd_kanjicode(sObject* nextin, sObject* nextout, sRunInfo* runinfo); |
566 | 568 | BOOL cmd_defined(sObject* nextin, sObject* nextout, sRunInfo* runinfo); |
567 | 569 | BOOL cmd_funinfo(sObject* nextin, sObject* nextout, sRunInfo* runinfo); |
@@ -689,6 +691,7 @@ BOOL cmd_condition_ef(sObject* nextin, sObject* nextout, sRunInfo* runinfo); | ||
689 | 691 | BOOL cmd_condition_re(sObject* nextin, sObject* nextout, sRunInfo* runinfo); |
690 | 692 | BOOL cmd_sub(sObject* nextin, sObject* nextout, sRunInfo* runinfo); |
691 | 693 | BOOL cmd_time(sObject* nextin, sObject* nextout, sRunInfo* runinfo); |
694 | +BOOL cmd_strip(sObject* nextin, sObject* nextout, sRunInfo* runinfo); | |
692 | 695 | |
693 | 696 | #if defined(HAVE_MIGEMO_H) |
694 | 697 | BOOL cmd_migemo_match(sObject* nextin, sObject* nextout, sRunInfo* runinfo); |