freebsd-ports/sysutils/philesight/files/patch-philesight.rb
Stanislav Sedov 5bc22a9dc0 - Recode filenames according to user's locale. This allows philesight
to be used with non-POSIX locale filesystems.
2009-02-11 20:18:09 +00:00

40 lines
907 B
Ruby

--- philesight.rb.orig 2009-01-05 18:16:40.000000000 +0300
+++ philesight.rb 2009-02-11 22:38:03.000000000 +0300
@@ -5,6 +5,8 @@
require 'cgi'
require 'cairo'
require 'bdb'
+require 'locale'
+require 'iconv'
class PNGWriter
@@ -390,6 +392,7 @@
#
def draw_text(cr, x, y, text, size=11, bold=false)
+ conv = Iconv.new("UTF-8", Locale.charset)
lines = text.count("\n") + 1
y -= (lines-1) * (size+2) / 2.0
@@ -398,11 +401,18 @@
cr.set_font_size(size)
text.split("\n").each do |line|
- extents = cr.text_extents(line)
+ begin
+ newname = conv.iconv(line)
+ newname << conv.iconv(nil)
+ rescue Iconv::IllegalSequence => e
+ puts "Bad file name: #{line}"
+ next
+ end
+ extents = cr.text_extents(newname)
w = extents.width
h = extents.height
cr.move_to(x - w/2, y + h/2)
- cr.show_text(line)
+ cr.show_text(newname)
y += size+2
end
end