YkLib 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+