- Recode filenames according to user's locale. This allows philesight

to be used with non-POSIX locale filesystems.
This commit is contained in:
Stanislav Sedov 2009-02-11 20:18:09 +00:00
parent d425960d8e
commit 5bc22a9dc0
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=228074
2 changed files with 44 additions and 2 deletions

View file

@ -7,7 +7,7 @@
PORTNAME= philesight
PORTVERSION= 20090105
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= sysutils
MASTER_SITES= http://zevv.nl/play/code/philesight/
EXTRACT_SUFX= .tgz
@ -16,7 +16,9 @@ MAINTAINER= stas@FreeBSD.org
COMMENT= Shows a graphics representation of the filesystem usage
RUN_DEPENDS= ${RUBY_SITEARCHLIBDIR}/cairo.so:${PORTSDIR}/graphics/ruby-cairo \
${RUBY_SITEARCHLIBDIR}/bdb.so:${PORTSDIR}/databases/ruby-bdb
${RUBY_SITEARCHLIBDIR}/bdb.so:${PORTSDIR}/databases/ruby-bdb \
${RUBY_SITELIBDIR}/locale.rb:${PORTSDIR}/devel/ruby-locale2 \
${RUBY_ARCHLIBDIR}/iconv.so:${PORTSDIR}/converters/ruby-iconv
USE_RUBY= yes
NO_BUILD= yes

View file

@ -0,0 +1,40 @@
--- 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