YkLib 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Gemfile.lock +34 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +44 -0
  10. data/Rakefile +6 -0
  11. data/YkLib.gemspec +29 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/lib/YkLib/Yk/__advance__.rb +151 -0
  15. data/lib/YkLib/Yk/__defun__.rb +44 -0
  16. data/lib/YkLib/Yk/__hook__.rb +244 -0
  17. data/lib/YkLib/Yk/__minmax__.rb +123 -0
  18. data/lib/YkLib/Yk/__stdlog.rb +329 -0
  19. data/lib/YkLib/Yk/adhocLiterals/email.rb +119 -0
  20. data/lib/YkLib/Yk/adhocLiterals/path.rb +402 -0
  21. data/lib/YkLib/Yk/adhocLiterals/tag.rb +19 -0
  22. data/lib/YkLib/Yk/adhocLiterals/url.rb +36 -0
  23. data/lib/YkLib/Yk/adhocLiterals.rb +199 -0
  24. data/lib/YkLib/Yk/auto_escseq.rb +5 -0
  25. data/lib/YkLib/Yk/auto_pstore.rb +179 -0
  26. data/lib/YkLib/Yk/bsearch.rb +120 -0
  27. data/lib/YkLib/Yk/clambda.rb +309 -0
  28. data/lib/YkLib/Yk/confLine.rb +423 -0
  29. data/lib/YkLib/Yk/create_tty_width_available.rb +24 -0
  30. data/lib/YkLib/Yk/crypt.rb +26 -0
  31. data/lib/YkLib/Yk/debug2 +1 -0
  32. data/lib/YkLib/Yk/debug2.rb +473 -0
  33. data/lib/YkLib/Yk/debugout.rb +139 -0
  34. data/lib/YkLib/Yk/email_tz.rb +533 -0
  35. data/lib/YkLib/Yk/enum_expect.rb +170 -0
  36. data/lib/YkLib/Yk/errlog.rb +5 -0
  37. data/lib/YkLib/Yk/escseq.rb +59 -0
  38. data/lib/YkLib/Yk/eval_alt.rb +281 -0
  39. data/lib/YkLib/Yk/expector.rb +93 -0
  40. data/lib/YkLib/Yk/fetch.rb +556 -0
  41. data/lib/YkLib/Yk/fetch_old.rb +290 -0
  42. data/lib/YkLib/Yk/fib.rb +158 -0
  43. data/lib/YkLib/Yk/file_aux.rb +843 -0
  44. data/lib/YkLib/Yk/file_aux2.rb +919 -0
  45. data/lib/YkLib/Yk/file_aux_old.rb +160 -0
  46. data/lib/YkLib/Yk/filemod.rb +19 -0
  47. data/lib/YkLib/Yk/force_escseq.rb +3 -0
  48. data/lib/YkLib/Yk/generator__.rb +144 -0
  49. data/lib/YkLib/Yk/generator__.rb.org +139 -0
  50. data/lib/YkLib/Yk/indenter/argless_case.rb +46 -0
  51. data/lib/YkLib/Yk/indenter/each_token.rb +671 -0
  52. data/lib/YkLib/Yk/indenter/free_case.rb +313 -0
  53. data/lib/YkLib/Yk/indenter/if_less.rb +53 -0
  54. data/lib/YkLib/Yk/indenter/independent_ensure.rb +23 -0
  55. data/lib/YkLib/Yk/indenter/independent_rescue.rb +23 -0
  56. data/lib/YkLib/Yk/indenter/operand_circumflex.rb +0 -0
  57. data/lib/YkLib/Yk/indenter/operand_period.rb +16 -0
  58. data/lib/YkLib/Yk/indenter/parenless_and.rb +37 -0
  59. data/lib/YkLib/Yk/indenter/post_test.rb +48 -0
  60. data/lib/YkLib/Yk/indenter/token.rb +1525 -0
  61. data/lib/YkLib/Yk/indenter.rb +1382 -0
  62. data/lib/YkLib/Yk/inot.rb +265 -0
  63. data/lib/YkLib/Yk/intf.rb +815 -0
  64. data/lib/YkLib/Yk/io_aux.rb +1332 -0
  65. data/lib/YkLib/Yk/ioctl.rb +60 -0
  66. data/lib/YkLib/Yk/ipcc.rb +87 -0
  67. data/lib/YkLib/Yk/ipcountry.rb +207 -0
  68. data/lib/YkLib/Yk/ipv4adr.rb +318 -0
  69. data/lib/YkLib/Yk/localmail.rb +276 -0
  70. data/lib/YkLib/Yk/method_chain.rb +359 -0
  71. data/lib/YkLib/Yk/misc_tz.rb +1716 -0
  72. data/lib/YkLib/Yk/missing_method.rb +50 -0
  73. data/lib/YkLib/Yk/mojiConv.rb +257 -0
  74. data/lib/YkLib/Yk/nostdlog.rb +4 -0
  75. data/lib/YkLib/Yk/on_marshal.rb +20 -0
  76. data/lib/YkLib/Yk/overrider.rb +47 -0
  77. data/lib/YkLib/Yk/path.rb +293 -0
  78. data/lib/YkLib/Yk/path_aux.rb +883 -0
  79. data/lib/YkLib/Yk/path_aux_alt.rb +0 -0
  80. data/lib/YkLib/Yk/path_rep.rb +1267 -0
  81. data/lib/YkLib/Yk/pg_setup.rb +917 -0
  82. data/lib/YkLib/Yk/procinfo.rb +314 -0
  83. data/lib/YkLib/Yk/proclist.rb +492 -0
  84. data/lib/YkLib/Yk/property.rb +863 -0
  85. data/lib/YkLib/Yk/ranger.rb +606 -0
  86. data/lib/YkLib/Yk/resolv_tz.rb +88 -0
  87. data/lib/YkLib/Yk/rlprompt.rb +73 -0
  88. data/lib/YkLib/Yk/rootexec.rb +48 -0
  89. data/lib/YkLib/Yk/rpm-packageproxy.rb +784 -0
  90. data/lib/YkLib/Yk/rpm-packageproxy2.rb +1430 -0
  91. data/lib/YkLib/Yk/rwhen.rb +21 -0
  92. data/lib/YkLib/Yk/selector.rb +124 -0
  93. data/lib/YkLib/Yk/set.rb +170 -0
  94. data/lib/YkLib/Yk/shellquote.rb +300 -0
  95. data/lib/YkLib/Yk/sio.rb +1001 -0
  96. data/lib/YkLib/Yk/sio0.rb +835 -0
  97. data/lib/YkLib/Yk/sio_aux.rb +1524 -0
  98. data/lib/YkLib/Yk/sio_inot.rb +86 -0
  99. data/lib/YkLib/Yk/sock_aux.rb +42 -0
  100. data/lib/YkLib/Yk/spipe.rb +843 -0
  101. data/lib/YkLib/Yk/sql_table.rb +565 -0
  102. data/lib/YkLib/Yk/stdlog.rb +4 -0
  103. data/lib/YkLib/Yk/syscommand.rb +173 -0
  104. data/lib/YkLib/Yk/sysinit.rb +75 -0
  105. data/lib/YkLib/Yk/ttyFontWidth.rb +46113 -0
  106. data/lib/YkLib/Yk/tty_char.dump +0 -0
  107. data/lib/YkLib/Yk/tty_char.rb +47 -0
  108. data/lib/YkLib/Yk/tty_char_create.rb +437031 -0
  109. data/lib/YkLib/Yk/tty_char_static.rb +437016 -0
  110. data/lib/YkLib/Yk/tty_rewrite.rb +142 -0
  111. data/lib/YkLib/Yk/tty_str.rb +461 -0
  112. data/lib/YkLib/Yk/tty_width.dat.rb +114 -0
  113. data/lib/YkLib/Yk/tty_width.rb +180 -0
  114. data/lib/YkLib/Yk/tty_width_available +569 -0
  115. data/lib/YkLib/Yk/tty_width_list +0 -0
  116. data/lib/YkLib/Yk/tty_width_list.linux +280 -0
  117. data/lib/YkLib/Yk/tty_width_list.windows +324 -0
  118. data/lib/YkLib/Yk/tz_tty +0 -0
  119. data/lib/YkLib/Yk/tz_tty.rb +0 -0
  120. data/lib/YkLib/Yk/uprepos.rb +94 -0
  121. data/lib/YkLib/Yk/userinfo.rb +91 -0
  122. data/lib/YkLib/Yk/with.rb +109 -0
  123. data/lib/YkLib/version.rb +3 -0
  124. data/lib/YkLib.rb +6 -0
  125. metadata +170 -0
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'Yk/path_aux'
4
+
5
+ "tty_width.dat.rb".open "w" do |w|
6
+ first = true
7
+ i = 0
8
+ "tty_width_available".read_each_line do |ln|
9
+ u, v = ln.split
10
+ if !first
11
+ if i % 5 == 0
12
+ w.write ",\n\t\t"
13
+ else
14
+ w.write ", "
15
+ end
16
+ else
17
+ w.write "\t\t"
18
+ end
19
+ first = false
20
+ w.write "[0x#{sprintf("%04x", u.to_i(16))}, #{sprintf("%2s", v)}]"
21
+ i += 1
22
+ end
23
+ end
24
+
@@ -0,0 +1,26 @@
1
+ #
2
+
3
+
4
+ require 'openssl'
5
+
6
+
7
+ def encrypt(aaa, solt = 'solt')
8
+ enc = OpenSSL::Cipher::Cipher.new('aes256')
9
+ enc.encrypt
10
+ enc.pkcs5_keyivgen(solt)
11
+ ((enc.update(aaa) + enc.final).unpack("H*")).to_s
12
+ rescue
13
+ nil
14
+ end
15
+
16
+
17
+ def decrypt(bbb, solt = 'solt')
18
+ dec = OpenSSL::Cipher::Cipher.new('aes256')
19
+ dec.decrypt
20
+ dec.pkcs5_keyivgen(solt)
21
+ (dec.update(Array.new([bbb]).pack("H*")) + dec.final)
22
+ rescue
23
+ nil
24
+ end
25
+
26
+
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,473 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ if $debug != false
4
+ require 'Yk/path_aux'
5
+ require 'Yk/auto_escseq'
6
+ require 'binding_of_caller'
7
+ require 'Yk/eval_alt'
8
+ #require 'Yk/inot'
9
+
10
+ $cmdline = ([$0.basename] + ARGV).join(" ")
11
+ # class Exception
12
+ # alias message_org message
13
+ # alias backtrace_org backtrace
14
+ # def ft
15
+ # if backtrace[0] =~ /^(.*)?:(\d+):in/
16
+ # "#{$1.basename}:#{$2}"
17
+ # end
18
+ # end
19
+ # def message
20
+ # "---msg-start#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] #{ft} " + message_org
21
+ # end
22
+ # def backtrace
23
+ # caller_locations.each do |ln|
24
+ # # system "echo 1"
25
+ # end
26
+ # backtrace_org#.map{|e| e + "---msg-start#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] "}
27
+ # end
28
+ # end
29
+
30
+ DEBUG_FILES = {}
31
+
32
+ $ldif = 0
33
+
34
+ class TZDebug
35
+ def initialize
36
+ end
37
+ def line f, l
38
+ loc = caller_locations(1)[0]
39
+ $alt_path = f
40
+ $ldif = l - loc.lineno
41
+ end
42
+ def > f
43
+ f = f.expand_path
44
+ f.touch
45
+ f.truncate
46
+ $debugFileName.write f
47
+ end
48
+ def >> f
49
+ f = f.expand_path
50
+ f.touch
51
+ # if f.file_size > 4000000
52
+ # d = f.read
53
+ # f.write d[-4000000..-1]
54
+ # end
55
+ $debugFileName.write f
56
+ end
57
+ def < pid
58
+ $__orgPid__cw__.write [pid].pack("S*")
59
+ $__orgPid__cw__.flush
60
+ end
61
+ Escseq::Colors.each_with_index do |e, i|
62
+ col = e.to_s
63
+ capCol = e.to_s.capitalize
64
+ class_eval %{
65
+ #{capCol} = "\\x1b[#{i + 30}m"
66
+ Bg#{capCol} = "\\x1b[#{i + 40}m"
67
+ def #{col} *args
68
+ STDERR.write #{capCol}
69
+ begin
70
+ TZDebug.p *args
71
+ ensure
72
+ STDERR.write Default
73
+ STDERR.write BgDefault
74
+ STDERR.write "\r\n"
75
+ end
76
+ end
77
+ def bg#{capCol} *args
78
+ STDERR.write Bg#{capCol}
79
+ STDERR.write Black
80
+ begin
81
+ TZDebug.p *args
82
+ ensure
83
+ STDERR.write Default
84
+ STDERR.write BgDefault
85
+ STDERR.write "\r\n"
86
+ end
87
+ end
88
+ }
89
+ end
90
+ def self.p *exprs
91
+ noLn = noTitle = false
92
+ if Escseq::Colors.index exprs[0]
93
+ col = exprs.shift
94
+ end
95
+ locCnt = 1
96
+ begin
97
+ locCnt += 1
98
+ loc = caller_locations(locCnt)[0]
99
+ end until !["Yk/with.rb", "Yk/debug2.rb"].include?(loc.path.split(/\//)[-2..-1] * "/")
100
+ out = ""
101
+ if loc.path == "-" || loc.path == "(eval)" || loc.path == "-e"
102
+ if $alt_path
103
+ pth = $alt_path
104
+ end
105
+ else
106
+ pth = loc.path
107
+ end
108
+ if pth
109
+ title = "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] #{pth.basename}:#{loc.lineno + $ldif}"
110
+ ln = (DEBUG_FILES[pth] ||= IO.read(pth).force_encoding(Encoding::ASCII_8BIT).split(/\n/).unshift(""))[loc.lineno + $ldif]
111
+ if ln =~ /(^|\s)p\b/
112
+ args = $'.strip
113
+ case args
114
+ when /^\.line\b/, /^\>/
115
+ out = nil
116
+ when ""
117
+ out = ""
118
+ when /^\>/
119
+ noTitle = true
120
+ noLn = true
121
+ out = nil
122
+ when /^\.([\w]+)\b/
123
+ # noTiltle = true
124
+ # noLn = true
125
+ if exprs.size == 0
126
+ if $'.strip_comment == ""
127
+ if caller_locations(1)[0].path == "(eval)"
128
+ out = "***"
129
+ noTitle = true
130
+ noLn = true
131
+ else
132
+ out = nil
133
+ noLn = true
134
+ end
135
+ else
136
+ col = $1
137
+ out = nil
138
+ noLn = true
139
+ end
140
+ else
141
+ left = $'.strip_comment
142
+ right = exprs.inspect[1..-2]
143
+ if left != right
144
+ out = "#{left} = #{right}"
145
+ else
146
+ out = "#{left}"
147
+ end
148
+ noTitle = true
149
+ noLn = true
150
+ end
151
+ else
152
+ if col
153
+ args = args.split(/\s*,\s*/)[1..-1].join(", ")
154
+ end
155
+ left = args
156
+ right = exprs.inspect[1..-2]
157
+ if left != right
158
+ out = "#{left} = #{right}"
159
+ else
160
+ out = "#{left}"
161
+ end
162
+ end
163
+ end
164
+ if !noTitle
165
+ o = title + " "
166
+ o = col ? (o.split[0...-1] + [o.split[-1].method(col).call]).join(" ") + " " : o
167
+ STDERR.write o
168
+ end
169
+ if out
170
+ if col
171
+ STDERR.write out.method(col).call
172
+ else
173
+ STDERR.write out
174
+ end
175
+ end
176
+ if !noLn
177
+ STDERR.write "\r\n"
178
+ end
179
+ end
180
+ return TZDebug.new
181
+ end
182
+ def self.pinit
183
+ fr, fw = IO.pipe
184
+ if STDERR.tty?
185
+ lnk = "/proc/#{$$}/fd/#{STDERR.to_i}".readlink
186
+ fe = lnk.open File::WRONLY
187
+ else
188
+ fe = STDERR.dup
189
+ end
190
+ pinfo = "" # "[#{$cmdline}:#{$$}]"
191
+ STDERR.reopen fw
192
+ if STDERR.respond_to? :dont_use_select
193
+ STDERR.dont_use_select
194
+ end
195
+ $debugFileName = "#{ENV['HOME']}/.tmp/Yk/site_ruby/debug2.rb".check_dir / rand.to_s + ".file"
196
+ wPids = [$$]
197
+ cr, $__orgPid__cw__ = IO.pipe
198
+ gr, gw = IO.pipe
199
+ pid = fork do
200
+ fw.close
201
+ gr.close
202
+ $__orgPid__cw__.close
203
+ Process.daemon true, true
204
+ gw.writeln $$.to_s
205
+ gw.close
206
+ #fe.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] started debug attachment to #{wPids.join(' ')}\n"
207
+ begin
208
+ buff = ""
209
+ residue = ""
210
+ dw = dfw = nil
211
+ debFile = ""
212
+ interrupted = false
213
+ loop do
214
+ necand = nil
215
+ serr = false
216
+ unexpected = false
217
+ unexpectedNext = false
218
+ unexpectedLine = nil
219
+ waitReaders = []
220
+ waitReaders.push fr if fr
221
+ waitReaders.push cr if cr
222
+ if fr == nil && cr == nil
223
+ break
224
+ end
225
+ r = nil
226
+ if !interrupted
227
+ begin
228
+ r = IO.select waitReaders, [], [], 10
229
+ rescue Exception
230
+ interrupted = true
231
+ end
232
+ end
233
+ trap :USR1 do
234
+ if dw
235
+ dw.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] #{wPids[0]} exited.\n"
236
+ dw.flush
237
+ Process.kill :INT, $$
238
+ end
239
+ end
240
+ if r && r[0].delete(fr)
241
+ begin
242
+ if debFile != (tmp = $debugFileName.read rescue nil)
243
+ if tmp && tmp._w?
244
+ dfw.close if dfw
245
+ dfw = tmp.open "a"
246
+ debFile = tmp
247
+ end
248
+ end
249
+ if dfw
250
+ dw = dfw
251
+ else
252
+ dw = fe
253
+ end
254
+ fr.readpartial 4096, buff
255
+ buff = residue + buff
256
+ residue.replace ""
257
+ locked = false
258
+ begin
259
+ outlines = []
260
+ head = "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{wPids[0]}]"
261
+ handleSerr = ->msg{
262
+ if msg =~ /\s*(\/.*):(\d+)\s+syntax error, /
263
+ serr = true
264
+ msg.replace($1.basename + $2 + ":" + $')
265
+ if msg =~ /unexpected local variable or method, /
266
+ unexpected = true
267
+ msg.reaplace $` + $'
268
+ end
269
+ end
270
+ }
271
+ buff.each_line do |ln|
272
+ if ln[-1] == "\n"
273
+ if unexpected
274
+ unexpected = false
275
+ unexpectedNext = true
276
+ unexpectedLine = ln
277
+ outlines[-1][3] += ln
278
+ elsif unexpectedNext
279
+ unexpectedNext = false
280
+ s, e = ln.getStartEnd
281
+ outlines[-1][3] += ln
282
+ usym = unexpectedLine[s .. e]
283
+ if ri = outlines[-1][3].rindex("expecting")
284
+ outlines[-1][3].insert ri, "`#{usym}', "
285
+ end
286
+ elsif serr && handleSerr.(ln)
287
+ outlines[-1][3] += ln
288
+ elsif ln =~ /^Did you mean\? /
289
+ necand = $'.strip
290
+ elsif ln =~ /(^|\s*from )((\.+\/|\/)[^\s]+)(:(\d+):in \`(block in |)(\<(module|class)|(.*?)\'))/
291
+ isFirst = $1 == ""
292
+ fName = $2
293
+ lno = $5
294
+ msg = $'
295
+ func = (($8 && "<#{$8}>") || $9).strip
296
+ func.gsub! /(\w)\s+(\W)/, '\1\2'
297
+ func.gsub! /(\W)\s+(\w)/, '\1\2'
298
+ msg = msg.strip
299
+ if msg =~ /^:(.*)\((.*?)\)$/
300
+ err, msg = $2, $1.strip
301
+ if msg =~ /\s*undefined local variable or method \`(.*?)\' for\s*/
302
+ msg = "#{$'}::`#{$1}'"
303
+ end
304
+ handleSerr.(msg)
305
+ msg = "#{head} #{err}: #{msg}\n"
306
+ elsif msg =~ /^:/
307
+ msg = "#{head} #{$'.strip}\n"
308
+ elsif !msg.empty?
309
+ msg = head + " " + msg + "\n"
310
+ end
311
+ if !outlines.empty? && outlines[-1][0..1] == [fName, lno] && msg == ""
312
+ outlines[-1][2].push func
313
+ else
314
+ outlines.push [fName, lno, [func], msg]
315
+ end
316
+ else
317
+ if dw != fe && !locked
318
+ dw.flock File::LOCK_EX
319
+ locked = true
320
+ end
321
+ dw.write ln
322
+ end
323
+ else
324
+ residue += ln
325
+ end
326
+ end
327
+ prevFName = nil
328
+ outlines.each do |fName, lno, func, msg|
329
+ if fName == prevFName
330
+ pFName = " " * fName.basename.size + ":"
331
+ else
332
+ pFName = fName.basename + ":"
333
+ end
334
+ lcontent = " " + String::LInfo::getFileLine(fName, lno.to_i).strip rescue ""
335
+ pos = pFName + lno + ":(" + func * "," + ")"
336
+ if dw != fe && !locked
337
+ dw.flock File::LOCK_EX
338
+ locked = true
339
+ end
340
+ if necand
341
+ msg = msg.chomp + " is `#{necand}'?\n"
342
+ necand = nil
343
+ end
344
+ dw.write msg + "> " + pos + lcontent.ln
345
+ prevFName = fName
346
+ end
347
+ ensure
348
+ dw.flush
349
+ dw.flock File::LOCK_UN if dw != fe && locked
350
+ end
351
+ rescue EOFError
352
+ fr = nil
353
+ rescue Exception
354
+ interrupted = true
355
+ end
356
+ end
357
+ if r && r[0].delete(cr)
358
+ begin
359
+ if !cr.read 4, buff
360
+ raise EOFError
361
+ end
362
+ if buff || buff != ""
363
+ tpid, rpid = buff.unpack("S*")
364
+ i = wPids.index(tpid)
365
+ if i
366
+ wPids[i] = rpid
367
+ dw.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] watching pid, #{tpid} changed to #{rpid}\n"
368
+ dw.flush
369
+ else
370
+ wPids.push rpid
371
+ dw.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] added new pid, #{rpid}\n"
372
+ dw.flush
373
+ end
374
+ #pinfo = "[#{$cmdline}:#{$__orgPid__}]"
375
+ end
376
+ rescue EOFError
377
+ cr = nil
378
+ end
379
+ end
380
+ if !r
381
+ if interrupted
382
+ dw.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] interrupted.\n"
383
+ dw.flush
384
+ end
385
+ wPidsExistList = wPids.map{|e|"/proc/#{e}"._e?}
386
+ #dw.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] watching, #{wPids.inspect} => #{wPidsExistList.inspect}\n"
387
+ dw.flush
388
+ found = false
389
+ wPids.each do |e|
390
+ if "/proc/#{e}"._e?
391
+ if "/proc/#{e}/stat".read.split[2] == "Z"
392
+ dw.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] " + "pid, #{e} has become Zombie.\n".red
393
+ dw.flush
394
+ else
395
+ found = true
396
+ end
397
+ end
398
+ end
399
+ if !found
400
+ dw.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] break\n"
401
+ dw.flush
402
+ break
403
+ end
404
+ end
405
+ end
406
+ #fe.write "#{Time.now.strftime('%X.%3N')} [#{$cmdline}:#{$$}] exitting debug attachment\n"
407
+ ensure
408
+ # $debugFileName.unlink
409
+ end
410
+ end
411
+ gw.close
412
+ $__degugWatchDogPid = gr.readline.to_i
413
+ gr.close
414
+ at_exit{
415
+ # Process.kill :USR1, $__degugWatchDogPid
416
+ }
417
+ Process.detach pid
418
+ fr.close
419
+ cr.close
420
+ end
421
+ pinit
422
+ end
423
+
424
+
425
+ def p *exprs
426
+ TZDebug.p *exprs
427
+ end
428
+
429
+
430
+
431
+
432
+ module Process
433
+ class << self
434
+ alias orgDaemon daemon
435
+ def daemon *args
436
+ prev = $$
437
+ Process.orgDaemon *args
438
+ $__orgPid__cw__.write [prev, $$].pack("S*")
439
+ $__orgPid__cw__.flush
440
+ end
441
+ end
442
+ end
443
+
444
+
445
+
446
+ if $0 == __FILE__
447
+ p.blue 1 + 2
448
+ eval "
449
+ # p >> '~/debug2'
450
+ p.line '#{__FILE__}', #{__LINE__}
451
+ p.bgCyan 3 + 4, 5 + 9
452
+ p.bgGreen
453
+ p :red, 5 + 6
454
+ p
455
+ "
456
+ end
457
+
458
+
459
+ else
460
+
461
+ require 'Yk/path_aux'
462
+ class TZDebug
463
+ def initialize
464
+ end
465
+ def method_missing *args
466
+ return
467
+ end
468
+ end
469
+ def p *args
470
+ return TZDebug.new
471
+ end
472
+
473
+ end
@@ -0,0 +1,139 @@
1
+ #
2
+
3
+
4
+ if ENV['DEBUG']
5
+ $DEBUG = 1
6
+ end
7
+
8
+ require 'Yk/__defun__'
9
+
10
+ if ENV['DEBUG'] && ENV['DEBUG'] != "LOG"
11
+ #require 'errlog'
12
+ end
13
+
14
+
15
+ class Errout
16
+ FLines = Hash.new do |h, k|
17
+ h[k] = IO.readlines(k)
18
+ end
19
+ def Errout.fReadLine (f)
20
+ if f =~ /:/
21
+ f = $`
22
+ l = $'.to_i
23
+ else
24
+ l = f.to_i
25
+ f = $PROGRAM_NAME
26
+ end
27
+ begin
28
+ res = FLines[f][l - 1]
29
+ rescue Errno::ENOENT
30
+ res = ""
31
+ end
32
+ end
33
+ def Errout.cutIn (s)
34
+ if s =~ /:in.*/
35
+ s =$`
36
+ end
37
+ s.sub(/^.\//, "")
38
+ orgS = s
39
+ if s =~ /:/
40
+ if $` == $PROGRAM_NAME
41
+ s = $'
42
+ else
43
+ s = File.basename($`) + ":" + $'
44
+ end
45
+ end
46
+ s.__defun__ :orgdata do
47
+ orgS
48
+ end
49
+ s
50
+ end
51
+ if ENV["DEBUG"] == "LOG"
52
+ require 'syslog'
53
+ def Errout.write (arg)
54
+ Syslog.open if !Syslog.opened?
55
+ arg = arg.chomp
56
+ arg = arg.gsub /\n/, " "
57
+ arg = arg.gsub /\t/, " "
58
+ i = 0
59
+ cur = arg[i ... i + 80]
60
+ while true
61
+ if i != 0
62
+ body = "(__debug__errlog__) " + cur
63
+ else
64
+ body = "(__debug__errlog__) (__d_first)" + cur
65
+ end
66
+ i += 80
67
+ cur = arg[i ... i + 80]
68
+ if cur
69
+ tail = "(__d_cont)\n"
70
+ Syslog.err body + tail
71
+ else
72
+ tail = "\n"
73
+ Syslog.err body + tail
74
+ break
75
+ end
76
+ end
77
+ end
78
+ def Errout.flush
79
+ end
80
+ else
81
+ def Errout.write (arg)
82
+ STDERR.write arg
83
+ end
84
+ def Errout.flush
85
+ STDERR.flush
86
+ end
87
+ end
88
+ def Errout.errout (strm, bl, *x)
89
+ if !$DEBUG
90
+ return
91
+ end
92
+ pos = caller(2)
93
+ arr = []
94
+ pos[0..3].each do |e|
95
+ arr.push cutIn(e)
96
+ end
97
+ ln = fReadLine(arr[0].orgdata).strip
98
+ ln.gsub! /\s+do$/, ""
99
+ ln.gsub! /^er\s*/, ""
100
+ ln.sub! /^\(/, ""
101
+ ln.sub! /\)$/, ""
102
+ larr = ln.split(/\s*\,\s*/)
103
+ title = ""
104
+ if x.size > 0 && x[0].is_a?(String) && (x[0] == larr[0])
105
+ title = x.shift + (x.size > 0 ? ":" : "")
106
+ larr.shift
107
+ end
108
+ ln = larr.join(', ')
109
+ if x.size > 0
110
+ if !bl
111
+ s = [];x.each do |e| s.push e.inspect end; s = s.join(', ')
112
+ else
113
+ s = bl.call
114
+ end
115
+ toWrite = "#{title}#{ln}:#{s}|#{arr.join('|')}\n"
116
+ else
117
+ toWrite = "#{title}|#{arr.join('|')}\n"
118
+ end
119
+ if strm
120
+ strm << toWrite
121
+ else
122
+ write toWrite
123
+ flush
124
+ end
125
+ end
126
+ end
127
+
128
+
129
+ def er (*args, &bl)
130
+ Errout.errout(nil, bl, *args)
131
+ end
132
+
133
+
134
+ def ero (*args, &bl)
135
+ ret = ""
136
+ Errout.errout(ret, bl, *args)
137
+ ret.chomp!
138
+ end
139
+