replace new version of fsexam, old version 0.3.1 is not used any more
authoryz157939@agc105
Fri, 25 Apr 2008 17:02:23 +0800
changeset 147 8c4ef02c14b8
parent 146 841e634f8d60
child 148 91c620d9e52f
replace new version of fsexam, old version 0.3.1 is not used any more
src/cmd/fsexam/AUTHORS
src/cmd/fsexam/BUILD
src/cmd/fsexam/COPYING
src/cmd/fsexam/ChangeLog
src/cmd/fsexam/LICENSE
src/cmd/fsexam/Makefile
src/cmd/fsexam/Makefile.am
src/cmd/fsexam/NEWS
src/cmd/fsexam/README
src/cmd/fsexam/TODO
src/cmd/fsexam/autogen.sh
src/cmd/fsexam/configure.in
src/cmd/fsexam/data/GNOME_Fsexam.server.in
src/cmd/fsexam/data/Makefile
src/cmd/fsexam/data/Makefile.am
src/cmd/fsexam/data/fsexam.desktop
src/cmd/fsexam/data/fsexam.desktop.in
src/cmd/fsexam/data/fsexam.schemas
src/cmd/fsexam/data/fsexam.schemas.in
src/cmd/fsexam/fsexam.sol.spec
src/cmd/fsexam/fsexam.spec
src/cmd/fsexam/fsexam.spec.in
src/cmd/fsexam/help/C/Makefile.am
src/cmd/fsexam/help/C/figures/fsexam-pref.png
src/cmd/fsexam/help/C/figures/fsexam.png
src/cmd/fsexam/help/C/fsexam-C.omf
src/cmd/fsexam/help/C/fsexam.xml
src/cmd/fsexam/help/Makefile.am
src/cmd/fsexam/help/de/Makefile.am
src/cmd/fsexam/help/de/figures/fsexam-pref.png
src/cmd/fsexam/help/de/figures/fsexam.png
src/cmd/fsexam/help/de/fsexam-de.omf
src/cmd/fsexam/help/de/fsexam.xml
src/cmd/fsexam/help/es/Makefile.am
src/cmd/fsexam/help/es/figures/fsexam-pref.png
src/cmd/fsexam/help/es/figures/fsexam.png
src/cmd/fsexam/help/es/fsexam-es.omf
src/cmd/fsexam/help/es/fsexam.xml
src/cmd/fsexam/help/fr/Makefile.am
src/cmd/fsexam/help/fr/figures/fsexam-pref.png
src/cmd/fsexam/help/fr/figures/fsexam.png
src/cmd/fsexam/help/fr/fsexam-fr.omf
src/cmd/fsexam/help/fr/fsexam.xml
src/cmd/fsexam/help/it/Makefile.am
src/cmd/fsexam/help/it/figures/fsexam-pref.png
src/cmd/fsexam/help/it/figures/fsexam.png
src/cmd/fsexam/help/it/fsexam-it.omf
src/cmd/fsexam/help/it/fsexam.xml
src/cmd/fsexam/help/ja/Makefile.am
src/cmd/fsexam/help/ja/figures/fsexam-pref.png
src/cmd/fsexam/help/ja/figures/fsexam.png
src/cmd/fsexam/help/ja/fsexam-ja.omf
src/cmd/fsexam/help/ja/fsexam.xml
src/cmd/fsexam/help/ko/Makefile.am
src/cmd/fsexam/help/ko/figures/fsexam-pref.png
src/cmd/fsexam/help/ko/figures/fsexam.png
src/cmd/fsexam/help/ko/fsexam-ko.omf
src/cmd/fsexam/help/ko/fsexam.xml
src/cmd/fsexam/help/pt_BR/Makefile.am
src/cmd/fsexam/help/pt_BR/figures/fsexam-pref.png
src/cmd/fsexam/help/pt_BR/figures/fsexam.png
src/cmd/fsexam/help/pt_BR/fsexam-pt_BR.omf
src/cmd/fsexam/help/pt_BR/fsexam.xml
src/cmd/fsexam/help/sv/Makefile.am
src/cmd/fsexam/help/sv/figures/fsexam-pref.png
src/cmd/fsexam/help/sv/figures/fsexam.png
src/cmd/fsexam/help/sv/fsexam-sv.omf
src/cmd/fsexam/help/sv/fsexam.xml
src/cmd/fsexam/help/zh_CN/Makefile.am
src/cmd/fsexam/help/zh_CN/figures/fsexam-pref.png
src/cmd/fsexam/help/zh_CN/figures/fsexam.png
src/cmd/fsexam/help/zh_CN/fsexam-zh_CN.omf
src/cmd/fsexam/help/zh_CN/fsexam.xml
src/cmd/fsexam/help/zh_HK/Makefile.am
src/cmd/fsexam/help/zh_HK/figures/fsexam-pref.png
src/cmd/fsexam/help/zh_HK/figures/fsexam.png
src/cmd/fsexam/help/zh_HK/fsexam-zh_HK.omf
src/cmd/fsexam/help/zh_HK/fsexam.xml
src/cmd/fsexam/help/zh_TW/Makefile.am
src/cmd/fsexam/help/zh_TW/figures/fsexam-pref.png
src/cmd/fsexam/help/zh_TW/figures/fsexam.png
src/cmd/fsexam/help/zh_TW/fsexam-zh_TW.omf
src/cmd/fsexam/help/zh_TW/fsexam.xml
src/cmd/fsexam/pixmaps/Makefile
src/cmd/fsexam/pixmaps/Makefile.am
src/cmd/fsexam/pixmaps/fsexam-icon.png
src/cmd/fsexam/po/ChangeLog
src/cmd/fsexam/po/Makefile
src/cmd/fsexam/po/POTFILES
src/cmd/fsexam/po/POTFILES.in
src/cmd/fsexam/po/cs.po
src/cmd/fsexam/po/de.po
src/cmd/fsexam/po/es.po
src/cmd/fsexam/po/fr.po
src/cmd/fsexam/po/fsexam.pot
src/cmd/fsexam/po/hu.po
src/cmd/fsexam/po/it.po
src/cmd/fsexam/po/ja.po
src/cmd/fsexam/po/ko.po
src/cmd/fsexam/po/pl.po
src/cmd/fsexam/po/pt_BR.po
src/cmd/fsexam/po/ru.po
src/cmd/fsexam/po/sv.po
src/cmd/fsexam/po/zh_CN.po
src/cmd/fsexam/po/zh_HK.po
src/cmd/fsexam/po/zh_TW.po
src/cmd/fsexam/src/GNOME_Fsexam.idl
src/cmd/fsexam/src/Makefile
src/cmd/fsexam/src/Makefile.am
src/cmd/fsexam/src/auto-detect.c
src/cmd/fsexam/src/auto-detect.h
src/cmd/fsexam/src/callbacks.c
src/cmd/fsexam/src/callbacks.h
src/cmd/fsexam/src/encode.h
src/cmd/fsexam/src/encoding.c
src/cmd/fsexam/src/encoding.h
src/cmd/fsexam/src/file-filter.c
src/cmd/fsexam/src/file-filter.h
src/cmd/fsexam/src/file-validate.c
src/cmd/fsexam/src/file-validate.h
src/cmd/fsexam/src/fsexam-accels.h
src/cmd/fsexam/src/fsexam-application-server.c
src/cmd/fsexam/src/fsexam-application-server.h
src/cmd/fsexam/src/fsexam-content.c
src/cmd/fsexam/src/fsexam-content.h
src/cmd/fsexam/src/fsexam-convcontent.c
src/cmd/fsexam/src/fsexam-convcontent.h
src/cmd/fsexam/src/fsexam-conversion.c
src/cmd/fsexam/src/fsexam-conversion.h
src/cmd/fsexam/src/fsexam-convname.c
src/cmd/fsexam/src/fsexam-convname.h
src/cmd/fsexam/src/fsexam-debug.c
src/cmd/fsexam/src/fsexam-debug.h
src/cmd/fsexam/src/fsexam-dialog.c
src/cmd/fsexam/src/fsexam-dialog.h
src/cmd/fsexam/src/fsexam-dnd.c
src/cmd/fsexam/src/fsexam-dnd.h
src/cmd/fsexam/src/fsexam-dryrun.c
src/cmd/fsexam/src/fsexam-dryrun.h
src/cmd/fsexam/src/fsexam-encoding-dialog.c
src/cmd/fsexam/src/fsexam-encoding-dialog.h
src/cmd/fsexam/src/fsexam-error.c
src/cmd/fsexam/src/fsexam-error.h
src/cmd/fsexam/src/fsexam-header.h
src/cmd/fsexam/src/fsexam-helper.c
src/cmd/fsexam/src/fsexam-helper.h
src/cmd/fsexam/src/fsexam-history.c
src/cmd/fsexam/src/fsexam-history.h
src/cmd/fsexam/src/fsexam-log.c
src/cmd/fsexam/src/fsexam-log.h
src/cmd/fsexam/src/fsexam-plaintext.c
src/cmd/fsexam/src/fsexam-plaintext.h
src/cmd/fsexam/src/fsexam-pref.c
src/cmd/fsexam/src/fsexam-pref.h
src/cmd/fsexam/src/fsexam-preference-dialog.c
src/cmd/fsexam/src/fsexam-preference-dialog.h
src/cmd/fsexam/src/fsexam-preference.c
src/cmd/fsexam/src/fsexam-preference.h
src/cmd/fsexam/src/fsexam-setting.c
src/cmd/fsexam/src/fsexam-setting.h
src/cmd/fsexam/src/fsexam-specialfile.c
src/cmd/fsexam/src/fsexam-specialfile.h
src/cmd/fsexam/src/fsexam-tree.c
src/cmd/fsexam/src/fsexam-tree.h
src/cmd/fsexam/src/fsexam-ui.c
src/cmd/fsexam/src/fsexam-ui.h
src/cmd/fsexam/src/fsexam.c
src/cmd/fsexam/src/fsexam.glade2
src/cmd/fsexam/src/fsexam.glade2p
src/cmd/fsexam/src/fsexam.h
src/cmd/fsexam/todo
--- a/src/cmd/fsexam/AUTHORS	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-Federic Zhang <[email protected]>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/BUILD	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,18 @@
+	How to build fsexam
+
+1. Prerequisite
+
+1.1 Compiler
+
+Download and install SunStudio from
+http://www.opensolaris.org/os/community/tools/sun_studio_tools/sun_studio_11_tools/ if have not installed SunStudio
+
+1.2 CBE
+
+Download and install CBE from http://dlc.sun.com/osol/jds/downloads/cbe/
+
+2. Build
+
+# ./autogen.sh --prefix=/path/to/your/prefix
+# make
+# make install
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/COPYING	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,385 @@
+Unless otherwise noted, all files in this distribution are released
+under the Common Development and Distribution License (CDDL),
+Version 1.0 only.  Exceptions are noted within the associated
+source files.
+
+--------------------------------------------------------------------
+
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0
+
+1. Definitions.
+
+    1.1. "Contributor" means each individual or entity that creates
+         or contributes to the creation of Modifications.
+
+    1.2. "Contributor Version" means the combination of the Original
+         Software, prior Modifications used by a Contributor (if any),
+         and the Modifications made by that particular Contributor.
+
+    1.3. "Covered Software" means (a) the Original Software, or (b)
+         Modifications, or (c) the combination of files containing
+         Original Software with files containing Modifications, in
+         each case including portions thereof.
+
+    1.4. "Executable" means the Covered Software in any form other
+         than Source Code.
+
+    1.5. "Initial Developer" means the individual or entity that first
+         makes Original Software available under this License.
+
+    1.6. "Larger Work" means a work which combines Covered Software or
+         portions thereof with code not governed by the terms of this
+         License.
+
+    1.7. "License" means this document.
+
+    1.8. "Licensable" means having the right to grant, to the maximum
+         extent possible, whether at the time of the initial grant or
+         subsequently acquired, any and all of the rights conveyed
+         herein.
+
+    1.9. "Modifications" means the Source Code and Executable form of
+         any of the following:
+
+        A. Any file that results from an addition to, deletion from or
+           modification of the contents of a file containing Original
+           Software or previous Modifications;
+
+        B. Any new file that contains any part of the Original
+           Software or previous Modifications; or
+
+        C. Any new file that is contributed or otherwise made
+           available under the terms of this License.
+
+    1.10. "Original Software" means the Source Code and Executable
+          form of computer software code that is originally released
+          under this License.
+
+    1.11. "Patent Claims" means any patent claim(s), now owned or
+          hereafter acquired, including without limitation, method,
+          process, and apparatus claims, in any patent Licensable by
+          grantor.
+
+    1.12. "Source Code" means (a) the common form of computer software
+          code in which modifications are made and (b) associated
+          documentation included in or with such code.
+
+    1.13. "You" (or "Your") means an individual or a legal entity
+          exercising rights under, and complying with all of the terms
+          of, this License.  For legal entities, "You" includes any
+          entity which controls, is controlled by, or is under common
+          control with You.  For purposes of this definition,
+          "control" means (a) the power, direct or indirect, to cause
+          the direction or management of such entity, whether by
+          contract or otherwise, or (b) ownership of more than fifty
+          percent (50%) of the outstanding shares or beneficial
+          ownership of such entity.
+
+2. License Grants.
+
+    2.1. The Initial Developer Grant.
+
+    Conditioned upon Your compliance with Section 3.1 below and
+    subject to third party intellectual property claims, the Initial
+    Developer hereby grants You a world-wide, royalty-free,
+    non-exclusive license:
+
+        (a) under intellectual property rights (other than patent or
+            trademark) Licensable by Initial Developer, to use,
+            reproduce, modify, display, perform, sublicense and
+            distribute the Original Software (or portions thereof),
+            with or without Modifications, and/or as part of a Larger
+            Work; and
+
+        (b) under Patent Claims infringed by the making, using or
+            selling of Original Software, to make, have made, use,
+            practice, sell, and offer for sale, and/or otherwise
+            dispose of the Original Software (or portions thereof).
+
+        (c) The licenses granted in Sections 2.1(a) and (b) are
+            effective on the date Initial Developer first distributes
+            or otherwise makes the Original Software available to a
+            third party under the terms of this License.
+
+        (d) Notwithstanding Section 2.1(b) above, no patent license is
+            granted: (1) for code that You delete from the Original
+            Software, or (2) for infringements caused by: (i) the
+            modification of the Original Software, or (ii) the
+            combination of the Original Software with other software
+            or devices.
+
+    2.2. Contributor Grant.
+
+    Conditioned upon Your compliance with Section 3.1 below and
+    subject to third party intellectual property claims, each
+    Contributor hereby grants You a world-wide, royalty-free,
+    non-exclusive license:
+
+        (a) under intellectual property rights (other than patent or
+            trademark) Licensable by Contributor to use, reproduce,
+            modify, display, perform, sublicense and distribute the
+            Modifications created by such Contributor (or portions
+            thereof), either on an unmodified basis, with other
+            Modifications, as Covered Software and/or as part of a
+            Larger Work; and
+
+        (b) under Patent Claims infringed by the making, using, or
+            selling of Modifications made by that Contributor either
+            alone and/or in combination with its Contributor Version
+            (or portions of such combination), to make, use, sell,
+            offer for sale, have made, and/or otherwise dispose of:
+            (1) Modifications made by that Contributor (or portions
+            thereof); and (2) the combination of Modifications made by
+            that Contributor with its Contributor Version (or portions
+            of such combination).
+
+        (c) The licenses granted in Sections 2.2(a) and 2.2(b) are
+            effective on the date Contributor first distributes or
+            otherwise makes the Modifications available to a third
+            party.
+
+        (d) Notwithstanding Section 2.2(b) above, no patent license is
+            granted: (1) for any code that Contributor has deleted
+            from the Contributor Version; (2) for infringements caused
+            by: (i) third party modifications of Contributor Version,
+            or (ii) the combination of Modifications made by that
+            Contributor with other software (except as part of the
+            Contributor Version) or other devices; or (3) under Patent
+            Claims infringed by Covered Software in the absence of
+            Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+    3.1. Availability of Source Code.
+
+    Any Covered Software that You distribute or otherwise make
+    available in Executable form must also be made available in Source
+    Code form and that Source Code form must be distributed only under
+    the terms of this License.  You must include a copy of this
+    License with every copy of the Source Code form of the Covered
+    Software You distribute or otherwise make available.  You must
+    inform recipients of any such Covered Software in Executable form
+    as to how they can obtain such Covered Software in Source Code
+    form in a reasonable manner on or through a medium customarily
+    used for software exchange.
+
+    3.2. Modifications.
+
+    The Modifications that You create or to which You contribute are
+    governed by the terms of this License.  You represent that You
+    believe Your Modifications are Your original creation(s) and/or
+    You have sufficient rights to grant the rights conveyed by this
+    License.
+
+    3.3. Required Notices.
+
+    You must include a notice in each of Your Modifications that
+    identifies You as the Contributor of the Modification.  You may
+    not remove or alter any copyright, patent or trademark notices
+    contained within the Covered Software, or any notices of licensing
+    or any descriptive text giving attribution to any Contributor or
+    the Initial Developer.
+
+    3.4. Application of Additional Terms.
+
+    You may not offer or impose any terms on any Covered Software in
+    Source Code form that alters or restricts the applicable version
+    of this License or the recipients' rights hereunder.  You may
+    choose to offer, and to charge a fee for, warranty, support,
+    indemnity or liability obligations to one or more recipients of
+    Covered Software.  However, you may do so only on Your own behalf,
+    and not on behalf of the Initial Developer or any Contributor.
+    You must make it absolutely clear that any such warranty, support,
+    indemnity or liability obligation is offered by You alone, and You
+    hereby agree to indemnify the Initial Developer and every
+    Contributor for any liability incurred by the Initial Developer or
+    such Contributor as a result of warranty, support, indemnity or
+    liability terms You offer.
+
+    3.5. Distribution of Executable Versions.
+
+    You may distribute the Executable form of the Covered Software
+    under the terms of this License or under the terms of a license of
+    Your choice, which may contain terms different from this License,
+    provided that You are in compliance with the terms of this License
+    and that the license for the Executable form does not attempt to
+    limit or alter the recipient's rights in the Source Code form from
+    the rights set forth in this License.  If You distribute the
+    Covered Software in Executable form under a different license, You
+    must make it absolutely clear that any terms which differ from
+    this License are offered by You alone, not by the Initial
+    Developer or Contributor.  You hereby agree to indemnify the
+    Initial Developer and every Contributor for any liability incurred
+    by the Initial Developer or such Contributor as a result of any
+    such terms You offer.
+
+    3.6. Larger Works.
+
+    You may create a Larger Work by combining Covered Software with
+    other code not governed by the terms of this License and
+    distribute the Larger Work as a single product.  In such a case,
+    You must make sure the requirements of this License are fulfilled
+    for the Covered Software.
+
+4. Versions of the License.
+
+    4.1. New Versions.
+
+    Sun Microsystems, Inc. is the initial license steward and may
+    publish revised and/or new versions of this License from time to
+    time.  Each version will be given a distinguishing version number.
+    Except as provided in Section 4.3, no one other than the license
+    steward has the right to modify this License.
+
+    4.2. Effect of New Versions.
+
+    You may always continue to use, distribute or otherwise make the
+    Covered Software available under the terms of the version of the
+    License under which You originally received the Covered Software.
+    If the Initial Developer includes a notice in the Original
+    Software prohibiting it from being distributed or otherwise made
+    available under any subsequent version of the License, You must
+    distribute and make the Covered Software available under the terms
+    of the version of the License under which You originally received
+    the Covered Software.  Otherwise, You may also choose to use,
+    distribute or otherwise make the Covered Software available under
+    the terms of any subsequent version of the License published by
+    the license steward.
+
+    4.3. Modified Versions.
+
+    When You are an Initial Developer and You want to create a new
+    license for Your Original Software, You may create and use a
+    modified version of this License if You: (a) rename the license
+    and remove any references to the name of the license steward
+    (except to note that the license differs from this License); and
+    (b) otherwise make it clear that the license contains terms which
+    differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+    COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+    BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+    INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+    SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+    PURPOSE OR NON-INFRINGING.  THE ENTIRE RISK AS TO THE QUALITY AND
+    PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU.  SHOULD ANY
+    COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+    INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
+    NECESSARY SERVICING, REPAIR OR CORRECTION.  THIS DISCLAIMER OF
+    WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.  NO USE OF
+    ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+    DISCLAIMER.
+
+6. TERMINATION.
+
+    6.1. This License and the rights granted hereunder will terminate
+    automatically if You fail to comply with terms herein and fail to
+    cure such breach within 30 days of becoming aware of the breach.
+    Provisions which, by their nature, must remain in effect beyond
+    the termination of this License shall survive.
+
+    6.2. If You assert a patent infringement claim (excluding
+    declaratory judgment actions) against Initial Developer or a
+    Contributor (the Initial Developer or Contributor against whom You
+    assert such claim is referred to as "Participant") alleging that
+    the Participant Software (meaning the Contributor Version where
+    the Participant is a Contributor or the Original Software where
+    the Participant is the Initial Developer) directly or indirectly
+    infringes any patent, then any and all rights granted directly or
+    indirectly to You by such Participant, the Initial Developer (if
+    the Initial Developer is not the Participant) and all Contributors
+    under Sections 2.1 and/or 2.2 of this License shall, upon 60 days
+    notice from Participant terminate prospectively and automatically
+    at the expiration of such 60 day notice period, unless if within
+    such 60 day period You withdraw Your claim with respect to the
+    Participant Software against such Participant either unilaterally
+    or pursuant to a written agreement with Participant.
+
+    6.3. In the event of termination under Sections 6.1 or 6.2 above,
+    all end user licenses that have been validly granted by You or any
+    distributor hereunder prior to termination (excluding licenses
+    granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+    UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+    (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+    INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+    COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+    LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+    CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+    LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+    STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+    COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+    INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.  THIS LIMITATION OF
+    LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+    INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+    APPLICABLE LAW PROHIBITS SUCH LIMITATION.  SOME JURISDICTIONS DO
+    NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+    CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+    APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+    The Covered Software is a "commercial item," as that term is
+    defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+    computer software" (as that term is defined at 48
+    C.F.R. 252.227-7014(a)(1)) and "commercial computer software
+    documentation" as such terms are used in 48 C.F.R. 12.212
+    (Sept. 1995).  Consistent with 48 C.F.R. 12.212 and 48
+    C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all
+    U.S. Government End Users acquire Covered Software with only those
+    rights set forth herein.  This U.S. Government Rights clause is in
+    lieu of, and supersedes, any other FAR, DFAR, or other clause or
+    provision that addresses Government rights in computer software
+    under this License.
+
+9. MISCELLANEOUS.
+
+    This License represents the complete agreement concerning subject
+    matter hereof.  If any provision of this License is held to be
+    unenforceable, such provision shall be reformed only to the extent
+    necessary to make it enforceable.  This License shall be governed
+    by the law of the jurisdiction specified in a notice contained
+    within the Original Software (except to the extent applicable law,
+    if any, provides otherwise), excluding such jurisdiction's
+    conflict-of-law provisions.  Any litigation relating to this
+    License shall be subject to the jurisdiction of the courts located
+    in the jurisdiction and venue specified in a notice contained
+    within the Original Software, with the losing party responsible
+    for costs, including, without limitation, court costs and
+    reasonable attorneys' fees and expenses.  The application of the
+    United Nations Convention on Contracts for the International Sale
+    of Goods is expressly excluded.  Any law or regulation which
+    provides that the language of a contract shall be construed
+    against the drafter shall not apply to this License.  You agree
+    that You alone are responsible for compliance with the United
+    States export administration regulations (and the export control
+    laws and regulation of any other countries) when You use,
+    distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+    As between Initial Developer and the Contributors, each party is
+    responsible for claims and damages arising, directly or
+    indirectly, out of its utilization of rights under this License
+    and You agree to work with Initial Developer and Contributors to
+    distribute such responsibility on an equitable basis.  Nothing
+    herein is intended or shall be deemed to constitute any admission
+    of liability.
+
+--------------------------------------------------------------------
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
+DISTRIBUTION LICENSE (CDDL)
+
+For Covered Software in this distribution, this License shall
+be governed by the laws of the State of California (excluding
+conflict-of-law provisions).
+
+Any litigation relating to this License shall be subject to the
+jurisdiction of the Federal Courts of the Northern District of
+California and the state courts of the State of California, with
+venue lying in Santa Clara County, California.
--- a/src/cmd/fsexam/ChangeLog	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,679 +0,0 @@
-2006-07-21 Yandong Yao <[email protected]>
-
-	Change License to CDDL
-
-2005-03-14  Federic Zhang <[email protected]>
-
-	Add GPL information in source files and header files
-
-2005-01-28  Yong Sun <[email protected]>
-
-	* src/fsexam-history.c: (serialize_history_item),
-	(deserialize_history_data):
-	Use "ESC" (i.e., \27) as the separator instead of "\t".
-
-2004-11-04  Yong Sun <[email protected]>
-
-	* src/fsexam-content.c: (is_plain_text_by_locale),
-	(encoding_to_locale), (fsexam_content_check_filetype),
-	(fsexam_content_check_plain_text): refine the judgement of plain text file.
-
-2004-11-01  Yong Sun <[email protected]>
-
-	* src/fsexam-history.c: (serialize_history_item): Only persist history items of convert action,
-	  not reverse action.
-
-	* src/fsexam-content.c: (fsexam_content_get_selection): Deal with null selection for preview
-
-2004-10-25  Yong Sun <[email protected]>
-
-	* data/fsexam.desktop.in: The desktop.in file should only mark the
-	translatable messages.
-
-2004-09-21  Yong Sun <[email protected]>
-
-	* src/fsexam-preference.c: (create_encodings_treeview): Do not show a
-	  empty header in encoding list (gtk_tree_view).
-
-2004-09-13  Yong Sun <[email protected]>
-
-	* src/fsexam-history.c: re-implement history functions. Save history
-	  items as plain text file.
-
-2004-09-09  Yong Sun <[email protected]>
-
-	* src/fsexam-content.c: (fsexam_content_check_filetype), (fsexam_content_check_plain_text):
-	Add guess list, and loop this list, to find out whether it's a text file. We have to set 
-	LC_CTYPE for non_UTF-8 chinese locales, so that we could expect file utility could return 
-	correct result.
-
-2004-09-06  Yong Sun <[email protected]>
-
-	* src/fsexam-history.c: (fsexam_history_update), (fsexam_history_close):
-	If there is not new history items added, do not invoke the fwrite,
-	which in Solaris will duplicate all previous contents.
-
-	* src/fsexam-ui.c: (fsexam_about): Add Yong to the author list.
-
-2004-09-06  Yong Sun <[email protected]>
-
-	* src/fsexam-content.c: (fsexam_content_check_plain_text): chop '\n' from the status message
-	* src/fsexam-content.c: (fsexam_content_undo): check whether the file is mepty
-
-2004-09-03  Yong Sun <[email protected]>
-
-	* src/fsexam-dnd.c: (drag_data_received_callback): update status bar
-	after dnd operation.
-
-2004-09-03  Federic Zhang <[email protected]>
-
-	* src/fsexam.c: (main): Load ${HOME}/Documents if launch from Launch->Applications->Utility,
-	otherwise, load current directory if launch it on terminal.
-
-2004-08-31  Yong Sun <[email protected]>
-
-	* src/fsexam-content.c: set LC_MESSAGES=c when we use file utility to
-	get file type.
-	
-2004-08-27  Federic Zhang <[email protected]>
-
-	Got final version of file from Gnome Documentation team.
-	* help/C/fsexam-C.omf, fsexam.xml:
-	* help/zh_CN/fsexam-zh_CN.omf, fsexam.xml:
-
-2004-08-27  Federic Zhang <[email protected]>
-
-	Follow the UI spec, put fsexam to Launch->Application->Utility
-	* data/fsexam.desktop.in:
-
-2004-08-24  Federic Zhang <[email protected]>
-
-	Package for build 17. Fix bug 5089799 for Solaris.
-	* src/fsexam-content.c: (fsexam_content_check_filetype): Convert the output of 'file'
-	into UTF8 and check whether the output contains the localized 'text'.
-	* src/fsexam-ui.c: (fsexam_treeitem_create): Fix one qsort problem.
-
-2004-08-23  Federic Zhang <[email protected]>
-
-	Candiate for build 17.  multiple selection conversion is supported now
-	and use better format to display conversion information in report pane
-	and write Undo/Reverse message into the report pane too.
-	* src/encoding.c: (init_encode): Fix bug 5089798 by checking the return value
-	of g_iconv_open.
-	* src/fsexam-content.c: (fsexam_content_check_filetype),
-	(fsexam_content_convert_file),
-	(fsexam_content_convert_single_selection),
-	(fsexam_content_convert), (fsexam_content_undo),
-	(fsexam_content_get_selection), (fsexam_content_peek): Compare localized 'text'
-	as the output of 'file' utility is localized in Solaris. Support multiple selection
-	for content conversion. Write more detailed message on statusbar.
-	* src/fsexam-content.h:
-	* src/fsexam-conversion.c: (fsexam_convert_with_candidates),
-	(write_to_buffer_in_report_pane), (write_to_report_pane),
-	(fsexam_filename_convert_file),
-	(fsexam_filename_convert_single_selection),
-	(fsexam_filename_convert), (fsexam_do_reverse),
-	(fsexam_reverse_single_selection), (fsexam_reverse), (fsexam_undo):
-	Initialize 'indexg' when press the 'Close' button.
-	Support multiple selection for filename conversion and use better format to 
-	display conversion information in report pane.	
-	* src/fsexam-history.c: correct the MATCH_CONVTYPE macro
-	* src/fsexam-ui.c: (fsexam_construct_ui): enable multiple selection
-
-2004-08-23  Yong Sun <[email protected]>
-
-	* fsexam.sol.spec: Add .desktop and omf files to pkgbuild
-
-2004-08-23  Yong Sun <[email protected]>
-
-	* configure.in: Hardcoded locale dir to %{prefix}/share/locale
-	* fsexam.sol.spec: Add mo files for pkgbuild
-
-2004-08-17  Yong Sun <[email protected]>
-
-	Fix the online help launch problem
-	* fsexam.spec: add scrollkeep-update to register the omf file
-	* help/C/fsexam-C.omf: have unique seriesid and correct the url info
-	* help/zh_CN/Makefile.am:
-	* help/zh_CN/Makefile.in:
-	* help/zh_CN/fsexam-zh_CN.omf: have unique seriesid and correct the url info
-	* help/zh_CN/fsexam.xml: correct the lang attribute
-	* src/fsexam-preference.c: (show_help): specify the fsexam-prefs location
-	* src/fsexam-ui.c: (show_help): specify the fsexam-intro location
-	* src/fsexam.c: (main): Correct the GNOME_PARAM_APP_DATADIR value
-
-2004-08-11  Federic Zhang <[email protected]>
-
-	* Dump to 0.3
-
-	Drag the "Documents" and "Trash" icon on desktop is supported and UI polish
-	* help/C/fsexam.xml: Modified according to the last change with UI polish
-	* help/zh_CN/fsexam.xml:
-	* src/fsexam-content.c: (fsexam_content_get_selection): UI polish
-	* src/fsexam-dnd.c: (drag_data_received_callback):
-	* src/fsexam-preference.c: (create_pref_dialog): UI polish
-	* src/fsexam-ui.c: (fsexam_construct_menu): UI polish
-
-2004-08-10  Federic Zhang <[email protected]>
-
-	UI polish and simplify the fsexam_content_undo API
-	* src/fsexam-content.c: (include_windows_carriage_return),
-	(fsexam_content_convert_file), (fsexam_content_undo):
-	* src/fsexam-content.h:  Write more descriptive message to statusbar
-	for ConvContent, ConvContentWithCRLF, ConvContentCRLFOnly.
-	Simplify the fsexam_content_undo API.
-	* src/fsexam-conversion.c: (write_to_buffer_in_report_pane),
-	(write_to_report_pane), (fsexam_do_reverse), (fsexam_reverse),
-	(fsexam_undo): Write the correct history item within fsexam_reverse.
-
-2004-08-09  Federic Zhang <[email protected]>
-
-	Implement Undo to act as 'Cancel the last action that user makes".
-	Define new member, 'serial', in history item to implement group Undo.
-	New conversion type, ConvContentWithCRLF, ConvContentCRLFOnly,
-		ConvContentWithCRLFReverse, ConvContentCRLFOnlyReverse
-	    to do automatic conversion from '\r\n' to '\n'.
-	* src/encode.h:
-	* src/encoding.c: (decode_analyzer):
-	* src/fsexam-content.c: (exclude_windows_carriage_return),
-	(include_windows_carriage_return), (fsexam_content_convert_file),
-	(fsexam_content_undo):
-	* src/fsexam-content.h:
-	* src/fsexam-conversion.c: (fsexam_undo_insert),
-	(fsexam_undo_remove), (fsexam_undo_removeall),
-	(write_to_buffer_in_report_pane), (write_to_report_pane),
-	(fsexam_filename_convert_file), (fsexam_filename_convert_dir),
-	(fsexam_do_reverse), (fsexam_reverse), (get_relative_name),
-	(fsexam_undo):
-	* src/fsexam-conversion.h:
-	* src/fsexam-history.c: (fsexam_history_locate_with_serial),
-	(fsexam_history_get_serial), (fsexam_history_put),
-	(fsexam_history_get_reverse),
-	(fsexam_history_get_reverse_by_value2),
-	(fsexam_history_get_reverse_by_value),
-	(fsexam_history_get_reverse_after), (fsexam_history_undo),
-	(fsexam_history_close):
-	* src/fsexam-history.h:
-	* src/fsexam-ui.c: (get_file_pixbuf), (fsexam_chooser_dir),
-	(fsexam_construct_menu):
-	* src/fsexam.h:
-
-2004-08-09  Federic Zhang <[email protected]>
-
-        * src/fsexam-dnd.c: (drag_data_received_callback):
-        fsexam will crash when drag "This Computer" or "Documents" on desktop to desktop,
-        fix it by checking whether the local_path is NULL or not
-
-2004-08-04  Federic Zhang <[email protected]>
-
-	UI polish on the preference dialog
-	* src/fsexam-preference.c: (set_button_sensitive),
-	(create_encodings_treeview), (fsexam_pref_set), (show_help),
-	(create_pref_dialog): Fix 5071819 by packing the Help button into dialog->action_area
-	* src/fsexam-ui.c: (set_item_collation):
-
-2004-08-03  Federic Zhang <[email protected]>
-
-	* src/fsexam-ui.c: (key_press_event), (tree_popup_handler),
-	(fsexam_construct_ui): Double click the left button or press Space will
-	invoke fsexam_filename_convert.	
-
-2004-08-02  Federic Zhang <[email protected]>
-
-	Add themed mimetype icons for each file and folder and
-	port to gtk-2.4 file selector.
-	* src/fsexam-ui.c: (get_file_pixbuf), (fsexam_treeitem_create),
-	(treemodel_create_with_treeitem), (fsexam_treeview_expand),
-	(fsexam_treemodel_create_with_treeitem), (fsexam_chooser_dir),
-	(fsexam_construct_ui): New get_file_pixbuf to get icon for each file
-	and folder.
-	* src/fsexam.c: (main): Initialize the pixbuf_hash table.
-	* src/fsexam.h: new pixbuf_hash variable and ICON_COLUMN.
-
-2004-07-30  Federic Zhang <[email protected]>
-
-	Enable the drag-n-drop from nautilus to fsexam
-	* configure.in: Add the dependency on eel-2.0
-	* src/fsexam-ui.c: (fsexam_treeview_set_title),
-	(fsexam_treeview_construct), (fsexam_treeview_reconstruct),
-	(fsexam_construct_ui): Set mainwin as potential drop destination
-	* src/fsexam.h: export fsexam_construct_ui
-	* src/fsexam-dnd.h, fsexam-dnd.c: Define drag_data_received_callback
-
-2004-07-23  Federic Zhang <[email protected]>
-
-	Cinnabar for Solaris Beta build 15
-	* fsexam.sol.spec: Remove fsexam.desktop in order not to let fsexam 
-	  exists on Application --> Accessories menu.
-
-2004-07-20  Federic Zhang <[email protected]>
-
-	UI Polish to try to conform to HIG.
-	Rewrite the fsexam_construct_menu to make its struct flexible and fix those
-	mnomenic and accelerator problems on MENUBAR
-	* src/fsexam-conversion.c: (is_dummy_iter):
-	* src/fsexam-ui.c: (fsexam_treeview_set_title),
-	(fsexam_chooser_dir), (append_menuitem), (append_stock_menuitem),
-	(append_check_menuitem), (set_menuitem_text),
-	(fsexam_construct_menu), (fsexam_construct_ui):
-
-2004-07-15  Federic Zhang <[email protected]>
-
-	Use variable argument list in iterate_encode_with_func to make it more powerful
-	* src/encode.h: variable argument list for iterate_encode_with_func
-	* src/encoding.c: (get_encode_elements),
-	(iterate_encode_with_func), (translate_encode_index): Change
-	translate_encode_index to become one func example for iterate_encode_with_func
-	and break within iterate_encode_with_func once the specified func retruns FALSE
-	* src/fsexam-content.c: (fsexam_content_construct_ui):
-	* src/fsexam-conversion.c: (fsexam_convert_construct_ui),
-	(fsexam_convert_with_candidates), (write_to_buffer_in_report_pane),
-	(write_to_report_pane): New write_to_buffer_in_report_pane which has six
-	arguments
-
-2004-07-14  Federic Zhang <[email protected]>
-
-	* src/fsexam-ui.c: (set_item_collation), (fsexam_treeitem_create):
-	Don't display hidden files and fix the wrong collation problem with
-	set_item_collation
-
-2004-07-13  Federic Zhang <[email protected]>
-
-	Package build 14 - Simplify source by introducing iterate_encode_with_func ()
-	* src/encode.h: New APIs get_encode_elements and iterate_encode_with_func
-	* src/encoding.c: (get_encode_elements),
-	(iterate_encode_with_func): Add iterate_encode_with_func
-	* src/fsexam-content.c: (fsexam_content_construct_ui),
-	(fsexam_content_show_candidates): Make call to fsexam_content_construct_ui via
-	iterate_encode_with_func to construct user interface
-	* src/fsexam-conversion.c: (fsexam_convert_candidate_set),
-	(fsexam_convert_construct_ui), (fsexam_convert_with_candidates): Mall call to
-	fsexam_convert_construct_ui via iterate_encode_with_func to construct user 
-	interface and fix wrong index problem in write_to_report_pane
-
-2004-07-12  Federic Zhang <[email protected]>
-
-	Candidate Package build 14
-	* src/encode.h: export translate_encode_index and get_first_encode_index
-	* src/encoding.c: (decode_analyzer), (translate_encode_index): Translate the index
-	of current conversion selection into the index in encode list. Return FAIL if conversion
-	fails. When automatic mode is set, use get_first_encode_index to get first encoding
-	whose score is HIGH othewise the first encoding whose score is LOW if no HIGH score exists
-	* src/fsexam-content.c: (fsexam_content_show_candidates),
-	(fsexam_content_convert_file): Fix wrong index problem with translate_encode_index,
-	don't try to convert if the file content is legacy encoding already during undo
-	* src/fsexam-conversion.c: (fsexam_convert_with_candidates),
-	(fsexam_filename_convert_file): Fix wrong index problem with translate_encode_index
-	call get_first_encode_index to get best encoding index when automatic mode is set
-	* data/fsexam.desktop.in, fsexam.schemas.in: Add ISO8859-1 into encode list for european
-	language
-	* po/de.po, es.po, fr.po, it.po, ja.po, ko.po, pt_BR.po, sv.po, zh_HK.po, zh_TW.po:
-	 Sync with G11N workspace
-
-
-2004-07-09  Federic Zhang <[email protected]>
-
-	* configure.in: Add 'de, es, fr, it, ko, pt_BR, sv, zh_TW and zh_HK'
-	  into ALL_LINGUAS.
-	* data/fsexam.schemas.in: Replace ro with pt_BR
-	* po/de.po, es.po, fr.po, it.po, ja.po, ko.po, pt_BR.po, sv.po, zh_HK.po, zh_TW.po:
-	  Add with sample po file
-
-2004-07-09  Federic Zhang <[email protected]>
-
-	* src/fsexam-content.c: (exclude_windows_carriage_return),
-	(fsexam_content_convert_file), (fsexam_content_get_sample),
-	(fsexam_content_peek): Add exclude_windows_carriage_return
-	to replace the occurrence of \r\n with \n.
-
-2004-07-08  Federic Zhang <[email protected]>
-
-	* data/fsexam.schemas.in: Correct the encode list for european language according
-	to http://www.cs.tut.fi/~jkorpela/8859.html.
-
-2004-07-08  Federic Zhang <[email protected]>
-
-	* src/fsexam-content.c: (fsexam_content_show_candidates),
-	(fsexam_content_peek):Kill warning
-	* src/fsexam-conversion.c: (fsexam_filename_rename),
-	(fsexam_filename_convert_file), (is_dummy_iter),
-	(fsexam_filename_convert_dir), (fsexam_filename_convert),
-	(get_iter): Add is_dummy_iter to check whether it is null directory and
-	write error msg into statusbar if duplicate filename and dirname happens
-	* src/fsexam-history.c: (fsexam_history_update): Kill warning
-	* src/fsexam-ui.c: (fsexam_treeview_set_title): Kill warning
-
-2004-07-07  Federic Zhang <[email protected]>
-
-	* src/fsexam-content.c: (fsexam_content_show_candidates),
-	(fsexam_content_convert_file): set the label with bold markup, fix the wrong 
-	GtkAttachOption for vertical resizing and set default window size.
-	* src/fsexam-ui.c: (fsexam_treeview_expand): Don't delete the dummy iter if it is
-	null directory and disable row expand.
-
-2004-06-29  Federic Zhang <[email protected]>
-
-	Package build 13 - UI and OLH freeze for Cinnabar beta
-	* po/fsexam.pot, zh_CN.po: UI freeze
-	* data/fsexam.schemas.in: Added the encoding list for de, es, fr, it, ro, sv and kr
-	* help/C/fsexam.xml: OLH freeze
-	* help/zh_CN/fsexam.xml: 
-
-2004-06-28  Gavin Tu <[email protected]>
-        * help/C/fsexam.xml: complete OLH excepte section 4.3 "Encoding List"
-
-2004-06-28  Federic Zhang <[email protected]>
-
-	The candidate for build 13 package: Launch peek window from menu item
-	and use one ugly hack to close the window and add candidate window to
-	list file content conversion.
-	* data/fsexam.schemas.in: Added ISO-2002-JP for ja_JP
-	* src/fsexam-content.c: (widget_destroy), (encode_button_press),
-	(fsexam_content_show_candidates), (fsexam_content_convert_file),
-	(fsexam_content_undo), (peekwin_destroy), (fsexam_content_peek):
-	Use one ugly hack to close the preview window and add candidate window
-	to display all file content conversion.
-	* src/fsexam-conversion.c: (write_to_report_pane),
-	(fsexam_filename_convert_file): Fixed write_to_report_pane 
-	* src/fsexam-ui.c: (fsexam_construct_menu): Added 'Peek content' menu item.
-
-2004-06-25  Federic Zhang <[email protected]>
-
-	* src/fsexam-history.c: (fsexam_history_open),
-	(fsexam_history_update): fix the wrongly used magic number, Add 
-	fsexam_history_update to update history file at regular intervals
-	* src/fsexam-history.h: Add the fsexam_history_update ()
-	* src/fsexam-ui.c: (button_release_event): Fix the event problem
-	by return either TRUE or FALSE
-	* src/fsexam.c: (main): Set the timeout to call fsexam_history_update
-	at one minute interval.
-
-2004-06-24  Federic Zhang <[email protected]>
-
-	* src/fsexam-content.c: (fsexam_content_check_plain_text),
-	(fsexam_content_undo), (create_content_pixmap),
-	(set_window_background), (peek_window_realize),
-	(update_peek_window), (make_peek_window), (get_upper_left_xy),
-	(place_peek_window), (fsexam_content_get_sample),
-	(fsexam_content_peek): Support the peek functionality
-	* src/fsexam-content.h: Added fsexam_content_peek ()
-	* src/fsexam-ui.c: (button_release_event), (tree_popup_handler),
-	(fsexam_construct_ui):
-	* src/fsexam.h: new global variable 'peekwin' for peek window
-
-2004-06-24  Federic Zhang <[email protected]>
-
-	* src/fsexam-conversion.c: (fsexam_reverse): when do reverse, if fail to get one
-	  history item with fsexam_history_get_reverse_by_value, exit it immediately
-
-2004-06-24  Federic Zhang <[email protected]>
-
-	* src/fsexam-content.c: (fsexam_content_convert): Check whether view->rootdir isn't
-	  set yet to avoid error.
-	* src/fsexam-conversion.c: (fsexam_filename_convert),
-	(fsexam_reverse), (fsexam_undo): Check whether view->rootdir isn't set yet to avoid
-	  crash.
-
-2004-06-24  Federic Zhang <[email protected]>
-
-	* src/fsexam-content.c: (fsexam_content_check_filetype),
-	(fsexam_content_check_plain_text), (fsexam_content_convert_file),
-	(fsexam_content_get_selection), (fsexam_content_convert),
-	(fsexam_content_undo): Bugfix and display the filetype information
-	 into status bar if it isn't plain text file.
-	* src/fsexam-conversion.c: (write_to_report_pane),
-	(fsexam_validate_with_newline), (fsexam_filename_convert_file),
-	(fsexam_do_reverse), (fsexam_reverse): Redefine 'reverse': when do 
-	 reverse, fsexam will try to convert both file name and file 
-	 content into native encoding at once. Update the write_to_report_pane
-	 to write file content converion information into report pane.
-	* src/fsexam-conversion.h: Export fsexam_validate_with_newline ()
-	  and write_to_report_pane for file content conversion
-	* src/fsexam-history.c: (fsexam_history_get_reverse_by_value2):
-	  Added to get one history item with the same conversion type
-	* src/fsexam-history.h:
-	* src/fsexam-ui.c:
-	* src/fsexam.h: new global variable 'lineoffset' for report pane
-
-2004-06-17  Federic Zhang <[email protected]>
-
-	* src/fsexam-ui.c: (fsexam_treeitem_create), (show_help),
-	(fsexam_about), (fsexam_construct_menu), (load_icon),
-	(fsexam_construct_ui): load_icon is to set the icon for fsexam and
-	set view->rootdir to NULL if the specified dir doesn't exist
-	* src/fsexam.h: Added "icon"
-
-2004-06-16  Federic Zhang <[email protected]>
-
-	file content conversion support
-	* data/fsexam.schemas.in:
-	* src/Makefile.am:
-	* src/Makefile.in:
-	* src/encode.h:
-	* src/encoding.c: (init_encode), (destroy_encode),
-	(decode_analyzer), (cleanup_encode):
-	* src/fsexam-conversion.c: (fsexam_convert_with_candidates),
-	(write_to_report_pane), (fsexam_filename_convert_file),
-	(fsexam_reverse), (fsexam_undo):
-	* src/fsexam-conversion.h:
-	* src/fsexam-history.c: (fsexam_history_put),
-	(fsexam_history_get_reverse),
-	(fsexam_history_get_reverse_by_value), (fsexam_history_undo),
-	(fsexam_history_open):
-	* src/fsexam-history.h:
-	* src/fsexam-preference.c: (create_fsexam_pref):
-	* src/fsexam-preference.h:
-	* src/fsexam-ui.c: (fsexam_construct_menu):
-	* src/fsexam.c:
-	* src/fsexam-content.h, fsexam-content.c: added
-
-2004-06-16  Federic Zhang <[email protected]>
-
-	* Added the 'fsexam_0_1' branch. From now on, the version number will
-	  be 0.2 by adding the functionality of content conversion.
-
-2004-06-15  Federic Zhang <[email protected]>
-
-	* src/fsexam-ui.c: (fsexam_treeview_set_title),
-	(fsexam_treeitem_create), (fsexam_treeview_reconstruct),
-	(fsexam_construct_ui): added fsexam_treeview_set_title to indicate the current root
-	directory
-
-2004-06-15  Federic Zhang <[email protected]>
-
-	* fsexam.spec, fsexam.spec.in: For Cinnabar build 12
-
-2004-06-14  Federic Zhang <[email protected]>
-
-	* src/fsexam.c: (main): fixed the wrong usage of gnome_program_init ()
-
-2004-06-11  Federic Zhang <[email protected]>
-
-	* src/fsexam-conversion.c: (fsexam_filename_undo): Check whether rootdir is set or not
-	  to fix the undo crash.
-
-2004-06-08  Gavin Tu <[email protected]>
-	*  src/fsexam-ui.c: remove menu item "saveAs"	
-
-2004-06-01  Gavin Tu <[email protected]>
-
-	* todo:add two tasks
-
-2004-05-31  Federic Zhang <[email protected]>
-
-	* data/fsexam.desktop.in: Corrected the name description for build 11
-	* fsexam.spec, fsexam.spec.in: updated for build 11
-	* Makefile.in, src/Makefile.in: Recreated as corresponding Makefile.am
-	  has been modified
-	* help/Makefile.in, help/zh_CN/Makefile.in, help/C/Makefile.in: Added
-
-2004-05-31  Gavin Tu <[email protected]>
-	* fsexam.sol.spec:  For Cinnabar build 11, add l10en menu, context-sensitive menu, help, reverse
-
-2004-05-28  Gavin Tu <[email protected]>
- 	* fsexam.sol.spec: replace autoconf with autogen.sh
-
-2004-05-27  Federic Zhang <[email protected]>
-
-	* src/fsexam-conversion.c: Rework on fsexam_filename_reverse ()
-	* src/fsexam-history.c: replace fsexam_history_item_reverse and fsexam_history_get_by_fullpath
-	  with fsexam_history_get_reverse and fsexam_history_get_reverse_by_value.
-	* src/fsexam-history.h:
-
-2004-05-27  Gavin Tu <[email protected]>
-	
-	* po/zh_CN.po: change translation for "Recursive Mode"
-
-2004-05-27  Gavin Tu <[email protected]>
-	
-	* src/fsexam-ui.c: add menu item of "Revert"
-	* src/fsexam-convertion.h: 
-        * src/fsexam-convertion.c:add fsexam_filename_reverse()
-        * src/fsexam-history.c: add fsexam_history_item_reverse(), fsexam_history_get_by_fullpath
- 
-2004-05-26  Gavin Tu <[email protected]>
-	
-	* src/fsexam-ui.c: add context-sensitive menu for treeview
-
-2004-05-26  Gavin Tu <[email protected]>
-	
-	* configure.in: add three output files, including help/Makefile help/C/Makefile help/zh_CN/Makefile
-	* Makefile.am:add dirctory "help"
-	* src/fsexam-ui.c: (show_help), (fsexam_construct_menu):
-	* help/: add help files for zh_CN and C locales
-
-2004-05-25  Gavin Tu <[email protected]>
-
-	* autogen.sh: add this file to execute automake,autoconf
-	* src/Makefile.am: pre-define CPPFLAG, for GNOME_PROGRAM_STANDARD_PROPERTIES
-	* src/fsexam-preference.c: (show_help): 
-	* src/fsexam.c: (main): GNOME_PROGRAM_STANDARD_PROPERTIES
-
-2004-05-25  Gavin Tu <[email protected]>
-
-	* src/fsexam-ui.c: allocate memory for name dynamically, so can deal with very long full dirctory path. 
-
-
-2004-05-25  Gavin Tu <[email protected]>
-
-	* src/fsexam-ui.c: add menu item "Save as", add two menu item separator, add some comments 
-
-2004-05-21 Gavin Tu <[email protected]>
-	* src/fsexam-ui.c:gtk_item_factory_create_items() is deprecated, so create menu with fsexam_construct_menu()
-			  menu can be l10ned.
- 	* po/zh_CN.po: add some menu items, such as "File", "Action", "View", "Help" etc
-
-
-2004-05-20  Federic Zhang <[email protected]>
-
-	* autom4te.cache/output.0: Removed
-	* autom4te.cache/requests: Removed
-	* autom4te.cache/traces.0: Removed
-	* autom4te.cache: Removed
-
-2004-05-20  Federic Zhang <[email protected]>
-
-	* config.h: Removed
-	* config.log: Removed
-	* config.status: Removed
-	* configure: Removed
-	* fsexam.spec: Updated to use autoconf
-	* fsexam.spec.in: Updated to use autoconf
-	* libtool: Removed
-
-2004-05-20  Federic Zhang <[email protected]>
-
-	* autom4te.cache/output.0:
-	* autom4te.cache/requests:
-	* autom4te.cache/traces.0:
-	* config.log:
-	* config.status:
-	* configure:
-	* libtool:
-	* todo:
-
-2004-05-20  Federic Zhang  <[email protected]>
-
-        * Have all global variables into FSEXAM_view
-	* src/fsexam-conversion.c: (fsexam_convert_with_candidates),
-	(write_to_report_pane), (fsexam_filename_convert_file),
-	(fsexam_filename_convert_dir), (fsexam_filename_convert),
-	(fsexam_filename_undo):
-	* src/fsexam-preference.c: (create_encodings_treeview),
-	(create_pref_dialog):
-	* src/fsexam-ui.c: (fsexam_treeitem_create),
-	(fsexam_treeview_expand), (fsexam_treeview_construct),
-	(fsexam_statusbar_update), (fsexam_treeview_reconstruct),
-	(show_report_window), (fsexam_construct_ui):
-	* src/fsexam.c: (main):
-	* src/fsexam.h:
-	* todo:
-
-2004-05-17  Federic Zhang  <[email protected]>
-
-	* The third package for cinnabar build 10
-	* po/POTFILES.in, POTFILES, zh_CN.po: updated with intltool-update --pot
-	* src/fsexam-ui.c: upated to fix one segment error by copying a statically
-	  allocated buffer into heap
-
-2004-05-13  Federic Zhang  <[email protected]>
-
-	* candidate for build 10
-	* Makefile, src/Makefile: deleted
-	* pixmaps/Makefile.am, Makefile.in, fsexam-icon.png: added
-	* data/Makefile.am, Makefile.in, fsexam.desktop.in: added the menu
-	  entry under 'launch' menu.
-	* data/fsexam.fsexam.in: moved from src to separate data from source
-	* configure, configure.in, Makefile.in, Makefile.am, src/Makefile.in,
-	  Makefile.am: updated with automake and separate data from source
-	* fsexam.spec, fsexam.spec.in: updated to include fsexam.desktop and
-	  fsexam-icon.png
-	* src/fsexam-ui.c: added the 'About' window
-	
-2004-05-10  Federic Zhang  <[email protected]>
-
-	* More stable version as it has been enhanced in following five aspects:
-		 new Status bar
-		 recursive mode enabled
-		 new treeview load on demand
-		 report pane beautified
-		 comments
-	* src/fsexam.h, fsexam-conversion.h: added status bar and new COLUMN type - LOADED_COLUMN
-	  and export fsexam_filename_get_path ()
-	* src/fsexam-ui.c fsexam-conversion.c: Added new 'loaded' field to mark if one directory 
-	  is loaded or not, Replace the old stupid way with 'load on demand', Added status bar to 
-	  display useful information, Enable recursive mode and Enhance write_to_report_pane ()
-	  with bold font and color tag and Fix the undo bug by modifying get_iter ()
-
-2004-04-29  Federic Zhang  <[email protected]>
-
-	* src/fsexam-preference.c, fsexam-preference.h: added code to handle help window
-	  and sync with encoding change with fsexam_pref_encoding_sync ()
-	* src/fsexam.c: make a call to fsexam_pref_free () when exit
-	* src/encoding.c, encode.h, fsexam-preference.c: use destroy_encode () to free
-	   and the parameter of init_encode () is singly-linked list instead
-
-2004-04-29  Federic Zhang  <[email protected]>
-
-	* the second pacakge for Cinnabar build09
-	* src/fsexam-ui.c, encoding.c, fsexam-conversion.c: updated to check permission
-	  issue when rename and use <Ctrl>+Z as keystroke combination for Undo instead
-
-2004-04-27  Federic Zhang  <[email protected]>
-
-	* src/fsexam-history.c, fsexam-history.h: added to define the general APIs
-	  to access the existing conversion information
-	* src/fsexam-ui.c: updated to free the TreeItem * struct if the current
-	  directory is changed
-	* src/Makefile.in, Makefile.am, fsexam.c, fsexam-conversion.c fsexam-preference.c,
-	  fsexam.h, fsexam-conversion.h:
-	  updated accordingly
-
-2004-04-20  Federic Zhang  <[email protected]>
-
-	* rewrite the whole stuff to have better data structure
-	* the first package for Cinnabar build08
-
-2004-04-11  Federic Zhang  <[email protected]>
-
-	* Release version 0.1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/LICENSE	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,385 @@
+Unless otherwise noted, all files in this distribution are released
+under the Common Development and Distribution License (CDDL),
+Version 1.0 only.  Exceptions are noted within the associated
+source files.
+
+--------------------------------------------------------------------
+
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0
+
+1. Definitions.
+
+    1.1. "Contributor" means each individual or entity that creates
+         or contributes to the creation of Modifications.
+
+    1.2. "Contributor Version" means the combination of the Original
+         Software, prior Modifications used by a Contributor (if any),
+         and the Modifications made by that particular Contributor.
+
+    1.3. "Covered Software" means (a) the Original Software, or (b)
+         Modifications, or (c) the combination of files containing
+         Original Software with files containing Modifications, in
+         each case including portions thereof.
+
+    1.4. "Executable" means the Covered Software in any form other
+         than Source Code.
+
+    1.5. "Initial Developer" means the individual or entity that first
+         makes Original Software available under this License.
+
+    1.6. "Larger Work" means a work which combines Covered Software or
+         portions thereof with code not governed by the terms of this
+         License.
+
+    1.7. "License" means this document.
+
+    1.8. "Licensable" means having the right to grant, to the maximum
+         extent possible, whether at the time of the initial grant or
+         subsequently acquired, any and all of the rights conveyed
+         herein.
+
+    1.9. "Modifications" means the Source Code and Executable form of
+         any of the following:
+
+        A. Any file that results from an addition to, deletion from or
+           modification of the contents of a file containing Original
+           Software or previous Modifications;
+
+        B. Any new file that contains any part of the Original
+           Software or previous Modifications; or
+
+        C. Any new file that is contributed or otherwise made
+           available under the terms of this License.
+
+    1.10. "Original Software" means the Source Code and Executable
+          form of computer software code that is originally released
+          under this License.
+
+    1.11. "Patent Claims" means any patent claim(s), now owned or
+          hereafter acquired, including without limitation, method,
+          process, and apparatus claims, in any patent Licensable by
+          grantor.
+
+    1.12. "Source Code" means (a) the common form of computer software
+          code in which modifications are made and (b) associated
+          documentation included in or with such code.
+
+    1.13. "You" (or "Your") means an individual or a legal entity
+          exercising rights under, and complying with all of the terms
+          of, this License.  For legal entities, "You" includes any
+          entity which controls, is controlled by, or is under common
+          control with You.  For purposes of this definition,
+          "control" means (a) the power, direct or indirect, to cause
+          the direction or management of such entity, whether by
+          contract or otherwise, or (b) ownership of more than fifty
+          percent (50%) of the outstanding shares or beneficial
+          ownership of such entity.
+
+2. License Grants.
+
+    2.1. The Initial Developer Grant.
+
+    Conditioned upon Your compliance with Section 3.1 below and
+    subject to third party intellectual property claims, the Initial
+    Developer hereby grants You a world-wide, royalty-free,
+    non-exclusive license:
+
+        (a) under intellectual property rights (other than patent or
+            trademark) Licensable by Initial Developer, to use,
+            reproduce, modify, display, perform, sublicense and
+            distribute the Original Software (or portions thereof),
+            with or without Modifications, and/or as part of a Larger
+            Work; and
+
+        (b) under Patent Claims infringed by the making, using or
+            selling of Original Software, to make, have made, use,
+            practice, sell, and offer for sale, and/or otherwise
+            dispose of the Original Software (or portions thereof).
+
+        (c) The licenses granted in Sections 2.1(a) and (b) are
+            effective on the date Initial Developer first distributes
+            or otherwise makes the Original Software available to a
+            third party under the terms of this License.
+
+        (d) Notwithstanding Section 2.1(b) above, no patent license is
+            granted: (1) for code that You delete from the Original
+            Software, or (2) for infringements caused by: (i) the
+            modification of the Original Software, or (ii) the
+            combination of the Original Software with other software
+            or devices.
+
+    2.2. Contributor Grant.
+
+    Conditioned upon Your compliance with Section 3.1 below and
+    subject to third party intellectual property claims, each
+    Contributor hereby grants You a world-wide, royalty-free,
+    non-exclusive license:
+
+        (a) under intellectual property rights (other than patent or
+            trademark) Licensable by Contributor to use, reproduce,
+            modify, display, perform, sublicense and distribute the
+            Modifications created by such Contributor (or portions
+            thereof), either on an unmodified basis, with other
+            Modifications, as Covered Software and/or as part of a
+            Larger Work; and
+
+        (b) under Patent Claims infringed by the making, using, or
+            selling of Modifications made by that Contributor either
+            alone and/or in combination with its Contributor Version
+            (or portions of such combination), to make, use, sell,
+            offer for sale, have made, and/or otherwise dispose of:
+            (1) Modifications made by that Contributor (or portions
+            thereof); and (2) the combination of Modifications made by
+            that Contributor with its Contributor Version (or portions
+            of such combination).
+
+        (c) The licenses granted in Sections 2.2(a) and 2.2(b) are
+            effective on the date Contributor first distributes or
+            otherwise makes the Modifications available to a third
+            party.
+
+        (d) Notwithstanding Section 2.2(b) above, no patent license is
+            granted: (1) for any code that Contributor has deleted
+            from the Contributor Version; (2) for infringements caused
+            by: (i) third party modifications of Contributor Version,
+            or (ii) the combination of Modifications made by that
+            Contributor with other software (except as part of the
+            Contributor Version) or other devices; or (3) under Patent
+            Claims infringed by Covered Software in the absence of
+            Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+    3.1. Availability of Source Code.
+
+    Any Covered Software that You distribute or otherwise make
+    available in Executable form must also be made available in Source
+    Code form and that Source Code form must be distributed only under
+    the terms of this License.  You must include a copy of this
+    License with every copy of the Source Code form of the Covered
+    Software You distribute or otherwise make available.  You must
+    inform recipients of any such Covered Software in Executable form
+    as to how they can obtain such Covered Software in Source Code
+    form in a reasonable manner on or through a medium customarily
+    used for software exchange.
+
+    3.2. Modifications.
+
+    The Modifications that You create or to which You contribute are
+    governed by the terms of this License.  You represent that You
+    believe Your Modifications are Your original creation(s) and/or
+    You have sufficient rights to grant the rights conveyed by this
+    License.
+
+    3.3. Required Notices.
+
+    You must include a notice in each of Your Modifications that
+    identifies You as the Contributor of the Modification.  You may
+    not remove or alter any copyright, patent or trademark notices
+    contained within the Covered Software, or any notices of licensing
+    or any descriptive text giving attribution to any Contributor or
+    the Initial Developer.
+
+    3.4. Application of Additional Terms.
+
+    You may not offer or impose any terms on any Covered Software in
+    Source Code form that alters or restricts the applicable version
+    of this License or the recipients' rights hereunder.  You may
+    choose to offer, and to charge a fee for, warranty, support,
+    indemnity or liability obligations to one or more recipients of
+    Covered Software.  However, you may do so only on Your own behalf,
+    and not on behalf of the Initial Developer or any Contributor.
+    You must make it absolutely clear that any such warranty, support,
+    indemnity or liability obligation is offered by You alone, and You
+    hereby agree to indemnify the Initial Developer and every
+    Contributor for any liability incurred by the Initial Developer or
+    such Contributor as a result of warranty, support, indemnity or
+    liability terms You offer.
+
+    3.5. Distribution of Executable Versions.
+
+    You may distribute the Executable form of the Covered Software
+    under the terms of this License or under the terms of a license of
+    Your choice, which may contain terms different from this License,
+    provided that You are in compliance with the terms of this License
+    and that the license for the Executable form does not attempt to
+    limit or alter the recipient's rights in the Source Code form from
+    the rights set forth in this License.  If You distribute the
+    Covered Software in Executable form under a different license, You
+    must make it absolutely clear that any terms which differ from
+    this License are offered by You alone, not by the Initial
+    Developer or Contributor.  You hereby agree to indemnify the
+    Initial Developer and every Contributor for any liability incurred
+    by the Initial Developer or such Contributor as a result of any
+    such terms You offer.
+
+    3.6. Larger Works.
+
+    You may create a Larger Work by combining Covered Software with
+    other code not governed by the terms of this License and
+    distribute the Larger Work as a single product.  In such a case,
+    You must make sure the requirements of this License are fulfilled
+    for the Covered Software.
+
+4. Versions of the License.
+
+    4.1. New Versions.
+
+    Sun Microsystems, Inc. is the initial license steward and may
+    publish revised and/or new versions of this License from time to
+    time.  Each version will be given a distinguishing version number.
+    Except as provided in Section 4.3, no one other than the license
+    steward has the right to modify this License.
+
+    4.2. Effect of New Versions.
+
+    You may always continue to use, distribute or otherwise make the
+    Covered Software available under the terms of the version of the
+    License under which You originally received the Covered Software.
+    If the Initial Developer includes a notice in the Original
+    Software prohibiting it from being distributed or otherwise made
+    available under any subsequent version of the License, You must
+    distribute and make the Covered Software available under the terms
+    of the version of the License under which You originally received
+    the Covered Software.  Otherwise, You may also choose to use,
+    distribute or otherwise make the Covered Software available under
+    the terms of any subsequent version of the License published by
+    the license steward.
+
+    4.3. Modified Versions.
+
+    When You are an Initial Developer and You want to create a new
+    license for Your Original Software, You may create and use a
+    modified version of this License if You: (a) rename the license
+    and remove any references to the name of the license steward
+    (except to note that the license differs from this License); and
+    (b) otherwise make it clear that the license contains terms which
+    differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+    COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+    BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+    INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+    SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+    PURPOSE OR NON-INFRINGING.  THE ENTIRE RISK AS TO THE QUALITY AND
+    PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU.  SHOULD ANY
+    COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+    INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY
+    NECESSARY SERVICING, REPAIR OR CORRECTION.  THIS DISCLAIMER OF
+    WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.  NO USE OF
+    ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+    DISCLAIMER.
+
+6. TERMINATION.
+
+    6.1. This License and the rights granted hereunder will terminate
+    automatically if You fail to comply with terms herein and fail to
+    cure such breach within 30 days of becoming aware of the breach.
+    Provisions which, by their nature, must remain in effect beyond
+    the termination of this License shall survive.
+
+    6.2. If You assert a patent infringement claim (excluding
+    declaratory judgment actions) against Initial Developer or a
+    Contributor (the Initial Developer or Contributor against whom You
+    assert such claim is referred to as "Participant") alleging that
+    the Participant Software (meaning the Contributor Version where
+    the Participant is a Contributor or the Original Software where
+    the Participant is the Initial Developer) directly or indirectly
+    infringes any patent, then any and all rights granted directly or
+    indirectly to You by such Participant, the Initial Developer (if
+    the Initial Developer is not the Participant) and all Contributors
+    under Sections 2.1 and/or 2.2 of this License shall, upon 60 days
+    notice from Participant terminate prospectively and automatically
+    at the expiration of such 60 day notice period, unless if within
+    such 60 day period You withdraw Your claim with respect to the
+    Participant Software against such Participant either unilaterally
+    or pursuant to a written agreement with Participant.
+
+    6.3. In the event of termination under Sections 6.1 or 6.2 above,
+    all end user licenses that have been validly granted by You or any
+    distributor hereunder prior to termination (excluding licenses
+    granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+    UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+    (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+    INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+    COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+    LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+    CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+    LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+    STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+    COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+    INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.  THIS LIMITATION OF
+    LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+    INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+    APPLICABLE LAW PROHIBITS SUCH LIMITATION.  SOME JURISDICTIONS DO
+    NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+    CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+    APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+    The Covered Software is a "commercial item," as that term is
+    defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+    computer software" (as that term is defined at 48
+    C.F.R. 252.227-7014(a)(1)) and "commercial computer software
+    documentation" as such terms are used in 48 C.F.R. 12.212
+    (Sept. 1995).  Consistent with 48 C.F.R. 12.212 and 48
+    C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all
+    U.S. Government End Users acquire Covered Software with only those
+    rights set forth herein.  This U.S. Government Rights clause is in
+    lieu of, and supersedes, any other FAR, DFAR, or other clause or
+    provision that addresses Government rights in computer software
+    under this License.
+
+9. MISCELLANEOUS.
+
+    This License represents the complete agreement concerning subject
+    matter hereof.  If any provision of this License is held to be
+    unenforceable, such provision shall be reformed only to the extent
+    necessary to make it enforceable.  This License shall be governed
+    by the law of the jurisdiction specified in a notice contained
+    within the Original Software (except to the extent applicable law,
+    if any, provides otherwise), excluding such jurisdiction's
+    conflict-of-law provisions.  Any litigation relating to this
+    License shall be subject to the jurisdiction of the courts located
+    in the jurisdiction and venue specified in a notice contained
+    within the Original Software, with the losing party responsible
+    for costs, including, without limitation, court costs and
+    reasonable attorneys' fees and expenses.  The application of the
+    United Nations Convention on Contracts for the International Sale
+    of Goods is expressly excluded.  Any law or regulation which
+    provides that the language of a contract shall be construed
+    against the drafter shall not apply to this License.  You agree
+    that You alone are responsible for compliance with the United
+    States export administration regulations (and the export control
+    laws and regulation of any other countries) when You use,
+    distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+    As between Initial Developer and the Contributors, each party is
+    responsible for claims and damages arising, directly or
+    indirectly, out of its utilization of rights under this License
+    and You agree to work with Initial Developer and Contributors to
+    distribute such responsibility on an equitable basis.  Nothing
+    herein is intended or shall be deemed to constitute any admission
+    of liability.
+
+--------------------------------------------------------------------
+
+NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND
+DISTRIBUTION LICENSE (CDDL)
+
+For Covered Software in this distribution, this License shall
+be governed by the laws of the State of California (excluding
+conflict-of-law provisions).
+
+Any litigation relating to this License shall be subject to the
+jurisdiction of the Federal Courts of the Northern District of
+California and the state courts of the State of California, with
+venue lying in Santa Clara County, California.
--- a/src/cmd/fsexam/Makefile	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-#ident	"@(#)Makefile	1.0	06/03/07	SMI"
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-
-SUBDIRS = src data po pixmaps
-
-include $(SRC)/Makefile.master
-
-all:=		TARGET= all
-install :=	TARGET= install
-clean :=	TARGET= clean
-clobber :=	TARGET= clobber
-
-
-all install clean: $(SUBDIRS)
-
-$(SUBDIRS): FRC
-	@cd $@; pwd; $(MAKE) $(MFLAGS) $(TARGET)
-
-FRC:
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/Makefile.am	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,39 @@
+# 
+# CDDL HEADER START
+# 
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+# 
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+# 
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+# 
+# CDDL HEADER END
+# 
+
+# 
+# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+
+SUBDIRS = src po data pixmaps help
+
+EXTRA_DIST = \
+	intltool-extract.in \
+	intltool-merge.in \
+	intltool-update.in \
+	xmldocs.make \
+	omf.make
+
+DISTCLEANFILES =	\
+	intltool-extract	\
+	intltool-merge		\
+	intltool-update	
--- a/src/cmd/fsexam/NEWS	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-fsexam-0.1:  20-April-2004
-	- first package for Cinnabar b08
-
-fsexam-0.1:  11-April-2004
-	- initial release.
--- a/src/cmd/fsexam/README	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-FSexam
---------
-
-fxexam is one tool to help user migrate from legacy encoding to UTF8
-on your system. Given one directory, one tree view is displayed to
-list all files and subdirectories and the file name that isn't in 
-UTF8 encoding will be displayed as one sequence of question marks.
-
-The tool can use a list of encoding that is specified for the current
-language to do conversion, and rename the filename in legacy encoding
-with corresponding one in UTF8 on your system
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/TODO	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,51 @@
+* force convert for file content: bypass type check
+
+* preview in hex mode
+
+* Windows carriage return and line return (0x0a0d --> 0x0a)
+- don't ask me again
+	:used for cancel or for the first encoding.
+	:even click the last one, always apply the first encoding for later
+	 conversion.
+
+	 lack one way to communicate with internal code!!!!
+
+	 lack the communications between internal code and GUI!!
+	
+- error information for special type of file (compress/uncompress)
+  * Windows carriage return and line return (0x0a0d --> 0x0a)
+    MS-Windows \r\n
+    Unix       \n
+    Macintosh or mail boday \r
+    Default conversion can be changed by the preference dialog
+
+  * Enable user to remove and add encoding from encoding list
+
+- error information for special type of file (compress/uncompress)
+
+- Translation
+
+- progress bar
+
+- Speed 
+
+- shift+F12
+
+- Disable some UI such as peek when no possibility
+
+- integrate errno and fsexam_errno
+
+- pixbuf for icon (gsearch tool)
+
+- Refresh load the current directory or selected item
+
+- Code refactory
+
+- head file relationship
+
+- gnome/gtk options handling
+
+- verbose of the display msg
+
+- Peference setting:
+    only reset when we changed something
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/autogen.sh	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,164 @@
+#!/bin/sh
+# Run this to generate all the initial makefiles, etc.
+
+# 
+# CDDL HEADER START
+# 
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+# 
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+# 
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+# 
+# CDDL HEADER END
+# 
+
+# 
+# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+
+set -e
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+PROJECT=fsexam
+TEST_TYPE=-f
+FILE=src/fsexam.c
+ACLOCAL=${ACLOCAL-aclocal}
+INTLTOOLIZE=${INTLTOOLIZE-intltoolize}
+LIBTOOLIZE=${LIBTOOLIZE-libtoolize}
+AUTOMAKE=${AUTOMAKE-automake}
+AUTOHEADER=${AUTOHEADER-autoheader}
+AUTOCONF=${AUTOCONF-autoconf}
+GNOMEDOCCOMMON=${GNOMEDOCCOMMON-gnome-doc-common}
+LIBTOOLIZE_FLAGS="--copy --force --automake"
+INTLTOOLIZE_FLAGS="--copy --force --automake"
+
+DIE=0
+
+have_intltool=false
+if $INTLTOOLIZE --version < /dev/null > /dev/null 2>&1 ; then
+    intltool_version=`$INTLTOOLIZE --version | sed 's/^[^0-9]*\([0-9].[0-9.]*\).*/\1/'`
+    if [ X${intltool_version} != "X" ]; then
+        have_intltool=true
+    fi
+fi
+
+if $have_intltool ; then : ; else
+    echo 
+    echo "You must have intltool installed to compile $PROJECT."
+    DIE=1
+fi
+
+have_libtool=false
+if $LIBTOOLIZE --version < /dev/null > /dev/null 2>&1 ; then
+	libtool_version=`$LIBTOOLIZE --version | sed 's/^[^0-9]*\([0-9].[0-9.]*\).*/\1/'`
+	case $libtool_version in
+	    1.4*|1.5*|1.6*|1.7*|2*)
+		have_libtool=true
+		;;
+	esac
+fi
+if $have_libtool ; then : ; else
+	echo
+	echo "You must have libtool 1.4 installed to compile $PROJECT."
+	echo "Install the appropriate package for your distribution,"
+	echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+	DIE=1
+fi
+
+($AUTOCONF --version) < /dev/null > /dev/null 2>&1 || {
+	echo
+	echo "You must have autoconf installed to compile $PROJECT."
+	echo "libtool the appropriate package for your distribution,"
+	echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+	DIE=1
+}
+
+have_automake=false
+need_libtoolize=true
+if $AUTOMAKE --version < /dev/null > /dev/null 2>&1 ; then
+	automake_version=`$AUTOMAKE --version | grep 'automake (GNU automake)' | sed 's/^[^0-9]*\(.*\)/\1/'`
+	case $automake_version in
+	   1.2*|1.3*|1.4) 
+		;;
+	   1.4*)
+	   	have_automake=true
+	        need_libtoolize=false
+		;;
+	   *)
+		have_automake=true
+		;;
+	esac
+fi
+if $have_automake ; then : ; else
+	echo
+	echo "You must have automake 1.4-p1 installed to compile $PROJECT."
+	echo "Get ftp://ftp.gnu.org/pub/gnu/automake/automake-1.4-p1.tar.gz"
+	echo "(or a newer version if it is available)"
+	DIE=1
+fi
+
+if test "$DIE" -eq 1; then
+	exit 1
+fi
+
+test $TEST_TYPE $FILE || {
+	echo "You must run this script in the top-level $PROJECT directory"
+	exit 1
+}
+
+if test -z "$AUTOGEN_SUBDIR_MODE"; then
+        if test -z "$*"; then
+                echo "I am going to run ./configure with no arguments - if you wish "
+                echo "to pass any to it, please specify them on the $0 command line."
+        fi
+fi
+
+echo Running $INTLTOOLIZE $INTLTOOLIZE_FLAGS
+$INTLTOOLIZE $INTLTOOLIZE_FLAGS
+
+case $need_libtoolize in
+   true)
+   	echo Running $LIBTOOLIZE $LIBTOOLIZE_FLAGS
+   	$LIBTOOLIZE $LIBTOOLIZE_FLAGS
+	;;
+esac
+
+echo Running $ACLOCAL $ACLOCAL_FLAGS
+$ACLOCAL $ACLOCAL_FLAGS
+
+# optionally run autoheader
+if $AUTOHEADER --version  < /dev/null > /dev/null 2>&1; then
+	echo Running $AUTOHEADER
+	$AUTOHEADER
+fi
+
+echo Running $GNOMEDOCCOMMON --copy
+$GNOMEDOCCOMMON --copy
+echo Running $AUTOMAKE -a -c -f $am_opt
+$AUTOMAKE -a -c -f $am_opt
+echo Running $AUTOCONF
+$AUTOCONF
+cd $ORIGDIR
+
+if test -z "$AUTOGEN_SUBDIR_MODE"; then
+	echo Running $srcdir/configure
+        $srcdir/configure --enable-maintainer-mode "$@"
+
+        echo 
+        echo "Now type 'make' to compile $PROJECT."
+fi
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/configure.in	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,147 @@
+-*- mode: autoconf -*-
+# 
+# CDDL HEADER START
+# 
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+# 
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+# 
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+# 
+# CDDL HEADER END
+# 
+
+# 
+# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+
+AC_PREREQ(2.52)
+
+m4_define(fsexam_version, 0.8.1)
+m4_define(gnomevfs_minver, 2.0.0)
+m4_define(xft_minver, 2.0.0)
+m4_define(gtk_minver, 2.0.0)
+m4_define(libbonobo_minver, 2.0.0)
+m4_define(libgnomeui_minver, 2.1.90)
+
+AC_INIT([fsexam], [fsexam_version])
+AC_CONFIG_SRCDIR([src/fsexam.c])
+AM_CONFIG_HEADER(config.h)
+
+AM_INIT_AUTOMAKE(fsexam, fsexam_version)
+
+AC_PROG_CC
+AC_ISC_POSIX
+AC_HEADER_STDC
+
+AC_DISABLE_STATIC
+AC_PROG_LIBTOOL
+
+AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
+AC_SUBST(ORBIT_IDL)
+
+LIBBONOBO_IDL="`$PKG_CONFIG --variable=idldir libbonobo-2.0`"
+AC_SUBST(LIBBONOBO_IDL)
+
+BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
+AC_SUBST(BONOBO_ACTIVATION_IDL)
+
+dnl get rid of the -export-dynamic stuff from the configure flags ...
+export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
+
+PKG_CHECK_MODULES(FSEXAM,
+        [gnome-desktop-2.0 >= 2.0 \
+        gnome-vfs-module-2.0 >= 2.0 \
+        eel-2.0 >= 2.2.3])
+
+PKG_CHECK_MODULES(DUMMY, 
+        [glib-2.0 >= 2.8], 
+        [],
+        [AC_DEFINE(HAVE_NO_GLIB_2_8, 
+                   [],
+                   [glib-2.0 version is higher than 2.8])])
+
+AC_SUBST(FSEXAM_CFLAGS)
+AC_SUBST(FSEXAM_LIBS)
+
+AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
+if test "x$GCONFTOOL" = xno; then
+  AC_MSG_ERROR([gconftool-2 executable not found.  Should be installed with GConf])
+fi
+AM_GCONF_SOURCE_2
+
+dnl Checks for i18n
+ALL_LINGUAS="cs de es fr hu it ja ko pl pt_BR ru sv zh_CN zh_HK zh_TW"
+GETTEXT_PACKAGE=fsexam
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",
+                   [domain used for gettext() calls])
+
+AM_GLIB_GNU_GETTEXT
+IT_PROG_INTLTOOL([0.35.0])
+if test "x${prefix}" = "xNONE"; then
+  AC_DEFINE_UNQUOTED(FSEXAM_LOCALEDIR, "${ac_default_prefix}/share/locale", [Locale directory])
+else
+  AC_DEFINE_UNQUOTED(FSEXAM_LOCALEDIR, "${prefix}/share/locale", [Locale directory])
+fi
+
+dnl Checks for auto_ef
+AC_CHECK_HEADERS([auto_ef.h], 
+        [AC_CHECK_LIB([auto_ef], auto_ef_file,
+            [AUTOEF_LIBS="-lauto_ef"],
+            AC_MSG_WARN([cannot find auto_ef library]))],
+        AC_MSG_WARN([cannot find auto_ef header]))
+
+AC_SUBST(AUTOEF_LIBS)
+
+dnl Checks for strlcpy and strlcat
+AC_CHECK_FUNCS([strlcpy])
+AC_CHECK_FUNCS([strlcat])
+
+dnl add debugging options ...
+changequote(,)dnl
+if test "x$GCC" = xyes; then
+  case " $CFLAGS " in
+  *[\	\ ]-Wall[\	\ ]*) ;;
+  *) CFLAGS="$CFLAGS -Wall" ;;
+  esac
+
+  case " $CFLAGS " in
+  *[\	\ ]-std=c9x[\	\ ]*) ;;
+  *) CFLAGS="$CFLAGS -std=c9x" ;;
+  esac
+fi
+changequote([,])dnl
+
+AC_OUTPUT([
+Makefile
+src/Makefile
+data/Makefile
+pixmaps/Makefile
+po/Makefile.in
+help/Makefile
+help/C/Makefile
+help/de/Makefile
+help/es/Makefile
+help/fr/Makefile
+help/it/Makefile
+help/ja/Makefile
+help/ko/Makefile
+help/pt_BR/Makefile
+help/sv/Makefile
+help/zh_CN/Makefile
+help/zh_HK/Makefile
+help/zh_TW/Makefile
+])
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/data/GNOME_Fsexam.server.in	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,42 @@
+<oaf_info>
+<!--
+CDDL HEADER START
+
+The contents of this file are subject to the terms of the
+Common Development and Distribution License (the "License").  
+You may not use this file except in compliance with the License.
+
+You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+or http://www.opensolaris.org/os/licensing.
+See the License for the specific language governing permissions
+and limitations under the License.
+
+When distributing Covered Code, include this CDDL HEADER in each
+file and include the License file at src/OPENSOLARIS.LICENSE.
+If applicable, add the following below this CDDL HEADER, with the
+fields enclosed by brackets "[]" replaced with your own identifying
+information: Portions Copyright [yyyy] [name of copyright owner]
+
+CDDL HEADER END
+
+
+Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+Use is subject to license terms. 
+
+-->
+  <oaf_server iid="OAFIID:GNOME_Fsexam_Factory" type="exe" location="fsexam">
+    <oaf_attribute name="repo_ids" type="stringv">
+      <item value="IDL:GNOME/GenericFactory:1.0"/>
+    </oaf_attribute>
+
+    <oaf_attribute name="name" type="string" value="Fsexam Factory"/>
+  </oaf_server>
+
+  <oaf_server iid="OAFIID:GNOME_Fsexam_Application" type="factory" location="OAFIID:GNOME_Fsexam_Factory">
+    <oaf_attribute name="repo_ids" type="stringv">
+      <item value="IDL:Bonobo/Unknown:1.0"/>
+      <item value="IDL:GNOME/Fsexam/Application:1.0"/>
+    </oaf_attribute>
+    <oaf_attribute name="name" type="string" value="Fsexam application"/>
+  </oaf_server>
+</oaf_info>
--- a/src/cmd/fsexam/data/Makefile	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-#ident	"@(#)Makefile	1.0	06/03/07	SMI"
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-
-include $(SRC)/Makefile.master
-
-
-FSEXAM_SCHEMAS = fsexam.schemas
-SCHEMASDIR = $(FILEROOT)/etc/gconf/schemas
-
-all:
-
-install:
-	$(INSDIR)	$(SCHEMASDIR)
-	$(INS) $(SCHEMASDIR) $(FSEXAM_SCHEMAS)
-
-clean: 
-	$(RM) $(SCHEMASDIR)/$(FSEXAM_SCHEMAS)
-
--- a/src/cmd/fsexam/data/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-desktopdir 	 = $(datadir)/applications
-desktop_in_files = fsexam.desktop.in
-desktop_DATA 	 = $(desktop_in_files:.desktop.in=.desktop)
-@INTLTOOL_DESKTOP_RULE@
-
-schemasdir	 = $(GCONF_SCHEMA_FILE_DIR)
-schemas_in_files = fsexam.schemas.in
-schemas_DATA 	 = $(schemas_in_files:.schemas.in=.schemas)
-@INTLTOOL_SCHEMAS_RULE@
-
-if GCONF_SCHEMAS_INSTALL
-install-data-local:
-	        if test -z "$(DESTDIR)" ; then \
-	                for p in $(schemas_DATA) ; do \
-	                        GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/data/$$p ; \
-	                done \
-	        fi
-else
-install-data-local:
-endif
-
-EXTRA_DIST = 				\
-	$(desktop_in_files)		\
-	$(schemas_in_files)
-
-CLEANFILES =	 			\
-	$(desktop_DATA)			\
-	$(schemas_DATA)
-
-
-
--- a/src/cmd/fsexam/data/fsexam.desktop	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-#ident	"@(#)Makefile	1.0	06/03/07	SMI"
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-[Desktop Entry]
-Encoding=UTF-8
-Name=File System Examiner
-Name[cs]=File System Examiner
-Name[de]=Dateisystem-Prüfung
-Name[es]=Examinador del sistema de archivos
-Name[fr]=Contrôleur de système de fichiers
-Name[hu]=Fájlrendszer vizsgáló
-Name[it]=Analizzatore del file system
-Name[ja]=ファイルシステム検査器
-Name[ko]=파일 시스템 검사기
-Name[pt_BR]=Examinador do sistema de arquivos
-Name[sv]=Undersökning av filsystem
-Name[zh_CN]=文件系统查看器
-Name[zh_HK]=檔案系統檢查程式
-Name[zh_TW]=檔案系統檢查程式
-Comment=Help migrate from legacy encoding to UTF8
-Comment[cs]=Pomocník při převodu ze starého kódování na UTF8
-Comment[de]=Hilft bei der Umwandlung von der alten Legacy-Codierung nach UTF8
-Comment[es]=Ayuda para la migración de una codificación heredada a UTF8
-Comment[fr]=Permet de passer du codage existant à UTF8
-Comment[hu]=UTF8 adat és fájlnév konverziót lehetővé tevő program
-Comment[it]=Facilita la migrazione della codifica a UTF8
-Comment[ja]=従来のエンコードから UTF8 への移行を支援する
-Comment[ko]=기존 인코딩에서 UTF8로 마이그레이션하는 데 도움
-Comment[pt_BR]=Ajudar a migrar da codificação legada para UTF8
-Comment[sv]=Hjälp till att byta från den gamla kodningen till UTF8
-Comment[zh_CN]=帮助从原有编码迁移至 UTF8
-Comment[zh_HK]=協助從原來的編碼遷移至 UTF8
-Comment[zh_TW]=協助從原來的編碼遷移至 UTF8
-Exec=fsexam %U
-Terminal=0
-Type=Application
-Icon=fsexam-icon.png
-Categories=GNOME;Application;System;
-StartupNotify=true
--- a/src/cmd/fsexam/data/fsexam.desktop.in	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-#ident	"@(#)Makefile	1.0	06/03/07	SMI"
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms. 
-#
-
-[Desktop Entry]
-Encoding=UTF-8
-_Name=File System Examiner
-_Comment=Help migrate from legacy encoding to UTF8
-Exec=fsexam %U
-Terminal=0
-Type=Application
-Icon=fsexam-icon.png
-Categories=GNOME;Application;System;
-StartupNotify=true
--- a/src/cmd/fsexam/data/fsexam.schemas	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,382 +0,0 @@
-<gconfschemafile>
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-  <schemalist>
-    <schema>
-      <key>/schemas/apps/fsexam/recur_mode</key>
-      <applyto>/apps/fsexam/recur_mode</applyto>
-      <owner>fsexam</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-	<short>recursive mode</short>
-	<long>Only applicable for file name conversion! It's recursive mode, by enabling
-	      it, fsexam will convert the name of file and subdirectory to UTF8 recursively. 
-	</long>
-      </locale>
-
-      <locale name="cs">
-	<short>rekurzivní režim</short>
-	<long>Aplikovatelné pouze pro konverzi jmen souborů! Rakurzivní režim, v němž fsexam konvertuje jména souborů a adresářů rekurzivně.</long>
-      </locale>
-
-      <locale name="de">
-	<short>rekursiver Modus</short>
-	<long>Nur relevant für die Umwandlung von Dateinamen. Im rekursiven Modus konvertiert fsexam die Namen von Dateien nach UTF8 und verarbeitet dabei auch rekursiv die Unterverzeichnisse.</long>
-      </locale>
-
-      <locale name="es">
-	<short>modo recursivo</short>
-	<long>Sólo es aplicable para la conversión de los nombres de archivos. Es un modo recursivo. Al habilitarlo, fsexam convertirá el nombre del archivo y el subdirectorio en formato UTF8 de forma recursiva.</long>
-      </locale>
-
-      <locale name="fr">
-	<short>mode récursif</short>
-	<long>Valable uniquement pour la conversion du nom du fichier. Mode récursif : si vous l&apos;activez, fsexam convertira récursivement le nom du fichier et le sous-répertoire en UTF8.</long>
-      </locale>
-
-      <locale name="hu">
-	<short>rekurzív mód</short>
-	<long>Csak fájlnév konverzió esetére. A rekurzió bekapcsolása esetén az fsexam a fájlok és almappák neveit is UTF8-ra konvertálja.</long>
-      </locale>
-
-      <locale name="it">
-	<short>modalità ricorsiva</short>
-	<long>Applicabile solo per la conversione dei nomi dei file. Abilitando questa modalità, fsexam convertirà i nomi dei file e delle sottodirectory in modo ricorsivo.</long>
-      </locale>
-
-      <locale name="ja">
-	<short>再帰モード</short>
-	<long>ファイル名の変換だけに適用されます。再帰モードが有効である場合、fsexam はファイルとサブディレクトリの名前を再帰的に UTF8 に変換します。</long>
-      </locale>
-
-      <locale name="ko">
-	<short>재귀 모드</short>
-	<long>파일 이름 변환에만 적용할 수 있습니다. 재귀 모드를 사용하면 fsexam에서 재귀적으로 파일 및 하위 디렉토리 이름이 UTF8로 변환됩니다.</long>
-      </locale>
-
-      <locale name="pt_BR">
-	<short>modo recursivo</short>
-	<long>Aplicável apenas para conversão de nome de arquivo. Modo recursivo. Ao habilitá-lo, o fsexam converterá o nome do arquivo e o subdiretório em UTF8 recursivamente.</long>
-      </locale>
-
-      <locale name="sv">
-	<short>rekursivt läge</short>
-	<long>Gäller endast filnamnskonvertering! Det är rekursivt läge, genom att aktivera det kommer fsexam att konvertera namn på fil - och underbiblioteket till UTF8 rekursivt.</long>
-      </locale>
-
-      <locale name="zh_CN">
-	<short>递归模式</short>
-	<long>只适用于文件名转换!它是一种递归模式,通过启用它,fsexam 将文件名和子目录名递归地转换为 UTF8 格式。</long>
-      </locale>
-
-      <locale name="zh_HK">
-	<short>遞迴模式</short>
-	<long>僅適用於檔案名稱轉換!這是遞迴模式,啟動此模式,Fsexam 將轉換檔案的名稱與子目錄為 UTF8。</long>
-      </locale>
-
-      <locale name="zh_TW">
-	<short>遞迴模式</short>
-	<long>僅適用於檔案名稱轉換!這是遞迴模式,啟動此模式,Fsexam 將轉換檔案的名稱與子目錄為 UTF8。</long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/fsexam/auto_mode</key>
-      <applyto>/apps/fsexam/auto_mode</applyto>
-      <owner>fsexam</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-	<short>automatic mode</short>
-	<long>Only applicable for file name conversion. It's automatic mode, by enabling
-	      it, fsexam will automatically convert with the best conversion result 
-	      without user interference. Otherwise, a dialog will display with several 
-	      conversion candidates and user needs to decide which conversion is the best one.
-	</long>
-      </locale>
-
-      <locale name="cs">
-	<short>automatický režim</short>
-	<long>Aplikovatelné pouze pro konverzi jmen souborů. Automatický režim, v němž fsexam automaticky konvertuje s nejlepším výsledkem bez zásahu uživatele. V opačném případě se při každém výskytu více vhodných kandidátů objeví dialog a uživatel musí sám rozhodnout, který je nejlepší.</long>
-      </locale>
-
-      <locale name="de">
-	<short>automatischer Modus</short>
-	<long>Nur relevant für die Umwandlung von Dateinamen. Im automatischen Modus versucht fsexam, automatisch und ohne weitere Benutzereingriffe die Umwandlung optimal durchzuführen. Ist der automatische Modus nicht aktiviert, erscheint ein Dialogfeld mit verschiedenen Konvertierungsoptionen, aus denen Sie die geeignete auswählen können.</long>
-      </locale>
-
-      <locale name="es">
-	<short>modo automático</short>
-	<long>Sólo es aplicable para la conversión de los nombres de archivos. Es un modo automático. Al habilitarlo, fsexam lo convertirá automáticamente con la mejor conversión posible sin intervención del usuario. En caso de que esto no fuera posible, un cuadro de diálogo informará de las posibilidades de conversión y lo que necesita el usuario para decidir entre ellas.</long>
-      </locale>
-
-      <locale name="fr">
-	<short>mode automatique</short>
-	<long>Valable uniquement pour la conversion du nom du fichier. Mode automatique : si vous l&apos;activez, fsexam effectuera  automatiquement une conversion optimale sans intervention de l&apos;utilisateur. Autrement, une boîte de dialogue propose plusieurs solutions de conversion parmi lesquelles l&apos;utilisateur doit choisir la meilleure.</long>
-      </locale>
-
-      <locale name="hu">
-	<short>automatikus üzemmód</short>
-	<long>Csak fájlnév konverzió esetére. Az automatikus üzemmód bekapcsolás esetén az fsexam automatikusan a legjobb konverziós módszert alkalmazza a felhasználó megkérdezése nélkül. Kikapcsolva minden esetben egy párbeszédablak&quot;&quot; jelenik meg, melyből a felhasználó választhatja ki a megfelelő konverziót. </long>
-      </locale>
-
-      <locale name="it">
-	<short>modalità automatica</short>
-	<long>Applicabile solo per la conversione dei nomi dei file. Abilitando questa modalità, fsexam eseguirà una conversione automatica senza richiedere l&apos;intervento dell&apos;utente. Diversamente, una finestra di dialogo mostrerà le possibili conversioni e l&apos;utente dovrà scegliere quella più appropriata.</long>
-      </locale>
-
-      <locale name="ja">
-	<short>自動モード</short>
-	<long>ファイル名の変換だけに適用されます。自動モードが有効である場合、fsexam が最良の変換を自動的に行うため、ユーザーは何もしなくてもかまいません。自動モードが有効でない場合、fsexam は変換の候補をダイアログに表示します。この場合、ユーザーが最良の変換を選択する必要があります。</long>
-      </locale>
-
-      <locale name="ko">
-	<short>자동 모드</short>
-	<long>파일 이름 변환에만 적용할 수 있습니다. 자동 모드를 사용하면 fsexam에서 사용자 개입 없이 자동으로 최상의 변환 결과를 얻도록 변환됩니다. 자동 모드를 사용하지 않으면 몇 가지 변환 후보가 포함된 대화 상자가 표시되고 사용자가 그 중에서 가장 적합한 것을 선택해야 합니다.</long>
-      </locale>
-
-      <locale name="pt_BR">
-	<short>modo automático</short>
-	<long>Aplicável apenas para conversão de nome de arquivo. Modo automático. Ao habilitá-lo, o fsexam automaticamente fará a conversão com o melhor resultado sem a interferência do usuário. Caso contrário, será exibida uma caixa de diálogo com várias opções de conversão e o usuário deverá decidir qual é a melhor.</long>
-      </locale>
-
-      <locale name="sv">
-	<short>automatiskt läge</short>
-	<long>Gäller endast filnamnskonvertering. Det är automatiskt läge, genom att aktivera det kommer fsexam att konvertera med bästa konverteringsresultat utan användarinblandning. Annars visas ett dialogfönster som visar flera konverteringsförslag och användaren måste välja vilket som är bäst.</long>
-      </locale>
-
-      <locale name="zh_CN">
-	<short>自动模式</short>
-	<long>只适用于文件名转换。它是一种自动模式,通过启用它,fsexam 将自动进行能获得最佳转换结果的转换,无需用户干预。否则,将会显示一个对话框,其中包含若干备选转换选项,用户需要决定哪种转换是最佳方式。</long>
-      </locale>
-
-      <locale name="zh_HK">
-	<short>自動模式</short>
-	<long>僅適用於檔案名稱轉換。這是自動模式,啟動自動模式,不需使用者介入,Fsexam 就會自動轉換成最佳的轉換結果。否則,將顯示具有數項轉換選項的對話方塊,使用者需要決定最佳的轉換方式。</long>
-      </locale>
-
-      <locale name="zh_TW">
-	<short>自動模式</short>
-	<long>僅適用於檔案名稱轉換。這是自動模式,啟動自動模式,不需使用者介入,Fsexam 就會自動轉換成最佳的轉換結果。否則,將顯示具有數項轉換選項的對話方塊,使用者需要決定最佳的轉換方式。</long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/fsexam/suffix</key>
-      <applyto>/apps/fsexam/suffix</applyto>
-      <owner>fsexam</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <default>[.txt]</default>
-      <locale name="C">
-	<short>suffix list</short>
-	<long>A list of suffix. Any file whose suffix belongs to the list are assumed
-	      by fsexam as plain text file.
-	</long>
-      </locale>
-
-      <locale name="cs">
-	<short>seznam přípon</short>
-	<long>Seznam přípon. Libovolný soubor s příponou ze seznamu bude fsexam považovat jako soubor s obyčejným textem.</long>
-      </locale>
-
-      <locale name="de">
-	<short>Erweiterungsliste</short>
-	<long>Eine Liste von Namenserweiterungen. Alle Dateien, deren Namenserweiterung in dieser Liste enthalten ist, werden von fsexam als normale Textdateien behandelt.</long>
-      </locale>
-
-      <locale name="es">
-	<short>lista de sufijos</short>
-	<long>Una lista de sufijos. Fsexam interpreta como archivo de texto cualquier archivo cuyo sufijo pertenezca a la lista.</long>
-      </locale>
-
-      <locale name="fr">
-	<short>liste de suffixes</short>
-	<long>Liste de suffixes. Tout fichier dont le suffixe appartient à la liste est pris en charge par fsexam en tant que fichier texte simple.</long>
-      </locale>
-
-      <locale name="hu">
-	<short>utótag lista</short>
-	<long>Utótagok listája. Minden olyan fájl, melynek neve a lista valamelyik tagjára végződik, egyszerű szöveges állományként kerül feldolgozásra.</long>
-      </locale>
-
-      <locale name="it">
-	<short>elenco suffissi</short>
-	<long>Un elenco di suffissi. Tutti i file il cui suffisso è incluso nell&apos;elenco vengono considerati da fsexam come file di testo normale.</long>
-      </locale>
-
-      <locale name="ja">
-	<short>拡張子リスト</short>
-	<long>拡張子のリスト。このリストに拡張子が登録されているファイルを、fsexam はプレーンテキストファイルであると想定します。</long>
-      </locale>
-
-      <locale name="ko">
-	<short>접미어 목록</short>
-	<long>접미어 목록입니다. 목록에 속한 접미어를 가진 모든 파일은 fsexam에 의해 일반 텍스트 파일로 간주됩니다.</long>
-      </locale>
-
-      <locale name="pt_BR">
-	<short>lista de sufixos</short>
-	<long>Uma lista de sufixos. Qualquer arquivo cujo sufixo pertença à lista é considerado pelo fsexam como arquivo de texto simples.</long>
-      </locale>
-
-      <locale name="sv">
-	<short>suffixlista</short>
-	<long>En lista med suffix. En fil vars suffix tillhör listan antas vara en vanlig textfil av fsexam.</long>
-      </locale>
-
-      <locale name="zh_CN">
-	<short>后辍列表</short>
-	<long>后辍列表。所有后辍在此列表中的文件都被 fsexam 假定为纯文本文件。</long>
-      </locale>
-
-      <locale name="zh_HK">
-	<short>字尾清單</short>
-	<long>字尾清單。Fsexam 會將字尾屬於此清單的檔案假設為純文字檔。</long>
-      </locale>
-
-      <locale name="zh_TW">
-	<short>字尾清單</short>
-	<long>字尾清單。Fsexam 會將字尾屬於此清單的檔案假設為純文字檔。</long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/fsexam/encoding</key>
-      <applyto>/apps/fsexam/encoding</applyto>
-      <owner>fsexam</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <default>[ISO8859-1]</default>
-
-      <locale name="C">
-      	<default>[ISO8859-1]</default>
-	<short>encoding list</short>
-	<long>The list of legacy encoding name available for the specific language.
-	      Note that the order within the list is significant. fsexam treats as the
-	      best one the first one from which conversion can be made successfully.
-	</long>
-      </locale>
-
-
-      <locale name="cs">
-      	<default>[ISO8859-1]</default>
-	<short>seznam kódování</short>
-	<long>Seznam jmen původních kódování dostupných pro vybraný jazyk. Pořadí v seznamu je významné. fsexam použije první vhodné.</long>
-      </locale>
-
-
-      <locale name="de">
-      	<default>[ISO8859-1,ISO8859-2,ISO8859-3,ISO8859-4,ISO8859-5,ISO8859-6,ISO8859-7,ISO8859-8,ISO8859-9,ISO8859-10]</default>
-	<short>Codierungsliste</short>
-	<long>Die Liste der Legacy-Codierungen, die für die jeweilige Sprache verfügbar sind. Bitte achten Sie auf die Reihenfolge innerhalb der Liste. fsexam betrachtet die erste Codierung, aus der eine erfolgreiche Konvertierung möglich ist, als beste Option.</long>
-      </locale>
-
-
-      <locale name="es">
-      	<default>[ISO8859-1,ISO8859-8,ISO8859-9]</default>
-	<short>lista de codificación</short>
-	<long>La lista de los nombres de codificación heredados disponibles para un lenguaje específico. Nota: el orden de la lista es importante, ya que fsexam considera como el mejor el primero que puede usar para una conervsión satisfactoria.</long>
-      </locale>
-
-
-      <locale name="fr">
-      	<default>[ISO8859-1,ISO8859-3,ISO8859-5,ISo8859-8,ISO8859-9,ISO8859-10]</default>
-	<short>liste de codage</short>
-	<long>Liste des noms de codages disponibles pour la langue spécifique. Notez que l&apos;ordre de la liste est important. fsexam considère le premier élément comme le plus indiqué pour réussir la conversion.</long>
-      </locale>
-
-
-      <locale name="hu">
-      	<default>[ISO8859-1]</default>
-	<short>kódolás lista</short>
-	<long>A nyelvhez elérhető kódolási eljárások nevei. A sorrend jelzi az egyes kódolások elterjedtségét. Az fsexam számára a legjobb a legkorábbi kódolás amelyből a konverió sikeresen elvégezhető.</long>
-      </locale>
-
-
-      <locale name="it">
-      	<default>[ISO8859-1,ISO8859-3,ISO8859-5,ISO8859-8,ISO8859-9,ISO8859-10]</default>
-	<short>elenco codifiche</short>
-	<long>L&apos;elenco delle codifiche di origine disponibili per la lingua in oggetto. Si noti che l&apos;ordine nell&apos;elenco è importante. fsexam utilizzerà la prima codifica che consente di eseguire correttamente la conversione.</long>
-      </locale>
-
-
-      <locale name="ja">
-      	<default>[EUC-JP,SJIS,ISO-2022-JP]</default>
-	<short>エンコードリスト</short>
-	<long>特定の言語で利用できる従来のエンコード名のリスト。リスト内における順序は重要です。ファイル名を変換するとき、fsexam はリストの一番上にあるエンコードが最良であると想定します。</long>
-      </locale>
-
-
-      <locale name="ko">
-      	<default>[EUC-KR,ISO-2022-KR,JOHAB]</default>
-	<short>인코딩 목록</short>
-	<long>특정 언어에 사용할 수 있는 기존 인코딩 이름 목록입니다. 목록 내의 순서가 중요합니다. fsexam에서 첫 번째 인코딩 이름이 가장 성공적으로 변환될 수 있는 것으로 처리됩니다.</long>
-      </locale>
-
-
-      <locale name="pt_BR">
-      	<default>[ISO8859-1,ISO8859-3,ISO8859-5,ISO8859-8,ISO8859-9]</default>
-	<short>lista de codificação</short>
-	<long>A lista de nomes de codificação legada para a linguagem específica. Observe que a ordem na lista é significativa. O fsexam considera a melhor opção a primeira, da qual a conversão pode ser realizada com sucesso.</long>
-      </locale>
-
-
-      <locale name="sv">
-      	<default>[ISO8859-1,ISO8859-4,ISO8859-5,ISO8859-6,ISO8859-7,ISO8859-8,ISO8859-9]</default>
-	<short>kodningslista</short>
-	<long>Listan med gamla kodningsnamn är tillgänglig för det specifika språket. Lägg märke till att den inbördes ordningen i listan är ointressant. fsexam anser att den bästa är den konvertering som först leder till en lyckad konvertering.</long>
-      </locale>
-
-
-      <locale name="zh_CN">
-      	<default>[GB18030,BIG5,ISO-2022-CN]</default>
-	<short>编码列表</short>
-	<long>特定语言的遗留编码名称列表。注意:列表中的顺序十分重要。fsexam 将可以从其进行成功转换的最佳名称放在列表中的第一位。</long>
-      </locale>
-
-
-      <locale name="zh_HK">
-      	<default>[BIG5,EUC-TW,GB18030]</default>
-	<short>編碼清單</short>
-	<long>可供特定的語言使用之舊編碼名稱清單。請注意:清單內為有效的排序。Fsexam 會將最佳的視為第一個,並成功對其執行轉換。</long>
-      </locale>
-
-
-      <locale name="zh_TW">
-      	<default>[BIG5,EUC-TW,GB18030]</default>
-	<short>編碼清單</short>
-	<long>可供特定的語言使用之舊編碼名稱清單。請注意:清單內為有效的排序。Fsexam 會將最佳的視為第一個,並成功對其執行轉換。</long>
-      </locale>
-
-    </schema>
-
-  </schemalist>
-</gconfschemafile>
--- a/src/cmd/fsexam/data/fsexam.schemas.in	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-<gconfschemafile>
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-  <schemalist>
-    <schema>
-      <key>/schemas/apps/fsexam/recur_mode</key>
-      <applyto>/apps/fsexam/recur_mode</applyto>
-      <owner>fsexam</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-	<short>recursive mode</short>
-	<long>Only applicable for file name conversion! It's recursive mode, by enabling
-	      it, fsexam will convert the name of file and subdirectory to UTF8 recursively. 
-	</long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/fsexam/auto_mode</key>
-      <applyto>/apps/fsexam/auto_mode</applyto>
-      <owner>fsexam</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-	<short>automatic mode</short>
-	<long>Only applicable for file name conversion. It's automatic mode, by enabling
-	      it, fsexam will automatically convert with the best conversion result 
-	      without user interference. Otherwise, a dialog will display with several 
-	      conversion candidates and user needs to decide which conversion is the best one.
-	</long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/fsexam/suffix</key>
-      <applyto>/apps/fsexam/suffix</applyto>
-      <owner>fsexam</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <default>[.txt]</default>
-      <locale name="C">
-	<short>suffix list</short>
-	<long>A list of suffix. Any file whose suffix belongs to the list are assumed
-	      by fsexam as plain text file.
-	</long>
-      </locale>
-    </schema>
-
-    <schema>
-      <key>/schemas/apps/fsexam/encoding</key>
-      <applyto>/apps/fsexam/encoding</applyto>
-      <owner>fsexam</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <default>[ISO8859-1]</default>
-
-      <locale name="C">
-      	<default>[ISO8859-1]</default>
-	<short>encoding list</short>
-	<long>The list of legacy encoding name available for the specific language.
-	      Note that the order within the list is significant. fsexam treats as the
-	      best one the first one from which conversion can be made successfully.
-	</long>
-      </locale>
-
-    </schema>
-
-  </schemalist>
-</gconfschemafile>
--- a/src/cmd/fsexam/fsexam.sol.spec	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-%include Solaris.inc
-
-%define name    SUNWfsexam 
-%define cmpt    fsexam
-
-Summary: File System Examiner
-Name: SUNWfsexam 
-Version: 0.3
-Release: 16
-License: CDDL
-Group: User Interface/Desktop
-Source: %{name}-%{version}.tar.bz2
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-
-%include default-depend.inc
-#BuildRequires: SUNWgnome-javahelp-convert
-Requires: SUNWgnome-libs
-Requires: SUNWgnome-base-libs
-Requires: SUNWgnome-config
-
-%description
-File System Examiner is to help user migrate file name and file content from
-legacy encoding to UTF8 encoding.
-
-
-%prep
-%setup
-
-%build
-export LDFLAGS="-L%{_libdir} -R%{_libdir}"
-export CFLAGS="-I%{_includedir} %optflags"
-export MSGFMT="/usr/bin/msgfmt"
-export ACLOCAL_FLAGS="-I %{_datadir}/aclocal"
-export PERL5LIB=%{_prefix}/perl5/site_perl/5.6.1/sun4-solaris-64int
-export PKG_CONFIG_PATH=%{_libdir}/pkgconfig:/usr/lib/pkgconfig
-autoconf
-
-CFLAGS="$RPM_OPT_FLAGS"                      \
-./configure --prefix=%{_prefix}              \
-            --sysconfdir=%{_sysconfdir}
-make
-
-%install
-rm -rf ${RPM_BUILD_ROOT}
-export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
-%makeinstall
-javahelp-convert-install $RPM_BUILD_ROOT %{cmpt} %{cmpt}.xml
-
-%clean
-rm -rf ${RPM_BUILD_ROOT}
-
-%post
-GCONF_CONFIG_SOURCE=`%{_bindir}/gconftool-2 --get-default-source` %{_bindir}/gconftool-2 --makefile-install-rule %{_sysconfdir}/gconf/schemas/fsexam.schemas
-
-%files 
-%defattr(-, root, other)
-%{_bindir}/*
-%{_sysconfdir}/gconf/schemas/*
-%{_datadir}/applications/fsexam.desktop
-%{_datadir}/pixmaps/*.png
-%{_datadir}/locale/*/LC_MESSAGES/fsexam.mo
-%{_datadir}/omf
-%{_datadir}/gnome/help/fsexam/*
-%{_datadir}/gnome/javahelp/fsexam
-%doc AUTHORS ChangeLog COPYING COPYING.LIB NEWS README
-
-%changelog
-* Wed Aug 11 2004 Federic Zhang <[email protected]>
-- Bump to 0.3
-
-* Tue Aug 10 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 16, implement Undo and UI polish
- 
-* Fri Jul 23 2004 Federic Zhang <[email protected]>
-- For Cinnbar Beta build 15
-
-* Mon May 31 2004 Gain  Tu <[email protected]>
-- For Cinnabar build 11, add l10en menu, context-sensitive menu, help, reverse
-
-* Mon May 24 2004 Gavin Tu <[email protected]>
-- menu can be l10ned, alloc memory for name dynamiclly 
-
-* Thu May 13 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 10, added fsexam.desktop and fsexam-icon.png
-
-* Tue Apr 20 2004 Federic Zhang <[email protected]>
-- For Cinnabar build8, added CFLAGS env and prefix option
-
-* Mon Apr 11 2004 Federic Zhang <[email protected]>
-- version 0.1
--- a/src/cmd/fsexam/fsexam.spec	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,130 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-Summary: File System Examiner
-Name: fsexam
-Version: 0.3
-Release: 32
-License: CDDL
-Group: System/GUI/GNOME
-Distribution: Cinnabar
-Vendor: Sun Microsystems, Inc
-Source: %{name}-%{version}.tar.bz2
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-Autoreqprov: on
-Prereq:      GConf
-Prereq:      scrollkeeper
-
-%define scrollkeeper_version 0.3.11
-
-BuildRequires: scrollkeeper >= %{scrollkeeper_version}
-Requires: scrollkeeper >= %{scrollkeeper_version}
-
-%description
-File System Examiner is to help user migrate file name and file content from
-legacy encoding to UTF8 encoding.
-
-%prep
-%setup
-
-%build
-aclocal
-autoconf
-
-CFLAGS="$RPM_OPT_FLAGS"                      \
-./configure --prefix=%{_prefix}              \
-            --sysconfdir=%{_sysconfdir}
-make
-
-%install
-rm -rf ${RPM_BUILD_ROOT}
-export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
-%makeinstall
-%find_lang %{name}
-
-javahelp-convert-install ${RPM_BUILD_ROOT} %{name} %{name}.xml
-
-%clean
-rm -rf ${RPM_BUILD_ROOT}
-
-%post
-export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-gconftool-2 --makefile-install-rule %{_sysconfdir}/gconf/schemas/%{name}.schemas
-
-for i in zh_CN; do
-    langtag=$i
-    [ ${i:0:2} == "zh" ] || langtag=${i:0:2}
-    [ -e %{_datadir}/omf/fsexam/fsexam-$langtag.omf ] && \
-    env LANG=$i LC_ALL=$i scrollkeeper-install -q %{_datadir}/omf/fsexam/fsexam-$langtag.omf
-done
-scrollkeeper-update -q
-
-%postun
-for i in zh_CN; do
-    langtag=$i
-    [ ${i:0:2} == "zh" ] || langtag=${i:0:2}
-    [ -e %{_datadir}/omf/fsexam/fsexam-$langtag.omf ] && \
-    env LANG=$i LC_ALL=$i scrollkeeper-uninstall -q %{_datadir}/omf/fsexam/fsexam-$langtag.omf
-done
-scrollkeeper-update -q
-
-%files -f %{name}.lang
-%defattr(-, root, root)
-%{_datadir}/applications/*.desktop
-%{_datadir}/gnome/help/%{name}
-%{_datadir}/gnome/javahelp/%{name}
-%{_datadir}/omf/%{name}/*
-%{_datadir}/pixmaps/*.png
-%{_bindir}/*
-%{_sysconfdir}/gconf/schemas/*
-%doc AUTHORS ChangeLog COPYING COPYING.LIB NEWS README
-
-%changelog
-* Tue Aug 17 2004 Federic Zhang <[email protected]>
-- Add scrollkeep-update to register the omf file and support javahelp
-
-* Wed Aug 11 2004 Federic Zhang <[email protected]>
-- bump to 0.3
-
-* Mon Jul 12 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 14, Add the encoding list setting for european
-  language according to http://www.cs.tut.fi/~jkorpela/8859.html.
-
-* Tue Jun 29 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 13, added file content conversion and preview
-  content support. UI and OLH freeze for Cinnabar beta
-
-* Tue Jun 15 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 12, fix the undo crash problem
-
-* Mon May 31 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 11, added help information
-
-* Thu May 13 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 10, added fsexam.desktop and fsexam-icon.png
-
-* Tue Apr 20 2004 Federic Zhang <[email protected]>
-- For Cinnabar build8, added CFLAGS env and prefix option
-
-* Mon Apr 11 2004 Federic Zhang <[email protected]>
-- version 0.1
--- a/src/cmd/fsexam/fsexam.spec.in	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms. 
-#
-
-Summary: File System Examiner
-Name: fsexam
-Version: @VERSION@
-Release: 14
-License: CDDL
-Group: User Interface/Desktop
-Source: %{name}-%{version}.tar.gz
-BuildRoot: %{_tmppath}/%{name}-%{version}-root
-
-%description
-File System Examiner is to help user migrate file name and file content from
-legacy encoding to UTF8 encoding.
-
-%prep
-%setup
-
-%build
-autoconf
-
-CFLAGS="$RPM_OPT_FLAGS"                      \
-./configure --prefix=%{_prefix}              \
-            --sysconfdir=%{_sysconfdir}
-make
-
-%install
-rm -rf ${RPM_BUILD_ROOT}
-export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
-%makeinstall
-%find_lang %{name}
-
-%clean
-rm -rf ${RPM_BUILD_ROOT}
-
-%post
-export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-gconftool-2 --makefile-install-rule %{_sysconfdir}/gconf/schemas/%{name}.schemas
-
-%files -f %{name}.lang
-%defattr(-, root, root)
-%{_datadir}/applications/*.desktop
-%{_datadir}/gnome/help/%{name}/zh_CN/*
-%{_datadir}/gnome/help/%{name}/C/*
-%{_datadir}/omf/%{name}/*
-%{_datadir}/pixmaps/*.png
-%{_bindir}/*
-%{_sysconfdir}/gconf/schemas/*
-%doc AUTHORS ChangeLog COPYING COPYING.LIB NEWS README
-
-%changelog
-* Mon Jul 12 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 14, Add the encoding list setting for european
-  language according to http://www.cs.tut.fi/~jkorpela/8859.html.
-
-* Tue Jun 29 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 13, added file content conversion and preview
-  content support. UI and OLH freeze for Cinnabar beta
-
-* Tue Jun 15 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 12, fix the undo crash problem
-
-* Mon May 31 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 11, added help information
-
-* Thu May 13 2004 Federic Zhang <[email protected]>
-- For Cinnabar build 10, added fsexam.desktop and fsexam-icon.png
-
-* Tue Apr 20 2004 Federic Zhang <[email protected]>
-- For Cinnabar build8, added CFLAGS env and prefix option
-
-* Mon Apr 11 2004 Federic Zhang <[email protected]>
-- version 0.1
--- a/src/cmd/fsexam/help/C/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = C
-omffile = fsexam-C.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/C/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/C/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/C/fsexam-C.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>
-      Sun Java Desktop System Documentation Team
-    </creator>
-    <maintainer>
-      Sun Java Desktop System Documentation Team
-    </maintainer>
-    <title>
-      File System Examiner
-    </title>    
-    <date>
-      2004-08-26
-    </date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>
-      User manual for the File System Examiner desktop application. 
-    </description>
-    <type>
-      user's guide
-    </type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="C"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/C/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,416 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://basil.ireland.sun.com:8080/docbook/docbookx.dtd" [
-  <!ENTITY author1 "Sun">
-  <!ENTITY author2 "Java Desktop System Documentation Team">
-  <!ENTITY publisher "Sun Microsystems, Inc.">
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3">
-  <!ENTITY manrevision "2.0">
-  <!ENTITY date "August 2004">
-  <!ENTITY app "<application>File System Examiner</application>">
-  <!ENTITY appname "File System Examiner">
-]>
-<!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
--->
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
--->
-<!-- =============Document Header ============================= -->
-<article id="index" lang="en">
-<!-- please do not change the id; for translations, change lang to -->
-<!-- appropriate code -->
-  <articleinfo> 
-	 <title>&appname;</title>
-	 <subtitle>&appname; Desktop Application Manual V&manrevision;</subtitle>
-	 <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright>
-
-	 <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher>
-	 &legal; 
-	 <authorgroup> 
-		<author> 
-		  <firstname>&author1;</firstname>
-		  <surname>&author2;</surname> 
-		  <affiliation> 
-			 <orgname>&publisher;</orgname>
-		  </affiliation>
-		</author>
-
-<!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-	 </authorgroup>
-
-
-
-<!-- modifying/reusing someone else's document.  If not, you can omit it. -->
-	 <revhistory>
-<!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-   		<revision> 
-		  <revnumber>&appname; Desktop Application Manual V&manrevision;</revnumber>
-		  <date>&date;</date> 
-		  <revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher;</para>
-		  </revdescription>
-		</revision>
-	 </revhistory>
-	 <releaseinfo> This manual describes version &appversion; of &appname;.
-		</releaseinfo>
-	 <legalnotice> 
-		<title>Feedback</title>
-		<para>
-                  To send feedback, follow the directions in the <ulink url="ghelp:gnome-feedback" type="help">Feedback Page</ulink>.
-                </para>
-<!-- Translators may also add here feedback address for translations -->
-	 </legalnotice>
-  </articleinfo>
-  <indexterm><primary>fsexam command</primary></indexterm>
-  <indexterm><primary>File System Examiner desktop application</primary></indexterm>
-  
-
-<!-- ============= Document Body ============================= -->
-<!-- ============= Introduction ============================== -->
-  <sect1 id="fsexam-intro"> 
-    <title>Introduction</title>
-       <para>
-         &app; enables you to convert the name of a file, or the contents of a plain-text file, from a legacy character encoding to UTF-8 encoding. 
-       </para>
-       <note>
-         <para>
-         The default internal character encoding in the Sun Java Desktop System is UTF-8 encoding, and the default locale is the UTF-8 locale. If not converted, files with legacy character encoding are displayed as meaningless text.
-	</para>
-       </note>
-  </sect1>
-
-<!-- ============= Getting Started =========================== -->
-  <sect1 id="fsexam-getting-started"> 
-	 <title>Getting Started</title>
-
-<!-- ============= To Start fsexam ============================ -->
-	 <sect2 id="fsexam-to-start"> 
-		<title>To Start &appname;</title>
-                <para>You can start &app; in the following ways:</para>
-                <variablelist>
-                <varlistentry>
-                <term>Menu</term>
-                <listitem>
-                <para>Click <guibutton>Launch</guibutton>, then choose <menuchoice><guimenu>Applications</guimenu><guisubmenu>Utilities</guisubmenu><guimenuitem>File System Examiner</guimenuitem></menuchoice>. </para>
-                </listitem>
-                </varlistentry>
-                <varlistentry>
-                <term>Command line</term>
-                <listitem>
-                <para>Execute the following command: <userinput>fsexam</userinput></para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start">
-
-                <title>When You Start &appname;</title>
-                <para>When you start &app;, the following window is displayed:</para>
-
-                <figure id="fsexam-window">
-                  <title>&appname; Window</title>
-                  <screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject> <phrase>Shows fsexam main window.</phrase>
-                                </textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>The &app; window contains the following elements: </para>
-                <variablelist>
-                  <varlistentry> <term>Menubar</term>
-                         <listitem>
-                                <para>The menus on the menubar contain all of the commands that you need to work with files in &app;.</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry> <term>Display area</term>
-                         <listitem>
-                                <para> The display area displays the contents of the current directory. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry> <term>Statusbar</term>
-                         <listitem>
-                                <para>The statusbar displays information about current &app; activity. </para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>When you right-click in the &app; window, the application displays a popup menu. The popup menu contains the most common commands. </para>
-
-      <para>
-      This manual documents functionality from the menubar.
-      </para>
-         </sect2>
-  </sect1>
-
-<!-- ================ Usage ================================ -->
-  <sect1 id="fsexam-usage"> 
-	 <title>Usage</title>
-
-<!-- ============= To Open a File ======================== -->
-	 <sect2 id="fsexam-select"> 
-		<title>To Select a File or Directory</title>
-		<para>
-			Choose <menuchoice><guimenu>File</guimenu><guimenuitem>Open</guimenuitem></menuchoice>, then select the file or directory whose character encoding you want to change.
-		 </para>
-		<para>
-			If you select a directory, all of the files and subdirectories in that directory are displayed in the display area.
-		</para>
-	 </sect2>
-
-<!-- ============= To Apply by name  ================================ -->
-	 <sect2 id="fsexam-convert-filename"> 
-		<title>To Convert the Name of a File or Directory</title>
-		<para>Perform the following steps:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Select the file or directory, as described in <xref linkend="fsexam-select"/>.
-                    </para>
-                  </listitem>
-                  <listitem>
-                    <para>Choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Convert Filename</guimenuitem></menuchoice>.
-                    </para>
-                    <para>By default, the <guilabel>File System Examiner name conversion</guilabel> dialog is displayed. For information on how to display or hide the <guilabel>File System Examiner name conversion</guilabel> dialog, see <xref linkend="fsexam-prefs"/>. 
-                    </para>
-                    <para>The <guilabel>File System Examiner name conversion</guilabel> dialog displays a list of character encodings that &app; can use to convert the filename. 
-                    </para>
-                  </listitem>
-                  <listitem>
-                    <para>Select an encoding, then click <guibutton>OK</guibutton>. 
-                    </para>
-                  </listitem>
-                </orderedlist>
-		<para>
-			If &app; successfully renames the file, the statusbar displays the name of the legacy character encoding. 
-		</para>
-		<para>
-			If the conversion fails, the statusbar displays an error message.
-		</para>
-	 </sect2>
-
-
-<!-- ============= To Apply by content  ================================ -->
-	 <sect2 id="fsexam-convert-contents"> 
-		<title>To Convert the Contents of a File</title>
-		<para>Perform the following steps:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Select the file, as described in <xref linkend="fsexam-select"/>.
-                    </para>
-                  </listitem>
-                  <listitem>
-                    <para>Choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Convert Content</guimenuitem></menuchoice>.
-                    </para>
-                    <para>The <guilabel>File System Examiner content conversion</guilabel> window displays the converted contents of the file. 
-                    </para>
-                  </listitem>
-                  <listitem>
-                    <para>To accept the conversion and overwrite the original file with the converted contents, click <guibutton>OK</guibutton>. 
-                    </para>
-                    <para>To cancel the conversion, close the <guilabel>File System Examiner content conversion</guilabel> window.
-                    </para>
-                  </listitem>
-                </orderedlist>
-		<para>
-			If &app; successfully converts the file contents, the statusbar displays the following text:
-<screen>File content - convert from <replaceable>original_encoding</replaceable></screen>
-		</para>
-		<para>
-			If the conversion fails, the statusbar displays an error message.
-		</para>
-		<note>
-		  <para>
-			&app; can only convert the contents of a plain-text file. &app; uses the <command>file</command> command to check whether the current file is a plain-text file. If the <command>file</command> command output is not available, &app; displays the following error message:
-			<screen>popen error, please try again</screen>
-		  </para>
-		</note>
-	 </sect2>
-
-
-<!-- ============= To Peek content  ================================ -->
-	 <sect2 id="fsexam-preview-contents"> 
-		<title>To Preview the Contents of a File</title>
-		<para>Perform the following steps:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Select the file, as described in <xref linkend="fsexam-select"/>.
-                    </para>
-                  </listitem>
-                  <listitem>
-                    <para>Choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Preview Content</guimenuitem></menuchoice>.
-                    </para>
-                  </listitem>
-                </orderedlist>
-		<para>
-			If &app; successfully previews the file contents, a popup window displays the first part of the file. Click on the popup window to close the window.
-		</para>
-		<para>
-			If the preview fails, the statusbar displays an error message.
-		</para>
-	 </sect2>
-
-<!-- ============== To Undo a Conversion  ====================== -->
-	 <sect2 id="fsexam-undo-conversion"> 
-		<title>To Undo the Last Action</title>
-		<para>
-			Choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Undo</guimenuitem></menuchoice>.
-		</para>
-	 </sect2>
-
-
-<!-- ============== To Restore the Original File  ====================== -->
-	 <sect2 id="fsexam-restore-file"> 
-		<title>To Restore the Original File</title>
-		<para>Perform the following steps:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Select the file, as described in <xref linkend="fsexam-select"/>.
-                    </para>
-                  </listitem>
-                  <listitem>
-                    <para>Choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Restore Original File</guimenuitem></menuchoice>.
-                    </para>
-                  </listitem>
-                </orderedlist>
-		<para>
-			&app; restores the original file contents in a file with the original filename.
-		</para>
-	 </sect2>
-
-<!-- ============= To Display Report Pane =================== -->
-	 <sect2 id="fsexam-report-pane"> 
-		<title>To Display the Report Pane</title>
-                    <para>Choose <menuchoice><guimenu>View</guimenu><guimenuitem>Report Pane</guimenuitem></menuchoice>.
-                    </para>
-		<para>
-			The report pane displays the directory name, and a list of converted files with corresponding legacy character encoding names. 
-		</para>
-		<para>
-			At the beginning of each line, <literal>[<replaceable>X</replaceable>]</literal> indicates the action that &app; performed, as follows:
-		</para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>Description</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>Convert file content.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>Convert filename.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>Restore original file.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>Undo conversion of file content.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>Undo conversion of filename.</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>To hide the report pane, choose <menuchoice><guimenu>View</guimenu><guimenuitem>Report Pane</guimenuitem></menuchoice> again.
-                    </para>
-	 </sect2>
-  </sect1>
-
-
-<!-- ============= Preferences ============================= -->
-  <sect1 id="fsexam-prefs"> 
-	 <title>Preferences</title>
-	   
-	 <para>To configure &app;, choose <menuchoice><guimenu>Edit</guimenu><guimenuitem>Preferences</guimenuitem></menuchoice>. The <guilabel>File System Examiner preferences</guilabel> dialog is displayed.
-	</para>
-	 
-        <variablelist>
-          <varlistentry> 
-            <term><guilabel>Sub-folder</guilabel> </term>
-            <listitem>
-                  <para>Select the <guilabel>Recursive Mode</guilabel> option to specify that &app; converts the names of all files and subdirectories in the selected directory. </para>
-                  <note><para>&app; does not recursively convert the contents of a directory. </para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry> 
-            <term><guilabel>User intervention</guilabel> </term>
-            <listitem>
-                  <para>Select the <guilabel>Automatic Conversion</guilabel> option to specify that &app; uses the first suitable legacy character encoding in the <guilabel>Encode list</guilabel> to convert the names of files and subdirectories to UTF-8 encoding. If you do not select this option, &app; displays the <guilabel>File System Examiner name conversion</guilabel> dialog, as described in <xref linkend="fsexam-convert-filename"/>.
-</para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry> 
-            <term><guilabel>Encode list</guilabel> </term>
-            <listitem>
-                  <para>Displays a list of legacy character encodings available for the current language. Click <guibutton>Up</guibutton> to move an encoding up the list. Click <guibutton>Down</guibutton> to move an encoding down the list. </para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-## Process this file with automake to produce Makefile.in.
-
-SUBDIRS = C de es fr it ja ko pt_BR sv zh_CN zh_HK zh_TW
--- a/src/cmd/fsexam/help/de/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = de
-omffile = fsexam-de.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/de/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/de/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/de/fsexam-de.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>  <!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Sun Java Desktop System - Dokumentations-Team  </creator>
-    <maintainer>Sun Java Desktop System - Dokumentations-Team  </maintainer>
-    <title>Dateisystem-Prüfung  </title>    
-    <date>26.8.2004  </date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>Benutzerhandbuch für die Desktop-Anwendung Dateisystem-Prüfung.  </description>
-    <type>Benutzerhandbuch </type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="de"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/de/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-<?xml version="1.0"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "Java Desktop System - Dokumentations-Team" >
-  <!ENTITY publisher "Sun Microsystems Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "August 2004" >
-  <!ENTITY app "<application>Dateisystem-Pr&uuml;fung</application>" >
-  <!ENTITY appname "Dateisystem-Pr&uuml;fung " >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="de"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>&appname; Desktop-Anwendungs-Handbuch V&manrevision;</subtitle> <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup> 
-		<author><firstname>&author1;</firstname> <surname>&author2;</surname> <affiliation> 
-			 <orgname>&publisher;</orgname>
-		  </affiliation>  </author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>&appname; Desktop-Anwendungshandbuch V&manrevision;</revnumber> <date>&date;</date> <revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo>In diesem Handbuch wird Version &appversion; von &appname; beschrieben.</releaseinfo> <releaseinfo></releaseinfo>  <legalnotice><title>Kommentare und Vorschl&auml;ge</title>  <para>Wenn Sie Hinweise zu dieser Dokumentation haben, sollten Sie die Anweisungen auf der <ulink url="ghelp:gnome-feedback" type="help">Seite zum Einsenden von Hinweisen</ulink> abarbeiten.  </para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>fsexam (Befehl)</primary></indexterm> <indexterm><primary>Dateisystem-Pr&uuml;fung (Desktop-Anwendung)</primary></indexterm>  <sect1 id="fsexam-intro"><title>Einf&uuml;hrung</title>  <para>&app; konvertiert einen Dateinamen bzw. den Inhalt einer Datei im ASCII-Textformat von einem fr&uuml;heren Zeichensatz in den UTF-8-Zeichensatz.  </para>
-       <note>
-         <para>Sun Java Desktop System verwendet standardm&auml;&szlig;ig den UTF-8-Zeichensatz und die L&auml;ndereinstellung UTF-8. Dateien mit &auml;lteren Zeichens&auml;tzen werden bei Nichtkonvertierung nicht ordnungsgem&auml;&szlig; angezeigt.  </para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>Erste Schritte</title>  <sect2 id="fsexam-to-start"><title>Starten von &appname;</title> <para>Sie k&ouml;nnen &app; auf eine der folgenden Arten starten: </para>
-                <variablelist>
-                <varlistentry><term>Men&uuml;</term> <listitem>
-                <para>Klicken Sie auf <guibutton>Starten</guibutton>. W&auml;hlen Sie dann <menuchoice><guimenu>Anwendungen</guimenu><guisubmenu>Dienstprogramme</guisubmenu><guimenuitem>Dateisystem-Pr&uuml;fung</guimenuitem></menuchoice>.  </para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>Befehlszeile</term> <listitem>
-                <para>F&uuml;hren Sie folgenden Befehl aus: <userinput>fsexam</userinput> </para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>Beim Start von &appname;</title> <para>Wenn Sie die &app;-Anwendung starten, wird folgendes Fenster angezeigt: </para>
-
-                <figure id="fsexam-window"><title>&appname;-Fenster</title>  <screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>Zeigt das Hauptfenster von fsexam an.</phrase> </textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>Das &app;-Fenster enth&auml;lt folgende Elemente:  </para>
-                <variablelist>
-                  <varlistentry><term>Men&uuml;leiste</term> <listitem>
-                                <para>Die Men&uuml;s in der Men&uuml;leiste enthalten alle Befehle, die Sie zum Arbeiten mit Dateien in &app; ben&ouml;tigen. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Anzeigebereich</term>  <listitem>
-                                <para>Im Anzeigebereich wird der Inhalt des aktuellen Verzeichnisses angezeigt.  </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Statusleiste</term> <listitem>
-                                <para>In der Statuszeile werden Informationen zu den aktuellen Aktivit&auml;ten von der Anwendung &app; angezeigt. </para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>Wenn Sie mit der rechten Maustaste auf das Fenster der Anwendung &app; klicken, wird ein Kontextmen&uuml; angezeigt. Dieses Kontextmen&uuml; enth&auml;lt die am h&auml;ufigsten verwendeten Befehle.  </para>
-
-      <para>In diesem Handbuch wird die Arbeitsweise &uuml;ber die Men&uuml;leiste beschrieben.  </para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>Verwendung</title>  <sect2 id="fsexam-select"><title>So w&auml;hlen Sie eine Datei bzw. ein Verzeichnis aus</title>  <para>W&auml;hlen Sie zuerst <menuchoice><guimenu>Datei</guimenu><guimenuitem>&Ouml;ffnen</guimenuitem></menuchoice> und dann die Datei bzw. das Verzeichnis, dessen Zeichensatz ge&auml;ndert werden soll.  </para>
-		<para>Bei Auswahl eines Verzeichnisses werden im Anzeigebereich alle in diesem Verzeichnis enthaltenen Dateien und Unterverzeichnisse angezeigt.  </para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>So konvertieren Sie den Namen einer Datei bzw. eines Verzeichnisses</title> <para>F&uuml;hren Sie folgende Schritte durch:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>W&auml;hlen Sie die Datei oder das Verzeichnis, wie unter <xref linkend="fsexam-select"/> beschrieben, aus. </para>
-                  </listitem>
-                  <listitem>
-                    <para>W&auml;hlen Sie <menuchoice><guimenu>Bearbeiten</guimenu><guimenuitem>Dateiname konvertieren</guimenuitem></menuchoice>. </para>
-                    <para>Standardm&auml;&szlig;ig wird das Dialogfeld <guilabel>Dateisystem-Pr&uuml;fung - Umwandlung von Dateinamen</guilabel> angezeigt. Informationen zum Anzeigen oder Ausblenden des Dialogs <guilabel>Dateisystem-Pr&uuml;fung - Umwandlung von Dateinamen</guilabel> finden Sie unter <xref linkend="fsexam-prefs"/>. </para>
-                    <para>Im Dialogfeld <guilabel>Dateisystem-Pr&uuml;fung - Umwandlung von Dateinamen</guilabel> wird eine Liste mit Zeichens&auml;tzen angezeigt, die die Anwendung &app;  zur Umwandlung des Dateinamens verwenden kann. </para>
-                  </listitem>
-                  <listitem>
-                    <para>W&auml;hlen Sie einen Zeichensatz und klicken Sie dann auf <guibutton>OK</guibutton>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Wenn die Anwendung &app; die Datei ohne Fehler umbenennen konnte, wird die Bezeichnung des fr&uuml;heren Zeichensatzes in der Statuszeile angezeigt.  </para>
-		<para>Beim Fehlschlagen der Konvertierung wird in der Statuszeile eine Fehlermeldung angezeigt.  </para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>So konvertieren Sie Dateiinhalte</title> <para>F&uuml;hren Sie folgende Schritte durch:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>W&auml;hlen Sie die Datei, wie unter <xref linkend="fsexam-select"/> beschrieben, aus. </para>
-                  </listitem>
-                  <listitem>
-                    <para>W&auml;hlen Sie <menuchoice><guimenu>Bearbeiten</guimenu><guimenuitem>Inhalt konvertieren</guimenuitem></menuchoice>. </para>
-                    <para>Im Fenster <guilabel>Dateisystem-Pr&uuml;fung - Konvertierung</guilabel> wird der konvertierte Dateiihnalt angezeigt. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Klicken Sie auf <guibutton>OK</guibutton>, um die Konvertierung zu best&auml;tigen und die urspr&uuml;ngliche Datei durch den konvertierten Inhalt zu ersetzen. </para>
-                    <para>Schlie&szlig;en Sie zum Abbrechen der Konvertierung das Fenster <guilabel>Dateisystem-Pr&uuml;fung - Konvertierung</guilabel>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Wenn die &app; den Dateiinhalt erfolgreich konvertiert hat, wird in der Statuszeile der folgende Text angezeigt: <screen>Dateiinhalt - Konvertierung von <replaceable>urspr&uuml;nglicher Zeichensatz</replaceable></screen>  </para>
-		<para>Beim Fehlschlagen der Konvertierung wird in der Statuszeile eine Fehlermeldung angezeigt.  </para>
-		<note>
-		  <para>Die &app; kann nur reine Textdateien konvertieren. Die &app; verwendet den Befehl <command>file</command>, um zu &uuml;berpr&uuml;fen, ob es sich bei der zu konvertierenden Datei um eine reine Textdatei handelt. Falls die Ausgabe des Befehls <command>file</command> nicht verf&uuml;gbar ist, zeigt die &app; die folgende Fehlermeldung an: <screen>popen-Fehler. Bitte versuchen Sie es erneut</screen>  </para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>So zeigen Sie eine Vorschau des Dateiinhalts an</title> <para>F&uuml;hren Sie folgende Schritte durch:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>W&auml;hlen Sie die Datei, wie unter <xref linkend="fsexam-select"/> beschrieben, aus. </para>
-                  </listitem>
-                  <listitem>
-                    <para>W&auml;hlen Sie <menuchoice><guimenu>Bearbeiten</guimenu><guimenuitem>Vorschau</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Wenn die &app; von der Datei eine Vorschau anzeigen kann, erscheint der erste Dateiteil in einem Popup-Fenster. Klicken Sie auf das Popup-Fenster, um es zu schlie&szlig;en.  </para>
-		<para>Beim Fehlschlagen der Vorschau wird in der Statuszeile eine Fehlermeldung angezeigt.  </para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>So machen Sie die letzte Aktion r&uuml;ckg&auml;ngig</title>  <para>W&auml;hlen Sie <menuchoice><guimenu>Bearbeiten</guimenu><guimenuitem>R&uuml;ckg&auml;ngig</guimenuitem></menuchoice>.  </para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>So stellen Sie die urspr&uuml;ngliche Datei wieder her</title> <para>F&uuml;hren Sie folgende Schritte durch:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>W&auml;hlen Sie die Datei, wie unter <xref linkend="fsexam-select"/> beschrieben, aus. </para>
-                  </listitem>
-                  <listitem>
-                    <para>W&auml;hlen Sie <menuchoice><guimenu>Bearbeiten</guimenu><guimenuitem>Urspr&uuml;ngliche Datei wiederherstellen</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Die &app; stellt den urspr&uuml;nglichen Dateiinhalt mit dem uspr&uuml;nglichen Dateinamen wieder her.  </para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>So zeigen Sie das Berichtsfenster an</title> <para>W&auml;hlen Sie <menuchoice><guimenu>Ansicht</guimenu><guimenuitem>Berichtsfenster</guimenuitem></menuchoice>.  </para>
-		<para>Im Berichtsfenster werden der Verzeichnisname und eine Liste konvertierter Dateien mit deren jeweiligen fr&uuml;heren Zeichens&auml;tzen angezeigt.  </para>
-		<para>Am Zeilenanfang gibt <literal>[<replaceable>X</replaceable>]</literal> die von der &app; durchgef&uuml;hrte Aktion an. Hierbei kann X stehen f&uuml;r: </para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>Beschreibung</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>Konvertierung von Dateiinhalten.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>Konvertierung von Dateinamen.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>Wiederherstellen der urspr&uuml;nglichen Datei.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>Konvertierung des Dateiinhalts r&uuml;ckg&auml;ngig machen.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>Konvertierung des Dateinamens r&uuml;ckg&auml;ngig machen.</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>W&auml;hlen Sie zum Ausblenden des Berichtsfensters erneut  <menuchoice><guimenu>Ansicht</guimenu><guimenuitem>Berichtsfenster</guimenuitem></menuchoice>.  </para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>Einstellungen</title> <para>Zum Konfigurieren der &app; w&auml;hlen Sie <menuchoice><guimenu>Bearbeiten</guimenu><guimenuitem>Einstellungen</guimenuitem></menuchoice>. Das Dialogfeld <guilabel>Dateisystem-Pr&uuml;fung -  Einstellungen</guilabel> wird angezeigt.  </para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>Unterordner</guilabel> </term> <listitem>
-                  <para>W&auml;hlen Sie die Option <guilabel>Rekursiv</guilabel>, um festzulegen, dass die &app; alle Unterverzeichnis- und Dateinamen im ausgew&auml;hlten Verzeichnis konvertieren soll. </para>
-                  <note><para>Die &app; konvertiert den Inhalt eines Verzeichnisses nicht rekursiv.  </para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>Benutzereingriff</guilabel> </term> <listitem>
-                  <para>W&auml;hlen Sie die Option <guilabel>Automatische Konvertierung</guilabel>, um festzulegen, dass die &app; die erste in der <guilabel>Codierungsliste</guilabel>  geeignete Codierung verwendet, um Datei- und Verzeichnisnamen in den UTF-8-Zeichensatz umzuwandeln. Wenn Sie diese Option nicht aktivieren, zeigt &app; den Dialog <guilabel>Dateisystem-Pr&uuml;fung - Umwandlung von Dateinamen</guilabel>, wie unter <xref linkend="fsexam-convert-filename"/> beschrieben, an.  </para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>Codierungsliste</guilabel> </term> <listitem>
-                  <para>Zeigt eine f&uuml;r die aktuelle Sprache verf&uuml;gbare Liste von Zeichens&auml;tzen an. Klicken Sie auf <guibutton>Hinauf</guibutton>um einen Zeichensatz in der Liste nach oben zu verschieben. Klicken Sie auf <guibutton>Hinunter</guibutton>um einen Zeichensatz in der Liste nach unten zu verschieben. </para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/es/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = es
-omffile = fsexam-es.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/es/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/es/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/es/fsexam-es.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>  <!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Equipo de documentación de Sun Java Desktop System  </creator>
-    <maintainer>Equipo de documentación de Sun Java Desktop System  </maintainer>
-    <title>Examinador del sistema de archivos  </title>    
-    <date>26/08/2004  </date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>Manual del usuario de la aplicación Examinador del sistema de archivos.  </description>
-    <type>guía del usuario </type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="es"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/es/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-<?xml version="1.0"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Dom" >
-  <!ENTITY author2 "Equipo de documentaci&oacute;n de Sun Java Desktop System" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "Agosto de 2004" >
-  <!ENTITY app "<application>Examinador del sistema de archivos</application>" >
-  <!ENTITY appname "Examinador del sistema de archivos " >
-]><!--
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="es"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>Manual de la aplicaci&oacute;n de escritorio &appname; V&manrevision;</subtitle> <copyright>
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher>
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup>
-		<author><firstname>&author1;</firstname> <surname>&author2;</surname> <affiliation>
-			 <orgname>&publisher;</orgname>
-		  </affiliation>  </author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>&appname; Manual de la aplicaci&oacute;n de escritorio V&manrevision;</revnumber> <date>&date;</date> <revdescription>
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo> Este manual describe la versi&oacute;n &appversion; de &appname;.</releaseinfo>  <releaseinfo></releaseinfo>  <legalnotice><title>Comentarios</title>  <para>Para enviar comentarios, siga las instrucciones de <ulink url="ghelp:gnome-feedback" type="help">Feedback Page</ulink>.  </para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>comando fsexam</primary></indexterm> <indexterm><primary>Aplicaci&oacute;n de escritorio Examinador del sistema de archivos</primary></indexterm>  <sect1 id="fsexam-intro"><title>Introducci&oacute;n</title>  <para>El &app; permite convertir el nombre de un archivo, o el contenido de un archivo de texto sin formato, de una codificaci&oacute;n de caracteres antigua a la codificaci&oacute;n UTF-8.  </para>
-       <note>
-         <para>La codificaci&oacute;n de caracteres interna predeterminada de Sun Java Desktop System es UTF-8; el entorno nacional UTF-8 constituye el entorno nacional predeterminado. A menos que se conviertan, los archivos que tengan una codificaci&oacute;n de caracteres antigua se muestran en pantalla como una serie de signos ininteligibles.  </para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>Procedimientos iniciales</title>  <sect2 id="fsexam-to-start"><title>Para iniciar &appname;</title> <para>Para iniciar el &app;, siga uno de estos procedimientos: </para>
-                <variablelist>
-                <varlistentry><term>Men&uacute;</term> <listitem>
-                <para>Haga clic en <guibutton>Lanzador</guibutton>; a continuaci&oacute;n, seleccione <menuchoice><guimenu>Aplicaciones</guimenu><guisubmenu>Utilidades</guisubmenu><guimenuitem>Examinador del sistema de archivos</guimenuitem></menuchoice>.  </para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>L&iacute;nea de &oacute;rdenes</term> <listitem>
-                <para>Ejecute la orden siguiente: <userinput>fsexam</userinput> </para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>Al iniciar &appname;</title> <para>Al iniciar el &app;, aparece la ventana siguiente. </para>
-
-                <figure id="fsexam-window"><title>Ventana de &appname;</title>  <screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>Muestra la ventana principal fsexam.</phrase> </textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>La ventana del &app; contiene los elementos siguientes:  </para>
-                <variablelist>
-                  <varlistentry><term>Barra de men&uacute;s</term> <listitem>
-                                <para>Los men&uacute;s contienen todas las &oacute;rdenes necesarias para trabajar con archivos en el &app;. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>&Aacute;rea de visualizaci&oacute;n</term>  <listitem>
-                                <para>El &aacute;rea de visualizaci&oacute;n muestra el contenido del directorio actual.  </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Barra de estado</term> <listitem>
-                                <para>La barra de estado muestra informaci&oacute;n relativa a la actividad actual del &app;. </para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>Cuando se hace clic con el bot&oacute;n derecho del rat&oacute;n en la ventana de &app;, la aplicaci&oacute;n muestra un men&uacute; emergente. El men&uacute; emergente contiene los comandos m&aacute;s habituales.  </para>
-
-      <para>Este manual informa sobre las funciones de la barra de men&uacute;s.  </para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>Utilizaci&oacute;n</title>  <sect2 id="fsexam-select"><title>Para seleccionar un archivo o un directorio</title>  <para>Seleccione <menuchoice><guimenu>Archivo</guimenu><guimenuitem>Abrir</guimenuitem></menuchoice>; a continuaci&oacute;n, elija el archivo o el directorio cuya codificaci&oacute;n de caracteres desee cambiar.  </para>
-		<para>Si selecciona un directorio, en el &aacute;rea de visualizaci&oacute;n se muestran todos los subdirectorios y archivos de dicho subdirectorio.  </para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>Para convertir el nombre de un archivo o directorio</title> <para>Siga estos pasos:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Seleccione el archivo o directorio, como se describe en <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Seleccione <menuchoice><guimenu>Editar</guimenu><guimenuitem>Convertir nombre de archivo</guimenuitem></menuchoice>. </para>
-                    <para>De forma predeterminada, se muestra el cuadro de di&aacute;logo de <guilabel>conversi&oacute;n de nombres del Examinador del sistema de archivos</guilabel>. Si desea informaci&oacute;n sobre c&oacute;mo mostrar u ocultar el cuadro de di&aacute;logo de <guilabel>conversi&oacute;n de nombres del Examinador del sistema de archivos</guilabel>, consulte <xref linkend="fsexam-prefs"/>. </para>
-                    <para>El cuadro de di&aacute;logo de <guilabel>conversi&oacute;n de nombres del Examinador del sistema de archivos</guilabel> presenta una lista de las codificaciones de caracteres que el &app; puede usar para convertir el nombre del archivo. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Seleccione una codificaci&oacute;n. Despu&eacute;s, haga clic en <guibutton>Aceptar</guibutton>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Si el &app; cambia correctamente el nombre del archivo, la barra de estado muestra el nombre de la codificaci&oacute;n de caracteres antigua.  </para>
-		<para>Si la conversi&oacute;n no se lleva a cabo correctamente, la barra de estado muestra un mensaje de error.  </para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>Para convertir el contenido de un archivo</title> <para>Siga estos pasos:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Seleccione el archivo, como se describe en <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Elija <menuchoice><guimenu>Editar</guimenu><guimenuitem>Convertir contenido</guimenuitem></menuchoice>. </para>
-                    <para>La ventana de <guilabel>conversi&oacute;n de contenido del Examinador del sistema de archivos</guilabel> muestra el contenido convertido del archivo. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Si desea aceptar la conversi&oacute;n efectuada y sobrescribir el archivo original por el contenido que se ha convertido, haga clic en <guibutton>Aceptar</guibutton>. </para>
-                    <para>Para anular la conversi&oacute;n, cierre la ventana de <guilabel>conversi&oacute;n de contenido del Examinador del sistema de archivos</guilabel>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Si el &app; convierte correctamente el contenido del archivo, en la barra de estado aparece el texto siguiente: <screen>Contenido de archivo - convertir de <replaceable>codificaci&oacute;n_original</replaceable></screen>  </para>
-		<para>Si la conversi&oacute;n no se lleva a cabo correctamente, la barra de estado muestra un mensaje de error.  </para>
-		<note>
-		  <para>El &app; s&oacute;lo puede convertir el contenido de un archivo sin formato. El &app; utiliza el comando <command>file</command> para comprobar si el archivo activo es de texto sin formato. Si la salida de comandos <command>file</command> no est&aacute; disponible, el &app; muestra el mensaje de error siguiente: <screen>error popen, int&eacute;ntelo m&aacute;s tarde</screen>  </para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>Para obtener una vista previa del contenido de un archivo</title> <para>Siga estos pasos:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Seleccione el archivo, tal como se describe en <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Elija <menuchoice><guimenu>Editar</guimenu><guimenuitem>Previsualizar contenido</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Si el &app; obtiene sin problemas una vista previa del contenido, una ventana emergente muestra la primera parte del archivo. Si desea cerrar la ventana, haga clic en la ventana emergente.  </para>
-		<para>Si no se puede obtener una vista previa, la barra de estado muestra un mensaje de error.  </para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>Para deshacer la &uacute;ltima acci&oacute;n</title>  <para>Elija <menuchoice><guimenu>Editar</guimenu><guimenuitem>Deshacer</guimenuitem></menuchoice>.  </para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>Para restaurar el archivo original</title> <para>Siga estos pasos:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Seleccione el archivo, como se describe en <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Elija <menuchoice><guimenu>Editar</guimenu><guimenuitem>Restaurar archivo original</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>El &app; restaura el contenido del archivo original en un archivo que tiene el nombre original del archivo.  </para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>Para mostrar el panel del informe</title> <para>Elija <menuchoice><guimenu>Ver</guimenu><guimenuitem>Panel de informe</guimenuitem></menuchoice>.  </para>
-		<para>El panel del informe muestra el nombre del directorio, as&iacute; como una lista de archivos convertidos con los correspondientes nombres de codificaci&oacute;n de caracteres originales.  </para>
-		<para>Al comienzo de cada l&iacute;nea, <literal>[<replaceable>X</replaceable>]</literal> indica la acci&oacute;n que ha efectuado el &app;, como se detalla a continuaci&oacute;n: </para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>Descripci&oacute;n</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>Convertir contenido de archivo.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>Convertir nombre de archivo.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>Restaurar archivo original.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>Deshacer conversi&oacute;n de contenido de archivo.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>Deshacer conversi&oacute;n de nombre de archivo.</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>Para ocultar el panel del informe, elija de nuevo <menuchoice><guimenu>Ver</guimenu><guimenuitem>Panel de informe</guimenuitem></menuchoice>.  </para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>Preferencias</title> <para>Para configuarar &app;, elija <menuchoice><guimenu>Editar</guimenu><guimenuitem>Preferencias</guimenuitem></menuchoice>. Se muesta el cuadro de di&aacute;logo de <guilabel>preferencias del Examinador del sistema de archivos</guilabel>.  </para>
-
-        <variablelist>
-          <varlistentry><term><guilabel>Subcarpeta</guilabel> </term> <listitem>
-                  <para>Seleccione la opci&oacute;n <guilabel>Modo recursivo</guilabel> para especificar que el &app; convierta los nombres de todos los archivos y subdirectorios que contenga el directorio seleccionado. </para>
-                  <note><para>El &app; no convierte de forma recurrente el contenido de un directorio.  </para></note>
-            </listitem>
-          </varlistentry>
-          <varlistentry><term><guilabel>Intervenci&oacute;n de usuario</guilabel> </term> <listitem>
-                  <para>Seleccione la opci&oacute;n <guilabel>Conversi&oacute;n autom&aacute;tica</guilabel> para especificar que el &app; utilice la primera codificaci&oacute;n de caracteres antigua factible que figure en la <guilabel>Lista de codificaci&oacute;n</guilabel>, a fin de que convierta los nombres de los archivos y subdirectorios a la codificaci&oacute;n UTF-8. Si no selecciona esta opci&oacute;n, &app; muestra el cuadro de di&aacute;logo de <guilabel>conversi&oacute;n de nombres del Examinador del sistema de archivos</guilabel>, como se describe en <xref linkend="fsexam-convert-filename"/>.  </para>
-            </listitem>
-          </varlistentry>
-          <varlistentry><term><guilabel>Lista de codificaci&oacute;n</guilabel> </term> <listitem>
-                  <para>Muestra una lista de codificaciones de caracteres antiguas que hay para el idioma actual. Haga clic en <guibutton>Arriba</guibutton> para desplazar una codificaci&oacute;n a la parte superior de la lista. Haga clic en <guibutton>Abajo</guibutton> para desplazar una codificaci&oacute;n a la parte inferior de la lista. </para>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/fr/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = fr
-omffile = fsexam-fr.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/fr/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/fr/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/fr/fsexam-fr.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>  <!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Équipe de documentation de Sun Java Desktop System  </creator>
-    <maintainer>Équipe de documentation de Sun Java Desktop System  </maintainer>
-    <title>Contrôleur de système de fichiers  </title>    
-    <date>28/06/2004  </date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>Manuel de l'utilisateur de l'application de bureau Contrôleur de système de fichiers  </description>
-    <type>guide de l'utilisateur  </type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="fr"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/fr/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-<?xml version="1.0"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "&Eacute;quipe de documentation Java Desktop System" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "Ao&ucirc;t 2004" >
-  <!ENTITY app "<application>Contr&ocirc;leur de syst&egrave;me de fichiers</application>" >
-  <!ENTITY appname "Contr&ocirc;leur de syst&egrave;me de fichiers " >
-]><!--
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="fr"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>&appname; Manuel de l'application de bureau V&manrevision;</subtitle> <copyright>
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher>
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup>
-		<author><firstname>&author1;</firstname> <surname>&author2;</surname> <affiliation>
-			 <orgname>&publisher;</orgname>
-		  </affiliation>  </author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>Manuel de l'application de bureau &appname; V&manrevision;</revnumber> <date>&date;</date> <revdescription>
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo> Le pr&eacute;sent manuel fournit une description de la version &appversion; de &appname;.</releaseinfo> <releaseinfo></releaseinfo>  <legalnotice><title>Votre avis</title>  <para>Si vous souhaitez nous faire part de vos commentaires, suivez les instructions de la <ulink url="ghelp:gnome-feedback" type="help">Feedback Page</ulink>.  </para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>fsexam, commande</primary></indexterm> <indexterm><primary>Contr&ocirc;leur de syst&egrave;me de fichiers, application de bureau</primary></indexterm>  <sect1 id="fsexam-intro"><title>Introduction</title>  <para>Le &app; permet de convertir au format UTF-8 le codage de caract&egrave;res d'un nom de fichier ou le contenu d'un fichier en texte simple.  </para>
-       <note>
-         <para>Le codage de caract&egrave;res interne par d&eacute;faut de Java Desktop System est le codage UTF-8. Le param&egrave;tre r&eacute;gional par d&eacute;faut est UTF-8. Sans cette conversion, le texte des fichiers utilisant un ancien codage de caract&egrave;res sera incompr&eacute;hensible.  </para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>D&eacute;marrage</title>  <sect2 id="fsexam-to-start"><title>Lancement de &appname;</title> <para>Vous pouvez d&eacute;marrer le &app; de l'une des fa&ccedil;ons suivantes : </para>
-                <variablelist>
-                <varlistentry><term>Menu</term>  <listitem>
-                <para>Cliquez sur <guibutton>Lancer</guibutton>, puis s&eacute;lectionnez <menuchoice><guimenu>Applications</guimenu><guisubmenu>Utilitaires</guisubmenu><guimenuitem>Contr&ocirc;leur de syst&egrave;me de fichiers</guimenuitem></menuchoice>.  </para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>Ligne de commande</term> <listitem>
-                <para>Ex&eacute;cutez la commande suivante : <userinput>fsexam</userinput> </para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>Au lancement de &appname;</title> <para>Losrque vous lancez le &app;, la fen&ecirc;tre suivante s'ouvre : </para>
-
-                <figure id="fsexam-window"><title>Fen&ecirc;tre &appname;</title>  <screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>Affiche la fen&ecirc;tre principale de la commande fsexam.</phrase> </textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>La fen&ecirc;tre &app; contient les &eacute;l&eacute;ments suivants :   </para>
-                <variablelist>
-                  <varlistentry><term>Barre de menu</term> <listitem>
-                                <para>Les menus de la barre de menus contiennent toutes les commandes n&eacute;cessaires &agrave; la manipulation des fichiers dans &app;. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Zone d'affichage</term>  <listitem>
-                                <para>La zone d'affichage affiche le contenu du r&eacute;pertoire actif.  </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Barre d'&eacute;tat</term> <listitem>
-                                <para>La barre d'&eacute;tat affiche les informations relatives &agrave; l'activit&eacute; actuelle du &app;. </para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>Lorsque vous cliquez avec le bouton droit dans la fen&ecirc;tre de &app;, l'application affiche un menu contextuel. Ce menu contextuel contient les commandes plus couramment utilis&eacute;es.  </para>
-
-      <para>Ce manuel d&eacute;crit les fonctions de la barre de menus.  </para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>Utilisation</title>  <sect2 id="fsexam-select"><title>S&eacute;lection d'un fichier ou d'un r&eacute;pertoire</title>  <para>Choisissez <menuchoice><guimenu>Fichier</guimenu><guimenuitem>Ouvrir</guimenuitem></menuchoice>, puis s&eacute;lectionnez le fichier ou le r&eacute;pertoire dont vous souhaitez modifier le codage de caract&egrave;res.  </para>
-		<para>Si vous s&eacute;lectionnez un r&eacute;pertoire, tous les fichiers et sous-r&eacute;pertoires qu'il contient apparaissent dans la zone d'affichage.  </para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>Conversion du nom d'un fichier ou d'un r&eacute;pertoire</title> <para>Proc&eacute;dez comme suit :</para>
-                <orderedlist>
-                  <listitem>
-                    <para>S&eacute;lectionnez le fichier ou le r&eacute;pertoire, comme d&eacute;crit dans <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Choisissez <menuchoice><guimenu>&Eacute;dition</guimenu><guimenuitem>Convertir le nom de fichier</guimenuitem></menuchoice>. </para>
-                    <para>Par d&eacute;faut, la bo&icirc;te de dialogue <guilabel>Conversion du nom du contr&ocirc;leur de fichiers</guilabel> s'affiche. Pour plus d'informations sur l'affichage ou le masquage de la bo&icirc;te de dialogue <guilabel>Conversion du nom du contr&ocirc;leur de syst&egrave;me de fichiers</guilabel>, consultez <xref linkend="fsexam-prefs"/>. </para>
-                    <para>La bo&icirc;te de dialogue <guilabel>Conversion du nom du contr&ocirc;leur de fichiers</guilabel> affiche une liste de codages de caract&egrave;res que le &app; peut utiliser pour convertir le nom du fichier. </para>
-                  </listitem>
-                  <listitem>
-                    <para>S&eacute;lectionnez un codage et cliquez sur <guibutton>OK</guibutton>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Si le &app; renomme correctement le fichier, la barre d'&eacute;tat affiche le nom de l'ancien codage de caract&egrave;res.  </para>
-		<para>Si la conversion &eacute;choue, un message d'erreur appara&icirc;t dans la barre d'&eacute;tat.  </para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>Conversion du contenu d'un fichier</title> <para>Proc&eacute;dez comme suit :</para>
-                <orderedlist>
-                  <listitem>
-                    <para>S&eacute;lectionnez le fichier, comme d&eacute;crit dans <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Choisissez <menuchoice><guimenu>&Eacute;dition</guimenu><guimenuitem>Convertir le contenu</guimenuitem></menuchoice>. </para>
-                    <para>La fen&ecirc;tre <guilabel>Conversion du contenu du contr&ocirc;leur de syst&egrave;me de fichiers</guilabel> affiche le contenu du fichier apr&egrave;s conversion. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Pour accepter cette conversion et remplacer le fichier d'origine par celui dont le contenu a &eacute;t&eacute; converti, cliquez sur <guibutton>OK</guibutton>. </para>
-                    <para>Pour annuler la conversion, fermez la fen&ecirc;tre <guilabel>Conversion du contenu du contr&ocirc;leur de syst&egrave;me de fichiers</guilabel>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Si le &app; convertit correctement le contenu du fichier, la barre d'&eacute;tat affiche le texte suivant : <screen>Contenu du fichier : convertir depuis <replaceable>codage_origine</replaceable></screen>  </para>
-		<para>Si la conversion &eacute;choue, un message d'erreur appara&icirc;t dans la barre d'&eacute;tat.  </para>
-		<note>
-		  <para>Le &app; peut uniquement convertir le contenu de fichiers en texte simple. Il utilise la commande <command>file</command> pour v&eacute;rifier que le fichier actuel est bien au format texte simple. Si la sortie de la commande <command>file</command> n'est pas disponible, le message d'erreur suivant appara&icirc;t : <screen>Erreur popen, r&eacute;essayez</screen>  </para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>Aper&ccedil;u du contenu d'un fichier</title> <para>Proc&eacute;dez comme suit :</para>
-                <orderedlist>
-                  <listitem>
-                    <para>S&eacute;lectionnez le fichier, comme d&eacute;crit dans <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Choisissez <menuchoice><guimenu>&Eacute;dition</guimenu><guimenuitem>Pr&eacute;visualiser le contenu</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Si le &app; affiche correctement le contenu du fichier, une fen&ecirc;tre contextuelle contenant la premi&egrave;re partie du fichier appara&icirc;t. Pour fermer cette fen&ecirc;tre, cliquez dessus.  </para>
-		<para>Si la pr&eacute;visualisation n'est pas possible, un message d'erreur appara&icirc;t dans la barre d'&eacute;tat.  </para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>Annulation de la derni&egrave;re action</title>  <para>Choisissez <menuchoice><guimenu>&Eacute;dition</guimenu><guimenuitem>Annuler</guimenuitem></menuchoice>.  </para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>Restauration du fichier d'origine</title> <para>Proc&eacute;dez comme suit :</para>
-                <orderedlist>
-                  <listitem>
-                    <para>S&eacute;lectionnez le fichier, comme d&eacute;crit dans <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Choisissez <menuchoice><guimenu>&Eacute;dition</guimenu><guimenuitem>Restaurer le fichier d'origine</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Le &app; restaure le contenu du fichier d'origine en cr&eacute;ant un fichier portant le nom du fichier d'origine.  </para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>Affichage du volet du rapport</title> <para>Choisissez <menuchoice><guimenu>Affichage</guimenu><guimenuitem>Volet du rapport</guimenuitem></menuchoice>.  </para>
-		<para>Le volet du rapport affiche le nom du r&eacute;pertoire et une liste des fichiers convertis accompagn&eacute;s des anciens noms de codage de caract&egrave;res correspondants.  </para>
-		<para>Au d&eacute;but de chaque ligne, <literal>[<replaceable>X</replaceable>]</literal> indique l'action effectu&eacute;e par le &app;, comme suit : </para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>Description</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>Convertit le contenu du fichier.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>Convertit le nom du fichier.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>Restaure le fichier d'origine.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>Annule la conversion du contenu du fichier.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>Annule la conversion du nom du fichier.</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>Pour masquer le volet du rapport, choisissez de nouveau <menuchoice><guimenu>Affichage</guimenu><guimenuitem>Volet du rapport</guimenuitem></menuchoice>.  </para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>Pr&eacute;f&eacute;rences</title> <para>Pour configurer le &app;, choisissez <menuchoice><guimenu>&Eacute;dition</guimenu> <guimenuitem>Pr&eacute;f&eacute;rences</guimenuitem> </menuchoice>. La bo&icirc;te de dialogue <guilabel>Pr&eacute;f&eacute;rences du contr&ocirc;leur de syst&egrave;me de fichiers</guilabel> s'affiche.  </para>
-
-        <variablelist>
-          <varlistentry><term><guilabel>Sous-dossier</guilabel> </term> <listitem>
-                  <para>S&eacute;lectionnez l'option <guilabel>Mode r&eacute;cursif</guilabel> pour indiquer que le &app; convertit les noms de tous les fichiers et sous-r&eacute;pertoires du r&eacute;pertoire s&eacute;lectionn&eacute;. </para>
-                  <note><para>Le &app; ne convertit pas le contenu d'un r&eacute;pertoire de mani&egrave;re r&eacute;cursive.  </para></note>
-            </listitem>
-          </varlistentry>
-          <varlistentry><term><guilabel>Intervention de l'utilisateur</guilabel> </term> <listitem>
-                  <para>S&eacute;lectionnez l'option <guilabel>Conversion automatique</guilabel> pour indiquer au &app; d'utiliser le premier codage de caract&egrave;res appropri&eacute; dans la <guilabel>Liste de codages</guilabel> anciens pour convertir au format UTF-8 les noms des fichiers et sous-r&eacute;pertoires. Si vous ne s&eacute;lectionnez pas cette option, &app; affiche la bo&icirc;te de dialogue <guilabel>Conversion du nom du contr&ocirc;leur de syst&egrave;me de fichiers</guilabel>, comme d&eacute;crit dans <xref linkend="fsexam-convert-filename"/>.  </para>
-            </listitem>
-          </varlistentry>
-          <varlistentry><term><guilabel>Liste de codages</guilabel> </term> <listitem>
-                  <para>Affiche une liste des codages de caract&egrave;res existants disponibles pour la langue utilis&eacute;e. Cliquez sur <guibutton>Monter</guibutton> pour d&eacute;placer un codage vers le haut dans la liste. Cliquez sur <guibutton>Descendre</guibutton> pour d&eacute;placer un codage vers le bas dans la liste. </para>
-            </listitem>
-          </varlistentry>
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/it/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = it
-omffile = fsexam-it.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/it/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/it/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/it/fsexam-it.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>  <!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Sun Java Desktop System Documentation Team  </creator>
-    <maintainer>Sun Java Desktop System Documentation Team  </maintainer>
-    <title>Analizzatore del file system  </title>    
-    <date>2004-08-26  </date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>Manuale utente dell'applicazione del desktop Analizzatore del file system.  </description>
-    <type>user's guide </type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="it"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/it/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-<?xml version="1.0"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "Java Desktop System Documentation Team" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "Agosto 2004" >
-  <!ENTITY app "<application>Analizzatore del file system</application>" >
-  <!ENTITY appname "Analizzatore del file system " >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="it"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle> Manuale dell'applicazione del desktop &appname; V&manrevision;</subtitle> <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup> 
-		<author><firstname>&author1;</firstname> <surname>&author2;</surname> <affiliation> 
-			 <orgname>&publisher;</orgname>
-		  </affiliation>  </author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber> Manuale dell'applicazione del desktop &appname; V&manrevision;</revnumber> <date>&date;</date> <revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo> Questo manuale descrive la versione &appversion; di &appname;.</releaseinfo> <releaseinfo></releaseinfo>  <legalnotice><title>Commenti</title>  <para>Per inviare commenti, seguire le istruzioni della <ulink url="ghelp:gnome-feedback" type="help">Pagina dei commenti</ulink>.  </para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>fsexam, comando</primary></indexterm> <indexterm><primary>Analizzatore del file system, applicazione del desktop</primary></indexterm>  <sect1 id="fsexam-intro"><title>Introduzione</title>  <para>L'&app; permette di convertire il nome di un file, o il contenuto di un file di testo, dalla codifica di caratteri originale alla codifica UTF-8.  </para>
-       <note>
-         <para>Le impostazioni interne standard di Sun Java Desktop System adottano la codifica UTF-8 e la versione locale UTF-8. Se non convertiti, i file con una codifica di caratteri differente non vengono visualizzati correttamente.  </para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>Operazioni di base</title>  <sect2 id="fsexam-to-start"><title>Avviare l'&appname;</title> <para>Sono disponibili i seguenti metodi per avviare l'&app;: </para>
-                <variablelist>
-                <varlistentry><term>Menu</term> <listitem>
-                <para>Fare clic su <guibutton>Apri</guibutton>, quindi scegliere <menuchoice><guimenu>Applicazioni</guimenu><guisubmenu>Utilit&agrave;</guisubmenu><guimenuitem>Analizzatore del file system</guimenuitem></menuchoice>.  </para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>Riga di comando</term> <listitem>
-                <para>Eseguire il comando seguente: <userinput>fsexam</userinput> </para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>Finestra di avvio dell'&appname;</title> <para>All'avvio dell'&app; viene visualizzata la finestra seguente: </para>
-
-                <figure id="fsexam-window"><title>Finestra dell'&appname;</title>  <screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>Mostra la finestra principale di fsexam. </phrase> </textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>La finestra dell'&app; contiene i seguenti elementi:  </para>
-                <variablelist>
-                  <varlistentry><term>Barra dei menu</term> <listitem>
-                                <para>I menu della barra dei menu contengono tutti i comandi necessari per le operazioni sui file nell'&app;. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Area di visualizzazione</term>  <listitem>
-                                <para>L'area di visualizzazione mostra il contenuto della directory attiva.  </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Barra di stato</term> <listitem>
-                                <para>La barra di stato mostra informazioni sull'attivit&agrave; in corso dell'&app;. </para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>Facendo clic con il pulsante destro del mouse nella finestra dell'&app;, l'applicazione visualizza un menu a comparsa. Il menu a comparsa contiene i comandi di uso pi&ugrave; comune.  </para>
-
-      <para>Questo manuale documenta le funzionalit&agrave; disponibili dalla barra dei menu.  </para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>Uso</title>  <sect2 id="fsexam-select"><title>Selezionare un file o una directory</title>  <para>Scegliere <menuchoice><guimenu>File</guimenu><guimenuitem>Apri</guimenuitem></menuchoice>, quindi selezionare il file o la directory di cui si desidera modificare la codifica dei caratteri.  </para>
-		<para>Selezionando una directory, tutti i file e le sottodirectory al suo interno vengono rappresentati nell'area di visualizzazione.  </para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>Convertire il nome di un file o di una directory</title> <para>Procedere come segue:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Selezionare il file o la directory come descritto in <xref linkend="fsexam-select"/> </para>
-                  </listitem>
-                  <listitem>
-                    <para>Scegliere <menuchoice><guimenu>Modifica</guimenu><guimenuitem>Converti nome del file</guimenuitem></menuchoice>. </para>
-                    <para>Nella configurazione predefinita, viene aperta la finestra di dialogo <guilabel>Conversione dei nomi dell'Analizzatore del file system</guilabel>. Per informazioni su come visualizzare o nascondere questa finestra di dialogo, vedere <xref linkend="fsexam-prefs"/>. </para>
-                    <para>La finestra di dialogo <guilabel>Conversione dei nomi dell'Analizzatore del file system</guilabel> mostra un elenco delle codifiche di caratteri che l'&app; pu&ograve; utilizzare per convertire il nome del file. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Selezionare una codifica e fare clic su <guibutton>OK</guibutton>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Se l'&app; rinomina correttamente il file, la barra di stato mostra il nome della codifica di caratteri di origine.  </para>
-		<para>Se la conversione non riesce, la barra di stato mostra un messaggio di errore.  </para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>Convertire il contenuto di un file</title> <para>Procedere come segue:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Selezionare il file come descritto in <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Scegliere <menuchoice><guimenu>Modifica</guimenu><guimenuitem>Converti contenuto</guimenuitem></menuchoice>. </para>
-                    <para>La finestra <guilabel>Conversione del contenuto dell'Analizzatore del file system</guilabel> mostra il contenuto convertito del file. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Per accettare la conversione e sovrascrivere il file originale con il contenuto convertito, fare clic su <guibutton>OK</guibutton>. </para>
-                    <para>Per annullare la conversione, chiudere la finestra <guilabel>Conversione del contenuto dell'Analizzatore del file system</guilabel>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Se l'&app; converte correttamente il contenuto del file, la barra di stato mostra il testo seguente: <screen>Contenuto del file - conversione da <replaceable>codifica_originale</replaceable></screen>  </para>
-		<para>Se la conversione non riesce, la barra di stato mostra un messaggio di errore.  </para>
-		<note>
-		  <para>L'&app; pu&ograve; convertire solo il contenuto di un file di testo. L'&app; utilizza il comando <command>file</command> per verificare che il contenuto del file sia in formato testo. Se l'output del comando <command>file</command> non &egrave; disponibile, l'&app; visualizza il seguente messaggio di errore: <screen>Errore di popen, riprovare.</screen>  </para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>Visualizzare in anteprima il contenuto di un file</title> <para>Procedere come segue:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Selezionare il file come descritto in <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Scegliere <menuchoice><guimenu>Modifica</guimenu><guimenuitem>Anteprima contenuto</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Se l'&app; riesce a visualizzare correttamente l'anteprima del contenuto, la prima parte del file viene visualizzata in una finestra a comparsa. Fare clic sulla finestra a comparsa per chiudere la finestra.  </para>
-		<para>Se l'anteprima non riesce, la barra di stato mostra un messaggio di errore.  </para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>Annullare l'ultima operazione</title>  <para>Scegliere <menuchoice><guimenu>Modifica</guimenu><guimenuitem>Annulla</guimenuitem></menuchoice>.  </para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>Ripristinare il file originale</title> <para>Procedere come segue:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Selezionare il file come descritto in <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Scegliere <menuchoice><guimenu>Modifica</guimenu><guimenuitem>Ripristina file originale</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>L'&app; ripristina il contenuto originale del file in un file con il nome originale.  </para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>Visualizzare il riquadro del rapporto</title> <para>Scegliere <menuchoice><guimenu>Visualizza</guimenu><guimenuitem>Riquadro rapporto</guimenuitem></menuchoice>.  </para>
-		<para>Il riquadro del rapporto mostra il nome della directory e un elenco dei file convertiti con i rispettivi nomi nella codifica di caratteri originale.  </para>
-		<para>All'inizio di ogni riga, <literal>[<replaceable>X</replaceable>]</literal> indica l'azione eseguita dall'&app; come segue: </para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>Descrizione</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>Converte il contenuto del file.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>Converte il nome del file.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>Ripristina il file originale.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>Annulla la conversione del contenuto del file.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>Annulla la conversione del nome del file.</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>Per nascondere il riquadro del rapporto, scegliere nuovamente <menuchoice><guimenu>Visualizza</guimenu><guimenuitem>Riquadro rapporto</guimenuitem></menuchoice>.  </para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>Preferenze</title> <para>Per configurare l'&app;, scegliere <menuchoice><guimenu>Modifica</guimenu><guimenuitem>Preferenze</guimenuitem></menuchoice>. Viene aperta la finestra di dialogo <guilabel>Preferenze dell'Analizzatore del file system</guilabel>.  </para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>Sottocartella</guilabel> </term> <listitem>
-                  <para>Selezionare l'opzione <guilabel>Modalit&agrave; ricorsiva</guilabel> per estendere la conversione ai nomi dei file e delle sottodirectory presenti nella directory selezionata. </para>
-                  <note><para>L'&app; non converte in modo ricorsivo il contenuto delle directory.  </para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>Intervento dell'utente</guilabel> </term> <listitem>
-                  <para>Selezionare l'opzione <guilabel>Conversione automatica</guilabel> per specificare l'utilizzo della prima codifica di caratteri appropriata che compare nell'<guilabel>Elenco di codifica</guilabel> per convertire i nomi dei file e delle sottodirectory nella codifica UTF-8. Se questa opzione non viene selezionata, l'&app; mostra la finestra di dialogo <guilabel>Conversione dei nomi dell'Analizzatore del file system</guilabel>, come descritto in <xref linkend="fsexam-convert-filename"/>.  </para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>Elenco di codifica</guilabel></term> <listitem>
-                  <para>Mostra l'elenco delle codifiche di caratteri originali disponibili per la lingua attiva. Fare clic su <guibutton>Su</guibutton> per spostare una codifica pi&ugrave; in alto nell'elenco. Fare clic su <guibutton>Gi&ugrave;</guibutton> per spostare una codifica pi&ugrave; in basso nell'elenco. </para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/ja/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = ja
-omffile = fsexam-ja.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/ja/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/ja/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/ja/fsexam-ja.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?><!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Sun Java Desktop System マニュアル制作チーム</creator>
-    <maintainer>Sun Java Desktop System マニュアル制作チーム</maintainer>
-    <title>ファイルシステム検査器</title>    
-    <date>2004 年 8 月 26 日</date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>ファイルシステム検査器デスクトップアプリケーション用ユーザーマニュアル</description>
-    <type>ユーザーズガイド</type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="ja"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/ja/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-<?xml version="1.0"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun " >
-  <!ENTITY author2 "Java Desktop System マニュアル制作チーム" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "2004 年 8 月" >
-  <!ENTITY app "<application>ファイルシステム検査器</application>" >
-  <!ENTITY appname "ファイルシステム検査器" >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="ja"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>&appname; デスクトップアプリケーションのマニュアル V&manrevision;</subtitle> <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup> 
-		<author><firstname>&author1;</firstname> <surname>&author2;</surname> <affiliation> 
-			 <orgname>&publisher;</orgname>
-		  </affiliation></author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>&appname; デスクトップアプリケーションのマニュアル V&manrevision;</revnumber> <date>&date;</date><revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo>このマニュアルでは、&appname; のバージョン &appversion; について説明します。</releaseinfo><releaseinfo></releaseinfo><legalnotice><title>Feedback</title><para>お気づきの点があれば、以下のページからご連絡ください。 <ulink url="ghelp:gnome-feedback" type="help">Feedback Page</ulink>.  </para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>fsexam コマンド</primary></indexterm> <indexterm><primary>ファイルシステム検査器デスクトップアプリケーション</primary></indexterm><sect1 id="fsexam-intro"><title>はじめに</title><para>&app; では、従来の文字エンコードによるファイル名やプレーンテキストファイルの内容を、UTF-8 に変換できます。</para>
-       <note>
-         <para>Sun Java Desktop System のデフォルトの内部文字エンコードは UTF-8 です。また、デフォルトのロケールは UTF-8 ロケールです。従来の文字エンコードによるファイルは、変換しないと文字化けします。</para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>基本的な使用方法</title><sect2 id="fsexam-to-start"><title>&appname; の起動</title><para>以下の方法で &app; を起動してください。</para>
-                <variablelist>
-                <varlistentry><term>メニュー</term><listitem>
-                <para><guibutton>「起動」</guibutton>をクリックし、 <menuchoice><guimenu>「アプリケーション」</guimenu><guisubmenu>「ユーティリティ」</guisubmenu><guimenuitem>「ファイルシステム検査器」</guimenuitem></menuchoice>を選択します。</para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>コマンドライン</term><listitem>
-                <para>次のコマンドを実行します。<userinput>fsexam</userinput></para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>&appname; の起動時</title><para>&app; の起動時には、次のウィンドウが表示されます。</para>
-
-                <figure id="fsexam-window"><title>&appname; ウィンドウ</title><screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>fsexam メインウィンドウを表示します。</phrase></textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>&app; のウィンドウには、次の要素があります。</para>
-                <variablelist>
-                  <varlistentry><term>メニューバー</term><listitem>
-                                <para>メニューバーのメニューには、&app; でのファイル操作に用いるすべてのコマンドが用意されています。</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>表示区画</term><listitem>
-                                <para>表示領域には、現在のディレクトリの内容が表示されます。</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>ステータスバー</term><listitem>
-                                <para>ステータスバーには、&app; の現在のアクティビティに関する情報が表示されます。</para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>&app; ウィンドウ内で右クリックすると、ポップアップメニューが表示されます。ポップアップメニューには、もっともよく使用するコマンドが含まれています。</para>
-
-      <para>このマニュアルは、メニューバーの機能を説明しています。</para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>使い方</title><sect2 id="fsexam-select"><title>ファイルまたはディレクトリを選択するには</title><para><menuchoice><guimenu>「ファイル」</guimenu><guimenuitem>「開く」</guimenuitem></menuchoice>と選択し、文字エンコードを変更したいファイルまたはディレクトリを選択します。</para>
-		<para>ディレクトリを選択すると、そのディレクトリ内のすべてのファイルとサブディレクトリが表示領域に表示されます。</para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>ファイル名またはディレクトリ名を変換するには</title><para>次の手順を実行します。</para>
-                <orderedlist>
-                  <listitem>
-                    <para><xref linkend="fsexam-select"/>の記述に従って、ファイルまたはディレクトリを選択します。</para>
-                  </listitem>
-                  <listitem>
-                    <para><menuchoice><guimenu>「編集」</guimenu><guimenuitem>「ファイル名の変換」</guimenuitem></menuchoice>を選択します。</para>
-                    <para>デフォルトで、<guilabel>「ファイルシステム検査器の名前変換」</guilabel> ダイアログが表示されます。<guilabel>「ファイルシステム検査器の名前変換」</guilabel>ダイアログを表示または非表示にする方法については、<xref linkend="fsexam-prefs"/>を参照してください。</para>
-                    <para><guilabel>「ファイルシステム検査器の名前変換」</guilabel>ダイアログには、&app; でファイル名の変換に使用できる文字エンコードが一覧表示されます。</para>
-                  </listitem>
-                  <listitem>
-                    <para> <guibutton>「了解」</guibutton>をクリックします。</para>
-                  </listitem>
-                </orderedlist>
-		<para>&app; でファイル名が正常に変換されると、従来の文字エンコードによる名前がステータスバーに表示されます。</para>
-		<para>変換に失敗した場合は、エラーメッセージがステータスバーに表示されます。</para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>ファイルの内容を変換するには</title><para>次の手順を実行します。</para>
-                <orderedlist>
-                  <listitem>
-                    <para><xref linkend="fsexam-select"/>の記述に従って、ファイルを選択します。</para>
-                  </listitem>
-                  <listitem>
-                    <para><menuchoice><guimenu>「編集」</guimenu><guimenuitem>「内容の変換」</guimenuitem></menuchoice>を選択します。</para>
-                    <para><guilabel>「ファイルシステム検査器の名前変換」</guilabel>ウィンドウに、変換後のファイルの内容が表示されます。</para>
-                  </listitem>
-                  <listitem>
-                    <para>変換を承認し、元のファイルを変換後の内容で上書きするには、<guibutton>「了解」</guibutton>をクリックします。</para>
-                    <para>変換を中止するには、<guilabel>「ファイルシステム検査器の名前変換」</guilabel>ウィンドウを閉じます。</para>
-                  </listitem>
-                </orderedlist>
-		<para>&app; によってファイル内容が正常に変換されると、ステータスバーに次のテキストが表示されます。<screen>ファイルの内容 -  <replaceable>original_encoding</replaceable> から変換します</screen></para>
-		<para>変換に失敗した場合は、エラーメッセージがステータスバーに表示されます。</para>
-		<note>
-		  <para>&app; で変換できるのは、プレーンテキストファイルの内容だけです。&app; では、<command>file</command> コマンドを使用して、現在のファイルがプレーンテキストファイルかどうか確認できます。<command>file</command> コマンドの出力が利用できない場合は、次のエラーメッセージが表示されます。<screen>popen エラーが発生しました。もう一度やり直してください</screen></para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>ファイルの内容をプレビューするには</title><para>次の手順を実行します。</para>
-                <orderedlist>
-                  <listitem>
-                    <para><xref linkend="fsexam-select"/>の記述に従って、ファイルを選択します。</para>
-                  </listitem>
-                  <listitem>
-                    <para><menuchoice><guimenu>「編集」</guimenu><guimenuitem>「内容をプレビュー」</guimenuitem></menuchoice>と選択します。</para>
-                  </listitem>
-                </orderedlist>
-		<para>&app; でファイルの内容が正常にプレビューされると、ファイルの 1 ページ目が、ポップアップウィンドウに表示されます。ウィンドウを閉じるには、ポップアップウィンドウをクリックします。</para>
-		<para>プレビューに失敗した場合は、エラーメッセージがステータスバーに表示されます。</para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>最後の操作を元に戻すには</title><para><menuchoice><guimenu>「編集」</guimenu><guimenuitem>「元に戻す」</guimenuitem></menuchoice>を選択します。</para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>元のファイルを復元するには</title><para>次の手順を実行します。</para>
-                <orderedlist>
-                  <listitem>
-                    <para><xref linkend="fsexam-select"/>の記述に従って、ファイルを選択します。</para>
-                  </listitem>
-                  <listitem>
-                    <para><menuchoice><guimenu>「編集」</guimenu><guimenuitem>「元のファイルに戻す」</guimenuitem></menuchoice>を選択します。</para>
-                  </listitem>
-                </orderedlist>
-		<para>元のファイルの内容が、元のファイル名で復元されます。</para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>報告区画を表示するには</title><para><menuchoice><guimenu>「表示」</guimenu><guimenuitem>「報告区画」</guimenuitem></menuchoice>を選択します。</para>
-		<para>報告区画には、ディレクトリ名と、対応する従来の文字エンコード名を伴った変換済みファイルが一覧表示されます。</para>
-		<para>各行の先頭の <literal>[<replaceable>X</replaceable>]</literal> は、&app; で実行した操作を示しています。詳細は次のとおりです。</para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>説明</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>ファイルの内容の変換</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>ファイル名の変換</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>元のファイルの復元</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>ファイル内容の変換を元に戻す</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>ファイル名の変換を元に戻す</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>報告区画を非表示にするには、もう一度、<menuchoice><guimenu>「表示」</guimenu><guimenuitem>「報告区画」</guimenuitem></menuchoice>を選択します。</para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>設定</title><para>&app; を設定するには、<menuchoice><guimenu>「編集」</guimenu><guimenuitem>「設定」</guimenuitem></menuchoice>と選択します。<guilabel>「ファイルシステム検査器の設定」</guilabel>ダイアログが表示されます。</para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>サブフォルダ</guilabel> </term><listitem>
-                  <para><guilabel>「再帰モード」</guilabel>オプションを選択すると、選択したディレクトリ内のすべてのファイル名とサブディレクトリ名が変換されます。</para>
-                  <note><para>ディレクトリの内容は、再起モードで変換できません。</para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>ユーザー介入</guilabel> </term><listitem>
-                  <para><guilabel>「自動変換」</guilabel>オプションを選択すると、<guilabel>エンコード</guilabel>リスト内に最初に表示される適切な従来の文字エンコードを使用してファイル名とサブディレクトリが UTF-8 に変換されます。このオプションを選択しない場合は、<xref linkend="fsexam-convert-filename"/>の記述に従って、&app; が<guilabel>「ファイルシステム検査器の名前変換」</guilabel>ダイアログを表示します。</para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>エンコードリスト</guilabel> </term><listitem>
-                  <para>現在の言語で利用可能な、従来の文字エンコードのリストが表示されます。特定のエンコードをリスト内の上方に移動するには、<guibutton>「上」</guibutton>をクリックします。特定エンコードをリスト内の下方に移動するには、<guibutton>「下」</guibutton>をクリックします。</para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/ko/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = ko
-omffile = fsexam-ko.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/ko/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/ko/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/ko/fsexam-ko.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Sun Java Desktop System 문서 팀</creator>
-    <maintainer>Sun Java Desktop System 문서 팀</maintainer>
-    <title>파일 시스템 검사기 </title>    
-    <date>2004년 8월 26일 </date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>파일 시스템 검사기 데스크탑 응용프로그램의 사용자 설명서입니다. </description>
-    <type>사용자 설명서</type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="ko"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/ko/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,310 +0,0 @@
-<?xml version="1.0"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "Java Desktop System 문서 팀" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "2004년 8월 " >
-  <!ENTITY app "<application>파일 시스템 검사기</application>" >
-  <!ENTITY appname "파일 시스템 검사기" >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="ko"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo> 
-	 <title>&appname;</title>
-	 <subtitle>&appname; 데스크탑 응용프로그램 설명서 V&manrevision;</subtitle>
-	 <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright>
-
-	 <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher>
-	 &legal; 
-	 <authorgroup> 
-		<author> 
-		  <firstname>&author1;</firstname>
-		  <surname>&author2;</surname> 
-		  <affiliation> 
-			 <orgname>&publisher;</orgname>
-		  </affiliation>
-		</author>
-
-<!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-	 </authorgroup>
-
-
-
-
-<!-- modifying/reusing someone else's document.  If not, you can omit it. -->
-	 <revhistory>
-<!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-   		<revision> 
-		  <revnumber>&appname; 데스크탑 응용프로그램 설명서 V&manrevision;</revnumber>
-		  <date>&date;</date> 
-		  <revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher;</para>
-		  </revdescription>
-		</revision>
-	 </revhistory>
-	 <releaseinfo> 이 설명서에서는 &appversion; 버전의 &appname;에 대해 설명합니다.
-		</releaseinfo>
-	 <legalnotice> 
-		<title>피드백</title>
-		<para>
-                  피드백을 보내려면 <ulink url="ghelp:gnome-feedback" type="help">피드백 페이지</ulink>의 지시 사항을 따르십시오. 
-                </para>
-<!-- Translators may also add here feedback address for translations -->
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>fsexam 명령</primary></indexterm> <indexterm><primary>파일 시스템 검사기 데스크탑 응용프로그램</primary></indexterm> <sect1 id="fsexam-intro"><title>소개</title><para>&app;를 사용하여 파일의 이름이나 일반 텍스트 파일의 컨텐트를 기존 문자 인코딩에서 UTF-8 인코딩으로 변환할 수 있습니다. </para>
-       <note>
-         <para>Sun Java Desktop System의 기본 내부 문자 인코딩은 UTF-8 인코딩이며 기본 로케일은 UTF-8 로케일입니다. 인코딩을 변환하지 않으면 기존 문자 인코딩을 사용한 파일이 알아볼 수 없는 텍스트로 표시됩니다. </para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>시작하기</title><sect2 id="fsexam-to-start"><title>&appname;을 시작하려면</title><para>다음 방법으로 &app;을 시작할 수 있습니다. </para>
-                <variablelist>
-                <varlistentry><term>메뉴</term><listitem>
-                <para><guibutton>시작</guibutton>을 클릭한 다음 <menuchoice><guimenu>응용프로그램</guimenu><guisubmenu>유틸리티</guisubmenu><guimenuitem>파일 시스템 검사기</guimenuitem></menuchoice>를 차례로 클릭합니다. </para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>명령줄</term><listitem>
-                <para>다음 명령을 실행합니다. <userinput>fsexam</userinput></para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>&appname; 시작</title><para>&app;을 시작하면 다음 창이 표시됩니다. </para>
-
-                <figure id="fsexam-window"><title>&appname; 창</title><screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>fsexam 기본 창</phrase></textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>&app; 창은 다음 요소로 구성되어 있습니다.  </para>
-                <variablelist>
-                  <varlistentry><term>메뉴 모음</term><listitem>
-                                <para>메뉴 모음의 메뉴에는 &app;에서 파일 작업을 수행하는 데 필요한 명령이 모두 들어 있습니다. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>표시 영역</term><listitem>
-                                <para>표시 영역에는 현재 디렉토리의 컨텐트가 표시됩니다. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>상태 표시줄</term><listitem>
-                                <para>상태 표시줄에는 현재 &app; 동작에 관한 정보가 표시됩니다. </para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>&app; 창을 마우스 오른쪽 버튼으로 클릭하면 팝업 메뉴가 표시됩니다. 이 팝업 메뉴에는 자주 사용되는 명령이 포함되어 있습니다. </para>
-
-      <para>이 설명서에서는 메뉴 모음의 기능을 설명합니다.  </para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>사용법</title><sect2 id="fsexam-select"><title>파일 또는 디렉토리를 선택하려면</title><para><menuchoice><guimenu>파일</guimenu><guimenuitem>열기</guimenuitem></menuchoice>를 선택한 다음 문자 인코딩을 변경할 파일 또는 디렉토리를 선택합니다. </para>
-		<para>디렉토리를 선택하면 해당 디렉토리에 포함된 모든 파일과 하위 디렉토리가 표시 영역에 표시됩니다. </para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>파일 또는 디렉토리의 이름을 변환하려면</title><para>다음 단계를 수행하십시오.</para>
-                <orderedlist>
-                  <listitem>
-                    <para><xref linkend="fsexam-select"/>의 설명에 따라 파일 또는 디렉토리를 선택합니다. </para>
-                  </listitem>
-                  <listitem>
-                    <para><menuchoice><guimenu>편집</guimenu><guimenuitem>파일 이름 변환</guimenuitem></menuchoice>을 선택합니다. </para>
-                    <para>기본 설정되어 있는 경우 <guilabel>파일 시스템 검사기 이름 변환</guilabel> 대화 상자가 표시됩니다. <guilabel>파일 시스템 검사기 이름 변환</guilabel> 대화 상자를 표시하거나 숨기는 방법에 대한 자세한 내용은 <xref linkend="fsexam-prefs"/>을 참조하십시오. </para>
-                    <para><guilabel>파일 시스템 검사기 이름 변환</guilabel> 대화 상자에는 &app;에서 파일 이름 변환에 사용되는 문자 인코딩의 목록이 표시됩니다. </para>
-                  </listitem>
-                  <listitem>
-                    <para>인코딩을 선택한 다음 <guibutton>확인</guibutton>을 클릭합니다. </para>
-                  </listitem>
-                </orderedlist>
-		<para>&app;에서 파일 이름이 성공적으로 변경되면 상태 표시줄에 기존 문자 인코딩의 이름이 표시됩니다. </para>
-		<para>변환에 실패한 경우 상태 표시줄에 오류 메시지가 표시됩니다. </para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>파일의 내용을 변환하려면</title><para>다음 단계를 수행하십시오.</para>
-                <orderedlist>
-                  <listitem>
-                    <para><xref linkend="fsexam-select"/>의 설명에 따라 파일을 선택합니다. </para>
-                  </listitem>
-                  <listitem>
-                    <para><menuchoice><guimenu>편집</guimenu><guimenuitem>컨텐트 변환</guimenuitem></menuchoice>을 선택합니다. </para>
-                    <para><guilabel>파일 시스템 검사기 컨텐트 변환</guilabel> 창에 파일의 변환된 컨텐트가 표시됩니다. </para>
-                  </listitem>
-                  <listitem>
-                    <para>변환을 적용하고 원본 파일을 변환된 컨텐트로 겹쳐 쓰려면 <guibutton>확인</guibutton>을 클릭합니다. </para>
-                    <para>변환을 취소하려면 <guilabel>파일 시스템 검사기 컨텐트 변환</guilabel> 창을 닫습니다. </para>
-                  </listitem>
-                </orderedlist>
-		<para>&app;에서 파일 컨텐트가 성공적으로 변환되면 상태 표시줄에 다음과 같은 내용이 표시됩니다. <screen>파일 컨텐트 - <replaceable>original_encoding</replaceable></screen>에서 변환</para>
-		<para>변환에 실패한 경우 상태 표시줄에 오류 메시지가 표시됩니다. </para>
-		<note>
-		  <para>&app;에서는 일반 텍스트 파일의 컨텐트만 변환할 수 있습니다. &app;는 <command>file</command> 명령을 사용하여 현재 파일이 일반 텍스트 파일인지 확인합니다. <command>file</command> 명령의 결과를 알 수 없는 경우 &app;에 다음과 같은 오류 메시지가 표시됩니다. <screen>popen 오류입니다. 다시 시도하십시오!</screen> </para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>파일의 컨텐트를 미리 보려면</title><para>다음 단계를 수행하십시오.</para>
-                <orderedlist>
-                  <listitem>
-                    <para><xref linkend="fsexam-select"/>의 설명에 따라 파일을 선택합니다. </para>
-                  </listitem>
-                  <listitem>
-                    <para><menuchoice><guimenu>편집</guimenu><guimenuitem>컨텐트 미리 보기</guimenuitem></menuchoice>를 선택합니다. </para>
-                  </listitem>
-                </orderedlist>
-		<para>&app;에서 컨텐트 미리 보기가 성공적으로 실행된 경우 팝업 창에 파일의 첫 부분이 표시됩니다. 팝업 창을 닫으려면 창을 클릭합니다. </para>
-		<para>미리 보기에 실패한 경우 상태 표시줄에 오류 메시지가 표시됩니다. </para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>바로 앞 작업을 실행 취소하려면</title><para><menuchoice><guimenu>편집</guimenu><guimenuitem>실행 취소</guimenuitem></menuchoice>를 선택합니다. </para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>원본 파일을 복원하려면</title><para>다음 단계를 수행하십시오.</para>
-                <orderedlist>
-                  <listitem>
-                    <para><xref linkend="fsexam-select"/>의 설명에 따라 파일을 선택합니다. </para>
-                  </listitem>
-                  <listitem>
-                    <para><menuchoice><guimenu>편집</guimenu><guimenuitem>원본 파일 복원</guimenuitem></menuchoice>을 선택합니다. </para>
-                  </listitem>
-                </orderedlist>
-		<para>&app;가 원본 파일의 이름을 사용하여 원본 파일 컨텐트를 복원합니다. </para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>보고서 창을 표시하려면</title><para><menuchoice><guimenu>보기</guimenu><guimenuitem>보고서 창</guimenuitem></menuchoice>을 선택합니다. </para>
-		<para>보고서 창에 디렉토리 이름과 각 파일의 기존 문자 인코딩 이름이 나온 변환된 파일 목록이 표시됩니다. </para>
-		<para>각 줄의 앞에 있는 <literal>[<replaceable>X</replaceable>]</literal> 표시는 다음과 같이 &app;가 수행한 작업을 나타냅니다. </para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>] </para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>설명</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C] </para></entry>
-                        <entry><para>파일 컨텐트 변환 </para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F] </para></entry>
-                        <entry><para>파일 이름 변환 </para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R] </para></entry>
-                        <entry><para>원본 파일 복원 </para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC] </para></entry>
-                        <entry><para>파일 컨텐트 변환 실행 취소 </para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF] </para></entry>
-                        <entry><para>파일 이름 변환 실행 취소 </para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>보고서 창을 숨기려면 <menuchoice><guimenu>보기</guimenu><guimenuitem>보고서 창</guimenuitem></menuchoice>을 다시 선택합니다. </para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>환경 설정</title><para>&app;를 구성하려면 <menuchoice><guimenu>편집</guimenu><guimenuitem>환경 설정</guimenuitem></menuchoice>을 선택합니다. <guilabel>파일 시스템 검사기 환경 설정</guilabel> 대화 상자가 표시됩니다. </para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>하위 폴더</guilabel> </term> <listitem>
-                  <para>&app;가 선택된 디렉토리의 모든 파일 및 하위 디렉토리의 이름을 변환하도록 하려면 <guilabel>재귀 모드</guilabel> 옵션을 선택합니다. </para>
-                  <note><para>&app;는 디렉토리의 컨텐트를 재귀적으로 변환하지 않습니다. </para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>사용자 개입</guilabel> </term> <listitem>
-                  <para>&app; 가 <guilabel>인코딩 목록</guilabel>에서 적합한 첫 번째 기존 문자 인코딩을 사용하여 파일 및 하위 디렉토리의 이름을 UTF-8 인코딩으로 변환하도록 하려면 <guilabel>자동 변환</guilabel> 옵션을 선택합니다.  <xref linkend="fsexam-convert-filename"/>의 설명에 따라 이 옵션을 선택하지 않으면 &app;는 <guilabel>파일 시스템 검사기 이름 변환</guilabel> 대화 상자를 표시합니다.  </para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>인코딩 목록</guilabel> </term> <listitem>
-                  <para>현재 언어에 사용 가능한 기존 문자 인코딩의 목록이 표시됩니다. 목록에서 바로 위의 인코딩으로 이동하려면 <guibutton>위로</guibutton>를 클릭합니다. 목록에서 바로 아래의 인코딩으로 이동하려면 <guibutton>아래로</guibutton>를 클릭합니다. </para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/pt_BR/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = pt_BR
-omffile = fsexam-pt_BR.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/pt_BR/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/pt_BR/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/pt_BR/fsexam-pt_BR.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>  <!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Equipe de documentação do Sun Java Desktop System  </creator>
-    <maintainer>Equipe de documentação do Sun Java Desktop System  </maintainer>
-    <title>Examinador do sistema de arquivos  </title>    
-    <date>26-08-2004  </date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>Manual do usuário para o aplicativo de desktop Examinador do sistema de arquivos.  </description>
-    <type>guia do usuário </type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="pt_BR"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/pt_BR/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,290 +0,0 @@
-<?xml version="1.0"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "Equipe de documenta&ccedil;&atilde;o do Java Desktop System" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "Agosto de 2004" >
-  <!ENTITY app "<application>Examinador do sistema de arquivos</application>" >
-  <!ENTITY appname "Examinador do sistema de arquivos " >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="pt_BR"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>Manual V&manrevision; do aplicativo de desktop &appname; </subtitle> <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup> 
-		<author><firstname>&author1;</firstname> <surname>&author2;</surname> <affiliation> 
-			 <orgname>&publisher;</orgname>
-		  </affiliation>  </author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>Manual V&manrevision; do aplicativo de desktop &appname; </revnumber> <date>&date;</date> <revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo> Este manual descreve a vers&atilde;o &appversion; do &appname;.</releaseinfo> <releaseinfo></releaseinfo>  <legalnotice><title>Coment&aacute;rios</title>  <para>Para enviar coment&aacute;rios, siga as instru&ccedil;&otilde;es na <ulink url="ghelp:gnome-feedback" type="help">p&aacute;gina de coment&aacute;rios</ulink>.  </para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>comando fsexam</primary></indexterm> <indexterm><primary>Aplicativo de desktop Examinador do sistema de arquivos</primary></indexterm>  <sect1 id="fsexam-intro"><title>Introdu&ccedil;&atilde;o</title>  <para>O &app; permite converter o nome de um arquivo, ou o conte&uacute;do de um arquivo de texto simples, de uma codifica&ccedil;&atilde;o legada de caracteres em uma codifica&ccedil;&atilde;o UTF-8.  </para>
-       <note>
-         <para>A codifica&ccedil;&atilde;o interna de caracteres padr&atilde;o no Sun Java Desktop System &eacute; o UTF-8, e o local padr&atilde;o &eacute; o UTF-8. Se n&atilde;o forem convertidos, os arquivos com codifica&ccedil;&atilde;o legada de caracteres ser&atilde;o exibidos como texto sem significado.  </para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>Guia de introdu&ccedil;&atilde;o</title>  <sect2 id="fsexam-to-start"><title>Para iniciar o &appname;</title> <para>Voc&ecirc; pode iniciar o &app; seguindo estas etapas: </para>
-                <variablelist>
-                <varlistentry><term>Menu</term> <listitem>
-                <para>Clique em <guibutton>Iniciar</guibutton>, escolha <menuchoice><guimenu>Aplicativos</guimenu><guisubmenu>Utilit&aacute;rios</guisubmenu><guimenuitem>Examinador do sistema de arquivos</guimenuitem></menuchoice>.  </para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>Linha de comando</term> <listitem>
-                <para>Execute o seguinte comando: <userinput>fsexam</userinput> </para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>Quando voc&ecirc; inicia o &appname;</title> <para>Quando voc&ecirc; inicia o &app;, a janela a seguir &eacute; exibida. </para>
-
-                <figure id="fsexam-window"><title>Janela do &appname;</title>  <screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>Mostra a janela principal do fsexam.</phrase> </textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>A janela do &app; cont&eacute;m os seguintes elementos:  </para>
-                <variablelist>
-                  <varlistentry><term>Barra de menus</term> <listitem>
-                                <para>Os menus na barra de menus cont&ecirc;m todos os comandos de que voc&ecirc; precisa para trabalhar com arquivos no &app;. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>&Aacute;rea de exibi&ccedil;&atilde;o</term>  <listitem>
-                                <para>A &aacute;rea de exibi&ccedil;&atilde;o mostra o conte&uacute;do do diret&oacute;rio atual.  </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Barra de status</term> <listitem>
-                                <para>A barra de status exibe informa&ccedil;&otilde;es sobre a atividade atual do &app;. </para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>Quando voc&ecirc; clica com o bot&atilde;o direito do mouse na janela do &app;, um menu pop-up &eacute; exibido. O menu pop-up cont&eacute;m os comandos mais comuns.  </para>
-
-      <para>Este manual documenta as funcionalidades da barra de menus.  </para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>Uso</title>  <sect2 id="fsexam-select"><title>Para selecionar um arquivo ou diret&oacute;rio</title>  <para>Escolha <menuchoice><guimenu>Arquivo</guimenu><guimenuitem>Abrir</guimenuitem></menuchoice> e selecione o arquivo ou o diret&oacute;rio cuja codifica&ccedil;&atilde;o de caracteres voc&ecirc; deseja alterar.  </para>
-		<para>Se voc&ecirc; selecionar um diret&oacute;rio, todos os seus arquivos e subdiret&oacute;rios aparecer&atilde;o na &aacute;rea de exibi&ccedil;&atilde;o.  </para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>Para converter o nome de um arquivo ou diret&oacute;rio</title> <para>Execute as seguintes etapas:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Selecione o arquivo ou diret&oacute;rio, como descrito em <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Escolha <menuchoice><guimenu>Editar</guimenu><guimenuitem>Converter nome de arquivo</guimenuitem></menuchoice>. </para>
-                    <para>Por padr&atilde;o, a caixa de di&aacute;logo <guilabel>Convers&atilde;o de nome do Examinador do sistema de arquivos</guilabel> &eacute; exibida. Para obter informa&ccedil;&otilde;es sobre como exibir ou ocultar a caixa de di&aacute;logo <guilabel>Convers&atilde;o de nome do Examinador do sistema de arquivos</guilabel>, consulte <xref linkend="fsexam-prefs"/>. </para>
-                    <para>A caixa de di&aacute;logo <guilabel>Convers&atilde;o de nome do Examinador do sistema de arquivos</guilabel> exibe uma lista de codifica&ccedil;&otilde;es de caracteres que o &app; pode usar para converter o nome do arquivo. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Selecione uma codifica&ccedil;&atilde;o e clique em <guibutton>OK</guibutton>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Se o &app; renomear o arquivo com &ecirc;xito, a barra de status exibir&aacute; o nome da codifica&ccedil;&atilde;o legada de caracteres.  </para>
-		<para>Se a convers&atilde;o falhar, a barra de status exibir&aacute; uma mensagem de erro.  </para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>Para converter o conte&uacute;do de um arquivo</title> <para>Execute as seguintes etapas:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Selecione o arquivo, como descrito em <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Escolha <menuchoice><guimenu>Editar</guimenu><guimenuitem>Converter conte&uacute;do</guimenuitem></menuchoice>. </para>
-                    <para>A janela <guilabel>Convers&atilde;o de conte&uacute;do do Examinador do sistema de arquivos</guilabel> exibe o conte&uacute;do convertido do arquivo. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Para aceitar a convers&atilde;o e substituir o arquivo original pelo conte&uacute;do convertido, clique em <guibutton>OK</guibutton>. </para>
-                    <para>Para cancelar a convers&atilde;o, feche a janela <guilabel>Convers&atilde;o de conte&uacute;do do Examinador do sistema de arquivos</guilabel>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Se o &app; converter o conte&uacute;do do arquivo com &ecirc;xito, a barra de status exibir&aacute; o seguinte texto: <screen>Conte&uacute;do do arquivo - converter de <replaceable>codifica&ccedil;&atilde;o_original</replaceable></screen>  </para>
-		<para>Se a convers&atilde;o falhar, a barra de status exibir&aacute; uma mensagem de erro.  </para>
-		<note>
-		  <para>O &app; s&oacute; pode converter o conte&uacute;do de um arquivo de texto simples. O &app; usa o comando <command>file</command> para verificar se o arquivo atual &eacute; um arquivo de texto simples. Se a sa&iacute;da do comando <command>file</command> n&atilde;o estiver dispon&iacute;vel, o &app; exibir&aacute; a seguinte mensagem de erro: <screen>Erro de popen, tente novamente</screen>  </para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>Para visualizar o conte&uacute;do de um arquivo</title> <para>Execute as seguintes etapas:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Selecione o arquivo, como descrito em <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Escolha <menuchoice><guimenu>Editar</guimenu><guimenuitem>Visualizar conte&uacute;do</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Se o &app; visualizar o conte&uacute;do do arquivo com &ecirc;xito, uma janela pop-up 
-exibir&aacute; a primeira parte do arquivo. Clique na janela pop-up para fechar a janela.  </para>
-		<para>Se a visualiza&ccedil;&atilde;o falhar, a barra de status exibir&aacute; uma mensagem de erro.  </para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>Para desfazer a &uacute;ltima a&ccedil;&atilde;o</title>  <para>Escolha <menuchoice><guimenu>Editar</guimenu><guimenuitem>Desfazer</guimenuitem></menuchoice>.  </para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>Para restaurar o arquivo original</title> <para>Execute as seguintes etapas:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Selecione o arquivo, como descrito em <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Escolha <menuchoice><guimenu>Editar</guimenu><guimenuitem>Restaurar arquivo original</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>O &app; restaura o conte&uacute;do do arquivo original em um arquivo com o nome de arquivo original.  </para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>Para exibir o painel de relat&oacute;rio</title> <para>Escolha <menuchoice><guimenu>Exibir</guimenu><guimenuitem>Painel de relat&oacute;rio</guimenuitem></menuchoice>.  </para>
-		<para>O painel de relat&oacute;rio exibe o nome do diret&oacute;rio e uma lista de arquivos convertidos com os nomes de codifica&ccedil;&otilde;es legadas de caracteres correspondentes.  </para>
-		<para>No in&iacute;cio de cada linha, <literal>[<replaceable>X</replaceable>]</literal> indica a a&ccedil;&atilde;o que o &app; executou, assim: </para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>Descri&ccedil;&atilde;o</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>Converter o conte&uacute;do do arquivo.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>Converter o nome do arquivo.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>Restaurar o arquivo original.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>Desfazer a convers&atilde;o do conte&uacute;do do arquivo.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>Desfazer a convers&atilde;o do nome do arquivo.</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>Para ocultar o painel de relat&oacute;rio, escolha <menuchoice><guimenu>Exibir</guimenu><guimenuitem>Painel de relat&oacute;rio</guimenuitem></menuchoice> novamente.  </para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>Prefer&ecirc;ncias</title> <para>Para configurar o &app;, selecione <menuchoice><guimenu>Editar</guimenu><guimenuitem>Prefer&ecirc;ncias</guimenuitem></menuchoice>. A caixa de di&aacute;logo <guilabel>Prefer&ecirc;ncias do Examinador do sistema de arquivos</guilabel> &eacute; exibida.  </para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>Subpasta</guilabel> </term> <listitem>
-                  <para>Selecione a op&ccedil;&atilde;o <guilabel>Modo recursivo</guilabel> para especificar se o &app; converte os nomes de todos os arquivos e subdiret&oacute;rios no diret&oacute;rio selecionado. </para>
-                  <note><para>O &app; n&atilde;o converte recursivamente o conte&uacute;do de um diret&oacute;rio.  </para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>Interven&ccedil;&atilde;o de usu&aacute;rio</guilabel> </term> <listitem>
-                  <para>Selecione a op&ccedil;&atilde;o <guilabel>Convers&atilde;o autom&aacute;tica</guilabel> para especificar se o &app; usa a primeira codifica&ccedil;&atilde;o legada de caracteres adequada na <guilabel>Lista de codifica&ccedil;&atilde;o</guilabel> para converter os nomes de arquivos e subdiret&oacute;rios na codifica&ccedil;&atilde;o UTF-8. Se n&atilde;o selecionar esta op&ccedil;&atilde;o, o &app; exibir&aacute; a caixa de di&aacute;logo <guilabel>Convers&atilde;o de nome do Examinador do sistema de arquivos</guilabel>, como descrito em <xref linkend="fsexam-convert-filename"/>.  </para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>Lista de codifica&ccedil;&atilde;o</guilabel> </term> <listitem>
-                  <para>Exibe uma lista de codifica&ccedil;&otilde;es legadas de caracteres dispon&iacute;veis para o idioma atual. Clique em <guibutton>Para cima</guibutton> para mover uma codifica&ccedil;&atilde;o para cima na lista. Clique em <guibutton>Para baixo</guibutton> para mover uma codifica&ccedil;&atilde;o para baixo na lista. </para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
-
--- a/src/cmd/fsexam/help/sv/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = sv
-omffile = fsexam-sv.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/sv/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/sv/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/sv/fsexam-sv.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>  
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Suns Java Desktop System-dokumentationsteam  </creator>
-    <maintainer>Suns Java Desktop System-dokumentationsteam  </maintainer>
-    <title>Undersökning av filsystem</title>    
-    <date>2004-08-26  </date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>Användarhandbok för panelprogrammet Undersökning av filsystem.  </description>
-    <type>användarhandbok </type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="sv"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/sv/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-<?xml version="1.0"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "Java Desktop System-dokumentationsteam" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "Augusti 2004" >
-  <!ENTITY app "<application>Undersökning av filsystem</application>" >
-  <!ENTITY appname "Undersökning av filsystem" >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="sv"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>Handbok för skrivbordsprogrammet &appname;, version &manrevision;</subtitle> <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup> 
-		<author><firstname>&author1;</firstname> <surname>&author2;</surname> <affiliation> 
-			 <orgname>&publisher;</orgname>
-		  </affiliation>  </author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>Handbok för skrivbordsprogrammet &appname;, version &manrevision;</revnumber> <date>&date;</date> <revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo> I den här handboken beskrivs version &appversion; av &appname;.</releaseinfo> <releaseinfo></releaseinfo>  <legalnotice><title>Feedback</title>  <para>För att ge feedback följer du instruktionerna på <ulink url="ghelp:gnome-feedback" type="help">feedbacksidan</ulink>.  </para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>kommandot fsexam</primary></indexterm> <indexterm><primary>skrivbordsprogrammet Undersökning av filsystem</primary></indexterm>  <sect1 id="fsexam-intro"><title>Introduktion</title>  <para>Med &app; kan du konvertera namnet på en fil, eller innehållet i en oformaterad textfil, från en äldre teckenkodning till UTF-8-kodning.  </para>
-       <note>
-         <para>Den interna standardteckenkodningen i Sun Java Desktop System är UTF-8-kodningen och standardspråkområdet är UTF-8-språkområdet. Om de inte konverteras kommer filer med äldre teckenkodningar att visas som obegriplig text.  </para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>Komma i gång</title>  <sect2 id="fsexam-to-start"><title>Så här startar du &appname;</title> <para>Du kan starta &app; på följande sätt: </para>
-                <variablelist>
-                <varlistentry><term>Meny</term> <listitem>
-                <para>Klicka på <guibutton>Kör</guibutton> och välj sedan  <menuchoice><guimenu>Program</guimenu><guisubmenu>Verktyg</guisubmenu><guimenuitem>Undersökning av filsystem</guimenuitem></menuchoice>.  </para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>Kommandorad</term> <listitem>
-                <para>Kör följande kommando: <userinput>fsexam</userinput> </para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>När du startar &appname;</title> <para>När du startar &app; visas följande fönster: </para>
-
-                <figure id="fsexam-window"><title>&appname;-fönstret</title>  <screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>Visar huvudfönstret för fsexam.</phrase> </textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>&app;-fönstret innehåller följande element:  </para>
-                <variablelist>
-                  <varlistentry><term>Menyrad</term> <listitem>
-                                <para>Menyerna på menyraden innehåller alla kommandon du behöver för att arbeta med filer i &app;. </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Visningsområde</term>  <listitem>
-                                <para>Visningsområdet visar innehållet i den aktuella katalogen.  </para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>Statusrad</term> <listitem>
-                                <para>Statusraden visar information om den aktuella &app;-aktiviteten. </para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>När du högerklickar i &app;-fönstret visas en popupmeny. Popupmenyn innehåller de vanligaste kommandona.  </para>
-
-      <para>Den här handboken beskriver menyradens funktioner.  </para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>Användning</title>  <sect2 id="fsexam-select"><title>Så här markerar du en fil eller katalog</title>  <para>Välj <menuchoice><guimenu>Arkiv</guimenu><guimenuitem>Öppna</guimenuitem></menuchoice> och markera sedan filen eller katalogen som du vill ändra  teckenkodningen för.  </para>
-		<para>Om du markerar en katalog visas alla filer och underkataloger i katalogen i visningsområdet.  </para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>Så här konverterar du namnet på en fil eller katalog</title> <para>Gör så här:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Markera filen eller katalogen, enligt beskrivning i <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Välj <menuchoice><guimenu>Redigera</guimenu><guimenuitem>Konvertera filnamn</guimenuitem></menuchoice>. </para>
-                    <para>Som standard visas dialogfönstret <guilabel>Undersökning av filsystem, namnkonvertering</guilabel>. Information om hur du visar eller döljer dialogfönstret <guilabel>Undersökning av filsystem, namnkonvertering</guilabel> finns i <xref linkend="fsexam-prefs"/>. </para>
-                    <para>I dialogfönstret <guilabel>Undersökning av filsystem, namnkonvertering</guilabel> visas en lista med teckenkodningar som &app; kan använda vid konvertering av filnamnet. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Markera en kodning och klicka på <guibutton>OK</guibutton>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Om &app; lyckas byta namn på filen visas namnet på den äldre teckenkodningen på statusraden.  </para>
-		<para>Om konverteringen misslyckas visas ett felmeddelande på statusraden.  </para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>Så här konverterar du innehållet i en fil</title> <para>Gör så här:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Markera filen enligt beskrivning i <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Välj <menuchoice><guimenu>Redigera</guimenu><guimenuitem>Konvertera innehåll</guimenuitem></menuchoice>. </para>
-                    <para>I fönstret <guilabel>Undersökning av filsystem, innehållskonvertering</guilabel> visas det konverterade innehållet i filen. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Om du vill godkänna konverteringen och skriva över originalfilen med det konverterade innehållet, klickar du på <guibutton>OK</guibutton>. </para>
-                    <para>Om du vill avbryta konverteringen, stänger du fönstret <guilabel>Undersökning av filsystem, innehållskonvertering</guilabel>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Om &app; lyckas konvertera filinnehållet visas följande text på statusraden: <screen>Filinnehåll - konvertera från <replaceable>originalkodning</replaceable></screen>  </para>
-		<para>Om konverteringen misslyckas visas ett felmeddelande på statusraden.  </para>
-		<note>
-		  <para>&app; kan bara konvertera innehållet i en oformaterad textfil. &app; kontrollerar om den aktuella filen är en oformaterad textfil med kommandot <command>file</command>. Om resultatet av kommandot <command>file</command> inte är tillgängligt, visar &app; följande felmeddelande: <screen>popen-fel, försök igen</screen>  </para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>Så här förhandsgranskar du innehållet i en fil</title> <para>Gör så här:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Markera filen enligt beskrivning i <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Välj <menuchoice><guimenu>Redigera</guimenu><guimenuitem>Förhandsgranska innehåll</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>Om du med &app; lyckas förhandsgranska filinnehållet visas den första delen av filen i ett popupfönster. Klicka på popupfönstret om du vill stänga fönstret.  </para>
-		<para>Om förhandsgranskningen misslyckas visas ett felmeddelande på statusraden.  </para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>Så här ångrar du den senaste åtgärden</title>  <para>Välj <menuchoice><guimenu>Redigera</guimenu><guimenuitem>Ångra</guimenuitem></menuchoice>.  </para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>Så här återställer du originalfilen</title> <para>Gör så här:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>Markera filen enligt beskrivning i <xref linkend="fsexam-select"/>. </para>
-                  </listitem>
-                  <listitem>
-                    <para>Välj <menuchoice><guimenu>Redigera</guimenu><guimenuitem>Återställ originalfil</guimenuitem></menuchoice>.  </para>
-                  </listitem>
-                </orderedlist>
-		<para>&app; återställer originalfilens innehåll i en fil med originalfilens namn.  </para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>Så här visar du rapportpanelen</title> <para>Välj <menuchoice><guimenu>Visa</guimenu><guimenuitem>Rapportfönster</guimenuitem></menuchoice>.  </para>
-		<para>På rapportpanelen visas katalognamnet och en lista med konverterade filer med namn som matchar den äldre teckenkodningen.  </para>
-		<para>I början av varje rad indikeras åtgärden som &app; utförde med  <literal>[<replaceable>X</replaceable>]</literal>, så här: </para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>Beskrivning</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>Konvertera filinnehåll.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>Konvertera filnamn.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>Återställ originalfil.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>Ångra konvertering av filinnehåll.</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>Ångra konvertering av filnamn.</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>Om du vill dölja rapportpanelen väljer du  <menuchoice><guimenu>Visa</guimenu><guimenuitem>Rapportfönster</guimenuitem></menuchoice> igen.  </para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>Inställningar</title> <para>Om du vill konfigurera &app; väljer du <menuchoice><guimenu>Redigera</guimenu><guimenuitem>Inställningar</guimenuitem></menuchoice>. Dialogfönstret <guilabel>Inställningar för Undersökning av filsystem</guilabel> visas.  </para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>Undermapp</guilabel> </term> <listitem>
-                  <para>Markera alternativet <guilabel>Rekursivt läge</guilabel> om du vill ange att &app; ska konvertera namnen på alla filer och underkataloger i den markerade katalogen. </para>
-                  <note><para>&app; konverterar inte innehållet i en katalog rekursivt.  </para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>Användaråtgärd</guilabel> </term> <listitem>
-                  <para>Markera alternativet <guilabel>Automatisk konvertering</guilabel> om du vill ange att  &app; ska använda den första passande äldre teckenkodning i listan <guilabel>Kodningslista</guilabel> vid konvertering av namn, filer och underkataloger till UTF-8-kodning. Om du inte markerar det här alternativet visar &app; dialogfönstret <guilabel>Undersökning av filsystem, namnkonvertering</guilabel>, enligt beskrivning i <xref linkend="fsexam-convert-filename"/>.  </para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>Kodningslista</guilabel> </term> <listitem>
-                  <para>Visar en lista med de äldre teckenkodningar som är tillgängliga för det aktuella språket. Klicka på <guibutton>Upp</guibutton> om du vill flytta en kodning uppåt i listan. Klicka på <guibutton>Ned</guibutton> om du vill flytta en kodning nedåt i listan. </para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/zh_CN/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = zh_CN
-omffile = fsexam-zh_CN.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/zh_CN/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/zh_CN/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/zh_CN/fsexam-zh_CN.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?><!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//EN" "http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Sun Java Desktop System 文档小组</creator>
-    <maintainer>Sun Java Desktop System 文档小组</maintainer>
-    <title>文件系统检查器</title>    
-    <date>2004-08-26</date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>文件系统检查器桌面应用程序用户手册。</description>
-    <type>用户指南</type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="zh_CN"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/zh_CN/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
-<?xml version="1.0"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "Java Desktop System 文档小组" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "2004 年 8 月" >
-  <!ENTITY app "<application>文件系统检查器</application>" >
-  <!ENTITY appname "文件系统检查器" >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
--->
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="zh_CN"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>&appname; 桌面应用程序手册 V&manrevision;</subtitle> <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup> 
-		<author><firstname>&author1;</firstname> <surname>&author2;</surname> <affiliation> 
-			 <orgname>&publisher;</orgname>
-		  </affiliation></author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>&appname; 桌面应用程序手册 V&manrevision;</revnumber> <date>&date;</date><revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo> 本手册介绍 &appname; &appversion; 版。</releaseinfo><releaseinfo></releaseinfo><legalnotice><title>反馈</title><para>要发送反馈,请按照<ulink url="ghelp:gnome-feedback" type="help">反馈页</ulink>中的说明执行操作。</para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>fsexam 命令</primary></indexterm> <indexterm><primary>文件系统检查器桌面应用程序</primary></indexterm><sect1 id="fsexam-intro"><title>简介</title><para>&app;可将文件名或纯文本文件的内容从传统字符编码转换为 UTF-8 编码。</para>
-       <note>
-         <para>Sun Java Desktop System 的默认内部字符编码为 UTF-8 编码,默认语言环境为 UTF-8 语言环境。如果不进行转换,传统字符编码的文件就会显示为无意义的文本。</para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>入门</title><sect2 id="fsexam-to-start"><title>启动 &appname;</title><para>可以通过以下方式启动 &app;:</para>
-                <variablelist>
-                <varlistentry><term>菜单</term><listitem>
-                <para>单击<guibutton>&ldquo;启动&rdquo;</guibutton>,然后选择<menuchoice><guimenu>&ldquo;应用程序&rdquo;</guimenu><guisubmenu>&ldquo;实用程序&rdquo;</guisubmenu><guimenuitem>&ldquo;文件系统检查器&rdquo;</guimenuitem></menuchoice>。</para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>命令行</term><listitem>
-                <para>执行以下命令:<userinput>fsexam</userinput></para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>启动 &appname; 时</title><para>在启动 &app; 时,系统会显示下面的窗口:</para>
-
-                <figure id="fsexam-window"><title>&appname; 窗口</title><screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>显示文件系统检查器主窗口。</phrase></textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>&app; 窗口包含以下元素:</para>
-                <variablelist>
-                  <varlistentry><term>菜单栏</term><listitem>
-                                <para>菜单栏上的菜单包含您在 &app; 中处理文件所需的所有命令。</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>显示区域</term><listitem>
-                                <para>显示区域显示当前目录的内容。</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>状态栏</term><listitem>
-                                <para>状态栏显示&app;的当前活动的信息。</para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>当在&app;窗口中右键单击时,应用程序将会显示一个弹出菜单。弹出菜单中包含最常用的命令。</para>
-
-      <para>本手册介绍菜单栏的功能。</para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>用法</title><sect2 id="fsexam-select"><title>选择文件或目录</title><para>选择<menuchoice><guimenu>&ldquo;文件&rdquo;</guimenu><guimenuitem>&ldquo;打开&rdquo;</guimenuitem></menuchoice>,然后选择要更改字符编码的文件或目录。</para>
-		<para>如果选择目录,则该目录中的所有文件和子目录都会显示在显示区域中。</para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>转换文件或目录的名称</title><para>请执行以下步骤:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>选择文件或目录,如 <xref linkend="fsexam-select"/> 所述。</para>
-                  </listitem>
-                  <listitem>
-                    <para>选择<menuchoice><guimenu>&ldquo;编辑&rdquo;</guimenu><guimenuitem>&ldquo;转换文件名&rdquo;</guimenuitem></menuchoice>。</para>
-                    <para>缺省情况下,会出现<guilabel>&ldquo;文件系统检查器名称转换&rdquo;</guilabel>对话框。有关如何显示或隐藏<guilabel>文件系统检查器名称转换</guilabel>对话框的信息,请参见 <xref linkend="fsexam-prefs"/>。</para>
-                    <para><guilabel>&ldquo;文件系统检查器名称转换&rdquo;</guilabel>对话框中显示&app;可用来转换文件名的字符编码列表。</para>
-                  </listitem>
-                  <listitem>
-                    <para>选择一种编码,然后单击<guibutton>&ldquo;确定&rdquo;</guibutton>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;重命名文件成功,状态栏会显示传统字符编码的名称。</para>
-		<para>如果转换失败,状态栏会显示一个错误消息。</para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>转换文件的内容</title><para>请执行以下步骤:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>选择文件,如 <xref linkend="fsexam-select"/> 所述。</para>
-                  </listitem>
-                  <listitem>
-                    <para>选择<menuchoice><guimenu>&ldquo;编辑&rdquo;</guimenu><guimenuitem>&ldquo;转换内容&rdquo;</guimenuitem></menuchoice>。</para>
-                    <para><guilabel>&ldquo;文件系统检查器内容转换&rdquo;</guilabel>窗口显示经转换的文件内容。</para>
-                  </listitem>
-                  <listitem>
-                    <para>要接受转换并用转换内容覆盖原文件,请单击<guibutton>&ldquo;确定&rdquo;</guibutton>。</para>
-                    <para>要取消转换,请关闭<guilabel>&ldquo;文件系统检查器内容转换&rdquo;</guilabel>窗口。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;转换文件内容成功,状态栏会显示以下文本:<screen>文件内容 - 转换自<replaceable>原编码</replaceable></screen></para>
-		<para>如果转换失败,状态栏会显示一个错误消息。</para>
-		<note>
-		  <para>&app;只能转换纯文本文件的内容。&app;使用 <command>file</command> 命令检查当前文件是否为纯文本文件。如果 <command>file</command> 命令没有输出,则&app;显示以下错误消息:<screen>popen 错误,请重试</screen></para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>预览文件的内容</title><para>请执行以下步骤:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>选择文件,如 <xref linkend="fsexam-select"/> 所述。</para>
-                  </listitem>
-                  <listitem>
-                    <para>选择<menuchoice><guimenu>&ldquo;编辑&rdquo;</guimenu><guimenuitem>&ldquo;预览内容&rdquo;</guimenuitem></menuchoice>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;预览文件内容成功,会在一个弹出窗口中显示文件的前一部分。单击弹出窗口将其关闭。</para>
-		<para>如果预览失败,状态栏会显示一个错误消息。</para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>撤销上次操作</title><para>选择<menuchoice><guimenu>&ldquo;编辑&rdquo;</guimenu><guimenuitem>&ldquo;撤消&rdquo;</guimenuitem></menuchoice>。</para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>恢复原文件</title><para>请执行以下步骤:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>选择文件,如 <xref linkend="fsexam-select"/> 所述。</para>
-                  </listitem>
-                  <listitem>
-                    <para>选择<menuchoice><guimenu>&ldquo;编辑&rdquo;</guimenu><guimenuitem>&ldquo;恢复原文件&rdquo;</guimenuitem></menuchoice>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>&app;将原文件的内容恢复到新文件中,新文件的名称与原文件名相同。</para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>显示报告窗格</title><para>选择<menuchoice><guimenu>&ldquo;查看&rdquo;</guimenu><guimenuitem>&ldquo;报告窗格&rdquo;</guimenuitem></menuchoice>。</para>
-		<para>报告窗格显示目录名称、已转换文件的列表及相应的传统字符编码名称。</para>
-		<para>每行开始处的 <literal>[<replaceable>X</replaceable>]</literal> 表示&app;执行的操作,如下所示:</para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>说明</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>转换文件内容。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>转换文件名。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>恢复原文件。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>撤消文件内容转换。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>撤消文件名转换。</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>要隐藏报告窗格,请再次选择<menuchoice><guimenu>&ldquo;查看&rdquo;</guimenu><guimenuitem>&ldquo;报告窗格&rdquo;</guimenuitem></menuchoice>。</para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>首选项</title><para>要配置&app;,请选择<menuchoice><guimenu>&ldquo;编辑&rdquo;</guimenu><guimenuitem>&ldquo;首选项&rdquo;</guimenuitem></menuchoice>。即显示<guilabel>&ldquo;文件系统检查器首选项&rdquo;</guilabel>对话框。</para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>子文件夹</guilabel> </term><listitem>
-                  <para>选择<guilabel>&ldquo;递归模式&rdquo;</guilabel>选项指定&app;转换所选目录中的全部文件和子目录的名称。</para>
-                  <note><para>&app;不递归转换目录的内容。</para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>用户介入</guilabel> </term><listitem>
-                  <para>选择<guilabel>&ldquo;自动转换&rdquo;</guilabel>选项可指定&app;使用<guilabel>&ldquo;编码列表&rdquo;</guilabel>中第一个适合的传统字符编码将文件和子目录名称转换为 UTF-8 编码。如果未选择该选项,&app; 将显示<guilabel>文件系统检查器名称转换</guilabel>对话框,如 <xref linkend="fsexam-convert-filename"/> 所述。</para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>编码列表</guilabel> </term><listitem>
-                  <para>显示当前语言可用的传统字符编码列表。单击<guibutton>&ldquo;向上&rdquo;</guibutton>在列表中向上移动编码。单击<guibutton>&ldquo;向下&rdquo;</guibutton>在列表中向下移动编码。</para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/zh_HK/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = zh_HK
-omffile = fsexam-zh_HK.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/zh_HK/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/zh_HK/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/zh_HK/fsexam-zh_HK.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Sun Java Desktop System 文件小組</creator>
-    <maintainer>Sun Java Desktop System 文件小組</maintainer>
-    <title>檔案系統檢查程式</title>    
-    <date>2004 年 8 月 26 日</date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>檔案系統檢查程式桌面應用程式使用者手冊。</description>
-    <type>使用者手冊</type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="zh_TW"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/zh_HK/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,286 +0,0 @@
-<?xml version="1.0"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "Java Desktop System 文件小組" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "2004 年 8 月" >
-  <!ENTITY app "<application>檔案系統檢查程式</application>" >
-  <!ENTITY appname "檔案系統檢查程式" >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="zh_TW"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>&appname;桌面應用程式使用手冊 V&manrevision;</subtitle> <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup> 
-		<author><firstname>&author1;</firstname><surname>&author2;</surname><affiliation><orgname>&publisher;</orgname></affiliation></author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>&appname;桌面應用程式使用手冊 V&manrevision;</revnumber><date>&date;</date><revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo>本使用手冊將說明第 &appversion; 版&appname;的內容。</releaseinfo><releaseinfo></releaseinfo><legalnotice><title>意見回應</title><para>如果要傳送意見回應,請遵照<ulink url="ghelp:gnome-feedback" type="help">意見回應頁面</ulink>中的指示。</para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>fsexam 指令</primary></indexterm> <indexterm><primary>檔案系統檢查程式桌面應用程式</primary></indexterm><sect1 id="fsexam-intro"><title>簡介</title><para>&app;讓您能將檔案的名稱,或是純文字檔的內容,從老舊的字元編碼轉換為 UTF-8 編碼。</para>
-       <note>
-         <para>在 Sun Java Desktop System 中的預設內部字元編碼為 UTF-8 編碼,預設語言環境則為 UTF-8 語言環境。如果未經轉換,具有老舊字元編碼的檔案,便會顯示為無意義的文字。</para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>入門</title><sect2 id="fsexam-to-start"><title>啟動&appname;</title><para>您可以用下列方式來啟動&app;:</para>
-                <variablelist>
-                <varlistentry><term>功能表</term><listitem>
-                <para>按一下<guibutton> [啟動]</guibutton>,然後選擇<menuchoice><guimenu> [應用程式]</guimenu><guisubmenu> [公用程式]</guisubmenu><guimenuitem> [檔案系統檢查程式]</guimenuitem></menuchoice>。</para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>指令行</term><listitem>
-                <para>執行下列指令:<userinput>fsexam</userinput></para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>當您啟動&appname;</title><para>當您啟動&app;時,會顯示下列視窗:</para>
-
-                <figure id="fsexam-window"><title>&appname;視窗</title><screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>顯示 fsexam 主視窗。</phrase></textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>&app;視窗包含下列元素:</para>
-                <variablelist>
-                  <varlistentry><term>功能表列</term><listitem>
-                                <para>功能表列上的功能表,具有在&app;使用檔案時,所需要的所有指令。</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>顯示區域</term><listitem>
-                                <para>顯示區域顯示目前目錄的內容。</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>狀態列</term><listitem>
-                                <para>狀態列顯示關於目前&app;活動的資訊。</para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>當您用滑鼠右鍵按一下&app;視窗時,應用程式便會顯示快顯功能表。快顯功能表含有最常見的指令。</para>
-
-      <para>本使用手冊記載功能表列的各項功能。</para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>用法</title><sect2 id="fsexam-select"><title>選取檔案或目錄</title><para>選擇<menuchoice><guimenu> [檔案]</guimenu><guimenuitem> [開啟]</guimenuitem></menuchoice>,然後選取您要變更編碼的檔案或目錄。</para>
-		<para>如果您選取目錄,該目錄中的所有檔案及子目錄都會出現在顯示區域中。</para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>轉換檔案或目錄的名稱</title><para>執行下列步驟:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>選取檔案或目錄,如在<xref linkend="fsexam-select"/>中所述。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [轉換檔案名稱]</guimenuitem></menuchoice>。</para>
-                    <para>依預設值,<guilabel>[檔案系統檢查器名稱轉換]</guilabel> 對話方塊便會出現。如需有關如何顯示或隱藏<guilabel> [檔案系統檢查器名稱轉換] </guilabel>對話方塊的資訊,請參閱 <xref linkend="fsexam-prefs"/>。</para>
-                    <para><guilabel>[檔案系統檢查器名稱轉換] </guilabel>對話方塊會顯示一個字元編碼清單,&app;可以用該清單來轉換檔案名稱。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選取一種編碼,然後按一下<guibutton> [確定]</guibutton>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;成功重新命名檔案,狀態列便會顯示老舊字元編碼的名稱。</para>
-		<para>如果轉換失敗,狀態列便會顯示錯誤訊息。</para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>轉換檔案內容</title><para>執行下列步驟:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>選取檔案,如在<xref linkend="fsexam-select"/>中所述。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [轉換內容]</guimenuitem></menuchoice>。</para>
-                    <para><guilabel>[檔案系統檢查器內容轉換] </guilabel>視窗便會顯示檔案的內容。</para>
-                  </listitem>
-                  <listitem>
-                    <para>若要接受轉換,並以轉換的內容覆寫原始檔案,請按一下<guibutton> [確定]</guibutton>。</para>
-                    <para>若要取消轉換,請關閉 <guilabel>[檔案系統檢查器內容轉換]</guilabel> 視窗。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;成功轉換檔案內容,狀態列便會顯示下列文字:<screen>File content -convert from <replaceable>original_encoding</replaceable>  ( 檔案內容 - 從<replaceable>原始編碼</replaceable>轉換)</screen></para>
-		<para>如果轉換失敗,狀態列便會顯示錯誤訊息。</para>
-		<note>
-		  <para>&app;只能轉換純文字檔的內容。&app;使用 <command>file</command> 指令來檢查目前的檔案是否是純文字檔。如果無法取得 <command>file</command> 指令輸出,&app;便會顯示下列錯誤訊息:<screen>popen error, please try again (popen 錯誤,請再試一次)</screen></para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>預覽檔案內容</title><para>執行下列步驟:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>選取檔案,如下所述:<xref linkend="fsexam-select"/>。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [預覽內容]</guimenuitem></menuchoice>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;成功預覽檔案內容,快顯視窗便會顯示檔案的第一個部分。按一下快顯視窗以關閉該視窗。</para>
-		<para>如果預覽失敗,狀態列便會顯示錯誤訊息。</para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>還原最後動作</title><para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [還原]</guimenuitem></menuchoice>。</para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>還原原始檔案</title><para>執行下列步驟:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>選取檔案,如下所述:<xref linkend="fsexam-select"/>。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [還原原始檔案]</guimenuitem></menuchoice>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>&app;便會將具有原始檔案名稱的檔案,還原為原始檔案內容。</para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>顯示報告窗格</title><para>選擇<menuchoice><guimenu> [檢視]</guimenu><guimenuitem> [報告窗格]</guimenuitem></menuchoice>。</para>
-		<para>報告窗格會顯示目錄名稱,以及具有對應老舊字元編碼名稱的已轉換檔案的清單。</para>
-		<para>如下所示,在每行的開頭,<literal>[<replaceable>X</replaceable>]</literal> 指示&app;所執行的動作:</para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>描述</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>轉換檔案內容。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>轉換檔名。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>還原原始檔案。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>還原檔案內容的轉換。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>還原檔案名稱的轉換。</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>若要隱藏報告窗格,請再度選擇<menuchoice><guimenu> [檢視]</guimenu><guimenuitem> [報告窗格]</guimenuitem></menuchoice>。</para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>喜好設定</title><para>若要配置&app;,請選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [喜好設定]</guimenuitem></menuchoice>。<guilabel>[檔案系統檢查器喜好設定] </guilabel>對話方塊便會出現。</para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>子資料夾</guilabel> </term><listitem>
-                  <para>選取<guilabel> [遞迴模式] </guilabel>選項,以指定&app;轉換選取目錄中所有檔案及子目錄的名稱。</para>
-                  <note><para>&app;不會遞迴轉換目錄的內容。</para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>使用者介入</guilabel> </term><listitem>
-                  <para>選取<guilabel> [自動轉換] </guilabel>選項,以指定&app;使用<guilabel> [編碼清單] </guilabel>中第一種適合的老舊字元編碼,將檔案及子目錄的名稱轉換為 UTF-8 編碼。若您沒有選取此選項,&app;會顯示<guilabel> [檔案系統檢查器名稱轉換] </guilabel>對話方塊,如下所述:<xref linkend="fsexam-convert-filename"/>。</para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>編碼清單</guilabel> </term><listitem>
-                  <para>顯示目前語言的可用老舊字元編碼清單。按一下<guibutton> [上] </guibutton>以便在清單中上移編碼。按一下<guibutton> [下] </guibutton>以便在清單中下移編碼。</para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/help/zh_TW/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-figdir = figures
-docname = fsexam
-lang = zh_TW
-omffile = fsexam-zh_TW.omf
-entities = legal.xml
-include $(top_srcdir)/xmldocs.make
-dist-hook: app-dist-hook
Binary file src/cmd/fsexam/help/zh_TW/figures/fsexam-pref.png has changed
Binary file src/cmd/fsexam/help/zh_TW/figures/fsexam.png has changed
--- a/src/cmd/fsexam/help/zh_TW/fsexam-zh_TW.omf	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF8"?>
-<!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
--->
-<omf>
-  <resource>
-    <creator>Sun Java Desktop System 文件小組</creator>
-    <maintainer>Sun Java Desktop System 文件小組</maintainer>
-    <title>檔案系統檢查程式</title>    
-    <date>2004 年 8 月 26 日</date>
-    <version identifier="2.0" date="2004-08-26" description="Updated for Sun Java Desktop System Release 3, program version 0.3"/>
-    <subject category="GNOME|Applications|System Tools"/>
-    <description>檔案系統檢查程式桌面應用程式使用者手冊。</description>
-    <type>使用者手冊</type>
-    <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//EN"/>
-    <identifier url="fsexam.xml"/>
-    <language code="zh_TW"/>
-    <relation seriesid="844e0a76-d656-11d8-88f6-c813db71eddc"/>
-    <rights type="CDDL" license.version="1.0" holder="Sun Microsystems"/>
-  </resource>        
-</omf>
--- a/src/cmd/fsexam/help/zh_TW/fsexam.xml	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,287 +0,0 @@
-<?xml version="1.0"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
-"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
-  <!ENTITY author1 "Sun" >
-  <!ENTITY author2 "Java Desktop System 文件小組" >
-  <!ENTITY publisher "Sun Microsystems, Inc." >
-  <!ENTITY legal SYSTEM "legal.xml">
-  <!ENTITY appversion "0.3" >
-  <!ENTITY manrevision "2.0" >
-  <!ENTITY date "2004 年 8 月" >
-  <!ENTITY app "<application>檔案系統檢查程式</application>" >
-  <!ENTITY appname "檔案系統檢查程式" >
-]><!-- 
-      (Do not remove this comment block.)
-  Maintained by the GNOME Documentation Project
-  http://developer.GNOME.org/projects/gdp
-  Template version: 2.0 beta
-  Template last modified Jan 30, 2002
-  
---><!--
-
- CDDL HEADER START
-
- The contents of this file are subject to the terms of the
- Common Development and Distribution License (the "License").  
- You may not use this file except in compliance with the License.
-
- You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- or http://www.opensolaris.org/os/licensing.
- See the License for the specific language governing permissions
- and limitations under the License.
-
- When distributing Covered Code, include this CDDL HEADER in each
- file and include the License file at src/OPENSOLARIS.LICENSE.
- If applicable, add the following below this CDDL HEADER, with the
- fields enclosed by brackets "[]" replaced with your own identifying
- information: Portions Copyright [yyyy] [name of copyright owner]
-
- CDDL HEADER END
-
-
- Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- Use is subject to license terms. 
-
-
---><!-- =============Document Header ============================= -->
-
-
-
-<article id="index" lang="zh_TW"><!-- please do not change the id; for translations, change lang to --><!-- appropriate code -->
-
-
-  <articleinfo><title>&appname;</title> <subtitle>&appname;桌面應用程式使用手冊 V&manrevision;</subtitle> <copyright> 
-		<year>2004</year>
-		<holder>&publisher;</holder> </copyright> <publisher> 
-		<publishername>&publisher;</publishername>
-	 </publisher> &legal;  <authorgroup> 
-		<author><firstname>&author1;</firstname><surname>&author2;</surname><affiliation><orgname>&publisher;</orgname></affiliation></author><!-- This is appropriate place for other contributors: translators,
-      maintainers,  etc. Commented out by default.
-       <othercredit role="translator">
-        <firstname>Latin</firstname>
-        <surname>Translator 1</surname>
-        <affiliation>
-          <orgname>Latin Translation Team</orgname>
-          <address> <email>[email protected]</email> </address>
-        </affiliation>
-        <contrib>Latin translation</contrib>
-      </othercredit>
--->
-
-
-
-	 </authorgroup>
-
-
-
-
-
-	 <revhistory><!-- Remember to remove the &manrevision; entity from the revision entries other
-   than the current revision. -->
-
-   		<revision><revnumber>&appname;桌面應用程式使用手冊 V&manrevision;</revnumber><date>&date;</date><revdescription> 
-			 <para role="author">&author1; &author2;</para>
-			 <para role="publisher">&publisher; </para>
-		  </revdescription>
-		</revision>
-	 </revhistory><releaseinfo>本使用手冊將說明第 &appversion; 版&appname;的內容。</releaseinfo><releaseinfo></releaseinfo><legalnotice><title>意見回應</title><para>如果要傳送意見回應,請遵照<ulink url="ghelp:gnome-feedback" type="help">意見回應頁面</ulink>中的指示。</para><!-- Translators may also add here feedback address for translations -->
-
-	 </legalnotice>
-  </articleinfo><!-- ============= Document Body ============================= --><!-- ============= Introduction ============================== --><indexterm><primary>fsexam 指令</primary></indexterm> <indexterm><primary>檔案系統檢查程式桌面應用程式</primary></indexterm><sect1 id="fsexam-intro"><title>簡介</title><para>&app;讓您能將檔案的名稱,或是純文字檔的內容,從老舊的字元編碼轉換為 UTF-8 編碼。</para>
-       <note>
-         <para>在 Sun Java Desktop System 中的預設內部字元編碼為 UTF-8 編碼,預設語言環境則為 UTF-8 語言環境。如果未經轉換,具有老舊字元編碼的檔案,便會顯示為無意義的文字。</para>
-       </note>
-  </sect1><!-- ============= Getting Started =========================== -->
-
-
-  <sect1 id="fsexam-getting-started"><!-- ============= To Start fsexam ============================ --><title>入門</title><sect2 id="fsexam-to-start"><title>啟動&appname;</title><para>您可以用下列方式來啟動&app;:</para>
-                <variablelist>
-                <varlistentry><term>功能表</term><listitem>
-                <para>按一下<guibutton> [啟動]</guibutton>,然後選擇<menuchoice><guimenu> [應用程式]</guimenu><guisubmenu> [公用程式]</guisubmenu><guimenuitem> [檔案系統檢查程式]</guimenuitem></menuchoice>。</para>
-                </listitem>
-                </varlistentry>
-                <varlistentry><term>指令行</term><listitem>
-                <para>執行下列指令:<userinput>fsexam</userinput></para>
-                </listitem>
-                </varlistentry>
-                </variablelist>
-	</sect2>
-
-        <sect2 id="fsexam-when-you-start"><title>當您啟動&appname;</title><para>當您啟動&app;時,會顯示下列視窗:</para>
-
-                <figure id="fsexam-window"><title>&appname;視窗</title><screenshot>
-                         <mediaobject>
-                                <imageobject>
-                                  <imagedata fileref="figures/fsexam.png" format="PNG"/>
-                                         </imageobject>
-                                <textobject><phrase>顯示 fsexam 主視窗。</phrase></textobject>
-                        </mediaobject>
-                  </screenshot>
-                </figure>
-
-                <para>&app;視窗包含下列元素:</para>
-                <variablelist>
-                  <varlistentry><term>功能表列</term><listitem>
-                                <para>功能表列上的功能表,具有在&app;使用檔案時,所需要的所有指令。</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>顯示區域</term><listitem>
-                                <para>顯示區域顯示目前目錄的內容。</para>
-                         </listitem>
-                  </varlistentry>
-                  <varlistentry><term>狀態列</term><listitem>
-                                <para>狀態列顯示關於目前&app;活動的資訊。</para>
-                         </listitem>
-                  </varlistentry>
-                </variablelist>
-                <para>當您用滑鼠右鍵按一下&app;視窗時,應用程式便會顯示快顯功能表。快顯功能表含有最常見的指令。</para>
-
-      <para>本使用手冊記載功能表列的各項功能。</para>
-         </sect2>
-  </sect1><!-- ================ Usage ================================ -->
-
-
-  <sect1 id="fsexam-usage"><!-- ============= To Open a File ======================== --><title>用法</title><sect2 id="fsexam-select"><title>選取檔案或目錄</title><para>選擇<menuchoice><guimenu> [檔案]</guimenu><guimenuitem> [開啟]</guimenuitem></menuchoice>,然後選取您要變更編碼的檔案或目錄。</para>
-		<para>如果您選取目錄,該目錄中的所有檔案及子目錄都會出現在顯示區域中。</para>
-	 </sect2><!-- ============= To Apply by name  ================================ -->
-
-
-	 <sect2 id="fsexam-convert-filename"><title>轉換檔案或目錄的名稱</title><para>執行下列步驟:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>選取檔案或目錄,如在<xref linkend="fsexam-select"/>中所述。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [轉換檔案名稱]</guimenuitem></menuchoice>。</para>
-                    <para>依預設值,<guilabel>[檔案系統檢查器名稱轉換]</guilabel> 對話方塊便會出現。如需有關如何顯示或隱藏<guilabel> [檔案系統檢查器名稱轉換] </guilabel>對話方塊的資訊,請參閱 <xref linkend="fsexam-prefs"/>。</para>
-                    <para><guilabel>[檔案系統檢查器名稱轉換] </guilabel>對話方塊會顯示一個字元編碼清單,&app;可以用該清單來轉換檔案名稱。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選取一種編碼,然後按一下<guibutton> [確定]</guibutton>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;成功重新命名檔案,狀態列便會顯示老舊字元編碼的名稱。</para>
-		<para>如果轉換失敗,狀態列便會顯示錯誤訊息。</para>
-	 </sect2><!-- ============= To Apply by content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-convert-contents"><title>轉換檔案內容</title><para>執行下列步驟:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>選取檔案,如在<xref linkend="fsexam-select"/>中所述。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [轉換內容]</guimenuitem></menuchoice>。</para>
-                    <para><guilabel>[檔案系統檢查器內容轉換] </guilabel>視窗便會顯示檔案的內容。</para>
-                  </listitem>
-                  <listitem>
-                    <para>若要接受轉換,並以轉換的內容覆寫原始檔案,請按一下<guibutton> [確定]</guibutton>。</para>
-                    <para>若要取消轉換,請關閉 <guilabel>[檔案系統檢查器內容轉換]</guilabel> 視窗。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;成功轉換檔案內容,狀態列便會顯示下列文字:<screen>File content -convert from <replaceable>original_encoding</replaceable>  ( 檔案內容 - 從<replaceable>原始編碼</replaceable>轉換)</screen></para>
-		<para>如果轉換失敗,狀態列便會顯示錯誤訊息。</para>
-		<note>
-		  <para>&app;只能轉換純文字檔的內容。&app;使用 <command>file</command> 指令來檢查目前的檔案是否是純文字檔。如果無法取得 <command>file</command> 指令輸出,&app;便會顯示下列錯誤訊息:<screen>popen error, please try again (popen 錯誤,請再試一次)</screen></para>
-		</note>
-	 </sect2><!-- ============= To Peek content  ================================ -->
-
-
-
-	 <sect2 id="fsexam-preview-contents"><title>預覽檔案內容</title><para>執行下列步驟:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>選取檔案,如下所述:<xref linkend="fsexam-select"/>。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [預覽內容]</guimenuitem></menuchoice>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>如果&app;成功預覽檔案內容,快顯視窗便會顯示檔案的第一個部分。按一下快顯視窗以關閉該視窗。</para>
-		<para>如果預覽失敗,狀態列便會顯示錯誤訊息。</para>
-	 </sect2><!-- ============== To Undo a Conversion  ====================== -->
-
-
-	 <sect2 id="fsexam-undo-conversion"><title>還原最後動作</title><para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [還原]</guimenuitem></menuchoice>。</para>
-	 </sect2><!-- ============== To Restore the Original File  ====================== -->
-
-
-
-	 <sect2 id="fsexam-restore-file"><title>還原原始檔案</title><para>執行下列步驟:</para>
-                <orderedlist>
-                  <listitem>
-                    <para>選取檔案,如下所述:<xref linkend="fsexam-select"/>。</para>
-                  </listitem>
-                  <listitem>
-                    <para>選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [還原原始檔案]</guimenuitem></menuchoice>。</para>
-                  </listitem>
-                </orderedlist>
-		<para>&app;便會將具有原始檔案名稱的檔案,還原為原始檔案內容。</para>
-	 </sect2><!-- ============= To Display Report Pane =================== -->
-
-
-	 <sect2 id="fsexam-report-pane"><title>顯示報告窗格</title><para>選擇<menuchoice><guimenu> [檢視]</guimenu><guimenuitem> [報告窗格]</guimenuitem></menuchoice>。</para>
-		<para>報告窗格會顯示目錄名稱,以及具有對應老舊字元編碼名稱的已轉換檔案的清單。</para>
-		<para>如下所示,在每行的開頭,<literal>[<replaceable>X</replaceable>]</literal> 指示&app;所執行的動作:</para>
-                <informaltable frame="all">
-                  <tgroup cols="2" colsep="1" rowsep="1">
-                    <colspec colname="COLSPEC0" colwidth="50*"/>
-                    <colspec colname="COLSPEC1" colwidth="50*"/>
-                    <thead>
-                      <row valign="top">
-                        <entry colname="COLSPEC0">
-                          <para>[<replaceable>X</replaceable>]</para></entry>
-                        <entry colname="COLSPEC1">
-                          <para>描述</para></entry>
-                      </row>
-                    </thead>
-                    <tbody>
-                      <row valign="top">
-                        <entry><para>[C]</para></entry>
-                        <entry><para>轉換檔案內容。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[F]</para></entry>
-                        <entry><para>轉換檔名。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[R]</para></entry>
-                        <entry><para>還原原始檔案。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UC]</para></entry>
-                        <entry><para>還原檔案內容的轉換。</para></entry>
-                      </row>
-                      <row valign="top">
-                        <entry><para>[UF]</para></entry>
-                        <entry><para>還原檔案名稱的轉換。</para></entry>
-                      </row>
-                    </tbody>
-                  </tgroup>
-                </informaltable>
-
-                    <para>若要隱藏報告窗格,請再度選擇<menuchoice><guimenu> [檢視]</guimenu><guimenuitem> [報告窗格]</guimenuitem></menuchoice>。</para>
-	 </sect2>
-  </sect1><!-- ============= Preferences ============================= -->
-
-
-
-  <sect1 id="fsexam-prefs"><title>喜好設定</title><para>若要配置&app;,請選擇<menuchoice><guimenu> [編輯]</guimenu><guimenuitem> [喜好設定]</guimenuitem></menuchoice>。<guilabel>[檔案系統檢查器喜好設定] </guilabel>對話方塊便會出現。</para>
-	 
-        <variablelist>
-          <varlistentry><term><guilabel>子資料夾</guilabel> </term><listitem>
-                  <para>選取<guilabel> [遞迴模式] </guilabel>選項,以指定&app;轉換選取目錄中所有檔案及子目錄的名稱。</para>
-                  <note><para>&app;不會遞迴轉換目錄的內容。</para></note>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>使用者介入</guilabel> </term><listitem>
-                  <para>選取<guilabel> [自動轉換] </guilabel>選項,以指定&app;使用<guilabel> [編碼清單] </guilabel>中第一種適合的老舊字元編碼,將檔案及子目錄的名稱轉換為 UTF-8 編碼。若您沒有選取此選項,&app;會顯示<guilabel> [檔案系統檢查器名稱轉換] </guilabel>對話方塊,如下所述:<xref linkend="fsexam-convert-filename"/>。</para>
-            </listitem>
-          </varlistentry> 
-          <varlistentry><term><guilabel>編碼清單</guilabel> </term><listitem>
-                  <para>顯示目前語言的可用老舊字元編碼清單。按一下<guibutton> [上] </guibutton>以便在清單中上移編碼。按一下<guibutton> [下] </guibutton>以便在清單中下移編碼。</para>
-            </listitem>
-          </varlistentry> 
-        </variablelist>
-  </sect1>
-</article>
--- a/src/cmd/fsexam/pixmaps/Makefile	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms. 
-#
-
-include $(SRC)/Makefile.master
-
-FSEXAM_PIXMAP = 	fsexam-icon.png
-PIXMAPDIR = 		$(FILEROOT)/usr/share/pixmaps
-
-all:
-
-install:
-	$(INSDIR) $(PIXMAPDIR)
-	$(INS) $(PIXMAPDIR) $(FSEXAM_PIXMAP)
-
-clean:
-	$(RM) $(PIXMAPDIR)/$(FSEXAM_PIXMAP)
-
--- a/src/cmd/fsexam/pixmaps/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms. 
-#
-
-appicondir = $(datadir)/pixmaps
-appicon_DATA = fsexam-icon.png
-
-EXTRA_DIST = \
-	$(appicon_DATA)
Binary file src/cmd/fsexam/pixmaps/fsexam-icon.png has changed
--- a/src/cmd/fsexam/po/ChangeLog	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,58 +0,0 @@
-2004-10-25  Yong Sun <[email protected]>
-
-	* POTFILES.in: Add desktop.in file in POTFILES.in
-
-2004-10-11  Yong Sun <[email protected]>
-
-	* cs.po:
-	* de.po:
-	* es.po:
-	* fr.po:
-	* fsexam.pot:
-	* hu.po:
-	* it.po:
-	* ja.po:
-	* ko.po:
-	* pl.po:
-	* pt_BR.po:
-	* ru.po:
-	* sv.po:
-	* zh_CN.po:
-	* zh_HK.po:
-	* zh_TW.po:
-	update messages from cycle 8.
-
-2004-08-23  Yong Sun <[email protected]>
-
-	* Makefile.in.in: change localedir to use %{datadir}
-
-2004-05-25  Gavin Tu <[email protected]>
-
-	* ChangeLog:
-	* Makefile:
-	* Makefile.in:
-	* POTFILES:
-
-2004-05-25  Gavin Tu <[email protected]>
-
-	* ChangeLog:
-	* Makefile:
-	* Makefile.in:
-	* POTFILES:
-
-2004-05-25  Gavin Tu <[email protected]>
-
-	* ChangeLog:
-	* Makefile:
-	* Makefile.in:
-	* POTFILES:
-
-2004-05-25  Gavin Tu <[email protected]>
-
-	* Makefile:
-	* Makefile.in:
-	* POTFILES:
-
-2004-04-20  Federic Zhang <[email protected]>
-
-	* version 0.1 
--- a/src/cmd/fsexam/po/Makefile	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-#ident	"@(#)Makefile	1.0	06/03/07	SMI"
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-
-include $(SRC)/Makefile.master
-
-GETTEXT_PACKAGE = fsexam
-PACKAGE = fsexam
-VERSION = 0.3
-
-SHELL = /bin/sh
-GMSGFMT = /usr/bin/msgfmt
-MSGFMT = /usr/bin/msgfmt
-
-srcdir = .
-
-POFILES =  de.po es.po fr.po it.po ja.po ko.po pt_BR.po sv.po zh_CN.po zh_HK.po zh_TW.po
-GMOFILES =  de.gmo es.gmo fr.gmo it.gmo ja.gmo ko.gmo pt_BR.gmo sv.gmo zh_CN.gmo zh_HK.gmo zh_TW.gmo
-
-CATALOGS =  de.mo es.mo fr.mo it.mo ja.mo ko.mo pt_BR.mo sv.mo zh_CN.mo zh_HK.mo zh_TW.mo
-CATOBJEXT = .gmo
-INSTOBJEXT = .mo
-
-localedir = $(FILEROOT)/usr/share/locale
-gnulocaledir = $(FILEROOT)/usr/share/locale
-
-all: $(CATALOGS)
-
-.po.mo:
-	$(MSGFMT) -o $@ $<
-
-de.mo:	de.po
-	$(MSGFMT) -o de.mo de.po
-es.mo:	es.po
-	$(MSGFMT) -o es.mo es.po
-fr.mo:	fr.po
-	$(MSGFMT) -o fr.mo fr.po
-it.mo:	it.po
-	$(MSGFMT) -o it.mo it.po
-ja.mo:	ja.po
-	$(MSGFMT) -o ja.mo ja.po
-ko.mo:	ko.po
-	$(MSGFMT) -o ko.mo ko.po
-pt_BR.mo:	pt_BR.po
-	$(MSGFMT) -o pt_BR.mo pt_BR.po
-sv.mo:	sv.po
-	$(MSGFMT) -o sv.mo sv.po
-zh_CN.mo:	zh_CN.po
-	$(MSGFMT) -o zh_CN.mo zh_CN.po
-zh_TW.mo:	zh_TW.po
-	$(MSGFMT) -o zh_TW.mo zh_TW.po
-zh_HK.mo:	zh_HK.po
-	$(MSGFMT) -o zh_HK.mo zh_HK.po
-
-
-
-
-.po.gmo:
-	$(GMSGFMT) -o $@ $<
-
-
-install: all
-	@catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  destdir=$(localedir); \
-	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-	  dir=$(DESTDIR)/$$destdir/$$lang/LC_MESSAGES; \
-	  $(INSDIR) $$dir; \
-	  $(INS) $$dir $$cat; \
-	  mv $$dir/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
-	  echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
-	done
-
-uninstall:
-	catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
-	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
-	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
-	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
-	done
-
-check: all
-
-
-mostlyclean:
-	rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
-	rm -fr *.o
-
-clean: mostlyclean
--- a/src/cmd/fsexam/po/POTFILES	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms. 
-#
-
-	../src/fsexam.c \
-	../src/encoding.c \
-	../src/fsexam-conversion.c \
-	../src/fsexam-ui.c \
-	../src/fsexam-history.c \
-	../src/fsexam-preference.c \
-	../src/fsexam-content.c \
-	../data/fsexam.schema.in
--- a/src/cmd/fsexam/po/POTFILES.in	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms. 
-#
-
-src/fsexam.c
-src/encoding.c
-src/fsexam-conversion.c
-src/fsexam-ui.c
-src/fsexam-history.c
-src/fsexam-preference.c
-src/fsexam-content.c
-data/fsexam.schemas.in
-data/fsexam.desktop.in
--- a/src/cmd/fsexam/po/cs.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,420 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-11-07 19:17+0100\n"
-"Last-Translator: \n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "File System Examiner"
-
-#: src/fsexam-conversion.c:139
-#, fuzzy
-msgid "File System Examiner name conversion"
-msgstr "File System Examiner"
-
-#: src/fsexam-conversion.c:213
-#, fuzzy
-msgid "Folder already exists"
-msgstr "Adresář již existuje"
-
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "Soubor již existuje"
-
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "Chybí oprávnění pro přejmenování"
-
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "Soubor ještě neexistuje"
-
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr ""
-
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr ""
-
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr ""
-
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "Jméno souboru - chyba konverze"
-
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "Jméno souboru - již UTF8"
-
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-#, fuzzy
-msgid "Location:"
-msgstr "_Akce"
-
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "Chybí oprávnění pro čtení"
-
-#: src/fsexam-ui.c:381
-#, fuzzy
-msgid "Folder doesn't exist yet"
-msgstr "Soubor ještě neexistuje"
-
-#: src/fsexam-ui.c:385
-#, fuzzy
-msgid "No folder specified"
-msgstr "Adresář nespecifikován"
-
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-#, fuzzy
-msgid "Null folder"
-msgstr "Adresář NULL"
-
-#: src/fsexam-ui.c:574
-#, fuzzy
-msgid "Folder Selection"
-msgstr "Výběr kandidáta"
-
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "Chyba při zobrazování nápovědy: %s"
-
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-"fsexam pomáhá s migrací jména souboru a jeho obsahu ze starého kódování na "
-"UTF8"
-
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "_Soubor"
-
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr ""
-
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr ""
-
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr ""
-
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr ""
-
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr ""
-
-#: src/fsexam-ui.c:859
-#, fuzzy
-msgid "Pre_view Content"
-msgstr "Náhled na obsah"
-
-#: src/fsexam-ui.c:874
-#, fuzzy
-msgid "_Preferences"
-msgstr "Nastavení"
-
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "Náhled"
-
-#: src/fsexam-ui.c:886
-#, fuzzy
-msgid "_Report Pane"
-msgstr "Hláškové okno"
-
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "Nápověda"
-
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr ""
-
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr ""
-
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "Chyba při nahrávání ikony %s\n"
-
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "Vítejte"
-
-#: src/fsexam-preference.c:406
-#, fuzzy
-msgid "File System Examiner preferences"
-msgstr "File System Examiner"
-
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr ""
-
-#: src/fsexam-preference.c:433
-#, fuzzy
-msgid "_Recursive Mode"
-msgstr "Rekurzivní režim"
-
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr ""
-
-#: src/fsexam-preference.c:453
-#, fuzzy
-msgid "_Automatic Conversion"
-msgstr "Automatický převod"
-
-#: src/fsexam-preference.c:470
-#, fuzzy
-msgid "Encode list:"
-msgstr "seznam kódování"
-
-#: src/fsexam-content.c:178
-#, fuzzy
-msgid "Not plain text"
-msgstr "Textová data nebyla nalezena"
-
-#: src/fsexam-content.c:294
-#, fuzzy
-msgid "File System Examiner content conversion"
-msgstr "File System Examiner"
-
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "Sekvence bytů zatím nerozeznána"
-
-#: src/fsexam-content.c:413
-#, fuzzy
-msgid "File content - UTF8 already"
-msgstr "Obsah souboru - již UTF8"
-
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "Obsah souboru - chyba při otvírání"
-
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "Obsah souboru - chyba při zápisu"
-
-#: src/fsexam-content.c:464
-#, fuzzy, c-format
-msgid "File content - convert from %s"
-msgstr "Obsah souboru - chyba konverze"
-
-#: src/fsexam-content.c:467
-#, fuzzy, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "Obsah souboru - chyba konverze"
-
-#: src/fsexam-content.c:470
-#, fuzzy
-msgid "File content - delete Carriage Return only"
-msgstr "Obsah souboru - chyba při zápisu"
-
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr ""
-
-#: src/fsexam-content.c:622
-#, fuzzy, c-format
-msgid "%s doesn't exist yet"
-msgstr "Soubor ještě neexistuje"
-
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr ""
-
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "Obsah souboru - chyba konverze"
-
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr ""
-
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr ""
-
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"Seznam přípon. Libovolný soubor s příponou ze seznamu bude fsexam považovat "
-"jako soubor s obyčejným textem."
-
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"Aplikovatelné pouze pro konverzi jmen souborů! Rakurzivní režim, v němž "
-"fsexam konvertuje jména souborů a adresářů rekurzivně."
-
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"Aplikovatelné pouze pro konverzi jmen souborů. Automatický režim, v němž "
-"fsexam automaticky konvertuje s nejlepším výsledkem bez zásahu uživatele. V "
-"opačném případě se při každém výskytu více vhodných kandidátů objeví dialog "
-"a uživatel musí sám rozhodnout, který je nejlepší."
-
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"Seznam jmen původních kódování dostupných pro vybraný jazyk. Pořadí v "
-"seznamu je významné. fsexam použije první vhodné."
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[ISO8859-1]"
-
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "automatický režim"
-
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "seznam kódování"
-
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "rekurzivní režim"
-
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "seznam přípon"
-
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "Pomocník při převodu ze starého kódování na UTF8"
-
-#~ msgid "Directory already exists"
-#~ msgstr "Adresář již existuje"
-
-#~ msgid "File content"
-#~ msgstr "Obsah souboru"
-
-#~ msgid "File Hierarchy"
-#~ msgstr "Souborová hierarchie"
-
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "Adresář ještě neexistuje"
-
-#~ msgid "Directory Selection"
-#~ msgstr "Výběr adresáře"
-
-#~ msgid "Apply by name"
-#~ msgstr "Aplikovat podle jména"
-
-#~ msgid "Apply by content"
-#~ msgstr "Aplikovat podle obsahu"
-
-#~ msgid "Encoding List"
-#~ msgstr "Seznam kódování"
-
-#~ msgid "popen error, please try again!"
-#~ msgstr "chyba volání popen, zkuste znovu!"
-
-#~ msgid "File content candidate window"
-#~ msgstr "Obsah souboru: možnosti"
-
-#~ msgid "File content - successful conversion"
-#~ msgstr "Obsah souboru - úspěšná konverze"
-
-#~ msgid "Directory node"
-#~ msgstr "Adresářový uzel"
-
-#~ msgid "File content - successful undo"
-#~ msgstr "Obsah souboru - úspěšné zpět"
--- a/src/cmd/fsexam/po/de.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,604 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN MESSAGE
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "Dateisystem-Prüfung"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "Dateisystem-Prüfung - Umwandlung von Dateinamen"
-
-# SUN MSG
-# SUN MESSAGE
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "Ordner existiert bereits"
-
-# SUN MSG
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "Datei existiert bereits"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "Umbenennen nicht möglich (unzureichende Benutzerrechte)"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "Datei existiert noch nicht"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "Wagenrücklauf löschen"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "nur Wagenrücklauf löschen"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "Wagenrücklauf hinzufügen"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "nur Wagenrücklauf hinzufügen"
-
-# SUN MSG
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "Dateiname - Konvertierungsfehler"
-
-# SUN MSG
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "Dateiname - liegt bereits in UTF8 vor"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "Adresse:"
-
-# SUN MESSAGE
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "Kein Leserecht"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "Ordner existiert noch nicht"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "Kein Ordner angegeben"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "Ordner NULL"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "Ordnerauswahl"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "Beim Anzeigen der Hilfe ist ein Fehler aufgetreten: %s"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-"fsexam hilft dabei, Dateinamen und -inhalte von der alten Legacy-Codierung "
-"nach UTF8 zu konvertieren."
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "_Datei"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "_Öffnen..."
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "_Bearbeiten"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "_Ursprüngliche Datei wiederherstellen"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "_Dateiname konvertieren"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "Inhalt _konvertieren"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "_Inhaltsvorschau"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "_Einstellungen"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "_Ansicht"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "_Berichtsfenster"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "_Hilfe"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "_Inhalt"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "_Info"
-
-# SUN MSG
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "Fehler beim Laden von Symbol %s\n"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "Herzlich willkommen!"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "Dateisystem-Prüfung - Einstellungen"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "Unterordner:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "_Rekursiver Modus"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "Benutzereingriff:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "_Automatische Konvertierung"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "Codierliste:"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "Kein Normaltext"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "Dateisystem-Prüfung - Umwandlung des Inhalts"
-
-# SUN MSG
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "Bytesequenz ist bislang unbekannt"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "Dateiinhalt - liegt bereits in UTF8 vor"
-
-# SUN MSG
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "Dateiinhalt - Fehler beim Öffnen"
-
-# SUN MSG
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "Dateiinhalt - Fehler beim Schreiben"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "Dateiinhalt - konvertieren aus %s"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "Dateiinhalt - konvertieren aus %s und Wagenrücklauf löschen"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "Dateiinhalt - nur Wagenrücklauf löschen"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "Konvertieren des Ordnerinhalts nicht möglich"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s existiert noch nicht"
-
-# SUN MESSAGE
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "Dateiinhalt wurde gelöscht -- Wiederherstellung nicht möglich!"
-
-# SUN MSG
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "Dateiinhalt - Konvertierungsfehler"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "%s wiederherstellen"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "%s wiederherstellen und Wagenrücklauf hinzufügen"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "Wiederherstellen durch Hinzufügen von Wagenrücklauf"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "UTF8 wiederherstellen"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "UTF8 wiederherstellen und Wagenrücklauf löschen"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "Wiederherstellen durch Löschen von Wagenrücklauf"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "Vorschau von mehreren ausgewählten Elementen nicht möglich"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"Eine Liste von Namenserweiterungen. Alle Dateien, deren Namenserweiterung in "
-"dieser Liste enthalten ist, werden von fsexam als normale Textdateien "
-"behandelt."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"Nur relevant für die Umwandlung von Dateinamen. Im rekursiven Modus "
-"konvertiert fsexam die Namen von Dateien nach UTF8 und verarbeitet dabei "
-"auch rekursiv die Unterverzeichnisse."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"Nur relevant für die Umwandlung von Dateinamen. Im automatischen Modus "
-"versucht fsexam, automatisch und ohne weitere Benutzereingriffe die "
-"Umwandlung optimal durchzuführen. Ist der automatische Modus nicht "
-"aktiviert, erscheint ein Dialogfeld mit verschiedenen "
-"Konvertierungsoptionen, aus denen Sie die geeignete auswählen können."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"Die Liste der Legacy-Codierungen, die für die jeweilige Sprache verfügbar "
-"sind. Bitte achten Sie auf die Reihenfolge innerhalb der Liste. fsexam "
-"betrachtet die erste Codierung, aus der eine erfolgreiche Konvertierung "
-"möglich ist, als beste Option."
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr ""
-"[ISO8859-1,ISO8859-2,ISO8859-3,ISO8859-4,ISO8859-5,ISO8859-6,ISO8859-7,"
-"ISO8859-8,ISO8859-9,ISO8859-10]"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "automatischer Modus"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "Codierungsliste"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "rekursiver Modus"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "Erweiterungsliste"
-
-# SUN MSG
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "Hilft bei der Umwandlung von der alten Legacy-Codierung nach UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#~ msgid "text"
-#~ msgstr "Text"
-
-# SUN MSG
-#~ msgid "Directory already exists"
-#~ msgstr "Verzeichnis existiert bereits"
-
-# SUN MSG
-#~ msgid "File content"
-#~ msgstr "Dateiinhalt"
-
-# SUN MSG
-#~ msgid "Null directory"
-#~ msgstr "Verzeichnis NULL"
-
-# SUN MSG
-#~ msgid "Apply by name"
-#~ msgstr "Übernehmen nach Name"
-
-# SUN MSG
-#~ msgid "Apply by content"
-#~ msgstr "Übernehmen nach Inhalt"
-
-# SUN MSG
-#~ msgid "Peek content"
-#~ msgstr "Inhaltsvorschau"
-
-# SUN MSG
-#~ msgid "popen error, please try again!"
-#~ msgstr "popen-Fehler. Bitte versuchen Sie es erneut."
-
-# SUN MSG
-#~ msgid "Not one plain text"
-#~ msgstr "Keine Normaltext-Dateien gefunden"
-
-# SUN MSG
-#~ msgid "File content candidate window"
-#~ msgstr "Dateiinhalt: Optionsfenster"
-
-# SUN MSG
-#~ msgid "File content - successful conversion"
-#~ msgstr "Dateiinhalt - Konvertierung erfolgreich"
-
-# SUN MSG
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "Dateiinhalt - liegt bereits in UTF8 vor"
-
-# SUN MSG
-#~ msgid "Directory node"
-#~ msgstr "Verzeichnisknoten"
-
-# SUN MSG
-#~ msgid "File content - successful undo"
-#~ msgstr "Dateiinhalt - Rückgängigmachen erfolgreich"
-
-# SUN MESSAGE
-#~ msgid "Candidate Selection"
-#~ msgstr "Auswahl der zu prüfenden Elemente"
-
-# SUN MESSAGE
-#~ msgid "File Hierarchy"
-#~ msgstr "Dateihierarchie"
-
-# SUN MESSAGE
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "Verzeichnis existiert noch nicht"
-
-# SUN MESSAGE
-#~ msgid "No directory specified"
-#~ msgstr "Kein Verzeichnis angegeben"
-
-# SUN MESSAGE
-#~ msgid "Directory Selection"
-#~ msgstr "Verzeichnisauswahl"
-
-# SUN MESSAGE
-#~ msgid "_Action"
-#~ msgstr "_Aktion"
-
-# SUN MESSAGE
-#~ msgid "Report Pane"
-#~ msgstr "Berichtsfenster"
-
-# SUN MESSAGE
-#~ msgid "Encoding List"
-#~ msgstr "Codierungsliste"
-
-# SUN MESSAGE
-#~ msgid "Preference Setting"
-#~ msgstr "Voreinstellung"
-
-# SUN MESSAGE
-#~ msgid "Recursive Mode"
-#~ msgstr "Rekursiv"
-
-# SUN MESSAGE
-#~ msgid "Automatic Conversion"
-#~ msgstr "Automatische Konvertierung"
-
-# SUN MESSAGE
-#~ msgid "Conversion failure"
-#~ msgstr "Fehler beim Konvertieren"
-
-# SUN MESSAGE
-#~ msgid "UTF8 already"
-#~ msgstr "Liegt bereits in UTF8 vor"
--- a/src/cmd/fsexam/po/es.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,557 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# SUN REVIEWED
-# SUN MESSAGE
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN MESSAGE
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "Examinador del sistema de archivos"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "Conversión de nombres del Examinador del sistema de archivos"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "La carpeta ya existe"
-
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "El nombre del archivo ya existe."
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "No tiene permiso para renombrar"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "El archivo aún no existe"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "borrar retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "borrar retorno de carro solamente"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "agregar retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "agregar retorno de carro solamente"
-
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "Nombre de archivo - conversión no satisfactoria"
-
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "Nombre de archivo - ya es del tipo UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "Ubicación:"
-
-# SUN MESSAGE
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "No tiene permiso de lectura"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "La carpeta todavía no existe"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "No se ha especificado una carpeta"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "Carpeta nula"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "Selección de carpeta"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "Error al mostrar la ayuda: %s"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-"fsexam sirve de ayuda para migrar nombres y contenidos de archivos de una "
-"codificación antigua a UTF8"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "_Archivo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "_Abrir..."
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "_Editar"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "_Restaurar archivo original"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "Convertir _nombre de archivo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "_Convertir contenido"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "Pre_visualizar contenido"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "_Preferencias"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "_Ver"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "_Panel de informe"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "A_yuda"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "_Contenido"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "_Acerca de"
-
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "Error al cargar el icono %s\n"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "Bienvenido"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "Preferencias del Examinador del sistema de archivos"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "Subcarpeta:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "Modo _recursivo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "Intervención de usuario:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "Conversión _automática"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "Lista de codificación:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "No texto sin formato"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "Conversión de contenido del Examinador del sistema de archivos"
-
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "Secuencia de byte todavía no reconocida"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "Contenido de archivo - Ya es UTF8"
-
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "Contenido de archivo - fallo al abrir"
-
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "Contenido de archivo - error de escritura"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "Contenido de archivo - convertir de %s"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "Contenido de archivo - convertir de %s y borrar retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "Contenido de archivo - borrar retorno de carro solamente"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "No se puede convertir el contenido de la carpeta"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s todavía no existe"
-
-# SUN MESSAGE
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "El archivo se ha vaciado, no es posible restaurarlo."
-
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "Contenido de archivo - conversión no satisfactoria"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "Restaurar %s"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "Restaurar %s y agregar retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "Restaurar añadiendo retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "Restaurar UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "Restaurar UTF8 y borrar retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "Restaurar borrando retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "No es posible abrir una vista previa de varias selecciones"
-
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"Una lista de sufijos. Fsexam interpreta como archivo de texto cualquier "
-"archivo cuyo sufijo pertenezca a la lista."
-
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"Sólo es aplicable para la conversión de los nombres de archivos. Es un modo "
-"recursivo. Al habilitarlo, fsexam convertirá el nombre del archivo y el "
-"subdirectorio en formato UTF8 de forma recursiva."
-
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"Sólo es aplicable para la conversión de los nombres de archivos. Es un modo "
-"automático. Al habilitarlo, fsexam lo convertirá automáticamente con la "
-"mejor conversión posible sin intervención del usuario. En caso de que esto "
-"no fuera posible, un cuadro de diálogo informará de las posibilidades de "
-"conversión y lo que necesita el usuario para decidir entre ellas."
-
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"La lista de los nombres de codificación heredados disponibles para un "
-"lenguaje específico. Nota: el orden de la lista es importante, ya que fsexam "
-"considera como el mejor el primero que puede usar para una conervsión "
-"satisfactoria."
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[ISO8859-1,ISO8859-8,ISO8859-9]"
-
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "modo automático"
-
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "lista de codificación"
-
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "modo recursivo"
-
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "lista de sufijos"
-
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "Ayuda para la migración de una codificación heredada a UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#~ msgid "text"
-#~ msgstr "texto"
-
-#~ msgid "Directory already exists"
-#~ msgstr "El directorio ya existe"
-
-#~ msgid "File content"
-#~ msgstr "Contenido del archivo"
-
-#~ msgid "Null directory"
-#~ msgstr "Directorio nulo"
-
-#~ msgid "Apply by name"
-#~ msgstr "Aplicar por nombre"
-
-#~ msgid "Apply by content"
-#~ msgstr "Aplicar por contenido"
-
-#~ msgid "Peek content"
-#~ msgstr "Examinar contenido"
-
-#~ msgid "popen error, please try again!"
-#~ msgstr "error popen, inténtelo más tarde."
-
-#~ msgid "Not one plain text"
-#~ msgstr "No es texto sin formato"
-
-#~ msgid "File content candidate window"
-#~ msgstr "Ventana candidata de contenido de archivo"
-
-#~ msgid "File content - successful conversion"
-#~ msgstr "Cotenido de archivo - conversión satisfactoria"
-
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "Contenido de archivo - ya es del tipo UTF8"
-
-#~ msgid "Directory node"
-#~ msgstr "Nodo de directorio"
-
-#~ msgid "File content - successful undo"
-#~ msgstr "Contenido de archivo - acción de deshacer satisfactoria"
-
-# SUN MESSAGE
-#~ msgid "Candidate Selection"
-#~ msgstr "Selección de candidatos"
-
-# SUN MESSAGE
-#~ msgid "File Hierarchy"
-#~ msgstr "Jerarquía de archivos"
-
-# SUN MESSAGE
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "El directorio aún no existe"
-
-# SUN MESSAGE
-#~ msgid "No directory specified"
-#~ msgstr "No se ha especificado un directorio"
-
-# SUN MESSAGE
-#~ msgid "Directory Selection"
-#~ msgstr "Selección de directorio"
-
-# SUN MESSAGE
-#~ msgid "_Action"
-#~ msgstr "A_cción"
-
-# SUN MESSAGE
-#~ msgid "Report Pane"
-#~ msgstr "Panel de informe"
-
-# SUN MESSAGE
-#~ msgid "Encoding List"
-#~ msgstr "Lista de codificaciones"
-
-# SUN MESSAGE
-#~ msgid "Preference Setting"
-#~ msgstr "Configuración de preferencias"
-
-# SUN MESSAGE
-#~ msgid "Recursive Mode"
-#~ msgstr "Modo recursivo"
-
-# SUN MESSAGE
-#~ msgid "Automatic Conversion"
-#~ msgstr "Conversión automática"
-
-# SUN MESSAGE
-#~ msgid "Conversion failure"
-#~ msgstr "Error de conversión"
-
-# SUN MESSAGE
-#~ msgid "UTF8 already"
-#~ msgstr "Ya es UTF8"
--- a/src/cmd/fsexam/po/fr.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,562 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# SUN REVIEWED
-# SUN MESSAGE
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN MESSAGE
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "Contrôleur de système de fichiers"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "Conversion du nom du contrôleur de système de fichiers"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "Ce dossier existe déjà"
-
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "Un fichier de ce nom existe déjà"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "Renommage non autorisé"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "Le fichier n'existe pas encore"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "supprimer le retour chariot"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "supprimer le retour chariot uniquement"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "ajouter un retour chariot"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "ajouter un retour chariot uniquement"
-
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "Nom du fichier - échec de la conversion"
-
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "Nom du fichier - déjà UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "Emplacement :"
-
-# SUN MESSAGE
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "Lecture non autorisée"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "Ce dossier n'existe pas"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "Vous devez indiquer un dossier"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "Dossier vide"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "Sélection du dossier"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "Une erreur est survenue lors de l'affichage de l'aide : %s"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-"fsexam facilite la migration du nom et du contenu des fichiers de l'encodage "
-"existant vers UTF8"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "_Fichier"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "_Ouvrir..."
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "_Édition"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "_Restaurer le fichier d'origine"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "Convertir le nom de _fichier"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "_Convertir le contenu"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "Pré_visualiser le contenu"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "_Préférences"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "_Affichage"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "Volet du _rapport"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "_Aide"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "_Contenu"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "_À propos de"
-
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "Erreur lors du chargement de l'icône %s\n"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "Bienvenue"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "Préférences du contrôleur de système de fichiers"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "Sous-dossier :"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "Mode _récursif"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "Intervention de l'utilisateur :"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "Conversion _automatique"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "Liste de codages :"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "Pas en texte simple"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "Conversion du contenu du contrôleur de système de fichiers"
-
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "Séquence d'octets pas encore reconnue"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "Contenu du fichier : déjà au format UTF8"
-
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "Contenu du fichier - échec de l'ouverture"
-
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "Contenu du fichier - échec de l'enregistrement"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "Contenu du fichier : convertir depuis %s"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr ""
-"Contenu du fichier : convertir depuis %s et supprimer le retour chariot"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "Contenu du fichier : supprimer le retour chariot uniquement"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "Impossible de convertir le contenu du dossier"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s n'existe pas"
-
-# SUN MESSAGE
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "Le fichier a été vidé, mais ne peut pas être restauré."
-
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "Contenu du fichier - échec de la conversion"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "Restaurer %s"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "Restaurer %s et ajouter un retour chariot"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "Restaurer en ajoutant un retour chariot"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "Restaurer le format UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "Restaurer le format UTF8 et supprimer le retour chariot"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "Restaurer en supprimant le retour chariot"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "Impossible de prévisualiser plusieurs sélections"
-
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"Liste de suffixes. Tout fichier dont le suffixe appartient à la liste est "
-"pris en charge par fsexam en tant que fichier texte simple."
-
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"Valable uniquement pour la conversion du nom du fichier. Mode récursif : si "
-"vous l'activez, fsexam convertira récursivement le nom du fichier et le sous-"
-"répertoire en UTF8."
-
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"Valable uniquement pour la conversion du nom du fichier. Mode automatique : "
-"si vous l'activez, fsexam effectuera  automatiquement une conversion "
-"optimale sans intervention de l'utilisateur. Autrement, une boîte de "
-"dialogue propose plusieurs solutions de conversion parmi lesquelles "
-"l'utilisateur doit choisir la meilleure."
-
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"Liste des noms de codages disponibles pour la langue spécifique. Notez que "
-"l'ordre de la liste est important. fsexam considère le premier élément comme "
-"le plus indiqué pour réussir la conversion."
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[ISO8859-1,ISO8859-3,ISO8859-5,ISo8859-8,ISO8859-9,ISO8859-10]"
-
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "mode automatique"
-
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "liste de codage"
-
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "mode récursif"
-
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "liste de suffixes"
-
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "Permet de passer du codage existant à UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#~ msgid "_\tal File"
-#~ msgstr "_Restaurer le fichier d'origine"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#~ msgid "text"
-#~ msgstr "texte"
-
-#~ msgid "Directory already exists"
-#~ msgstr "Un répertoire de ce nom existe déjà"
-
-#~ msgid "File content"
-#~ msgstr "Contenu du fichier"
-
-#~ msgid "Null directory"
-#~ msgstr "Répertoire null"
-
-#~ msgid "Apply by name"
-#~ msgstr "Appliquer par nom"
-
-#~ msgid "Apply by content"
-#~ msgstr "Appliquer par contenu"
-
-#~ msgid "Peek content"
-#~ msgstr "Examiner le contenu"
-
-#~ msgid "popen error, please try again!"
-#~ msgstr "Erreur popen, réessayez."
-
-#~ msgid "Not one plain text"
-#~ msgstr "Texte non simple"
-
-#~ msgid "File content candidate window"
-#~ msgstr "Fenêtre des candidats du contenu du fichier"
-
-#~ msgid "File content - successful conversion"
-#~ msgstr "Contenu du fichier - conversion réussie"
-
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "Contenu du fichier - déjà UTF8"
-
-#~ msgid "Directory node"
-#~ msgstr "Noeud du répertoire"
-
-#~ msgid "File content - successful undo"
-#~ msgstr "Contenu du fichier - annulation réussie"
-
-# SUN MESSAGE
-#~ msgid "Candidate Selection"
-#~ msgstr "Sélection des candidats"
-
-# SUN MESSAGE
-#~ msgid "File Hierarchy"
-#~ msgstr "Hiérarchie des fichiers"
-
-# SUN MESSAGE
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "Le répertoire n'existe pas encore"
-
-# SUN MESSAGE
-#~ msgid "No directory specified"
-#~ msgstr "Aucun répertoire n'est spécifié"
-
-# SUN MESSAGE
-#~ msgid "Directory Selection"
-#~ msgstr "Sélection du répertoire"
-
-# SUN MESSAGE
-#~ msgid "_Action"
-#~ msgstr "_Action"
-
-# SUN MESSAGE
-#~ msgid "Report Pane"
-#~ msgstr "Sous fenêtre Rapport"
-
-# SUN MESSAGE
-#~ msgid "Encoding List"
-#~ msgstr "Liste de codage"
-
-# SUN MESSAGE
-#~ msgid "Preference Setting"
-#~ msgstr "Définition des préférences"
-
-# SUN MESSAGE
-#~ msgid "Recursive Mode"
-#~ msgstr "Mode récursif"
-
-# SUN MESSAGE
-#~ msgid "Automatic Conversion"
-#~ msgstr "Conversion automatique"
-
-# SUN MESSAGE
-#~ msgid "Conversion failure"
-#~ msgstr "Échec de conversion"
-
-# SUN MESSAGE
-#~ msgid "UTF8 already"
-#~ msgstr "Déjà en UTF8"
--- a/src/cmd/fsexam/po/fsexam.pot	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,349 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr ""
-
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr ""
-
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr ""
-
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr ""
-
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr ""
-
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr ""
-
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr ""
-
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr ""
-
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr ""
-
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr ""
-
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr ""
-
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr ""
-
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr ""
-
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr ""
-
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr ""
-
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr ""
-
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr ""
-
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr ""
-
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr ""
-
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr ""
-
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr ""
-
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr ""
-
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr ""
-
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr ""
-
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr ""
-
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr ""
-
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr ""
-
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr ""
-
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr ""
-
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr ""
-
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr ""
-
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr ""
-
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr ""
-
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr ""
-
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr ""
-
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr ""
-
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr ""
-
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr ""
-
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr ""
-
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr ""
-
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr ""
-
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr ""
-
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr ""
-
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr ""
-
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr ""
-
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr ""
-
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr ""
-
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr ""
-
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr ""
-
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr ""
-
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr ""
-
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr ""
-
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr ""
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/po/hu.po	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,1426 @@
+# 
+# CDDL HEADER START
+# 
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+# 
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+# 
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+# 
+# CDDL HEADER END
+# 
+
+# 
+# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: new_fsexam.po\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-17 17:07+0800\n"
+"PO-Revision-Date: 2004-05-31 17:29+0200\n"
+"Last-Translator: INBUSS Kft <[email protected]>\n"
+"Language-Team: Hungarian <[email protected]>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../src/fsexam.glade2.h:1
+msgid "<b>Available encoding:</b>"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:2
+msgid "<b>Conversion Setting:</b>"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:3
+#, fuzzy
+msgid "<b>Encoding List:</b>"
+msgstr "Kódolások listája"
+
+#: ../src/fsexam.glade2.h:4
+msgid "<b>Encoding Selected:</b>"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:5
+msgid "<b>Search Result</b>"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:6
+msgid "<b>_Dryrun Result</b>"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:7
+msgid "<b>_Location:</b>"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:8
+#, fuzzy
+msgid "<b>_Report Pane</b>"
+msgstr "Jelentés mező"
+
+#: ../src/fsexam.glade2.h:9
+msgid "Add or Remove Encoding"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:10
+msgid "Archive or Compress files"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:11
+msgid "Based on seconds"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:12
+msgid "Clear Searc_h Result"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:13
+msgid "Clear the search result"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:14
+#, fuzzy
+msgid "Content Conversion _Mode"
+msgstr "Fájltartalom - konverziós hiba"
+
+#: ../src/fsexam.glade2.h:15
+msgid "Convert"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:16
+msgid "Convert file name or content based on previous dryrun result"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:17
+msgid ""
+"Convert file using the first candidate automatically instead of interactive "
+"converting"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:18
+msgid "Convert selected files' name or content according to the current mode"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:19
+msgid "Convert without detecting whether encoding is UTF-8 or not"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:20
+msgid "Data modified more than:"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:21
+msgid "Detect the encoding of file name or file content automatically"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:22
+msgid "Don't Chec_k Symlink Content"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:23
+msgid ""
+"Don't try to keep the consistency between symbolic link file and its target "
+"file"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:24
+msgid "Dryrun"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:25
+msgid "Dryrun without changing any file name or content in the disk"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:26
+msgid "Dryrun without changing files on disk"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:27
+#, fuzzy
+msgid "File Content _Mode"
+msgstr "Fájltartalom"
+
+#: ../src/fsexam.glade2.h:28 ../src/fsexam.c:395 ../src/fsexam.c:473
+#: ../data/fsexam.desktop.in.h:1
+#, fuzzy
+msgid "File Encoding Examiner"
+msgstr "Fájlrendszer vizsgáló"
+
+#: ../src/fsexam.glade2.h:29
+msgid "File Encoding Examiner Preferences"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:30
+msgid "File _Name Mode"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:31
+#, fuzzy
+msgid "File content conversion mode"
+msgstr "Fájltartalom - konverziós hiba"
+
+#: ../src/fsexam.glade2.h:32
+#, fuzzy
+msgid "File name conversion mode"
+msgstr "Fájlnév - konverziós hiba"
+
+#: ../src/fsexam.glade2.h:33
+msgid "Follow _Symbolic Link"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:34 ../data/fsexam.schemas.in.h:2
+msgid "Follow symbolic link"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:35
+msgid "Forcibly Convert"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:36
+msgid "Group name"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:37
+msgid "Handle _Hidden Files"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:38
+msgid "Handle _Remote Files"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:39
+msgid "Hide search result"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:40
+msgid "History Length:"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:41
+msgid "Log File Name:"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:42
+msgid "Look in folder:"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:43
+msgid "Name Contains:"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:44
+msgid "Open file"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:45
+msgid "Owned by group:"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:46
+msgid "Owned by user:"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:47
+msgid "Processing archive or compress file"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:48
+msgid "Processing hidden file"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:49
+msgid "Processing non-local files such as NFS file"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:50
+msgid "Processing special type of file"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:51
+msgid "Recursive handle files under folder"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:52
+msgid "Remove encoding"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:53
+msgid "Restore"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:54
+msgid "Restore given files' name or content according to conversion mode"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:55
+msgid "Restore selected files' name or content"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:56
+msgid ""
+"Save the encoding list permanently, otherwise used only for current session"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:57
+msgid "Scenario"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:58
+msgid "Search Result"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:59
+msgid "Search for _Files..."
+msgstr ""
+
+#: ../src/fsexam.glade2.h:60
+msgid "Search for files"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:61
+msgid "Search for files according to user given criteria"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:62
+msgid "Select A Folder"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:63
+msgid "Select encoding"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:64
+msgid "Special File Handling"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:65
+msgid "Status modified more than:"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:66
+msgid "Stop _Searching"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:67
+msgid "Stop searching files"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:68
+msgid ""
+"The number of conversion is stored. Converting multiple files at one time "
+"count as 1 time"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:69
+msgid "Undo the last action"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:70
+msgid "Use Log File"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:71
+msgid "Use log file"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:72
+msgid "Use shell glob pattern"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:73
+msgid "User name"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:74
+#, fuzzy
+msgid "_Auto Conversion"
+msgstr "Automatikus konverzió"
+
+#: ../src/fsexam.glade2.h:75
+#, fuzzy
+msgid "_Auto Detection"
+msgstr "_Művelet"
+
+#: ../src/fsexam.glade2.h:76
+msgid "_Content"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:77
+msgid "_Convert"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:78
+msgid "_Dryrun"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:79
+msgid "_Dryrun Result Pane"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:80
+msgid "_Edit"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:81
+msgid "_File"
+msgstr "_Fájl"
+
+#: ../src/fsexam.glade2.h:82
+msgid "_Forcibly Convert"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:83
+msgid "_Help"
+msgstr "_Súgó"
+
+#: ../src/fsexam.glade2.h:84
+#, fuzzy
+msgid "_Name Conversion Mode"
+msgstr "Konverziós hiba"
+
+#: ../src/fsexam.glade2.h:85
+#, fuzzy
+msgid "_Preview Content"
+msgstr "Tartalom előnézet"
+
+#: ../src/fsexam.glade2.h:86
+#, fuzzy
+msgid "_Recursive Mode"
+msgstr "Rekurzív mód"
+
+#: ../src/fsexam.glade2.h:87
+#, fuzzy
+msgid "_Report Pane"
+msgstr "Jelentés mező"
+
+#: ../src/fsexam.glade2.h:88
+msgid "_Restore"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:89
+msgid "_Scenario"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:90
+msgid "_View"
+msgstr "_Nézet"
+
+#: ../src/fsexam.glade2.h:91
+msgid "gtk-about"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:92
+msgid "gtk-open"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:93
+msgid "gtk-preferences"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:94
+msgid "gtk-quit"
+msgstr ""
+
+#: ../src/fsexam.glade2.h:95
+msgid "gtk-undo"
+msgstr ""
+
+#: ../src/fsexam-application-server.c:92
+msgid "One instance of fsexam is running already.\n"
+msgstr ""
+
+#: ../src/auto-detect.c:206 ../src/auto-detect.c:247
+#, c-format
+msgid ""
+"Warning: can not convert encoding %s to canonical encoding name, will ignore "
+"it.\n"
+msgstr ""
+
+#: ../src/callbacks.c:72
+msgid ""
+"No encoding provided. Please check 'Auto Detect' button in preferences "
+"dialog or add encoding through encoding dialog.\n"
+msgstr ""
+
+#: ../src/callbacks.c:124
+#, fuzzy
+msgid "No Selection"
+msgstr "Könyvtár kiválasztás"
+
+#: ../src/callbacks.c:131
+msgid "No files need to handle"
+msgstr ""
+
+#: ../src/callbacks.c:316
+msgid "Nothing need to undo"
+msgstr ""
+
+#: ../src/callbacks.c:355
+msgid "No results. Please see report pane for more information.\n"
+msgstr ""
+
+#: ../src/callbacks.c:734
+msgid "Stop the Searching..."
+msgstr ""
+
+#: ../src/callbacks.c:796
+msgid "Search Result has been cleared."
+msgstr ""
+
+#: ../src/encoding.c:90
+#, c-format
+msgid ""
+"%s is not supported encoding name, use 'fsexamc -l' to list supported "
+"encoding.\n"
+msgstr ""
+
+#: ../src/encoding.c:108
+#, c-format
+msgid ""
+"Your system do not support conversion from '%s' to 'UTF-8',will ignore it.\n"
+msgstr ""
+
+#: ../src/file-filter.c:82 ../src/file-filter.c:155
+msgid "Parameters of find(1) is empty.\n"
+msgstr ""
+
+#: ../src/file-filter.c:105 ../src/fsexam-plaintext.c:74
+#: ../src/fsexam-plaintext.c:145
+msgid "Can't open pipe file descriptor.\n"
+msgstr ""
+
+#: ../src/file-filter.c:111 ../src/file-filter.c:221
+msgid "Searching..."
+msgstr ""
+
+#: ../src/file-filter.c:123 ../src/file-filter.c:285
+msgid "Search finished"
+msgstr ""
+
+#: ../src/file-filter.c:175
+msgid "Error occurs during executing the search command."
+msgstr ""
+
+#: ../src/file-filter.c:196
+msgid "Error occurs when open fd."
+msgstr ""
+
+#: ../src/file-filter.c:253 ../src/file-filter.c:274
+#, c-format
+msgid "%d files found"
+msgstr ""
+
+#: ../src/file-filter.c:284
+msgid "Search stopped"
+msgstr ""
+
+#: ../src/file-validate.c:166 ../src/file-validate.c:194
+#, c-format
+msgid "Can't open file %s.\n"
+msgstr ""
+
+#: ../src/fsexam-convcontent.c:76 ../src/fsexam-specialfile.c:734
+#, c-format
+msgid "[Content] %s -> %s"
+msgstr ""
+
+#: ../src/fsexam-convcontent.c:466
+msgid "Can't new hash table.\n"
+msgstr ""
+
+#: ../src/fsexam-convname.c:175
+msgid "Re-create symbolic link success"
+msgstr ""
+
+#: ../src/fsexam-convname.c:291
+#, c-format
+msgid "[Name] %s -> %s"
+msgstr ""
+
+#: ../src/fsexam-convname.c:973
+#, fuzzy, c-format
+msgid "Candidate list:\n"
+msgstr "Lehetséges jelöltek"
+
+#: ../src/fsexam-convname.c:974
+#, c-format
+msgid "\t[No.] Encoding name\tConversion Result\n"
+msgstr ""
+
+#: ../src/fsexam-convname.c:1262
+#, c-format
+msgid "Can't access dry run result information.\n"
+msgstr ""
+
+#: ../src/fsexam-convname.c:1290
+msgid "Don't support this restore type.\n"
+msgstr ""
+
+#: ../src/fsexam-convname.c:1317
+#, c-format
+msgid "No proper encoding.\n"
+msgstr ""
+
+#: ../src/fsexam-convname.c:1322
+#, c-format
+msgid "Please select No.('s' to skip): "
+msgstr ""
+
+#: ../src/fsexam-dialog.c:135
+msgid "Please select candidate"
+msgstr ""
+
+#. Ask me button
+#: ../src/fsexam-dialog.c:171
+msgid "Don't ask me again"
+msgstr ""
+
+#. Index                    Charset        Cononical Name   Name                        locale
+#: ../src/fsexam-encoding-dialog.c:54 ../src/fsexam-encoding-dialog.c:85
+msgid "Chinese Traditional"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:55
+msgid "Chinese Traditional(Hong Kong)"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:56 ../src/fsexam-encoding-dialog.c:99
+msgid "Central European"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:57 ../src/fsexam-encoding-dialog.c:102
+msgid "Cyrillic"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:58 ../src/fsexam-encoding-dialog.c:92
+#: ../src/fsexam-encoding-dialog.c:97
+msgid "Western"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:59 ../src/fsexam-encoding-dialog.c:66
+#: ../src/fsexam-encoding-dialog.c:76 ../src/fsexam-encoding-dialog.c:104
+msgid "Greek"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:60 ../src/fsexam-encoding-dialog.c:70
+#: ../src/fsexam-encoding-dialog.c:106
+msgid "Turkish"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:61 ../src/fsexam-encoding-dialog.c:105
+msgid "Hebrew"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:62 ../src/fsexam-encoding-dialog.c:103
+msgid "Arabic"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:63 ../src/fsexam-encoding-dialog.c:95
+#: ../src/fsexam-encoding-dialog.c:101
+msgid "Baltic"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:64
+msgid "Vietnamese"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:65 ../src/fsexam-encoding-dialog.c:67
+msgid "Western Europe"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:68
+msgid "Central Europe"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:69
+msgid "Russian"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:71
+msgid "Portuguese"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:72
+msgid "Icelandic"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:73
+msgid "French Canadian"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:74 ../src/fsexam-encoding-dialog.c:93
+msgid "Nordic"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:75
+msgid "Cyrillic/Russian"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:77 ../src/fsexam-encoding-dialog.c:84
+#: ../src/fsexam-encoding-dialog.c:94
+msgid "Thai"
+msgstr ""
+
+#. { FSEXAM_ENCODING_CP949,    "CP950",       "CP950",         N_("Traditional Chinese"),  NULL },
+#: ../src/fsexam-encoding-dialog.c:78 ../src/fsexam-encoding-dialog.c:82
+#: ../src/fsexam-encoding-dialog.c:90 ../src/fsexam-encoding-dialog.c:108
+msgid "Japanese"
+msgstr ""
+
+#. { FSEXAM_ENCODING_CP949,    "CP936",       "CP936",         N_("Simplified Chinese"),   NULL },
+#: ../src/fsexam-encoding-dialog.c:80 ../src/fsexam-encoding-dialog.c:83
+#: ../src/fsexam-encoding-dialog.c:91 ../src/fsexam-encoding-dialog.c:107
+msgid "Korean"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:86 ../src/fsexam-encoding-dialog.c:87
+#: ../src/fsexam-encoding-dialog.c:88 ../src/fsexam-encoding-dialog.c:89
+msgid "Chinese Simplified"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:96
+msgid "Celtic"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:98
+msgid "Romanian"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:100
+msgid "South European"
+msgstr ""
+
+#. { FSEXAM_ENCODING_UTF_16,   "UTF-16",       "UTF16",        N_("Unicode"),              NULL },
+#. { FSEXAM_ENCODING_UTF_16BE, "UTF-16BE",     "UTF16BE",      N_("Unicode"),              NULL },
+#. { FSEXAM_ENCODING_UTF_16LE, "UTF-16LE",     "UTF16LE",      N_("Unicode"),              NULL },
+#.
+#: ../src/fsexam-encoding-dialog.c:113
+msgid "Unicode"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:124
+#, c-format
+msgid "Warning: The encoding id %d is greater than max length %d.\n"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:183
+#, c-format
+msgid "Encoding '%s' is not supported.\n"
+msgstr ""
+
+#: ../src/fsexam-encoding-dialog.c:206
+#, fuzzy
+msgid "The supported encoding list:\n"
+msgstr "kódolás lista"
+
+#: ../src/fsexam-encoding-dialog.c:583 ../src/fsexam-encoding-dialog.c:620
+#, fuzzy
+msgid "_Description"
+msgstr "_Művelet"
+
+#: ../src/fsexam-encoding-dialog.c:591 ../src/fsexam-encoding-dialog.c:628
+#, fuzzy
+msgid "_Encoding"
+msgstr "Kódolások listája"
+
+#: ../src/fsexam-error.c:33
+msgid "Success"
+msgstr ""
+
+#. ERR_OK
+#: ../src/fsexam-error.c:34
+#, fuzzy
+msgid "File name is UTF-8 already"
+msgstr "Fájlnév - már UTF8"
+
+#. ERR_NAME_UTF8_ALREADY
+#: ../src/fsexam-error.c:35
+#, fuzzy
+msgid "File content is UTF-8 already"
+msgstr "Fájltartalom - már UTF8"
+
+#. ERR_CONTENT_UTF8_ALREADY
+#: ../src/fsexam-error.c:36
+msgid "New name is the same as old name"
+msgstr ""
+
+#: ../src/fsexam-error.c:40 ../src/fsexam-ui.c:780
+#, fuzzy
+msgid "File doesn't exist"
+msgstr "A fájl még nem létezik"
+
+#. ERR_FILE_NONEXIST
+#: ../src/fsexam-error.c:41
+msgid "No Memory"
+msgstr ""
+
+#. ERR_NO_MEMORY
+#: ../src/fsexam-error.c:42
+msgid "Invalid encoding index"
+msgstr ""
+
+#. ERR_ENCODING_INDEX_INVALID
+#: ../src/fsexam-error.c:43
+msgid "Can't open file"
+msgstr ""
+
+#. ERR_CANNOT_OPEN
+#: ../src/fsexam-error.c:44
+msgid "Can't rename file"
+msgstr ""
+
+#. ERR_CANNOT_RENAME
+#: ../src/fsexam-error.c:45
+msgid "Can't write file"
+msgstr ""
+
+#. ERR_CANNOT_WRITE
+#: ../src/fsexam-error.c:46
+msgid "Given encoding list is not suitable"
+msgstr ""
+
+#. ERR_NO_PROPER_ENCODING
+#: ../src/fsexam-error.c:47
+msgid "Is not regular file"
+msgstr ""
+
+#. ERR_NOT_REG_FILE
+#: ../src/fsexam-error.c:48
+#, fuzzy
+msgid "Symlink target don't exist"
+msgstr "A könyvtár még nem létezik"
+
+#. ERR_SYMLINK_TARGET_NOEXIST
+#: ../src/fsexam-error.c:49
+#, fuzzy
+msgid "Can't convert given file"
+msgstr "Konverziós hiba"
+
+#. ERR_CANNOT_CONVERT
+#: ../src/fsexam-error.c:50
+msgid "Can't read file"
+msgstr ""
+
+#. ERR_CANNOT_READ
+#: ../src/fsexam-error.c:51
+#, fuzzy
+msgid "No proper permission"
+msgstr "Nincsen olvasási jog"
+
+#. ERR_NO_RIGHTS
+#. ERR_CANNOT_RM_SYMLINK
+#: ../src/fsexam-error.c:53
+msgid "Can't relink symbolic link which will break symbolic link"
+msgstr ""
+
+#. ERR_LOST_SYMLINK_FILE
+#: ../src/fsexam-error.c:55
+msgid "Have deleted symbolic link file, but can't recreate it"
+msgstr ""
+
+#: ../src/fsexam-error.c:56
+msgid "Dryrun file format is invalid"
+msgstr ""
+
+#. ERR_DRYRUN_FILE_INVALID
+#: ../src/fsexam-error.c:57
+msgid "Can't get current directory"
+msgstr ""
+
+#. ERR_GET_CWD
+#: ../src/fsexam-error.c:58
+msgid "Can't change directory"
+msgstr ""
+
+#: ../src/fsexam-error.c:62
+msgid "No history information for current file"
+msgstr ""
+
+#. ERR_HIST_NO_ITEM
+#: ../src/fsexam-error.c:63
+msgid "No given files or all files are UTF-8 already"
+msgstr ""
+
+#. ERR_TREE_IS_EMPTY
+#. ERR_NAME_EXIST
+#: ../src/fsexam-error.c:65
+msgid "Same name file exists, will append 'utf-8' as suffix"
+msgstr ""
+
+#: ../src/fsexam-error.c:66
+msgid "Skip hidden file"
+msgstr ""
+
+#. ERR_IGNORE_HIDDEN_FILE
+#: ../src/fsexam-error.c:67
+msgid "Skip non-local file"
+msgstr ""
+
+#. ERR_IGNORE_REMOTE_FILE
+#: ../src/fsexam-error.c:68 ../src/fsexam-ui.c:2691
+msgid "Empty file"
+msgstr ""
+
+#. ERR_EMPTY_FILE
+#: ../src/fsexam-error.c:69
+msgid "No parameters"
+msgstr ""
+
+#. ERR_NO_PARAMS
+#: ../src/fsexam-error.c:70
+msgid "Error occurred during filtering"
+msgstr ""
+
+#. ERR_FILTER
+#: ../src/fsexam-error.c:71
+msgid "Don't support this kind of file type"
+msgstr ""
+
+#. ERR_FILE_TYPE_NOT_SUPPORT
+#: ../src/fsexam-error.c:72
+msgid "Buffer overflow"
+msgstr ""
+
+#. ERR_BUFFER_OVERFLOW
+#: ../src/fsexam-error.c:73
+msgid "Canceled the conversion"
+msgstr ""
+
+#: ../src/fsexam-error.c:77
+msgid "Can't write dryrun result file"
+msgstr ""
+
+#. ERR_CANNOT_WRITE_DRYRUN
+#: ../src/fsexam-error.c:78
+msgid "Can't open dryrun result file"
+msgstr ""
+
+#. ERR_CANNOT_OPEN_DYRRUN
+#: ../src/fsexam-error.c:79
+msgid "Can't convert filename to URI"
+msgstr ""
+
+#. ERR_CANNOT_CONVERT_TO_URI
+#. MISC
+#. unknow error
+#: ../src/fsexam-error.c:82 ../src/fsexam-log.c:124
+msgid "Unknown error occurred"
+msgstr ""
+
+#: ../src/fsexam-error.c:98
+#, c-format
+msgid "ERROR ==> %s:%d (%s): %s\n"
+msgstr ""
+
+#: ../src/fsexam-error.c:103
+#, c-format
+msgid "ERROR ==> %s:%d %s\n"
+msgstr ""
+
+#: ../src/fsexam-helper.c:334 ../src/fsexam-helper.c:345
+#, c-format
+msgid "Encoding '%s' is not supported\n"
+msgstr ""
+
+#: ../src/fsexam-plaintext.c:98
+msgid "The system has no UTF-8 locale\n"
+msgstr ""
+
+#: ../src/fsexam-preference-dialog.c:368
+msgid "Do you want to save this encoding list permanently?"
+msgstr ""
+
+#: ../src/fsexam-preference-dialog.c:520 ../src/fsexam-ui.c:1340
+#, fuzzy, c-format
+msgid "There was an error when displaying help: %s"
+msgstr "Hiba történt a súgó megjelenítése közben: %s"
+
+#: ../src/fsexam-setting.c:94 ../src/fsexam-ui.c:1974
+#, c-format
+msgid "Rough summary: %d given, %d total, %d ignore, %d fail, %d succeed\n"
+msgstr ""
+
+#: ../src/fsexam-specialfile.c:1068
+msgid ""
+"Can not run tar command due to lack of iso8859-1 locale, please see fsexam"
+"(1) man page for more info."
+msgstr ""
+
+#: ../src/fsexam-specialfile.c:1412 ../src/fsexam-specialfile.c:1588
+msgid "Don't support this file type"
+msgstr ""
+
+#: ../src/fsexam-specialfile.c:1678
+msgid ""
+"The archive file is empty or has absolute path, so can not convert files in "
+"this archive file"
+msgstr ""
+
+#: ../src/fsexam-ui.c:777 ../src/fsexam-ui.c:1006
+msgid "No read permission"
+msgstr "Nincsen olvasási jog"
+
+#: ../src/fsexam-ui.c:785
+#, fuzzy
+msgid "No folder specified"
+msgstr "Nincsen könyvtár beállítva"
+
+#: ../src/fsexam-ui.c:825
+msgid "File does not exist or no access permission."
+msgstr ""
+
+#: ../src/fsexam-ui.c:831
+msgid "File type is not supported."
+msgstr ""
+
+#: ../src/fsexam-ui.c:1009
+msgid "Empty folder"
+msgstr ""
+
+#: ../src/fsexam-ui.c:1088 ../src/fsexam-ui.c:1626
+#, fuzzy
+msgid "Symlink target doesn't exist"
+msgstr "A könyvtár még nem létezik"
+
+#: ../src/fsexam-ui.c:1089 ../src/fsexam-ui.c:1627
+msgid "doesn't exist"
+msgstr ""
+
+#: ../src/fsexam-ui.c:1190
+msgid "The selected file is not empty, do you want to override it?"
+msgstr ""
+
+#: ../src/fsexam-ui.c:1191
+msgid ""
+"The selected file is not UTF-8 encoded, we strongly suggest you to use UTF-8 "
+"filename.\n"
+"\n"
+" Do you want to convert it to UTF8?"
+msgstr ""
+
+#: ../src/fsexam-ui.c:1192
+#, c-format
+msgid ""
+"Can't convert %s to UTF8: %s.\n"
+"\n"
+"Please Note that there may exist partial conversion.\n"
+" So please Refresh you directory and select file again."
+msgstr ""
+
+#: ../src/fsexam-ui.c:1316
+#, fuzzy
+msgid "Folder Selection"
+msgstr "Lehetséges jelöltek"
+
+#: ../src/fsexam-ui.c:1375
+msgid ""
+"fsexam is to help migrate file name and file content from legacy encoding to "
+"UTF8"
+msgstr ""
+"Az fsexam elősegíti a fájl nevének és tartalmának UTF8 kódolásúvá való "
+"átalakítását"
+
+#: ../src/fsexam-ui.c:2057
+#, c-format
+msgid "The file \"%s\" is missing."
+msgstr ""
+
+#: ../src/fsexam-ui.c:2577
+#, fuzzy
+msgid "No selection"
+msgstr "Könyvtár kiválasztás"
+
+#: ../src/fsexam-ui.c:2586
+msgid "Cannot preview multiple selections"
+msgstr ""
+
+#: ../src/fsexam-ui.c:2597
+msgid "Cannot preview contents of folder"
+msgstr ""
+
+#: ../src/fsexam-ui.c:2680
+msgid "Can't access"
+msgstr ""
+
+#: ../src/fsexam-ui.c:2686
+msgid "Not regular file"
+msgstr ""
+
+#: ../src/fsexam-ui.c:2696
+#, fuzzy
+msgid "Not plain text"
+msgstr "Nincs egyszerű szöveg"
+
+#: ../src/fsexam.c:155 ../src/fsexam.c:212
+msgid "Another fsexam is running, will quit soon\n"
+msgstr ""
+
+#: ../src/fsexam.c:325
+#, c-format
+msgid "Run 'fsexam --help' for usage information.\n"
+msgstr ""
+
+#: ../src/fsexam.c:331
+#, c-format
+msgid ""
+"Warning: The given history length is too short, will reset to default value %"
+"d\n"
+msgstr ""
+
+#: ../src/fsexam.c:373
+#, c-format
+msgid "Please enter the file name:\n"
+msgstr ""
+
+#: ../src/fsexam.c:431
+msgid "Error: No given encoding and disabled auto detection.\n"
+msgstr ""
+
+#: ../src/fsexam.c:441
+#, c-format
+msgid "Can't open dryrun file %s\n"
+msgstr ""
+
+#: ../src/fsexam.c:539
+msgid "The configuration directory is NULL\n"
+msgstr ""
+
+#: ../src/fsexam.c:546
+#, c-format
+msgid "Can't create configuration directory %s for fsexam\n"
+msgstr ""
+
+#: ../src/fsexam.c:557
+#, c-format
+msgid "file %s exist and is not one directory, please rename it.\n"
+msgstr ""
+
+#: ../src/fsexam.c:675
+#, c-format
+msgid "Usage:\n"
+msgstr ""
+
+#: ../src/fsexam.c:676
+#, c-format
+msgid "    fsexam [OPTION] ... [file]\n"
+msgstr ""
+
+#: ../src/fsexam.c:678
+#, c-format
+msgid ""
+"\n"
+"Supported options:\n"
+msgstr ""
+
+#: ../src/fsexam.c:680
+#, c-format
+msgid "    -a, --auto-detect      Enable encoding auto detection\n"
+msgstr ""
+
+#: ../src/fsexam.c:682
+#, c-format
+msgid "    -d dry-run-result      Specify the dryrun result file\n"
+msgstr ""
+
+#: ../src/fsexam.c:683
+#, c-format
+msgid "    -E module-name         Enable special file handling\n"
+msgstr ""
+
+#: ../src/fsexam.c:684
+#, c-format
+msgid "    -e encoding-list       Specify additional encoding list\n"
+msgstr ""
+
+#: ../src/fsexam.c:685
+#, c-format
+msgid "    -F, --force-convert    Forceful conversion mode\n"
+msgstr ""
+
+#: ../src/fsexam.c:686
+#, c-format
+msgid "    -f 'expression'        Specify file filter criteria\n"
+msgstr ""
+
+#: ../src/fsexam.c:687
+#, c-format
+msgid "    -H, --hidden           Turn on hidden file handling\n"
+msgstr ""
+
+#: ../src/fsexam.c:688
+#, c-format
+msgid "    -b, --auto-conversion  Interactive mode\n"
+msgstr ""
+
+#: ../src/fsexam.c:689
+#, c-format
+msgid "    -l, list-encoding      List all supported encoding\n"
+msgstr ""
+
+#: ../src/fsexam.c:690
+#, c-format
+msgid "    -k, --no-check-symlink-content\n"
+msgstr ""
+
+#: ../src/fsexam.c:691
+#, c-format
+msgid ""
+"                           Don't check the consistency between\n"
+"                           symbolic link and its target name\n"
+msgstr ""
+
+#: ../src/fsexam.c:693
+#, c-format
+msgid "    -L logfile             Specify log file\n"
+msgstr ""
+
+#: ../src/fsexam.c:695
+#, c-format
+msgid "    -n, --dry-run          Dryrun mode\n"
+msgstr ""
+
+#: ../src/fsexam.c:696
+#, c-format
+msgid "    -P, --append-encoding-list\n"
+msgstr ""
+
+#: ../src/fsexam.c:697
+#, c-format
+msgid ""
+"                           Append encoding list specified by\n"
+"                           '-e' to predefined encoding list\n"
+msgstr ""
+
+#: ../src/fsexam.c:699
+#, c-format
+msgid "    -p, --prepend-encoding-list\n"
+msgstr ""
+
+#: ../src/fsexam.c:700
+#, c-format
+msgid ""
+"                           Prepend encoding list specified by\n"
+"                           '-e' to predefined encoding list\n"
+msgstr ""
+
+#: ../src/fsexam.c:702
+#, c-format
+msgid "    -R, --recursive        Recursive mode\n"
+msgstr ""
+
+#: ../src/fsexam.c:703
+#, c-format
+msgid "    -r, --remote           Turn on nfs files handling\n"
+msgstr ""
+
+#: ../src/fsexam.c:704
+#, c-format
+msgid "    -S, --save-encoding-list\n"
+msgstr ""
+
+#: ../src/fsexam.c:705
+#, c-format
+msgid ""
+"                           Save encoding list specified by\n"
+"                           '-e' permanently\n"
+msgstr ""
+
+#: ../src/fsexam.c:707
+#, c-format
+msgid ""
+"    -s, --restore          Restore the original name or\n"
+"                           content for given files\n"
+msgstr ""
+
+#: ../src/fsexam.c:709
+#, c-format
+msgid ""
+"    -t, --conv-content     Convert file content rather than\n"
+"                           file name\n"
+msgstr ""
+
+#: ../src/fsexam.c:711
+#, c-format
+msgid "    -w, --follow           Follow symbolic link\n"
+msgstr ""
+
+#: ../src/fsexam.c:712
+#, c-format
+msgid "    -V, --version          Print the version information\n"
+msgstr ""
+
+#: ../src/fsexam.c:713
+#, c-format
+msgid "    -?, --help             Print this usage information for fsexam\n"
+msgstr ""
+
+#: ../data/fsexam.schemas.in.h:1
+#, fuzzy
+msgid "Encoding auto detection"
+msgstr "Lehetséges jelöltek"
+
+#: ../data/fsexam.schemas.in.h:3
+msgid "Hidden file handling"
+msgstr ""
+
+#: ../data/fsexam.schemas.in.h:4
+msgid "Hist length"
+msgstr ""
+
+#: ../data/fsexam.schemas.in.h:5
+msgid "Keep symbolic link and its reference consistent"
+msgstr ""
+
+#: ../data/fsexam.schemas.in.h:6
+msgid "Log file name"
+msgstr ""
+
+#: ../data/fsexam.schemas.in.h:7
+msgid "NFS file handling"
+msgstr ""
+
+#: ../data/fsexam.schemas.in.h:8
+msgid "Special file type module"
+msgstr ""
+
+#: ../data/fsexam.schemas.in.h:9
+msgid "Write log or not"
+msgstr ""
+
+#: ../data/fsexam.schemas.in.h:10
+msgid "[ISO8859-1]"
+msgstr "[ISO8859-1]"
+
+#: ../data/fsexam.schemas.in.h:11
+msgid "automatic mode"
+msgstr "automatikus üzemmód"
+
+#: ../data/fsexam.schemas.in.h:12
+msgid "encoding list"
+msgstr "kódolás lista"
+
+#: ../data/fsexam.schemas.in.h:13
+msgid "recursive mode"
+msgstr "rekurzív mód"
+
+#: ../data/fsexam.desktop.in.h:2
+#, fuzzy
+msgid "Help migrate from legacy encoding to Unicode(UTF8)"
+msgstr "UTF8 adat és fájlnév konverziót lehetővé tevő program"
+
+#, fuzzy
+#~ msgid "Display help content"
+#~ msgstr "Fájltartalom"
+
+#, fuzzy
+#~ msgid "Preference setting"
+#~ msgstr "Beállítások módosítása"
+
+#~ msgid "No permission to rename"
+#~ msgstr "Nincs engedélye az átnevezéshez"
+
+#~ msgid "UTF8 already"
+#~ msgstr "Már eleve UTF8-as"
+
+#~ msgid "fsexam"
+#~ msgstr "fsexam"
+
+#~ msgid "Welcome"
+#~ msgstr "Üdvözlöm"
+
+#~ msgid "File Hierarchy"
+#~ msgstr "Fájl hierarchia"
+
+#~ msgid ""
+#~ "A list of suffix. Any file whose suffix belongs to the list are assumed "
+#~ "by fsexam as plain text file."
+#~ msgstr ""
+#~ "Utótagok listája. Minden olyan fájl, melynek neve a lista valamelyik "
+#~ "tagjára végződik, egyszerű szöveges állományként kerül feldolgozásra."
+
+#~ msgid ""
+#~ "Only applicable for file name conversion! It's recursive mode, by "
+#~ "enabling it, fsexam will convert the name of file and subdirectory to "
+#~ "UTF8 recursively."
+#~ msgstr ""
+#~ "Csak fájlnév konverzió esetére. A rekurzió bekapcsolása esetén az fsexam "
+#~ "a fájlok és almappák neveit is UTF8-ra konvertálja."
+
+#~ msgid ""
+#~ "Only applicable for file name conversion. It's automatic mode, by "
+#~ "enabling it, fsexam will automatically convert with the best conversion "
+#~ "result without user interference. Otherwise, a dialog will display with "
+#~ "several conversion candidates and user needs to decide which conversion "
+#~ "is the best one."
+#~ msgstr ""
+#~ "Csak fájlnév konverzió esetére. Az automatikus üzemmód bekapcsolás esetén "
+#~ "az fsexam automatikusan a legjobb konverziós módszert alkalmazza a "
+#~ "felhasználó megkérdezése nélkül. Kikapcsolva minden esetben egy "
+#~ "párbeszédablak jelenik meg, melyből a felhasználó választhatja ki a "
+#~ "megfelelő konverziót. "
+
+#~ msgid ""
+#~ "The list of legacy encoding name available for the specific language. "
+#~ "Note that the order within the list is significant. fsexam treats as the "
+#~ "best one the first one from which conversion can be made successfully."
+#~ msgstr ""
+#~ "A nyelvhez elérhető kódolási eljárások nevei. A sorrend jelzi az egyes "
+#~ "kódolások elterjedtségét. Az fsexam számára a legjobb a legkorábbi "
+#~ "kódolás amelyből a konverió sikeresen elvégezhető."
+
+#~ msgid "suffix list"
+#~ msgstr "utótag lista"
+
+#~ msgid "Directory already exists"
+#~ msgstr "A mappa már létezik"
+
+#~ msgid "File already exists"
+#~ msgstr "A fájl már létezik"
+
+#~ msgid "Null directory"
+#~ msgstr "Üres mappa"
+
+#~ msgid "Apply by name"
+#~ msgstr "Név alapján"
+
+#~ msgid "Apply by content"
+#~ msgstr "Tartalom alapján"
+
+#~ msgid "Error loading icon %s\n"
+#~ msgstr "Hiba az ikon (%s) betöltése közben\n"
+
+#~ msgid "popen error, please try again!"
+#~ msgstr "popen hiba, próbálja újra"
+
+#~ msgid "File content candidate window"
+#~ msgstr "Fájltartalom jelölt ablak"
+
+#~ msgid "Byte sequence not recognized yet"
+#~ msgstr "Bájtsorozat még nem felismerhető"
+
+#~ msgid "File content - open failure"
+#~ msgstr "Fájltartalom - megnyitási hiba"
+
+#~ msgid "File content - write error"
+#~ msgstr "Fájltartalom - írási hiba"
+
+#~ msgid "File content - successful conversion"
+#~ msgstr "Fájltartalom - sikeres konverzió"
+
+#~ msgid "Directory node"
+#~ msgstr "Mappa pont"
+
+#~ msgid "File content - successful undo"
+#~ msgstr "Fájltartalom - sikeres visszavonás"
--- a/src/cmd/fsexam/po/it.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,600 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN MESSAGE
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "Analizzatore del file system"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "Conversione dei nomi dell'Analizzatore del file system"
-
-# SUN MSG
-# SUN MESSAGE
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "La cartella esiste già"
-
-# SUN MSG
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "Il file esiste già"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "Autorizzazioni insufficienti per rinominare"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "Il file non esiste ancora"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "elimina ritorni a capo"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "elimina solo ritorni a capo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "aggiungi ritorno a capo"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "aggiungi solo ritorni a capo"
-
-# SUN MSG
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "Nome del file - errore di conversione"
-
-# SUN MSG
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "Nome del file - già in formato UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "Posizione:"
-
-# SUN MESSAGE
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "Autorizzazioni di lettura mancanti"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "La cartella non esiste ancora"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "Nessuna cartella specificata"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "Cartella nulla"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "Selezione cartella"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "Errore nella visualizzazione della Guida: %s"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-"fsexam consente di effettuare la migrazione dei nomi dei file e del loro "
-"contenuto dalla codifica precedente a UTF8"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "_File"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "_Apri..."
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "_Modifica"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "_Ripristina file originale"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "Converti _nomefile"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "_Converti contenuto"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "_Anteprima contenuto"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "_Preferenze"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "_Visualizza"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "_Riquadro rapporto"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "_Guida"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "_Sommario"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "_Informazioni"
-
-# SUN MSG
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "Impossibile caricare l'icona %s\n"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "Benvenuto"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "Preferenze dell'Analizzatore del file system"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "Sottocartella:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "_Modalità ricorsiva"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "Intervento dell'utente:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "_Conversione automatica"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "Elenco di codifica:"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "Non è in formato testo normale"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "Conversione del contenuto dell'Analizzatore del file system"
-
-# SUN MSG
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "Sequenza di byte non ancora riconosciuta"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "Contenuto del file - già in formato UTF8"
-
-# SUN MSG
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "Contenuto del file - errore di apertura"
-
-# SUN MSG
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "Contenuto del file - errore di scrittura"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "Contenuto del file - conversione da %s"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr ""
-"Contenuto del file - conversione da %s ed eliminazione dei ritorni a capo"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "Contenuto del file - eliminazione solo ritorni a capo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "Impossibile convertire il contenuto della cartella"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s non esiste ancora"
-
-# SUN MESSAGE
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "Il file è stato azzerato, impossibile ripristinarlo."
-
-# SUN MSG
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "Contenuto del file - errore di conversione"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "Ripristina %s"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "Ripristina %s e aggiungi ritorno a capo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "Ripristina aggiungendo i ritorni a capo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "Ripristina UTF8"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "Ripristina UTF8 ed elimina i ritorni a capo"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "Ripristina eliminando i ritorni a capo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "Impossibile eseguire l'anteprima di più selezioni"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"Un elenco di suffissi. Tutti i file il cui suffisso è incluso nell'elenco "
-"vengono considerati da fsexam come file di testo normale."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"Applicabile solo per la conversione dei nomi dei file. Abilitando questa "
-"modalità, fsexam convertirà i nomi dei file e delle sottodirectory in modo "
-"ricorsivo."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"Applicabile solo per la conversione dei nomi dei file. Abilitando questa "
-"modalità, fsexam eseguirà una conversione automatica senza richiedere "
-"l'intervento dell'utente. Diversamente, una finestra di dialogo mostrerà le "
-"possibili conversioni e l'utente dovrà scegliere quella più appropriata."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"L'elenco delle codifiche di origine disponibili per la lingua in oggetto. Si "
-"noti che l'ordine nell'elenco è importante. fsexam utilizzerà la prima "
-"codifica che consente di eseguire correttamente la conversione."
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[ISO8859-1,ISO8859-3,ISO8859-5,ISO8859-8,ISO8859-9,ISO8859-10]"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "modalità automatica"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "elenco codifiche"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "modalità ricorsiva"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "elenco suffissi"
-
-# SUN MSG
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "Facilita la migrazione della codifica a UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#~ msgid "text"
-#~ msgstr "testo"
-
-# SUN MSG
-#~ msgid "Directory already exists"
-#~ msgstr "La directory esiste già"
-
-# SUN MSG
-#~ msgid "File content"
-#~ msgstr "Contenuto del file"
-
-# SUN MSG
-#~ msgid "Null directory"
-#~ msgstr "Directory nulla"
-
-# SUN MSG
-#~ msgid "Apply by name"
-#~ msgstr "Applica per nome"
-
-# SUN MSG
-#~ msgid "Apply by content"
-#~ msgstr "Applica per contenuto"
-
-# SUN MSG
-#~ msgid "Peek content"
-#~ msgstr "Analizza contenuto"
-
-# SUN MSG
-#~ msgid "popen error, please try again!"
-#~ msgstr "Errore di popen, riprovare."
-
-# SUN MSG
-#~ msgid "Not one plain text"
-#~ msgstr "Non in formato testo normale"
-
-# SUN MSG
-#~ msgid "File content candidate window"
-#~ msgstr "Finestra dei possibili contenuti del file"
-
-# SUN MSG
-#~ msgid "File content - successful conversion"
-#~ msgstr "Contenuto del file - conversione riuscita"
-
-# SUN MSG
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "Contenuto del file - già in formato UTF8"
-
-# SUN MSG
-#~ msgid "Directory node"
-#~ msgstr "Nodo directory"
-
-# SUN MSG
-#~ msgid "File content - successful undo"
-#~ msgstr "Contenuto del file - annullamento riuscito"
-
-# SUN MESSAGE
-#~ msgid "Candidate Selection"
-#~ msgstr "Selezione candidati"
-
-# SUN MESSAGE
-#~ msgid "File Hierarchy"
-#~ msgstr "Gerarchia di file"
-
-# SUN MESSAGE
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "La directory non esiste ancora"
-
-# SUN MESSAGE
-#~ msgid "No directory specified"
-#~ msgstr "Nessuna directory specificata"
-
-# SUN MESSAGE
-#~ msgid "Directory Selection"
-#~ msgstr "Selezione della directory"
-
-# SUN MESSAGE
-#~ msgid "_Action"
-#~ msgstr "_Azione"
-
-# SUN MESSAGE
-#~ msgid "Report Pane"
-#~ msgstr "Riquadro rapporto"
-
-# SUN MESSAGE
-#~ msgid "Encoding List"
-#~ msgstr "Elenco codifiche"
-
-# SUN MESSAGE
-#~ msgid "Preference Setting"
-#~ msgstr "Impostazione preferenze"
-
-# SUN MESSAGE
-#~ msgid "Recursive Mode"
-#~ msgstr "Modalità ricorsiva"
-
-# SUN MESSAGE
-#~ msgid "Automatic Conversion"
-#~ msgstr "Conversione automatica"
-
-# SUN MESSAGE
-#~ msgid "Conversion failure"
-#~ msgstr "Errore di conversione"
-
-# SUN MESSAGE
-#~ msgid "UTF8 already"
-#~ msgstr "Già in formato UTF8"
--- a/src/cmd/fsexam/po/ja.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,593 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN REVIEWED
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "ファイルシステム検査器"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "ファイルシステム検査器の名前変換"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "そのフォルダはすでに存在します"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "そのファイルはすでに存在します"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "名前を変更するための権限がありません"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "ファイルがまだ存在しません"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "復帰改行を削除します"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "復帰改行のみを削除します"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "復帰改行を追加します"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "復帰改行のみを追加します"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "ファイル名 - 変換に失敗しました"
-
-# SUN REVIEWED
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "ファイル名 - すでに UTF8 です"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "場所"
-
-# SUN REVIEWED
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "読み取り権がありません"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "そのフォルダはまだ存在していません"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "フォルダを指定していません"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "空のフォルダ"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "フォルダの選択"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "ヘルプの表示中にエラーが発生しました: %s"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-"fsexam は、ファイル名とファイルの内容を従来のエンコードから UTF8 に移行するの"
-"に役立ちます。"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "ファイル(_F)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "開く(_O)..."
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "編集(_E)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "元のファイルに戻す(_R)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "ファイル名の変換( _F)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "内容の変換(_C)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "内容をプレビュー(_V)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "設定(_P)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "表示(_V)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "報告区画(_R)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "ヘルプ(_H)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "目次(_C)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "情報(_A)"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "アイコン %s のロード中にエラーが発生しました\n"
-
-# SUN REVIEWED
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "ようこそ"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "ファイルシステム検査器の設定"
-
-# SUN REVIEWED
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "サブフォルダ:"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "再帰モード(_R)"
-
-# SUN REVIEWED
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "ユーザー介入:"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "自動変換(_A)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "エンコードリスト:"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "プレーンテキストではありません"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "ファイルシステム検査器の内容変換"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "バイトシーケンスがまだ認識されていません"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "ファイルの内容 - すでに UTF8 です"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "ファイルの内容 - 開くのに失敗しました"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "ファイルの内容 - 書き込みに失敗しました"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "ファイルの内容 - %s から変換します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "ファイルの内容 - %s から変換して復帰改行を削除します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "ファイルの内容 - 復帰改行のみを削除します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "フォルダの内容を変換できません"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s がまだ存在しません"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "ファイルが空になりました。元に戻せません。"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "ファイルの内容 - 変換に失敗しました"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "%s を復元します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "%s を復元して復帰改行を追加します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "復帰改行の追加によって復元します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "UTF8 を復元します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "UTF8 を復元して復帰改行を削除します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "復帰改行の削除によって復元します"
-
-# SUN REVIEWED
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "複数の選択項目をプレビューすることはできません"
-
-# SUN REVIEWED
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"拡張子のリスト。このリストに拡張子が登録されているファイルを、fsexam はプレー"
-"ンテキストファイルであると想定します。"
-
-# SUN REVIEWED
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"ファイル名の変換だけに適用されます。再帰モードが有効である場合、fsexam はファ"
-"イルとサブディレクトリの名前を再帰的に UTF8 に変換します。"
-
-# SUN REVIEWED
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"ファイル名の変換だけに適用されます。自動モードが有効である場合、fsexam が最良"
-"の変換を自動的に行うため、ユーザーは何もしなくてもかまいません。自動モードが"
-"有効でない場合、fsexam は変換の候補をダイアログに表示します。この場合、ユー"
-"ザーが最良の変換を選択する必要があります。"
-
-# SUN REVIEWED
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"特定の言語で利用できる従来のエンコード名のリスト。リスト内における順序は重要"
-"です。ファイル名を変換するとき、fsexam はリストの一番上にあるエンコードが最良"
-"であると想定します。"
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[EUC-JP,SJIS,ISO-2022-JP]"
-
-# SUN REVIEWED
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "自動モード"
-
-# SUN REVIEWED
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "エンコードリスト"
-
-# SUN REVIEWED
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "再帰モード"
-
-# SUN REVIEWED
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "拡張子リスト"
-
-# SUN REVIEWED
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "従来のエンコードから UTF8 への移行を支援する"
-
-# SUN REVIEWED
-#~ msgid "Restore %s encoding"
-#~ msgstr "%s エンコーディングを復元します"
-
-# SUN REVIEWED
-#~ msgid "Restore %s encoding and add carriage return"
-#~ msgstr "%s エンコーディングを復元して復帰改行を追加します"
-
-# SUN REVIEWED
-#~ msgid "Restore by adding carriage return"
-#~ msgstr "復帰改行の追加によって復元します"
-
-# SUN REVIEWED
-#~ msgid "Restore UTF8 encoding"
-#~ msgstr "UTF8 エンコーディングを復元します"
-
-# SUN REVIEWED
-#~ msgid "Restore UTF8 encoding and delete carriage return"
-#~ msgstr "UTF8 エンコーディングを復元して復帰改行を削除します"
-
-# SUN REVIEWED
-#~ msgid "Restore by deleting carriage return"
-#~ msgstr "復帰改行の削除によって復元します"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content with carriage return remove"
-#~ msgstr "復帰改行付きのファイル内容を削除します"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content just carriage return remove"
-#~ msgstr "復帰改行のみのファイル内容を削除します"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - convert from %s and delete carriage return"
-#~ msgstr "ファイルの内容 - %s から変換して復帰改行を削除します"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - delete carriage return only"
-#~ msgstr "ファイルの内容 - 復帰改行のみを削除します"
-
-# SUN REVIEWED
-#~ msgid "Candidate Selection"
-#~ msgstr "候補の選択"
-
-# SUN REVIEWED
-#~ msgid "Conversion failure"
-#~ msgstr "変換に失敗しました"
-
-# SUN REVIEWED
-#~ msgid "UTF8 already"
-#~ msgstr "すでに UTF8 です"
-
-# SUN REVIEWED
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "ディレクトリがまだ存在しません"
-
-# SUN REVIEWED
-#~ msgid "No directory specified"
-#~ msgstr "ディレクトリを指定していません"
-
-# SUN REVIEWED
-#~ msgid "Directory Selection"
-#~ msgstr "ディレクトリの選択"
-
-# SUN REVIEWED
-#~ msgid "_Action"
-#~ msgstr "動作(_A)"
-
-# SUN REVIEWED
-#~ msgid "Report Pane"
-#~ msgstr "報告区画"
-
-# SUN REVIEWED
-#~ msgid "File Hierarchy"
-#~ msgstr "ファイル階層"
-
-# SUN REVIEWED
-#~ msgid "Encoding List"
-#~ msgstr "エンコードリスト"
-
-# SUN REVIEWED
-#~ msgid "Preference Setting"
-#~ msgstr "設定"
-
-# SUN REVIEWED
-#~ msgid "Recursive Mode"
-#~ msgstr "再帰モード"
-
-# SUN REVIEWED
-#~ msgid "Automatic Conversion"
-#~ msgstr "自動変換"
-
-# SUN REVIEWED
-#~ msgid "Directory already exists"
-#~ msgstr "そのディレクトリはすでに存在します"
-
-# SUN REVIEWED
-#~ msgid "File content"
-#~ msgstr "ファイルの内容"
-
-# SUN REVIEWED
-#~ msgid "Null directory"
-#~ msgstr "空のディレクトリ"
-
-# SUN REVIEWED
-#~ msgid "Apply by name"
-#~ msgstr "名前で適用"
-
-# SUN REVIEWED
-#~ msgid "Apply by content"
-#~ msgstr "内容で適用"
-
-# SUN REVIEWED
-#~ msgid "Peek content"
-#~ msgstr "内容を表示"
-
-# SUN REVIEWED
-#~ msgid "popen error, please try again!"
-#~ msgstr "popen エラーが発生しました。もう一度やり直してください"
-
-# SUN REVIEWED
-#~ msgid "Not one plain text"
-#~ msgstr "プレーンテキストではありません"
-
-# SUN REVIEWED
-#~ msgid "File content candidate window"
-#~ msgstr "ファイルの内容候補ウィンドウ"
-
-# SUN REVIEWED
-#~ msgid "File content - successful conversion"
-#~ msgstr "ファイルの内容 - 変換に成功しました"
-
-# SUN REVIEWED
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "ファイルの内容 - すでに UTF8 です"
-
-# SUN REVIEWED
-#~ msgid "Directory node"
-#~ msgstr "ディレクトリノード"
-
-# SUN REVIEWED
-#~ msgid "File content - successful undo"
-#~ msgstr "ファイルの内容 - 元に戻すのに成功しました"
--- a/src/cmd/fsexam/po/ko.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,608 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "파일 시스템 검사기"
-
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "파일 시스템 검사기 이름 변환"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "폴더가 이미 있습니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "파일이 이미 있음"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "이름을 바꿀 권한이 없습니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "파일이 없습니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "캐리지 리턴 삭제"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "캐리지 리턴만 삭제"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "캐리지 리턴 추가"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "캐리지 리턴만 추가"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "파일 이름 - 변환 실패"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "파일 이름 - 이미 UTF8"
-
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "위치:"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "읽기 권한이 없습니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "폴더가 없습니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "폴더를 지정하지 않았습니다."
-
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "비어 있는 폴더"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "폴더 선택"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "도움말을 표시하는 중 오류가 발생했습니다. %s"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-"fsexam은 파일 이름과 파일 내용의 기존 인코딩을 UTF8로 마이그레이션하는 것을 "
-"도와줍니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "파일(_F)"
-
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "열기(_O)..."
-
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "편집(_E)"
-
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "원본 파일 복원(_R)"
-
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "파일 이름 변환(_F)"
-
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "컨텐트 변환(_C)"
-
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "컨텐트 미리 보기(_V)"
-
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "환경 설정(_P)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "보기(_V)"
-
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "보고서 창(_R)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "도움말(_H)"
-
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "컨텐트(_C)"
-
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "정보(_A)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "아이콘 %s을(를) 로드하는 중 오류가 발생했습니다.\n"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "시작"
-
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "파일 시스템 검사기 환경 설정"
-
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "하위 폴더:"
-
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "반복 모드(_R)"
-
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "사용자 개입:"
-
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "자동 변환(_A)"
-
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "인코딩 목록:"
-
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "일반 텍스트가 아님"
-
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "파일 시스템 검사기 컨텐트 변환"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "바이트 순서가 아직 인식되지 않음"
-
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "파일 컨텐트 - 이미 UTF8임"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "파일 내용 - 열기 실패"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "파일 내용 - 쓰기 오류"
-
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "파일 컨텐트 - %s에서 변환"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "파일 내용 - %s에서 변환한 다음 캐리지 리턴 삭제"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "파일 내용 - 캐리지 리턴만 삭제"
-
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "폴더의 컨텐트를 변환할 수 없음"
-
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s이(가) 없음"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "파일이 비어 있어서 복원할 수 없습니다!"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "파일 내용 - 변환 실패"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "%s 복원"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "%s 복원 및 캐리지 리턴 추가"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "캐리지 리턴을 추가하여 복원"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "UTF8 복원"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "UTF8 복원 및 캐리지 리턴 삭제"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "캐리지 리턴을 삭제하여 복원"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "여러 선택 항목을 미리 볼 수 없습니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"접미어 목록입니다. 목록에 속한 접미어를 가진 모든 파일은 fsexam에 의해 일반 "
-"텍스트 파일로 간주됩니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"파일 이름 변환에만 적용할 수 있습니다. 재귀 모드를 사용하면 fsexam에서 재귀적"
-"으로 파일 및 하위 디렉토리 이름이 UTF8로 변환됩니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"파일 이름 변환에만 적용할 수 있습니다. 자동 모드를 사용하면 fsexam에서 사용"
-"자 개입 없이 자동으로 최상의 변환 결과를 얻도록 변환됩니다. 자동 모드를 사용"
-"하지 않으면 몇 가지 변환 후보가 포함된 대화 상자가 표시되고 사용자가 그 중에"
-"서 가장 적합한 것을 선택해야 합니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"특정 언어에 사용할 수 있는 기존 인코딩 이름 목록입니다. 목록 내의 순서가 중요"
-"합니다. fsexam에서 첫 번째 인코딩 이름이 가장 성공적으로 변환될 수 있는 것으"
-"로 처리됩니다."
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[EUC-KR,ISO-2022-KR,JOHAB]"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "자동 모드"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "인코딩 목록"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "재귀 모드"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "접미어 목록"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "기존 인코딩에서 UTF8로 마이그레이션하는 데 도움"
-
-#~ msgid "Restore %s encoding"
-#~ msgstr "%s 인코딩 복원"
-
-#~ msgid "Restore %s encoding and add carriage return"
-#~ msgstr "%s 인코딩 복원 및 캐리지 리턴 추가"
-
-#~ msgid "Restore by adding carriage return"
-#~ msgstr "캐리지 리턴을 추가하여 복원"
-
-#~ msgid "Restore UTF8 encoding"
-#~ msgstr "UTF8 인코딩 복원"
-
-#~ msgid "Restore UTF8 encoding and delete carriage return"
-#~ msgstr "UTF8 인코딩 복원 및 캐리지 리턴 삭제"
-
-#~ msgid "Restore by deleting carriage return"
-#~ msgstr "캐리지 리턴을 삭제하여 복원"
-
-#~ msgid "File content with carriage return remove"
-#~ msgstr "캐리지 리턴이 포함되어 있는 컨텐트 제거"
-
-#~ msgid "File content just carriage return remove"
-#~ msgstr "캐리지 리턴된 파일 컨텐트 제거"
-
-#~ msgid "File content - convert from %s and delete carriage return"
-#~ msgstr "파일 컨텐트 - %s에서 변환한 다음 캐리지 리턴 삭제"
-
-#~ msgid "File content - delete carriage return only"
-#~ msgstr "파일 컨텐트 - 캐리지 리턴만 삭제"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content"
-#~ msgstr "파일 내용"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Apply by name"
-#~ msgstr "이름별 적용"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Apply by content"
-#~ msgstr "내용별 적용"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Peek content"
-#~ msgstr "내용 살짝 보기"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "popen error, please try again!"
-#~ msgstr "popen 오류입니다. 다시 시도하십시오!"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Not one plain text"
-#~ msgstr "일반 텍스트 아님"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content candidate window"
-#~ msgstr "파일 내용 후보 창"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - successful conversion"
-#~ msgstr "파일 내용 - 변환 성공"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "파일 내용 - 이미 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - successful undo"
-#~ msgstr "파일 내용 - 실행 취소 성공"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory already exists"
-#~ msgstr "디렉토리가 이미 있음"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Null directory"
-#~ msgstr "NULL 디렉토리"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory node"
-#~ msgstr "디렉토리 노드"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Candidate Selection"
-#~ msgstr "후보 선택"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File Hierarchy"
-#~ msgstr "파일 계층 구조"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "디렉토리가 없습니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "No directory specified"
-#~ msgstr "디렉토리를 지정하지 않았습니다."
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory Selection"
-#~ msgstr "디렉토리 선택"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "_Action"
-#~ msgstr "작업(_A)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Report Pane"
-#~ msgstr "보고서 창"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Encoding List"
-#~ msgstr "인코딩 목록"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Preference Setting"
-#~ msgstr "환경 설정"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Recursive Mode"
-#~ msgstr "재귀 모드"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Automatic Conversion"
-#~ msgstr "자동 변환"
--- a/src/cmd/fsexam/po/pl.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,351 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr ""
-
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr ""
-
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr ""
-
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr ""
-
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr ""
-
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr ""
-
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr ""
-
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr ""
-
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr ""
-
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr ""
-
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr ""
-
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr ""
-
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr ""
-
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr ""
-
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr ""
-
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr ""
-
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr ""
-
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr ""
-
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr ""
-
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr ""
-
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr ""
-
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr ""
-
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr ""
-
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr ""
-
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr ""
-
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr ""
-
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr ""
-
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr ""
-
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr ""
-
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr ""
-
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr ""
-
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr ""
-
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr ""
-
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr ""
-
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr ""
-
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr ""
-
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr ""
-
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr ""
-
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr ""
-
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr ""
-
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr ""
-
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr ""
-
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr ""
-
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr ""
-
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr ""
-
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr ""
-
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr ""
-
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr ""
-
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr ""
-
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr ""
-
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr ""
-
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr ""
-
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr ""
--- a/src/cmd/fsexam/po/pt_BR.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,604 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN MESSAGE
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "Examinador do sistema de arquivos"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "Conversão de nome do Examinador do sistema de arquivos"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "A pasta já existe"
-
-# SUN MSG
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "O arquivo já existe"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "Sem permissão para renomear"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "O arquivo ainda não existe"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "excluir Retorno de carro"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "excluir Retorno de carro somente"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "adicionar Retorno de carro"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "adicionar Retorno de carro somente"
-
-# SUN MSG
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "Nome do arquivo - falha na conversão"
-
-# SUN MSG
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "Nome do arquivo - já é UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "Localização:"
-
-# SUN MESSAGE
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "Sem permissão para leitura"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "A pasta ainda não existe"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "Nenhuma pasta especificada"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "Pasta nula"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "Seleção de pasta"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "Erro ao exibir a ajuda: %s"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-"fsexam serve para ajudar na migração do nome e do conteúdo do arquivo da "
-"codificação legada para UTF8"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "_Arquivo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "A_brir..."
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "_Editar"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "_Restaurar arquivo original"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "Con_verter nome de arquivo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "_Converter conteúdo"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "Conteúdo da _visualização"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "_Preferências"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "_Exibir"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "Painel de _relatório"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "_Ajuda"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "_Conteúdo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "_Sobre"
-
-# SUN MSG
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "Erro ao carregar ícone %s\n"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "Bem-vindo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "Preferências do Examinador do sistema de arquivos"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "Subpasta:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "Modo _recursivo"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "Intervenção de usuário:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "Conversão _automática"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "Lista de codificação:"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "Não é um texto simples"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "Conversão de conteúdo do Examinador do sistema de arquivos"
-
-# SUN MSG
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "Seqüência de bytes ainda não reconhecida"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "Conteúdo do arquivo - já é UTF8"
-
-# SUN MSG
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "Conteúdo do arquivo - falha ao abrir"
-
-# SUN MSG
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "Conteúdo do arquivo - erro de gravação"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "Conteúdo do arquivo - converter de %s"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "Conteúdo do arquivo - converter de %s e excluir o Retorno de carro"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "Conteúdo do arquivo - excluir Retorno de carro somente"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "Não é possível converter o conteúdo da pasta"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s ainda não existe"
-
-# SUN MESSAGE
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "O arquivo foi esvaziado, não pode ser restaurado!"
-
-# SUN MSG
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "Conteúdo do arquivo - falha na conversão"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "Restaurar %s"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "Restaurar %s e adicionar Retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "Restaurar ao adicionar Retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "Restaurar UTF8"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "Restaurar UTF8 e excluir Retorno de carro"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "Restaurar ao excluir o Retorno de carro"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "Não é possível visualizar várias seleções"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"Uma lista de sufixos. Qualquer arquivo cujo sufixo pertença à lista é "
-"considerado pelo fsexam como arquivo de texto simples."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"Aplicável apenas para conversão de nome de arquivo. Modo recursivo. Ao "
-"habilitá-lo, o fsexam converterá o nome do arquivo e o subdiretório em UTF8 "
-"recursivamente."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"Aplicável apenas para conversão de nome de arquivo. Modo automático. Ao "
-"habilitá-lo, o fsexam automaticamente fará a conversão com o melhor "
-"resultado sem a interferência do usuário. Caso contrário, será exibida uma "
-"caixa de diálogo com várias opções de conversão e o usuário deverá decidir "
-"qual é a melhor."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"A lista de nomes de codificação legada para a linguagem específica. Observe "
-"que a ordem na lista é significativa. O fsexam considera a melhor opção a "
-"primeira, da qual a conversão pode ser realizada com sucesso."
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[ISO8859-1,ISO8859-3,ISO8859-5,ISO8859-8,ISO8859-9]"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "modo automático"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "lista de codificação"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "modo recursivo"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "lista de sufixos"
-
-# SUN MSG
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "Ajudar a migrar da codificação legada para UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#~ msgid "text"
-#~ msgstr "texto"
-
-# SUN MSG
-#~ msgid "Directory already exists"
-#~ msgstr "O diretório já existe"
-
-# SUN MSG
-#~ msgid "File content"
-#~ msgstr "Conteúdo do arquivo"
-
-# SUN MSG
-#~ msgid "Null directory"
-#~ msgstr "Diretório nulo"
-
-# SUN MSG
-#~ msgid "Apply by name"
-#~ msgstr "Aplicar por nome"
-
-# SUN MSG
-#~ msgid "Apply by content"
-#~ msgstr "Aplicar por conteúdo"
-
-# SUN MSG
-#~ msgid "Peek content"
-#~ msgstr "Conteúdo de pico"
-
-# SUN MSG
-#~ msgid "popen error, please try again!"
-#~ msgstr "Erro de popen, tente novamente!"
-
-# SUN MSG
-#~ msgid "Not one plain text"
-#~ msgstr "Não é um texto simples"
-
-# SUN MSG
-#~ msgid "File content candidate window"
-#~ msgstr "Janela de opção de conteúdo de arquivo"
-
-# SUN MSG
-#~ msgid "File content - successful conversion"
-#~ msgstr "Conteúdo do arquivo - conversão realizada com êxito"
-
-# SUN MSG
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "Conteúdo do arquivo - já é UTF8"
-
-# SUN MSG
-#~ msgid "Directory node"
-#~ msgstr "Nó de diretório"
-
-# SUN MSG
-#~ msgid "File content - successful undo"
-#~ msgstr "Conteúdo do arquivo - ação desfeita com êxito"
-
-# SUN MESSAGE
-#~ msgid "Candidate Selection"
-#~ msgstr "Seleção candidata"
-
-# SUN MESSAGE
-#~ msgid "File Hierarchy"
-#~ msgstr "Hierarquia de arquivos"
-
-# SUN MESSAGE
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "O diretório ainda não existe"
-
-# SUN MESSAGE
-#~ msgid "No directory specified"
-#~ msgstr "Nenhum diretório especificado"
-
-# SUN MESSAGE
-#~ msgid "Directory Selection"
-#~ msgstr "Seleção de diretório"
-
-# SUN MESSAGE
-#~ msgid "_Action"
-#~ msgstr "_Ação"
-
-# SUN MESSAGE
-#~ msgid "Report Pane"
-#~ msgstr "Painel de relatório"
-
-# SUN MESSAGE
-#~ msgid "Encoding List"
-#~ msgstr "Lista de codificação"
-
-# SUN MESSAGE
-#~ msgid "Preference Setting"
-#~ msgstr "Configuração de preferência"
-
-# SUN MESSAGE
-#~ msgid "Recursive Mode"
-#~ msgstr "Modo recursivo"
-
-# SUN MESSAGE
-#~ msgid "Automatic Conversion"
-#~ msgstr "Conversão automática"
-
-# SUN MESSAGE
-#~ msgid "Conversion failure"
-#~ msgstr "Falha na conversão"
-
-# SUN MESSAGE
-#~ msgid "UTF8 already"
-#~ msgstr "Já é UTF8"
--- a/src/cmd/fsexam/po/ru.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,351 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr ""
-
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr ""
-
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr ""
-
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr ""
-
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr ""
-
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr ""
-
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr ""
-
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr ""
-
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr ""
-
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr ""
-
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr ""
-
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr ""
-
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr ""
-
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr ""
-
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr ""
-
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr ""
-
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr ""
-
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr ""
-
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr ""
-
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr ""
-
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr ""
-
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr ""
-
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr ""
-
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr ""
-
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr ""
-
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr ""
-
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr ""
-
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr ""
-
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr ""
-
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr ""
-
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr ""
-
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr ""
-
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr ""
-
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr ""
-
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr ""
-
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr ""
-
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr ""
-
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr ""
-
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr ""
-
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr ""
-
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr ""
-
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr ""
-
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr ""
-
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr ""
-
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr ""
-
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr ""
-
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr ""
-
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr ""
-
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr ""
-
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr ""
-
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr ""
-
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr ""
-
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr ""
-
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr ""
-
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr ""
-
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr ""
-
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr ""
--- a/src/cmd/fsexam/po/sv.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,604 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-# 
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-# SUN MESSAGE
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN MESSAGE
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "Undersökning av filsystem"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "File System Examiner namnkonvertering"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "Mappen finns redan"
-
-# SUN MSG
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "Filen finns redan"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "Ingen behörighet att ändra namn"
-
-# SUN MESSAGE
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "Filen finns inte än"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "ta bort vagnretur"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "ta endast bort vagnretur"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "lägg till vagnretur"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "lägg endast till vagnretur"
-
-# SUN MSG
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "Filnamn - konverteringsfel"
-
-# SUN MSG
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "Filnamn - är redan UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "Plats:"
-
-# SUN MESSAGE
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "Ingen läsbehörighet"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "Mappen finns inte än"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "Ingen mapp har angetts"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "Null-mapp"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "Välj mapp"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "Det uppstod ett fel då hjälpen skulle visas: %s"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr "fsexam används för att konvertera filnamn och innehåll till UTF8"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "_Arkiv"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "_Öppna..."
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "_Redigera"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "_Återställ originalfil"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "Konvertera _filnamn"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "Konvertera i_nnehåll"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "_Förhandsgranska innehåll"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "_Inställningar"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "_Visa"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "_Rapportfönster"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "_Hjälp"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "_Innehåll"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "_Om"
-
-# SUN MSG
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "Fel vid inläsning av ikonen %s\n"
-
-# SUN MESSAGE
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "Välkommen"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "Inställningar för File System Examiner"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "Undermapp:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "_Rekursivt läge"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "Användaråtgärd:"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "_Automatisk konvertering"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "Kodningslista:"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "Inte klartext"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "File System Examiner innehållskonvertering"
-
-# SUN MSG
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "Bytesekvensen känns inte igen ännu"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "Filinnehåll - redan UTF8"
-
-# SUN MSG
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "Filinnehåll - öppningsfel"
-
-# SUN MSG
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "Filinnehåll -  skrivfel"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "Filinnehåll - konvertera från %s"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "Filinnehåll - konvertera från %s och ta bort vagnretur"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "Filinnehåll - ta endast bort vagnretur"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "Det går inte att konvertera innehållet i mappen"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s finns inte än"
-
-# SUN MESSAGE
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "Filen har tömts och kan inte återställas."
-
-# SUN MSG
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "Filinnehåll - konverteringsfel"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "Återställ %s"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "Återställ %s och lägg till vagnretur"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "Återställ genom att lägga till vagnretur"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "Återställ UTF8"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "Återställ UTF8 och ta bort vagnretur"
-
-# SUN MSG
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "Återställ genom att ta bort vagnretur"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "Det går inte att förhandsgranska flera objekt samtidigt"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr ""
-"En lista med suffix. En fil vars suffix tillhör listan antas vara en vanlig "
-"textfil av fsexam."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"Gäller endast filnamnskonvertering! Det är rekursivt läge, genom att "
-"aktivera det kommer fsexam att konvertera namn på fil - och underbiblioteket "
-"till UTF8 rekursivt."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"Gäller endast filnamnskonvertering. Det är automatiskt läge, genom att "
-"aktivera det kommer fsexam att konvertera med bästa konverteringsresultat "
-"utan användarinblandning. Annars visas ett dialogfönster som visar flera "
-"konverteringsförslag och användaren måste välja vilket som är bäst."
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"Listan med gamla kodningsnamn är tillgänglig för det specifika språket. Lägg "
-"märke till att den inbördes ordningen i listan är ointressant. fsexam anser "
-"att den bästa är den konvertering som först leder till en lyckad "
-"konvertering."
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr ""
-"[ISO8859-1,ISO8859-4,ISO8859-5,ISO8859-6,ISO8859-7,ISO8859-8,ISO8859-9]"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "automatiskt läge"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "kodningslista"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "rekursivt läge"
-
-# SUN MSG
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "suffixlista"
-
-# SUN MSG
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "Hjälp till att byta från den gamla kodningen till UTF8"
-
-# SUN REVIEWED
-# SUN MESSAGE
-#~ msgid "text"
-#~ msgstr "text"
-
-# SUN MSG
-#~ msgid "Directory already exists"
-#~ msgstr "Katalogen finns redan"
-
-# SUN MSG
-#~ msgid "File content"
-#~ msgstr "Filinnehåll"
-
-# SUN MSG
-#~ msgid "Null directory"
-#~ msgstr "Nullkatalog"
-
-# SUN MSG
-#~ msgid "Apply by name"
-#~ msgstr "Använd efter namn"
-
-# SUN MSG
-#~ msgid "Apply by content"
-#~ msgstr "Använd efter innehåll"
-
-# SUN MSG
-#~ msgid "Peek content"
-#~ msgstr "Peek-innehåll"
-
-# SUN MSG
-#~ msgid "popen error, please try again!"
-#~ msgstr "popen-fel, försök igen."
-
-# SUN MSG
-#~ msgid "Not one plain text"
-#~ msgstr "Inte en vanlig text"
-
-# SUN MSG
-#~ msgid "File content candidate window"
-#~ msgstr "Kandidatfönster för filinnehåll"
-
-# SUN MSG
-#~ msgid "File content - successful conversion"
-#~ msgstr "Filinnehåll - konverteringen lyckades"
-
-# SUN MSG
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "Filinnehåll - är redan UTF8"
-
-# SUN MSG
-#~ msgid "Directory node"
-#~ msgstr "Katalognod"
-
-# SUN MSG
-#~ msgid "File content - successful undo"
-#~ msgstr "Filinnehåll - det gick att ångra"
-
-# SUN MESSAGE
-#~ msgid "Candidate Selection"
-#~ msgstr "Välj kandidat"
-
-# SUN MESSAGE
-#~ msgid "File Hierarchy"
-#~ msgstr "Filhierarki"
-
-# SUN MESSAGE
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "Katalogen finns inte än"
-
-# SUN MESSAGE
-#~ msgid "No directory specified"
-#~ msgstr "Ingen katalog har angetts"
-
-# SUN MESSAGE
-#~ msgid "Directory Selection"
-#~ msgstr "Välj katalog"
-
-# SUN MESSAGE
-#~ msgid "_Action"
-#~ msgstr "_Åtgärd"
-
-# SUN MESSAGE
-#~ msgid "Report Pane"
-#~ msgstr "Rapportfönster"
-
-# SUN MESSAGE
-#~ msgid "Encoding List"
-#~ msgstr "Kodningslista"
-
-# SUN MESSAGE
-#~ msgid "Preference Setting"
-#~ msgstr "Inställningar"
-
-# SUN MESSAGE
-#~ msgid "Recursive Mode"
-#~ msgstr "Rekursivt läge"
-
-# SUN MESSAGE
-#~ msgid "Automatic Conversion"
-#~ msgstr "Automatisk konvertering"
-
-# SUN MESSAGE
-#~ msgid "Conversion failure"
-#~ msgstr "Konverteringsfel"
-
-# SUN MESSAGE
-#~ msgid "UTF8 already"
-#~ msgstr "Redan UTF8"
--- a/src/cmd/fsexam/po/zh_CN.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,498 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# Simplified Chinese translation of fsexam
-# Copyright (C) 2004 Sun, Inc
-# This file is distributed under the same license as the fsexam-0.1 package.
-# Federic Zhang <[email protected]>, 2004.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexam 0.1\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-05-17 09:34+0000\n"
-"Last-Translator: Federic Zhang <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "文件系统查看器"
-
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "文件系统检查器文件名转换"
-
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "文件夹已存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "文件已存在"
-
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "没有权限重命名"
-
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "文件不存在"
-
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "删除回车"
-
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "仅删除回车"
-
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "添加回车"
-
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "仅添加回车"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "文件名 - 转换错误"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "文件名 - 已是 UTF8"
-
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "位置:"
-
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "没有读权限"
-
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "文件夹不存在"
-
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "未指定文件夹"
-
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "空文件夹"
-
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "选择文件夹"
-
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "显示帮助时错误: %s"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr "fsexam帮助用户移植传统编码的文件名和文件内容编码到UTF8"
-
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "文件(_F)"
-
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "打开(_O)..."
-
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "编辑(_E)"
-
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "恢复原始文件(_R)"
-
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "转换文件名(_F)"
-
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "转换文件内容(_C)"
-
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "预览文件内容(_V)"
-
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "首选项(_P)"
-
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "显示(_V)"
-
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "报告面板(_R)"
-
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "帮助(_H)"
-
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "内容(_C)"
-
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "关于(_A)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "加载图标 %s 时出错\n"
-
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "欢迎"
-
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "文件系统检查器首选项"
-
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "子文件夹:"
-
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "递归模式(_R)"
-
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "用户介入:"
-
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "自动转换(_A)"
-
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "编码列表:"
-
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "非文本文件"
-
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "文件系统检查器内容转换"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "尚未识别字节序列"
-
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "文件内容 - 已是 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "文件内容 - 打开失败"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "文件内容 - 写入错误"
-
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "文件内容 - 从 %s 转换"
-
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "文件内容 - 从 %s 转换并删除回车"
-
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "文件内容 - 仅删除回车"
-
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "无法转换文件夹内容"
-
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s 尚不存在"
-
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "文件已被清空,无法恢复!"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "文件内容 - 转换失败"
-
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "恢复 %s"
-
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "恢复 %s 并添加回车"
-
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "通过添加回车来恢复"
-
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "恢复 UTF8"
-
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "恢复 UTF8 并删除回车"
-
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "删除回车以恢复"
-
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "无法预览多项选择"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr "后辍列表。所有后辍在此列表中的文件都被 fsexam 假定为纯文本文件。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"只适用于文件名转换!它是一种递归模式,通过启用它,fsexam 将文件名和子目录名递"
-"归地转换为 UTF8 格式。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"只适用于文件名转换。它是一种自动模式,通过启用它,fsexam 将自动进行能获得最佳"
-"转换结果的转换,无需用户干预。否则,将会显示一个对话框,其中包含若干备选转换"
-"选项,用户需要决定哪种转换是最佳方式。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"特定语言的遗留编码名称列表。注意:列表中的顺序十分重要。fsexam 将可以从其进行"
-"成功转换的最佳名称放在列表中的第一位。"
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[GB18030,BIG5,ISO-2022-CN]"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "自动模式"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "编码列表"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "递归模式"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "后辍列表"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "帮助从原有编码迁移至 UTF8"
-
-#~ msgid "text"
-#~ msgstr "文本"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Apply by name"
-#~ msgstr "按名称应用"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Apply by content"
-#~ msgstr "按内容应用"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "popen error, please try again!"
-#~ msgstr "打开错误,请重试!"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Not one plain text"
-#~ msgstr "不是纯文本文件"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content candidate window"
-#~ msgstr "文件内容备选窗口"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - successful conversion"
-#~ msgstr "文件内容 - 成功转换"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "文件内容 - 已是 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - successful undo"
-#~ msgstr "文件内容 - 成功撤消"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory already exists"
-#~ msgstr "目录已存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content"
-#~ msgstr "文件内容"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Null directory"
-#~ msgstr "空目录"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Peek content"
-#~ msgstr "取出内容"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory node"
-#~ msgstr "目录节点"
-
-#~ msgid "Candidate Selection"
-#~ msgstr "候选选择"
-
-#~ msgid "File Hierarchy"
-#~ msgstr "文件目录"
-
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "目录不存在"
-
-#~ msgid "No directory specified"
-#~ msgstr "没有指定目录"
-
-#~ msgid "Directory Selection"
-#~ msgstr "目录选择"
-
-#~ msgid "_Action"
-#~ msgstr "操作(_A)"
-
-#~ msgid "Report Pane"
-#~ msgstr "转码报告"
-
-#~ msgid "Encoding List"
-#~ msgstr "编码列表"
-
-#~ msgid "Preference Setting"
-#~ msgstr "缺省设置"
-
-#~ msgid "Recursive Mode"
-#~ msgstr "递归模式"
-
-#~ msgid "Automatic Conversion"
-#~ msgstr "自动转换"
-
-#~ msgid "About"
-#~ msgstr "关于"
--- a/src/cmd/fsexam/po/zh_HK.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,545 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "檔案系統檢查程式"
-
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "檔案系統檢查程式名稱轉換"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "資料夾已存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "檔案已存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "不允許重新命名"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "檔案不存在"
-
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "刪除換行鍵"
-
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "只刪除換行鍵"
-
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "增加換行鍵"
-
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "只增加換行鍵"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "檔案名稱 - 轉換失敗"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "檔案名稱 - 已經是 UTF8"
-
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "位置:"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "沒有讀取權限"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "資料夾不存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "未指定資料夾"
-
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "空資料夾"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "資料夾選取範圍"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "顯示說明時發生錯誤: %s"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr "fsexam 可以協助將檔案名稱和檔案內容的現用編碼方式轉換為 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "檔案(_F)"
-
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "開啟(_O)..."
-
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "編輯(_E)"
-
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "復原原始檔案(_R)"
-
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "轉換檔案名稱(_F)"
-
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "轉換內容(_C)"
-
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "預覽內容(_V)"
-
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "喜好設定(_P)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "檢視(_V)"
-
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "報告窗格(_R)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "說明(_H)"
-
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "內容(_C)"
-
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "關於(_A)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "載入圖示 %s 時發生錯誤\n"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "歡迎使用"
-
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "檔案系統檢查程式喜好設定"
-
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "子資料夾:"
-
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "遞迴模式(_R)"
-
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "使用者介入:"
-
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "自動轉換(_A)"
-
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "編碼清單:"
-
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "非純文字"
-
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "檔案系統檢查程式內容轉換"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "無法識別位元數序列"
-
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "檔案內容 - 已經是 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "檔案內容 - 開啟失敗"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "檔案內容 - 寫入錯誤"
-
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "檔案內容 - 從 %s 轉換"
-
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "檔案內容 - 從 %s 轉換並刪除換行鍵"
-
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "檔案內容 - 只刪除換行鍵"
-
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "無法轉換資料夾的內容"
-
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s 不存在"
-
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "檔案已清空,無法復原!"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "檔案內容 - 轉換失敗"
-
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "復原 %s"
-
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "復原 %s 並增加換行鍵"
-
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "新增換行鍵即可復原"
-
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "復原 UTF8"
-
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "復原 UTF8 並刪除換行鍵"
-
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "刪除換行鍵即可復原"
-
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "無法預覽多重選取"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr "字尾清單。Fsexam 會將字尾屬於此清單的檔案假設為純文字檔。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"僅適用於檔案名稱轉換!這是遞迴模式,啟動此模式,Fsexam 將轉換檔案的名稱與子目"
-"錄為 UTF8。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"僅適用於檔案名稱轉換。這是自動模式,啟動自動模式,不需使用者介入,Fsexam 就會"
-"自動轉換成最佳的轉換結果。否則,將顯示具有數項轉換選項的對話方塊,使用者需要"
-"決定最佳的轉換方式。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"可供特定的語言使用之舊編碼名稱清單。請注意:清單內為有效的排序。Fsexam 會將最"
-"佳的視為第一個,並成功對其執行轉換。"
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[BIG5,EUC-TW,GB18030]"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "自動模式"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "編碼清單"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "遞迴模式"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "字尾清單"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "協助從原來的編碼遷移至 UTF8"
-
-#~ msgid "text"
-#~ msgstr "文字"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content"
-#~ msgstr "檔案內容"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Apply by name"
-#~ msgstr "依名稱套用"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Apply by content"
-#~ msgstr "依內容套用"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Peek content"
-#~ msgstr "窺看內容"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "popen error, please try again!"
-#~ msgstr "popen 錯誤,請再試一次!"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Not one plain text"
-#~ msgstr "不是一個純文字"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content candidate window"
-#~ msgstr "檔案內容可選用視窗"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - successful conversion"
-#~ msgstr "檔案內容 - 成功轉換"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "檔案內容 - 已經是 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - successful undo"
-#~ msgstr "檔案內容 - 成功還原"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory already exists"
-#~ msgstr "目錄已存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Null directory"
-#~ msgstr "空目錄"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory node"
-#~ msgstr "目錄節點"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Candidate Selection"
-#~ msgstr "候選範圍"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File Hierarchy"
-#~ msgstr "檔案階層"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "目錄不存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "No directory specified"
-#~ msgstr "沒有指定目錄"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory Selection"
-#~ msgstr "目錄選取"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "_Action"
-#~ msgstr "動作(_A)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Report Pane"
-#~ msgstr "報告窗格"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Encoding List"
-#~ msgstr "編碼清單"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Preference Setting"
-#~ msgstr "喜好設定"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Recursive Mode"
-#~ msgstr "遞迴模式"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Automatic Conversion"
-#~ msgstr "自動轉換"
--- a/src/cmd/fsexam/po/zh_TW.po	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,545 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: fsexeam HEAD\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-30 13:58+0800\n"
-"PO-Revision-Date: 2004-06-16 15:05+0900\n"
-"Last-Translator: Sun G11n <[email protected]>\n"
-"Language-Team: Sun G11n <[email protected]>\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam.c:61 src/fsexam-ui.c:954 data/fsexam.desktop.in.h:1
-msgid "File System Examiner"
-msgstr "檔案系統檢查程式"
-
-#: src/fsexam-conversion.c:139
-msgid "File System Examiner name conversion"
-msgstr "檔案系統檢查程式名稱轉換"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:213
-msgid "Folder already exists"
-msgstr "資料夾已存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:218
-msgid "File already exists"
-msgstr "檔案已存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:233
-msgid "No permission to rename"
-msgstr "不允許重新命名"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:236
-msgid "File doesn't exist yet"
-msgstr "檔案不存在"
-
-#: src/fsexam-conversion.c:356
-msgid "delete Carriage Return"
-msgstr "刪除換行鍵"
-
-#: src/fsexam-conversion.c:424
-msgid "delete Carriage Return only"
-msgstr "只刪除換行鍵"
-
-#: src/fsexam-conversion.c:433
-msgid "add Carriage Return"
-msgstr "增加換行鍵"
-
-#: src/fsexam-conversion.c:436
-msgid "add Carriage Return only"
-msgstr "只增加換行鍵"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:494
-msgid "File name - conversion failure"
-msgstr "檔案名稱 - 轉換失敗"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-conversion.c:499
-msgid "File name - UTF8 already"
-msgstr "檔案名稱 - 已經是 UTF8"
-
-#: src/fsexam-ui.c:256 src/fsexam-ui.c:1023
-msgid "Location:"
-msgstr "位置:"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#. write the error message to statusbar
-#: src/fsexam-ui.c:378 src/fsexam-ui.c:473
-msgid "No read permission"
-msgstr "沒有讀取權限"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:381
-msgid "Folder doesn't exist yet"
-msgstr "資料夾不存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:385
-msgid "No folder specified"
-msgstr "未指定資料夾"
-
-#. the directory doesn't contain any files
-#: src/fsexam-ui.c:480
-msgid "Null folder"
-msgstr "空資料夾"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:574
-msgid "Folder Selection"
-msgstr "資料夾選取範圍"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:623 src/fsexam-preference.c:380
-#, c-format
-msgid "There was an error displaying help: %s"
-msgstr "顯示說明時發生錯誤: %s"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:654
-msgid "fsexam"
-msgstr "fsexam"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:656
-msgid ""
-"fsexam is to help migrate file name and file content from legacy encoding to "
-"UTF8"
-msgstr "fsexam 可以協助將檔案名稱和檔案內容的現用編碼方式轉換為 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:783
-msgid "_File"
-msgstr "檔案(_F)"
-
-#: src/fsexam-ui.c:796
-msgid "_Open..."
-msgstr "開啟(_O)..."
-
-#: src/fsexam-ui.c:809
-msgid "_Edit"
-msgstr "編輯(_E)"
-
-#: src/fsexam-ui.c:834
-msgid "_Restore Original File"
-msgstr "復原原始檔案(_R)"
-
-#: src/fsexam-ui.c:846
-msgid "Convert _Filename"
-msgstr "轉換檔案名稱(_F)"
-
-#: src/fsexam-ui.c:855
-msgid "_Convert Content"
-msgstr "轉換內容(_C)"
-
-#: src/fsexam-ui.c:859
-msgid "Pre_view Content"
-msgstr "預覽內容(_V)"
-
-#: src/fsexam-ui.c:874
-msgid "_Preferences"
-msgstr "喜好設定(_P)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:877
-msgid "_View"
-msgstr "檢視(_V)"
-
-#: src/fsexam-ui.c:886
-msgid "_Report Pane"
-msgstr "報告窗格(_R)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:893
-msgid "_Help"
-msgstr "說明(_H)"
-
-#: src/fsexam-ui.c:906
-msgid "_Contents"
-msgstr "內容(_C)"
-
-#: src/fsexam-ui.c:915
-msgid "_About"
-msgstr "關於(_A)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:930
-#, c-format
-msgid "Error loading icon %s\n"
-msgstr "載入圖示 %s 時發生錯誤\n"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-ui.c:977
-msgid "Welcome"
-msgstr "歡迎使用"
-
-#: src/fsexam-preference.c:406
-msgid "File System Examiner preferences"
-msgstr "檔案系統檢查程式喜好設定"
-
-#: src/fsexam-preference.c:425
-msgid "Sub-folder:"
-msgstr "子資料夾:"
-
-#: src/fsexam-preference.c:433
-msgid "_Recursive Mode"
-msgstr "遞迴模式(_R)"
-
-#: src/fsexam-preference.c:445
-msgid "User intervention:"
-msgstr "使用者介入:"
-
-#: src/fsexam-preference.c:453
-msgid "_Automatic Conversion"
-msgstr "自動轉換(_A)"
-
-#: src/fsexam-preference.c:470
-msgid "Encode list:"
-msgstr "編碼清單:"
-
-#: src/fsexam-content.c:178
-msgid "Not plain text"
-msgstr "非純文字"
-
-#: src/fsexam-content.c:294
-msgid "File System Examiner content conversion"
-msgstr "檔案系統檢查程式內容轉換"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:408
-msgid "Byte sequence not recognized yet"
-msgstr "無法識別位元數序列"
-
-#: src/fsexam-content.c:413
-msgid "File content - UTF8 already"
-msgstr "檔案內容 - 已經是 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:450 src/fsexam-content.c:691
-msgid "File content - open failure"
-msgstr "檔案內容 - 開啟失敗"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:456 src/fsexam-content.c:696
-msgid "File content - write error"
-msgstr "檔案內容 - 寫入錯誤"
-
-#: src/fsexam-content.c:464
-#, c-format
-msgid "File content - convert from %s"
-msgstr "檔案內容 - 從 %s 轉換"
-
-#: src/fsexam-content.c:467
-#, c-format
-msgid "File content - convert from %s and delete Carriage Return"
-msgstr "檔案內容 - 從 %s 轉換並刪除換行鍵"
-
-#: src/fsexam-content.c:470
-msgid "File content - delete Carriage Return only"
-msgstr "檔案內容 - 只刪除換行鍵"
-
-#: src/fsexam-content.c:519 src/fsexam-content.c:981
-msgid "Cannot convert contents of folder"
-msgstr "無法轉換資料夾的內容"
-
-#: src/fsexam-content.c:622
-#, c-format
-msgid "%s doesn't exist yet"
-msgstr "%s 不存在"
-
-#: src/fsexam-content.c:639
-msgid "File has been emptied, can not be restored!"
-msgstr "檔案已清空,無法復原!"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: src/fsexam-content.c:679
-msgid "File content - conversion failure"
-msgstr "檔案內容 - 轉換失敗"
-
-#: src/fsexam-content.c:704
-#, c-format
-msgid "Restore %s"
-msgstr "復原 %s"
-
-#: src/fsexam-content.c:707
-#, c-format
-msgid "Restore %s and add Carriage Return"
-msgstr "復原 %s 並增加換行鍵"
-
-#: src/fsexam-content.c:710
-msgid "Restore by adding Carriage Return"
-msgstr "新增換行鍵即可復原"
-
-#: src/fsexam-content.c:713
-msgid "Restore UTF8"
-msgstr "復原 UTF8"
-
-#: src/fsexam-content.c:716
-msgid "Restore UTF8 and delete Carriage Return"
-msgstr "復原 UTF8 並刪除換行鍵"
-
-#: src/fsexam-content.c:719
-msgid "Restore by deleting Carriage Return"
-msgstr "刪除換行鍵即可復原"
-
-#: src/fsexam-content.c:969
-msgid "Cannot preview multiple selections"
-msgstr "無法預覽多重選取"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:1
-msgid ""
-"A list of suffix. Any file whose suffix belongs to the list are assumed by "
-"fsexam as plain text file."
-msgstr "字尾清單。Fsexam 會將字尾屬於此清單的檔案假設為純文字檔。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:2
-msgid ""
-"Only applicable for file name conversion! It's recursive mode, by enabling "
-"it, fsexam will convert the name of file and subdirectory to UTF8 "
-"recursively."
-msgstr ""
-"僅適用於檔案名稱轉換!這是遞迴模式,啟動此模式,Fsexam 將轉換檔案的名稱與子目"
-"錄為 UTF8。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:3
-msgid ""
-"Only applicable for file name conversion. It's automatic mode, by enabling "
-"it, fsexam will automatically convert with the best conversion result "
-"without user interference. Otherwise, a dialog will display with several "
-"conversion candidates and user needs to decide which conversion is the best "
-"one."
-msgstr ""
-"僅適用於檔案名稱轉換。這是自動模式,啟動自動模式,不需使用者介入,Fsexam 就會"
-"自動轉換成最佳的轉換結果。否則,將顯示具有數項轉換選項的對話方塊,使用者需要"
-"決定最佳的轉換方式。"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:4
-msgid ""
-"The list of legacy encoding name available for the specific language. Note "
-"that the order within the list is significant. fsexam treats as the best one "
-"the first one from which conversion can be made successfully."
-msgstr ""
-"可供特定的語言使用之舊編碼名稱清單。請注意:清單內為有效的排序。Fsexam 會將最"
-"佳的視為第一個,並成功對其執行轉換。"
-
-#: data/fsexam.schemas.in.h:5
-msgid "[ISO8859-1]"
-msgstr "[BIG5,EUC-TW,GB18030]"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:6
-msgid "automatic mode"
-msgstr "自動模式"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:7
-msgid "encoding list"
-msgstr "編碼清單"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:8
-msgid "recursive mode"
-msgstr "遞迴模式"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.schemas.in.h:9
-msgid "suffix list"
-msgstr "字尾清單"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#: data/fsexam.desktop.in.h:2
-msgid "Help migrate from legacy encoding to UTF8"
-msgstr "協助從原來的編碼遷移至 UTF8"
-
-#~ msgid "text"
-#~ msgstr "文字"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content"
-#~ msgstr "檔案內容"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Apply by name"
-#~ msgstr "依名稱套用"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Apply by content"
-#~ msgstr "依內容套用"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Peek content"
-#~ msgstr "窺看內容"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "popen error, please try again!"
-#~ msgstr "popen 錯誤,請再試一次!"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Not one plain text"
-#~ msgstr "不是一個純文字"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content candidate window"
-#~ msgstr "檔案內容可選用視窗"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - successful conversion"
-#~ msgstr "檔案內容 - 成功轉換"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - UTF8 alreay"
-#~ msgstr "檔案內容 - 已經是 UTF8"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File content - successful undo"
-#~ msgstr "檔案內容 - 成功還原"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory already exists"
-#~ msgstr "目錄已存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Null directory"
-#~ msgstr "空目錄"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory node"
-#~ msgstr "目錄節點"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Candidate Selection"
-#~ msgstr "候選範圍"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "File Hierarchy"
-#~ msgstr "檔案階層"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory doesn't exist yet"
-#~ msgstr "目錄不存在"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "No directory specified"
-#~ msgstr "沒有指定目錄"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Directory Selection"
-#~ msgstr "目錄選取"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "_Action"
-#~ msgstr "動作(_A)"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Report Pane"
-#~ msgstr "報告窗格"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Encoding List"
-#~ msgstr "編碼清單"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Preference Setting"
-#~ msgstr "喜好設定"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Recursive Mode"
-#~ msgstr "遞迴模式"
-
-# SUN LING UNREVIEWED
-# SUN TECH UNREVIEWED
-#~ msgid "Automatic Conversion"
-#~ msgstr "自動轉換"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/GNOME_Fsexam.idl	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,35 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#include <Bonobo.idl>
+
+module GNOME {
+    module Fsexam {
+        interface  Application: Bonobo::Unknown {
+            oneway void grabFocus ();
+        };
+    };
+};
--- a/src/cmd/fsexam/src/Makefile	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-#ident	"@(#)Makefile	1.0	06/03/07	SMI"
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-
-include $(SRC)/Makefile.master
-
-all:=	TARGET= all
-install:=	TARGET= install
-
-ALLOBJS=encoding.o \
-       fsexam-conversion.o \
-	 fsexam-history.o\
-	 fsexam-preference.o \
-	 fsexam-content.o \
-	 fsexam-dnd.o     \
-	 fsexam.o    \
-	 fsexam-ui.o
-
-prefix=$(FILEROOT)/usr/local
-sysconfdir=$(prefix)/etc
-datadir=$(prefix)/data
-libdir=$(prefix)/lib
-
-CPPFLAGS=-DSYSCONFDIR=\""$(sysconfdir)"\" -DDATADIR=\""$(datadir)"\" -DLIBDIR=\""$(libdir)"\" -DPREFIX=\""$(prefix)"\"
-
-CFLAGS=
-
-LDFLAGS= -lSM -lICE -lpopt -lthread -lz  -lsocket -lnsl -lm -lmlib
-
-ALLPKGS= gnome-desktop-2.0 \
-	 libgnomeui-2.0 \
-	 libglade-2.0 \
-	 libbonoboui-2.0 \
-	 libgnome-2.0 \
-	 gnome-vfs-2.0\
-	 libbonobo-2.0 \
-	 gconf-2.0 \
-	 bonobo-activation-2.0\
-	 ORBit-2.0\
-	 gtk+-2.0\
-	 glib-2.0\
-	 libstartup-notification-1.0 \
-	 eel-2.0 \
-	 gail \
-	 gnome-keyring-1\
-	 libart-2.0 \
-	 libxml-2.0
-
-FSEXAM_BIN = 	fsexam
-BINDIR = 		$(FILEROOT)/usr/bin
-
-all:	$(ALLOBJS)
-	$(CC) -o fsexam $(ALLOBJS)  $(LDFLAGS) `pkg-config --libs $(ALLPKGS)`
-
-myins:
-	$(INSDIR) $(BINDIR)
-	$(INS) $(BINDIR) $(FSEXAM_BIN)
-
-install: all myins
-
-.c.o:
-	$(CC)  -I. -I.. $(CPPFLAGS) `pkg-config --cflags $(ALLPKGS)` -g -c $<
-
-
-clean:
-	-rm -rf *.o fsexam
--- a/src/cmd/fsexam/src/Makefile.am	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").  
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms. 
-#
-
-INCLUDES = $(FSEXAM_CFLAGS)
-
-CPPFLAGS = -DSYSCONFDIR=\""$(sysconfdir)"\" -DDATADIR=\""$(datadir)"\" -DLIBDIR=\""$(libdir)"\" -DPREFIX=\""$(prefix)"\"
-
-bin_PROGRAMS = fsexam
-
-fsexam_LDADD = $(FSEXAM_LIBS)
-fsexam_SOURCES = fsexam.c encoding.c \
-			fsexam-preference.c \
-			fsexam-conversion.c \
-			fsexam-content.c \
-			fsexam-ui.c \
-			fsexam-history.c \
-			fsexam-dnd.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/auto-detect.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,295 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <stdlib.h>
+#include <strings.h>
+
+#ifdef   HAVE_AUTO_EF_H
+#include <auto_ef.h>
+#endif
+
+#include "encoding.h"
+#include "auto-detect.h"
+
+short encoding2id (const gchar *encoding_name);
+
+#ifndef  HAVE_AUTO_EF_H
+gboolean 
+file_isutf8 (const gchar *filename, gint flags)
+{
+    gchar *contents = NULL;
+
+    if (filename == NULL)
+        return FALSE;
+
+    if (g_file_get_contents (filename, &contents, NULL, NULL)) {
+        gboolean ret = FALSE;
+
+        if (g_utf8_validate (contents, -1, NULL))
+            ret = TRUE;
+
+        g_free (contents);
+
+        return ret;
+    }else{
+        //fsexam_errno = ERR_CANNOT_READ;   delay error handling 
+    }
+
+    return FALSE;
+}
+
+GList *
+file_encoding_detect (const gchar *filename, gint flags)
+{
+    return NULL;
+}
+
+GList *
+str_encoding_detect (const gchar *string, gint flags)
+{
+    return NULL;
+}
+
+void
+auto_encoding_free (GList *list)
+{
+    return;
+}
+
+#else
+
+static const gchar *autoen_map[][2] = {
+  /* auto detected          canonical */
+    {"8859-1",              "ISO-8859-1"},
+    {"8859-2",              "ISO-8859-2"},
+    {"8859-5",              "ISO-8859-5"},
+    {"8859-6",              "ISO-8859-6"},
+    {"8859-7",              "ISO-8859-7"},
+    {"8859-8",              "ISO-8859-8"},
+    {"ascii",               "UTF-8"},
+    {"iso-8859-1",          "ISO-8859-1"},
+    {"iso-8859-2",          "ISO-8859-2"},
+    {"iso-8859-5",          "ISO-8859-5"},
+    {"iso-8859-6",          "ISO-8859-6"},
+    {"iso-8859-7",          "ISO-8859-7"},
+    {"iso-8859-8",          "ISO-8859-8"},
+    {"ko_KR.cp949",         "cp949"}, 
+    {"ko_KR.euc",           "EUC-KR"},
+    {"koi8-r",              "8859-5"},
+    {"zh_CN.euc",           "GB18030"},
+    {"zh_CN.GB18030",       "GB18030"},
+    {"zh_CN.iso2022-CN",    "GB2312"},
+    {"zh_HK.hkscs",         "BIG5-HKSCS"},
+    {"zh_TW-big5",          "BIG5"},
+    {"zh_TW-euc",           "EUC-TW"},
+};
+
+/* convert encoding name detected to canonical encoding name */
+static const gchar *
+auto_encoding_to_canonical_name (const gchar *auto_encoding_name)
+{
+    short low = 0;  
+    short high = sizeof (autoen_map) / sizeof (autoen_map[0]) - 1;
+    short mid;
+
+    if (auto_encoding_name == NULL)
+        return NULL;
+
+    while (low <= high) {
+        gint result;
+
+        mid = (low + high) / 2;
+        result = g_ascii_strcasecmp (auto_encoding_name, autoen_map[mid][0]);
+
+        if (result == 0)
+            return autoen_map[mid][1];
+        else if (result > 0)
+            low = mid + 1;
+        else
+            high = mid - 1;
+    }
+
+    /* may be in canonical name already */
+    if (encoding2id (auto_encoding_name) != -1)
+        return auto_encoding_name;
+
+    return NULL;
+}
+
+gboolean
+file_isutf8 (const gchar *filename, gint flags)
+{
+    auto_ef_t   *array_info = NULL;
+    size_t      number = 0;
+    gchar       *encoding = NULL;
+    double      score = 0;
+    gint        ret = FALSE;
+
+    if (filename == NULL)
+        return ret;
+
+    number = auto_ef_file (&array_info, filename, flags);
+    if (number != 1){
+        ret = FALSE;
+        goto free;
+    }
+
+    score = auto_ef_get_score (array_info[0]);
+    if (abs(score - 100.0) > INACCURACY) {
+        ret = FALSE;
+        goto free;
+    }
+    encoding = auto_ef_get_encoding (array_info[0]);
+    if ((strcmp (encoding, "UTF-8") == 0) || (strcmp (encoding, "ASCII") == 0)){
+        ret = TRUE;
+    }
+
+free:
+    auto_ef_free (array_info);
+
+    return ret;
+}
+
+GList *
+file_encoding_detect (const gchar *filename, gint flags)
+{
+    EncodingPair    *pair = NULL;
+    GList           *result = NULL;
+    auto_ef_t       *array_info = NULL;
+    size_t          number = 0;
+    gint            i;
+
+    if (filename == NULL)
+        return NULL;
+
+    number = auto_ef_file (&array_info, filename, flags);
+    if (-1 == number)
+        return NULL;
+
+    for (i = number - 1; i >= 0; i--){
+        const gchar *canonical_name = NULL;
+
+        canonical_name =  auto_encoding_to_canonical_name (
+                        auto_ef_get_encoding (array_info[i]));
+
+        if (canonical_name == NULL) {
+            g_print (_("Warning: can not convert encoding %s to canonical encoding name, will ignore it.\n"), 
+                      auto_ef_get_encoding (array_info[i]));
+            continue;
+        }
+
+        pair = g_new (EncodingPair, 1);
+
+        pair->encoding_name = g_strdup (canonical_name);
+        pair->score = auto_ef_get_score (array_info[i]);
+
+        result = g_list_append (result, pair);
+    }
+
+free:
+    auto_ef_free (array_info);
+    return result;
+}
+
+GList *
+str_encoding_detect (const gchar *string, gint flags)
+{
+    EncodingPair    *pair = NULL;
+    GList           *result = NULL;
+    auto_ef_t       *array_info = NULL;
+    size_t          number = 0;
+    gint            i = 0;
+
+    if (string == NULL)
+        return NULL;
+
+    number = auto_ef_str (&array_info, string, strlen(string), flags);
+    if (-1 == number)
+        return NULL;
+
+    for (i = number - 1; i >= 0; i--){
+        const gchar *canonical_name = NULL;
+
+        canonical_name =  auto_encoding_to_canonical_name (
+                        auto_ef_get_encoding (array_info[i]));
+
+        if (canonical_name == NULL) {
+            g_print (_("Warning: can not convert encoding %s to canonical encoding name, will ignore it.\n"), 
+                      auto_ef_get_encoding (array_info[i]));
+            continue;
+        }
+
+        pair = g_new (EncodingPair, 1);
+
+        pair->encoding_name = g_strdup (canonical_name);
+        pair->score = auto_ef_get_score (array_info[i]);
+
+        result = g_list_append (result, pair);
+    }
+
+free:
+    auto_ef_free (array_info);
+
+    return result;
+}
+
+void
+auto_encoding_free (GList *list)
+{
+    EncodingPair    *pair = NULL;
+
+    if (NULL == list)
+        return;
+
+    while (list){
+        pair = list->data;
+        if (pair != NULL)
+            g_free (pair->encoding_name);
+
+        list = list->next;
+    }
+
+    g_list_free (list);
+
+    return;
+}
+#endif
+
+gboolean
+str_isutf8 (const gchar *string, gint flags)
+{
+    if (g_utf8_validate (string, -1, NULL))
+        return TRUE;
+    else
+        return FALSE;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/auto-detect.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,138 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * auto-detect.h
+ *
+ * Auto detect the filename/filecontent/string's encoding
+ */
+
+#ifndef _AUTO_DETECT_H
+#define _AUTO_DETECT_H
+
+#define INACCURACY  0.001
+
+#ifdef HAVE_AUTO_EF_H
+#include <auto_ef.h>
+#define DEFAULT_DETECTING_FLAG (AE_LEVEL_2)
+#else
+#define DEFAULT_DETECTING_FLAG 0
+#endif
+
+typedef struct _EncodingPair EncodingPair;
+
+struct _EncodingPair{
+    gchar   *encoding_name;
+    double  score;
+};
+
+/*====================================================================
+ *  Function Name:  file_isutf8
+ *
+ *  Parameters:
+ *      const gchar *filename: the name of file
+ *      gint   flags: used by underlying library to detect encoding. 
+ *              eg: auto_ef use  detect level
+ *
+ *  Desc:
+ *      Determine whether the file's content is UTF-8 or not.
+ *
+ *  Return value:
+ *      True if file content is UTF-8, otherwise False.
+ *
+ *  Author:     Yandong Yao 2006/09/06
+ ========================================================================*/ 
+gboolean file_isutf8 (const gchar *filename, gint flags);
+
+/*====================================================================
+ *  Function Name:  file_encoding_detect
+ *
+ *  Parameters:
+ *      const gchar *filename
+ *      gint flags: used by underlying library to detect encoding. 
+ *                  eg: auto_ef use detect level
+ *
+ *  Desc:
+ *      Detect the file's content encoding, and return detected result.
+ *
+ *  Return value:
+ *      Return one list of EncodingPair
+ *      The encoding with higher score will appear ahead of encoding with lower score.
+ *
+ *      Need free the returned GList manually use auto_encoding_free when don't
+ *      use it again.
+ *
+ *  Author:     Yandong Yao 2006/09/06
+ ========================================================================*/ 
+GList * file_encoding_detect (const gchar *filename, gint flags);
+
+/*====================================================================
+ *  Function Name:  str_isutf8
+ *
+ *  Parameters:
+ *      const gchar *string: one null-terminated string.
+ *      gint flag: used by underlying library to detect encoding. 
+ *                  eg: auto_ef use detect level
+ *
+ *  Desc:   
+ *      Determine whether one string is UTF-8 or not. Internally use 
+ *      g_utf8_validate now.
+ *
+ *  Return value:
+ *      True if is UTF-8, otherwise False.
+ *
+ *  Author:     Yandong Yao 2006/09/06
+ ========================================================================*/ 
+gboolean str_isutf8 (const gchar *string, gint flags);
+
+/*====================================================================
+ *  Function Name:  str_encoding_detect
+ *
+ *  Parameters:
+ *      const gchar *string: one null-terminated string
+ *      gint flag: used by underlying library to detect encoding. 
+ *                  eg: auto_ef use detect level
+ *
+ *  Desc:
+ *      Detect the possible encoding of one string and return one list which 
+ *      contain the encoding name and its score. Higher score pair is ahead 
+ *      of lower score pair
+ *
+ *      Need free the returned GList manually use auto_encoding_free when don't
+ *      use it again.
+ *
+ *  Return value:
+ *
+ *  Author:     Yandong Yao 2006/09/06
+ ========================================================================*/ 
+GList * str_encoding_detect (const gchar *string, gint flags);
+
+/*==================================================================
+ *  Free encoding pair in list and list itself.
+ ==================================================================*/
+void auto_encoding_free (GList *list);
+
+#endif  //_AUTO_DETECT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/callbacks.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,853 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+#include <strings.h>
+#include <string.h>
+
+#include <glade/glade.h>
+#include <gtk/gtk.h>
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gconf/gconf-client.h>
+
+#include "fsexam.h"
+#include "file-filter.h"
+#include "fsexam-header.h"
+#include "fsexam-ui.h"
+#include "callbacks.h"
+#include "fsexam-debug.h"
+#include "fsexam-preference-dialog.h"
+
+static gboolean cb_pre_handling (void);
+static void     common_convert (ConvType type);
+static void     print_hash (gpointer key, gpointer value, gpointer data);
+static void     free_selection (gpointer row, gpointer data);
+static void     fsexam_undo_insert (gint32 serial);
+static gint32   fsexam_undo_remove (void);
+
+/*
+ *  pre-handling before real conversion.
+ */
+static gboolean
+cb_pre_handling ()
+{
+    FSEXAM_setting  *setting = view->setting;
+
+    while (TRUE) {
+        if ((setting->pref->encode_list == NULL) 
+                && !setting->pref->auto_detect) {
+            fsexam_gui_show_dialog (
+                            GTK_WINDOW (view->mainwin),
+                            GTK_MESSAGE_ERROR, 
+                            _("No encoding provided. Please check 'Auto Detect'"
+                              " button in preferences dialog or add encoding"
+                              " through encoding dialog.\n"));
+
+            cb_create_pref_dialog ();
+        }else{
+            break;
+        }
+    }
+
+    return TRUE;
+}
+
+static void
+common_convert (ConvType type)
+{
+    GtkTreeModel        *model = NULL;
+    GtkTreeSelection    *selection = NULL;
+    GtkWidget           *treeview = NULL;
+    GtkWidget           *notebook = NULL;
+    GList               *selected_rows = NULL;
+    GList               *tmp = NULL;
+    GList               *files = NULL;
+    gint32              old_serial, new_serial;
+    gboolean            need_hash = FALSE;
+    GtkWidget           *widget = NULL;
+    gchar               *widget_name = NULL;
+
+    widget = gtk_window_get_focus (GTK_WINDOW (view->mainwin));
+    if (widget != NULL)
+        widget_name = (gchar *)gtk_widget_get_name (widget);
+
+    if (widget_name != NULL &&
+            strcmp (widget_name, "treeview_search") == 0) {
+        /* convert search result */
+        if (view->basedir == NULL)
+            return;
+
+        view->focus_treeview = treeview = widget;
+    }else{
+        /* convert files in left pane */
+        if (NULL == view->rootdir)  
+            return;
+
+        treeview = g_object_get_data (G_OBJECT (view->mainwin), 
+                                      "treeview_file");
+        view->focus_treeview = treeview;
+    }
+
+
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+    if (selection == NULL) {
+        fsexam_statusbar_update (_("No Selection"));
+        goto free;
+    }
+
+    model = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+    selected_rows = gtk_tree_selection_get_selected_rows (selection, &model);
+    if (selected_rows == NULL) {
+        fsexam_statusbar_update (_("No files need to handle"));
+        goto free;
+    }
+
+    if (!view->setting->pref->dry_run 
+            && ((type == ConvName) || (type == RestoreConvName)))
+        need_hash = TRUE;   /* use path hash to update GUI */
+
+    for (tmp = selected_rows; tmp; tmp = g_list_next (tmp) ) {
+        GtkTreeIter  iter;
+        GtkTreePath  *treepath = NULL;
+        
+        treepath = (GtkTreePath *) tmp->data;
+        if (gtk_tree_model_get_iter (model, &iter, treepath)){
+            gchar *filename = NULL;
+
+            filename = fsexam_filename_get_fullname (model, &iter);
+            files = g_list_prepend (files, filename);
+        
+            if (need_hash) {
+                g_hash_table_insert (view->treepath_hash, 
+                           g_strdup (filename), 
+                           gtk_tree_path_to_string (treepath));
+            }
+        }
+    }
+
+    if (fsexam_debug () & FSEXAM_DBG_HASH)
+        g_hash_table_foreach (view->treepath_hash, print_hash, NULL);
+
+    /* show conversion log notebook page or dryrun result notebook page */
+    notebook = g_object_get_data (G_OBJECT (view->mainwin), "notebook_report");
+    if (view->setting->pref->dry_run)
+        gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 1);
+    else
+        gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook), 0);
+        
+
+    old_serial = fsexam_history_get_serial (view->setting->hist_info);
+
+    /* call underneath conversion func */
+    if (type == ConvName) {
+        fsexam_convert_filename_batch (view->setting, files);
+    }else if (type == ConvContent) {
+        fsexam_convert_content_batch (view->setting, files);
+    }else if ((type == RestoreConvName) || (type == RestoreConvContent)) {
+        fsexam_restore (view->setting, files, type);
+    }
+
+    new_serial = fsexam_history_get_serial (view->setting->hist_info);
+    if (new_serial != old_serial) {
+        fsexam_undo_insert (new_serial);    /* insert only when has history */
+    }
+    
+    if (need_hash) {
+        // g_hash_table_remove_all (view->treepath_hash); //need glib-2.12
+        fsexam_hash_remove_all (view->treepath_hash);
+        // view->treepath_hash = NULL;  //still need this for late conversion
+    }
+
+free:
+    g_list_foreach (selected_rows, free_selection, NULL);
+    g_list_free (selected_rows);
+    fsexam_list_free (files);
+    view->focus_treeview = NULL;
+
+    return;
+}
+
+static void 
+print_hash (gpointer key, gpointer value, gpointer data)
+{
+    printf ("value = %s, key = %s\n", (gchar *)value, (gchar *)key);
+
+    return;
+}
+
+static void 
+free_selection (gpointer row, gpointer data)
+{
+    gtk_tree_path_free ((GtkTreePath *) row);
+
+    return;
+}
+
+static void
+fsexam_undo_insert (gint32 serial)
+{
+    view->undo_list = g_slist_prepend (view->undo_list, (gpointer)serial);
+
+    gtk_widget_set_sensitive (
+            g_object_get_data (G_OBJECT (view->mainwin), "menu_undo"),
+            TRUE);
+    gtk_widget_set_sensitive (
+            g_object_get_data (G_OBJECT (view->mainwin), "toolbutton_undo"),
+            TRUE);
+
+}
+
+/* caller need ensure view->undo_list != NULL */
+static gint32
+fsexam_undo_remove ()
+{
+    gint32  serial = (gint32)view->undo_list->data;   /* First In Last Out */
+
+    view->undo_list = g_slist_remove (view->undo_list, (gpointer) serial);
+
+    if (view->undo_list == NULL) {
+        gtk_widget_set_sensitive (
+                  g_object_get_data (G_OBJECT (view->mainwin), "menu_undo"),
+                  FALSE);
+        gtk_widget_set_sensitive (
+                  g_object_get_data (G_OBJECT (view->mainwin), "toolbutton_undo"),
+                  FALSE);
+    }
+
+    return serial;
+}
+
+static void
+common_dryrun (ConvType type)
+{
+    FSEXAM_setting   *setting = view->setting;
+    gboolean         old_convtype;
+
+    old_convtype = setting->pref->conv_content;
+    setting->pref->dry_run = TRUE;
+
+    fsexam_dryrun_buffer_clear_buffer(
+            FSEXAM_DRYRUN_BUFFER (setting->dryrun_info));
+    fsexam_dryrun_write_convtype (setting->dryrun_info, type);
+    setting->pref->conv_content = (type == ConvName) ? FALSE : TRUE;
+    
+    cb_convert ();
+
+    setting->pref->conv_content = old_convtype;
+    setting->pref->dry_run = FALSE;
+
+    return;
+}
+
+/* --------------- Public functions ------------------------ */
+
+void
+fsexam_undo_removeall ()
+{
+  g_slist_free (view->undo_list);
+  view->undo_list = NULL;
+
+  gtk_widget_set_sensitive (
+                g_object_get_data (G_OBJECT (view->mainwin), "menu_undo"),
+                FALSE);
+  gtk_widget_set_sensitive (
+                g_object_get_data (G_OBJECT (view->mainwin), "toolbutton_undo"),
+                FALSE);
+}
+
+/*
+ *  Restore won't remove the history info in hist_file.
+ *  But does undo remove it? The answer is yes, because it
+ *  is the semantic of UNDO
+ *
+ *  Actually hist_info will store the lastest op into 
+ *  hist_info->hist_array[info->current]. So we won't use
+ *  serial at all here.
+ */
+void
+cb_undo ()
+{
+    ConvType    type;
+    GList       *file_list = NULL;
+    GtkWidget   *widget = NULL;
+    gchar       *widget_name = NULL;
+
+    if (view->undo_list == NULL)   /* In fact 'undo' menu is disabled now */
+        return;
+
+    (void) fsexam_undo_remove ();   
+
+    /* get the undo files from history's last record */
+    file_list = fsexam_history_get_last_list (
+                        view->setting->hist_info,
+                        &type);
+
+    if (file_list == NULL) {
+        fsexam_statusbar_update (_("Nothing need to undo"));
+        return;
+    }
+
+    widget = gtk_window_get_focus (GTK_WINDOW (view->mainwin));
+    if (widget != NULL)
+        widget_name = (gchar *)gtk_widget_get_name (widget);
+
+    if (widget_name != NULL &&
+            strcmp (widget_name, "treeview_search") != 0) {
+        widget = g_object_get_data (G_OBJECT (view->mainwin), 
+                                      "treeview_file");
+    }
+
+    view->focus_treeview = widget;
+    view->setting->flags |= FSEXAM_SETTING_FLAGS_UNDO;
+
+    if ((type == ConvName) || (type == ConvNameSpecial)) {
+        fsexam_restore (view->setting, file_list, RestoreConvName);
+    }else if ((type == ConvContent) || (type == ConvContentSpecial)) {
+        fsexam_restore (view->setting, file_list, RestoreConvContent);
+    }
+
+    view->setting->flags &= ~FSEXAM_SETTING_FLAGS_UNDO;
+
+    /* remove latest history infor after undo */
+    fsexam_history_remove_last (view->setting->hist_info);
+    fsexam_list_free (file_list);
+
+    return; 
+}
+
+void
+cb_dryrun ()
+{
+    common_dryrun (view->setting->pref->conv_content ? ConvContent : ConvName);
+
+    if (view->setting->ignore_num == view->setting->total_num) {
+        fsexam_dryrun_write_msg (view->setting->dryrun_info, 
+                _("No results. Please see report pane for more information.\n"));
+    }
+
+    gtk_widget_set_sensitive (
+            g_object_get_data (G_OBJECT (view->mainwin), "menu_scenario"), 
+            TRUE);
+    gtk_widget_set_sensitive (
+            g_object_get_data (G_OBJECT (view->mainwin), "toolbutton_scenario"), 
+            TRUE);
+
+    return;
+}
+
+
+void 
+cb_preview_content ()
+{
+    fsexam_content_peek (0, 0);
+
+    return;
+}
+
+void
+cb_force_convert ()
+{
+    view->setting->pref->force = TRUE;
+    cb_convert ();
+    view->setting->pref->force = FALSE;
+
+    return; 
+}
+
+void
+cb_scenario ()
+{
+    gint32      old_serial, new_serial;
+    GtkWidget   *widget = NULL;
+    gchar       *widget_name = NULL;
+
+    widget = gtk_window_get_focus (GTK_WINDOW (view->mainwin));
+    if (widget != NULL)
+        widget_name = (gchar *)gtk_widget_get_name (widget);
+
+    if (widget_name != NULL && 
+            strcmp (widget_name, "treeview_search") != 0) {
+        widget = g_object_get_data (G_OBJECT (view->mainwin), 
+                                      "treeview_file");
+    }
+
+    view->focus_treeview = widget;
+
+    /* show conversion log notebook page or dryrun result notebook page */
+    gtk_notebook_set_current_page (
+            GTK_NOTEBOOK (g_object_get_data (G_OBJECT (view->mainwin), "notebook_report")),
+            0);
+
+    old_serial = fsexam_history_get_serial (view->setting->hist_info);
+
+    /* reset the dryrun result output position */
+    fsexam_dryrun_buffer_set_current_line (
+            (FsexamDryrunBuffer *)view->setting->dryrun_info,
+            0);
+
+    fsexam_convert_scenario (view->setting);
+
+    new_serial = fsexam_history_get_serial (view->setting->hist_info);
+    if (new_serial != old_serial) {
+        fsexam_undo_insert (new_serial);    /* insert only when has history */
+    }
+
+    view->focus_treeview = NULL;
+    gtk_widget_set_sensitive (
+            g_object_get_data (G_OBJECT (view->mainwin), "menu_scenario"), 
+            FALSE);
+    gtk_widget_set_sensitive (
+            g_object_get_data (G_OBJECT (view->mainwin), "toolbutton_scenario"), 
+            FALSE);
+
+    return;
+}
+
+void
+cb_restore ()
+{
+    common_convert (view->setting->pref->conv_content ? RestoreConvContent 
+                                                      : RestoreConvName);
+
+    return;
+}
+
+void
+cb_convert ()
+{
+    if (! cb_pre_handling ())
+        return;
+
+    common_convert (view->setting->pref->conv_content ? ConvContent : ConvName);
+
+    return;
+}
+
+/*
+ * callback for "Content mode" and "Name mode" menu
+ */
+void
+cb_mode ()
+{
+    GtkWidget *w = NULL;
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), "menu_content_mode");
+    view->setting->pref->conv_content = gtk_check_menu_item_get_active (
+            GTK_CHECK_MENU_ITEM (w));
+
+    return;
+}
+
+/*
+ * callback for "Name mode" popup toggle menu
+ */
+void
+cb_name_mode_popup (GtkCheckMenuItem *menuitem, gpointer data)
+{
+    gboolean  content_mode;
+    GtkWidget *w = NULL;
+
+    content_mode = ! gtk_check_menu_item_get_active (menuitem);
+    view->setting->pref->conv_content = content_mode;
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), 
+            content_mode ? "menu_content_mode" : "menu_name_mode");
+    gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (w), TRUE);
+
+    return;
+}
+
+/*
+ * callback for "Content mode" popup toggle menu
+ */
+void
+cb_content_mode_popup (GtkCheckMenuItem *menuitem, gpointer data)
+{
+    gboolean  content_mode;
+    GtkWidget *w = NULL;
+
+    content_mode = gtk_check_menu_item_get_active (menuitem);
+    view->setting->pref->conv_content = content_mode;
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), 
+            content_mode ? "menu_content_mode" : "menu_name_mode");
+    gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (w), TRUE);
+
+    return;
+}
+
+/*
+ * callback for the GtkEntry 'entry_folder'
+ */
+void
+cb_change_folder ()
+{
+    GtkWidget   *widget = NULL;
+   
+    widget = g_object_get_data (G_OBJECT (view->mainwin), "entry_folder");
+    fsexam_change_dir (gtk_entry_get_text (GTK_ENTRY (widget)));
+    
+    return;
+}
+
+/* 
+ * callback for toggle signal of "show dryrun result" menu
+ * show responding page of GtkNoteBook
+ */
+void
+cb_show_dryrun_result (GtkCheckMenuItem *item, gpointer data)
+{
+    GtkWidget *w = NULL;
+    gint      page_num;
+
+    if (! gtk_check_menu_item_get_active (item))
+        return;
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), "notebook_report");
+    page_num = gtk_notebook_get_current_page (GTK_NOTEBOOK (w));
+
+    if (page_num == 1)
+        return;
+
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (w), 1);
+
+    return;
+}
+
+/*
+ * callback for toggle singal of "show report pane" menu
+ */
+void
+cb_show_report_pane (GtkCheckMenuItem *item, gpointer data)
+{
+    GtkWidget *w;
+    gint      page_num;
+
+    if (! gtk_check_menu_item_get_active (item))
+        return;
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), "notebook_report");
+    page_num = gtk_notebook_get_current_page (GTK_NOTEBOOK (w));
+
+    if (page_num == 0)
+        return;
+
+    gtk_notebook_set_current_page (GTK_NOTEBOOK (w), 0);
+
+    return;
+}
+
+/*
+ * Set Radio Menu Item for 'Show report pane' or 'Show Dryrun result page'
+ */
+void
+cb_change_current_page (GtkNotebook *notebook, gint arg1, gpointer user_data)
+{
+    GtkWidget *w;
+    gint      page_num;
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), "notebook_report");
+    page_num = gtk_notebook_get_current_page (GTK_NOTEBOOK (w));
+
+    w = g_object_get_data (G_OBJECT (view->mainwin),
+            page_num == 0 ? "menu_report" : "menu_dryrun_result");
+    gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (w), TRUE);
+
+    return; 
+}
+
+/*
+ * Callback for searching dialog  response events
+ */
+static void
+search_dialog_response_handler (GtkWidget *dialog, gint id, gpointer data)
+{
+    if (id == GTK_RESPONSE_OK) {            /* find button */
+        GtkWidget   *w = NULL;
+        gchar       *param = NULL;
+        gchar       *tmp = NULL;
+        gchar       *folder = NULL;
+        const gchar *user = NULL;
+        const gchar *group = NULL;
+        const gchar *name = NULL;
+        gint        data_date;
+        gint        status_date;
+
+        w = g_object_get_data (G_OBJECT (dialog), "filebtn_search_folder");
+        folder = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (w));
+
+        w = g_object_get_data (G_OBJECT (dialog), "entry_name");
+        name = gtk_entry_get_text (GTK_ENTRY (w));
+        
+        w = g_object_get_data (G_OBJECT (dialog), "entry_user");
+        user = gtk_entry_get_text (GTK_ENTRY (w));
+
+        w = g_object_get_data (G_OBJECT (dialog), "entry_group");
+        group = gtk_entry_get_text (GTK_ENTRY (w));
+
+        w = g_object_get_data (G_OBJECT (dialog), "spinbutton_data");
+        data_date = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (w));
+        
+        w = g_object_get_data (G_OBJECT (dialog), "spinbutton_status");
+        status_date = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (w));
+
+        param = g_strdup (folder);
+        
+        if ((name != NULL) && (*name != '\0')) {
+            tmp = g_strdup_printf ("%s -name %s", param, name);
+            g_free (param);
+            param = tmp;
+        }
+
+        if ((user != NULL) && (*user != '\0')) {
+            tmp = g_strdup_printf ("%s -user %s", param, user);
+            g_free (param);
+            param = tmp;
+        }
+
+        if ((group != NULL) && (*group != '\0')) {
+            tmp = g_strdup_printf ("%s -group %s", param, group);
+            g_free (param);
+            param = tmp;
+        }
+
+        if (data_date != 0) {
+            tmp = g_strdup_printf ("%s -mtime %d", param, data_date);
+            g_free (param);
+            param = tmp;
+        }
+
+        if (status_date != 0) {
+            tmp = g_strdup_printf ("%s -ctime %d", param, status_date);
+            g_free (param);
+            param = tmp;
+        }
+
+        gtk_widget_destroy (GTK_WIDGET (dialog));
+       
+        filter_gui_run (folder, param);
+
+        g_free (folder);
+        g_free (param);
+
+        return;
+    }
+
+    gtk_widget_destroy (GTK_WIDGET (dialog));
+
+    return;
+}
+
+/*
+ * callback for menu "Search for files..."
+ */
+void
+cb_filter ()
+{
+    GladeXML    *xml = NULL;
+    GtkWidget   *dialog = NULL;
+    GtkWidget   *w = NULL;
+
+    xml = fsexam_gui_load_glade_file (FSEXAM_GLADE_FILE,
+            "dialog_search", GTK_WINDOW (view->mainwin));
+    
+    if (xml == NULL)
+        return;
+
+    dialog = glade_xml_get_widget (xml, "dialog_search");
+    g_signal_connect (G_OBJECT (dialog), "response",
+            G_CALLBACK (search_dialog_response_handler), NULL);
+    
+    w = glade_xml_get_widget (xml, "filebtn_search_folder");
+    g_object_set_data (G_OBJECT (dialog), "filebtn_search_folder", w);
+    
+    w = glade_xml_get_widget (xml, "entry_name");
+    g_object_set_data (G_OBJECT (dialog), "entry_name", w);
+
+    w = glade_xml_get_widget (xml, "entry_group");
+    g_object_set_data (G_OBJECT (dialog), "entry_group", w);
+
+    w = glade_xml_get_widget (xml, "entry_user");
+    g_object_set_data (G_OBJECT (dialog), "entry_user", w);
+
+    w = glade_xml_get_widget (xml, "spinbutton_data");
+    g_object_set_data (G_OBJECT (dialog), "spinbutton_data", w);
+    
+    w = glade_xml_get_widget (xml, "spinbutton_status");
+    g_object_set_data (G_OBJECT (dialog), "spinbutton_status", w);
+
+    w = glade_xml_get_widget (xml, "button_find");
+    g_object_set_data (G_OBJECT (dialog), "button_find", w);
+    
+    w = glade_xml_get_widget (xml, "button_stop");
+    g_object_set_data (G_OBJECT (dialog), "button_stop", w);
+
+    g_object_unref (xml);
+
+    gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
+    gtk_dialog_run (GTK_DIALOG (dialog));
+
+    return;
+}
+
+/*
+ * callback for menu "stop searching"
+ */
+void
+cb_stop_search ()
+{
+    GtkWidget *w = NULL;
+
+    if (view->pid < 0)
+        return;
+
+    fsexam_statusbar_update (_("Stop the Searching..."));
+
+    if (view->pid > 0) {
+        kill (view->pid, SIGKILL);
+        wait (NULL);
+    }
+    view->pid = -1;
+    
+    stop_search = TRUE;
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), "menu_stop_search");
+    gtk_widget_hide (w);
+    w = g_object_get_data (G_OBJECT (view->mainwin), "menu_search");
+    gtk_widget_show (w);
+
+    return;
+}
+
+/*
+ *  Hide the search result pane after click the Close icon 'x'
+ */  
+void
+cb_hide_search_result ()
+{
+    fsexam_search_treeview_hide ();
+
+    return;
+}
+
+/*
+ * callback for menu "search result": show or hide
+ */
+void
+cb_menu_search_result () 
+{
+    GtkWidget *w = NULL;
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), "menu_search_result");
+    
+    if (gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (w))) {
+        fsexam_search_treeview_show ();
+    }else{
+        fsexam_search_treeview_hide ();
+    }
+
+    return;
+}
+
+/*
+ * callback for "clear search result" menu
+ */
+void
+cb_menu_clear_search ()
+{
+    GtkWidget *w = NULL;
+
+    fsexam_search_treeview_append_file (NULL, TRUE);
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), "menu_clear_search");
+    gtk_widget_set_sensitive (w, FALSE);
+
+    w = g_object_get_data (G_OBJECT (view->mainwin), "label_result");
+    gtk_label_set_text (GTK_LABEL (w), _("Search Result has been cleared."));
+
+    g_free (view->basedir);
+    view->basedir = NULL;
+
+    return;
+}
+
+/*
+ * "changed" event handler for dryrun text view
+ */
+void
+cb_text_buffer_changed (GtkTextBuffer *buffer, gpointer user_data)
+{
+    GtkWidget   *textview = NULL;
+    GtkTextMark *mark = NULL;
+
+    textview = g_object_get_data (G_OBJECT (view->mainwin), "textview_dryrun");
+    mark = gtk_text_buffer_get_mark (buffer, "end_mark");
+    gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (textview), 
+            mark,
+            0.0,
+            TRUE,
+            0.0,
+            1.0);
+
+    return;
+}
+
+/*
+ * callback for toolbar style change 
+ */
+void
+cb_toolbar_style (GConfClient *client, 
+		guint cnxn_id,
+		GConfEntry *entry,
+		gpointer user_data)
+{
+	GtkWidget 	*toolbar = NULL;
+	const gchar *style;
+
+	if (entry->value == NULL)
+		return;
+	style = gconf_value_get_string (entry->value);
+	toolbar = g_object_get_data (G_OBJECT (view->mainwin), "toolbar");
+
+	if (strcmp (style, "both") == 0) {
+		gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH);
+	}else if (strcmp (style, "both-horiz") == 0) {
+		gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_BOTH_HORIZ);
+	}else if (strcmp (style, "icons") == 0) {
+		gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS);
+	}else if (strcmp (style, "text") == 0) {
+		gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_TEXT);
+	}
+
+	return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/callbacks.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,39 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _CALLBACK_H
+#define _CALLBACK_H
+
+void    fsexam_undo_removeall (void);
+void    cb_undo (void);
+void    cb_restore (void);
+void    cb_convert (void);
+void    cb_dryrun (void);
+void    cb_force_convert (void);
+void    cb_scenario (void);
+void    cb_preview_content (void);
+
+#endif  //_CALLBACK_H
--- a/src/cmd/fsexam/src/encode.h	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#ifndef _ENCODE_H_
-#define _ENCODE_H_
-
-typedef enum { FAIL, LOW, HIGH, ORIGINAL } Score;
-typedef enum { ConvName,
-	       ConvContent = 0x10,
-	       ConvContentWithCRLF,
-	       ConvContentCRLFOnly,
-	       ConvNameReverse = 0x100,
-	       ConvContentReverse = 0x1000,
-	       ConvContentWithCRLFReverse,
-	       ConvContentCRLFOnlyReverse
-             } ConvType;
-
-#define GetConvTypeReverse(c) ((c == ConvName) ? ConvNameReverse : \
-                               (c - ConvContent) + ConvContentReverse)
-
-typedef struct _Encoding Encoding;
-struct _Encoding {
-  char   codename[20];
-  GIConv icd;
-  Score  score;
-  ConvType convtype;
-  union {
-    char converted_text[256];
-    char *contents;
-  } u;
-};
-
-typedef gboolean (*EncodeFunc) (Encoding *, gint, va_list);
-
-GList *init_encode (GSList *);
-Score decode_analyzer (GList *, ConvType, gchar *, size_t);
-void  iterate_encode_with_func (GList *, EncodeFunc, ...);
-gboolean get_encode_elements (Encoding *, gint, va_list);
-gboolean  translate_encode_index (Encoding *, gint, va_list);
-gint  get_first_encode_index (GList *);
-void destroy_encode (GList *);
-void cleanup_encode (GList *);
-
-#endif
--- a/src/cmd/fsexam/src/encoding.c	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,247 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#include <glib.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <string.h>
-#include <dirent.h>
-#include "encode.h"
-
-GList *
-init_encode (GSList *list)
-{
-  int      n = 0;
-  GList    *encode_list = NULL;
-
-  while (list)
-    {
-      GIConv icd;
-      Encoding *encode;
-      GSList *tmp_list = list;
-
-      list = g_slist_next (list);
-
-      if ((icd = g_iconv_open ("UTF-8", (char *)tmp_list->data)) == (GIConv)-1)
-	continue;
-
-      encode = g_new0 (Encoding, 1);
-      encode->icd = icd;
-      strcpy (encode->codename, (char *)tmp_list->data);
-      encode->score = FAIL;
-      encode->convtype = ConvName;
-
-      encode_list = g_list_insert (encode_list, encode, n);
-
-      ++n;
-    }
-
-  return encode_list;
-}
-
-void
-destroy_encode (GList *encode_list)
-{
-  while (encode_list)
-    {
-      Encoding *encode = (Encoding *)encode_list->data;
-
-      if (encode->convtype == ConvContent && encode->u.contents)
-	g_free (encode->u.contents);
-	
-      g_iconv_close (encode->icd);
-      g_free (encode);
-
-      encode_list = g_list_next (encode_list);
-    }
-
-  g_list_free (encode_list);
-}
-
-/*
- * Only work for ConvName and ConvContent
- */
-Score
-decode_analyzer (GList *encode_list,
-		 ConvType convtype,
-		 gchar *text, 
-		 size_t textlen)
-{
-  gboolean success = FAIL;
-
-  if (g_utf8_validate (text, textlen, NULL)) return ORIGINAL;
-
-  while (encode_list)
-    {
-      Encoding *encode = (Encoding *)encode_list->data;
-      gchar    *inbuf = text;
-      size_t   inbytes_left = textlen;
-      gchar    *outbuf;
-      size_t   outbytes_left;
-      size_t   num_uconv = 0;
-
-      encode->convtype = convtype;
-      if (convtype == ConvName)
-	{
-	  outbuf = encode->u.converted_text;
-	  outbytes_left = 256;
-	}
-      else /* ConvContent */
-	{
-	  outbytes_left = 3 * inbytes_left;
-	  outbuf = encode->u.contents = g_new0 (char, outbytes_left);
-	}
-
-      memset (outbuf, 0, outbytes_left);
-      num_uconv = g_iconv (encode->icd, &inbuf, &inbytes_left,
-			   &outbuf, &outbytes_left);
-      switch (num_uconv)
-	{
-	case 0:
-	  encode->score = HIGH;
-	  success = TRUE;
-	  break;
-	case (size_t)-1:
-	  encode->score = FAIL;
-	  break;
-	default:
-	  encode->score = LOW;
-	  success = TRUE;
-	  break;
-	}
-
-      encode_list = g_list_next (encode_list);
-    }
-
-  if (success) return HIGH;
-  else return FAIL;
-}
-
-gboolean
-get_encode_elements (Encoding *encode,
-		     gint index,
-		     va_list args)
-{
-  gint *n_elements;
-
-  n_elements = va_arg (args, int *);
-  (*n_elements)++;
-
-  return TRUE;
-}
-
-void
-iterate_encode_with_func (GList *encode_list,
-			  EncodeFunc func, ...)
-{
-  va_list args;
-
-  va_start (args, func);
-
-  int encode_idx = -1;
-  while (encode_list)
-    {
-      Encoding *encode = (Encoding *)encode_list->data;
-
-      encode_list = g_list_next (encode_list);
-      ++encode_idx;
-
-      if (encode->score == FAIL) continue;
-
-      if (!(*func)(encode, encode_idx, args))
-	break;
-    }
-
-  va_end (args);
-}
-
-gboolean
-translate_encode_index (Encoding *encode, 
-			gint index,
-			va_list args)
-{
-  gint *old_index = va_arg (args, int *);
-  gint *new_index = va_arg (args, int *);
-
-  if (*old_index)
-    {
-      --*old_index;
-      return TRUE;
-    }
-  else
-    {
-      *new_index = index;
-      return FALSE;
-    }
-}
-
-int
-get_first_encode_index (GList *encode_list)
-{
-  int encode_idx = -1, best_idx = -1;
-
-  while (encode_list)
-    {
-      Encoding *encode = (Encoding *)encode_list->data;
-
-      encode_list = g_list_next (encode_list);
-      ++encode_idx;
-
-      if (encode->score == HIGH) 
-	{
-	  // found it, the first encoding with score as HIGH
-	  best_idx = encode_idx;
-	  break;
-	}
-      else if (encode->score == LOW)
-	{
-	  // record the first encoding with score as LOW
-	  if (best_idx == -1) 
-	    best_idx = encode_idx;
-	}
-    }
-
-  return best_idx;
-}
-
-void
-cleanup_encode (GList *encode_list)
-{
-  while (encode_list)
-    {
-      Encoding *encode = (Encoding *)encode_list->data;
-
-      if (encode->convtype == ConvContent)
-	{
-	  encode->convtype = ConvName;
-	  if (encode->u.contents)
-	    g_free (encode->u.contents);
-	}
-
-      encode_list = g_list_next (encode_list);
-    }
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/encoding.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,102 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _ENCODE_H_
+#define _ENCODE_H_
+
+typedef enum { 
+        FAIL, 
+        LOW, 
+        HIGH, 
+        ORIGINAL 
+} Score;
+
+typedef enum { 
+        ConvName,
+        ConvNameSpecial,
+
+        ConvContent = 0x10,
+        ConvContentSpecial,
+        ConvContentWithCRLF,
+        ConvContentCRLFOnly,
+
+        RestoreConvName = 0x100,
+        RestoreConvNameSpecial,
+        RestoreConvContent = 0x1000,
+        RestoreConvContentWithCRLF,
+        RestoreConvContentCRLFOnly,
+
+        DryRunName,
+        DryRunContent,
+
+	ConvInvalid,
+} ConvType;
+
+#define VALID_CONVTYPE(v) (((v) == ConvName) || ((v) & ConvContent) \
+                    || ((v) & ConvNameSpecial) || ((v) && ConvContentSpecial))
+
+#define MATCH_CONVTYPE(v, w) ((v) == ConvName ? (w) == ConvName : \
+                  ((w) == ConvContent || (w) == ConvContentWithCRLF \
+                   || (w) == ConvContentCRLFOnly))
+
+#define GetConvTypeReverse(c) ((c == ConvName) ? ConvNameReverse : \
+                               (c - ConvContent) + ConvContentReverse)
+
+#define TEXT_LEN 256
+
+typedef struct _Encoding Encoding;
+struct _Encoding {
+    short   encodingID;
+    GIConv  icd;
+    Score   score;
+    ConvType convtype;
+    gboolean autodetected;
+    union {
+        gchar converted_text[TEXT_LEN];
+        gchar *contents;    /* don't use fixed array due to no way to trunc */
+    } u;
+};
+
+typedef gboolean (*EncodeFunc) (Encoding *, gint, va_list);
+
+GList   *fsexam_encoding_init (GSList *);
+
+Score   fsexam_encoding_decode (GList *, ConvType, gchar *, size_t, gboolean);
+void    fsexam_encoding_iterate_with_func (GList *, EncodeFunc, ...);
+
+gint    fsexam_encoding_get_length (GList *encoding_list);
+
+gboolean fsexam_encoding_get_elements (Encoding *, gint, va_list);
+gboolean fsexam_encoding_translate_index (Encoding *, gint, va_list);
+gint     fsexam_encoding_get_first_index (GList *);
+
+void    fsexam_encoding_destroy (GList *);
+void    fsexam_encoding_cleanup_content (GList *);
+GList * fsexam_encoding_remove_auto (GList *);
+GList * fsexam_encoding_add_auto (GList *, GList *);
+void    print_encoding (gpointer en, gpointer data);
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/file-filter.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,293 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <sys/types.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <strings.h>
+#include <string.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include "fsexam.h"
+#include "fsexam-error.h"
+#include "fsexam-helper.h"
+#include "file-filter.h"
+#include "fsexam-header.h"
+#include "fsexam-ui.h"
+
+#define CMD_NAME                "/usr/bin/find"
+#define FSEXAM_REFRESH_TIMEOUT  50000
+
+static gchar **
+filter_compose_argv (const gchar *params)
+{
+    gchar *full_cmd = NULL;
+    gchar **argv = NULL;
+
+    if (params == NULL) {
+        return NULL;
+    }
+
+    full_cmd = g_strdup_printf ("%s %s", CMD_NAME, params);
+    argv = g_strsplit (full_cmd, " ", -1);
+    g_free (full_cmd);
+
+    return argv;
+}
+
+/*
+ * Run find(1) with given params, and return the result
+ */
+GList *
+filter_cmd_run (const gchar *params)
+{
+    FILE    *fp = NULL;
+    gchar   **argv = NULL;
+    gchar   *buf = NULL;
+    GList   *list = NULL;
+    GError  *error = NULL;
+    gint    child_stdout;
+
+    argv = filter_compose_argv (params);
+    if (argv == NULL) {
+        g_print (_("Parameters of find(1) is empty.\n"));
+        return NULL;
+    }
+
+    /* create pipe */
+    if (!g_spawn_async_with_pipes (NULL, argv,
+                NULL,       /* envp */
+                0,      /* GSpawnFlags */
+                NULL, NULL,
+                NULL,   /* pid */
+                NULL,
+                &child_stdout,
+                NULL, 
+                &error)) {
+        g_print (error->message);
+        g_error_free (error);
+        g_strfreev (argv);
+
+        return NULL;
+    }
+
+    /* create FILE pointer from subprocess's stdout */
+    if ((fp = fdopen (child_stdout, "r")) == NULL) {
+        g_print (_("Can't open pipe file descriptor.\n"));
+        g_strfreev (argv);
+        return NULL;
+    }
+        
+    buf = (gchar *) g_malloc (PATH_MAX);
+    g_print (_("Searching..."));
+    g_print ("\n");
+
+    while (fgets (buf, PATH_MAX, fp) != NULL) {
+        gint  len = strlen (buf);
+
+        if (buf[len - 1] == '\n')
+            buf[len - 1] = '\0';
+
+        list = g_list_prepend (list, g_strdup (buf));
+    }
+
+    g_print (_("Search finished"));
+    g_print ("\n");
+
+    g_free (buf);
+    g_strfreev (argv);
+    fclose (fp);
+
+    return list;
+}
+
+/*
+ * Run file(1) and append searched files into search result treeview 
+ */
+void
+filter_gui_run (const gchar *folder, const gchar *params)
+{
+    FILE    *fp = NULL;
+    gchar   **argv = NULL;
+    GError  *error = NULL;
+    gint    child_stdout;
+    gint    file_count = 0;
+    gchar   *buf = NULL;
+    gchar   *msg = NULL;
+    GTimer  *timer = NULL;
+    gulong  duration;
+    GtkWidget *menu_stop = NULL;
+    GtkWidget *menu_search = NULL;
+    GtkWidget *menu_clear = NULL;
+    GtkWidget *label_result = NULL;
+
+    argv = filter_compose_argv (params);
+    if (argv == NULL) {
+        g_print (_("Parameters of find(1) is empty.\n"));
+        return;
+    }
+
+    /* create pipe */
+    if (!g_spawn_async_with_pipes (NULL, argv, 
+                NULL,       /* envp */
+                0,          /* GSpawnFlags */
+                NULL, NULL, 
+                &view->pid, 
+                NULL,
+                &child_stdout,
+                NULL,
+                &error)) {
+        GtkWidget *dialog = NULL;
+
+        dialog = gtk_message_dialog_new (GTK_WINDOW (view->mainwin),
+                GTK_DIALOG_DESTROY_WITH_PARENT,
+                GTK_MESSAGE_ERROR,
+                GTK_BUTTONS_OK,
+                _("Error occurs during executing the search command."));
+        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+                error->message);
+
+        gtk_dialog_run (GTK_DIALOG (dialog));
+        
+        gtk_widget_destroy (dialog);
+        g_error_free (error);
+        g_strfreev (argv);
+        
+        return;
+    }
+
+    /* create FILE pointer from subprocess's stdout */
+    if ((fp = fdopen (child_stdout, "r")) == NULL) {
+        GtkWidget *dialog = NULL;
+
+        dialog = gtk_message_dialog_new (GTK_WINDOW (view->mainwin),
+                GTK_DIALOG_DESTROY_WITH_PARENT,
+                GTK_MESSAGE_ERROR,
+                GTK_BUTTONS_OK,
+                _("Error occurs when open fd."));
+        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+                g_strerror (errno));
+
+        gtk_dialog_run (GTK_DIALOG (dialog));
+        
+        gtk_widget_destroy (dialog);
+        g_strfreev (argv);
+
+        return;
+    }
+
+    /*
+     * Prepare for searching 
+     */
+    menu_clear = g_object_get_data (G_OBJECT (view->mainwin), 
+                                    "menu_clear_search");
+    menu_search = g_object_get_data (G_OBJECT (view->mainwin), "menu_search");
+    menu_stop = g_object_get_data (G_OBJECT (view->mainwin), 
+                                    "menu_stop_search");
+    gtk_widget_set_sensitive (menu_clear, FALSE);
+    gtk_widget_hide (menu_search);
+    gtk_widget_show (menu_stop);
+    
+    label_result = g_object_get_data (G_OBJECT (view->mainwin), "label_result");
+    fsexam_statusbar_update (_("Searching..."));
+
+    /* show result pane and clear previous result */
+    fsexam_search_treeview_append_file (NULL, TRUE);
+    g_free (view->basedir);
+
+    /* resolve possible symlink in folder path */
+    if (g_file_test (folder, G_FILE_TEST_IS_SYMLINK))
+        view->basedir = get_abs_path_for_symlink_target (folder);
+    else
+        view->basedir = get_abs_path (folder);
+
+    stop_search = FALSE;
+    buf = (gchar *) g_malloc (PATH_MAX);
+    memset (buf, 0, PATH_MAX);
+
+    timer = g_timer_new ();
+    g_timer_start (timer);
+
+    /* Read data from child's stdout async */
+    while (fgets (buf, PATH_MAX, fp) != NULL) {
+        gint  len = strlen (buf);
+
+        if (buf[len - 1] == '\n')
+            buf[len - 1] = '\0';
+
+        fsexam_search_treeview_append_file (buf, FALSE);
+        file_count ++;
+
+        g_timer_elapsed (timer, &duration);
+
+        if (duration > FSEXAM_REFRESH_TIMEOUT) {
+            msg = g_strdup_printf (_("%d files found"), file_count);
+            gtk_label_set_text (GTK_LABEL (label_result), msg);
+            g_free (msg);
+
+            while (gtk_events_pending ()) {
+                gtk_main_iteration ();
+            }
+
+            g_timer_reset (timer);
+        }
+
+        if (force_quit) /* user quit application */
+            break;
+    }
+
+    g_timer_destroy (timer);
+
+    if (!force_quit) {  /* Quit the whole app, mainwin has been destroyed */
+        g_spawn_close_pid (view->pid);
+        view->pid = -1;
+
+        msg = g_strdup_printf (_("%d files found"), file_count);
+        gtk_label_set_text (GTK_LABEL (label_result), msg);
+        g_free (msg);
+
+        if (file_count != 0)
+            gtk_widget_set_sensitive (menu_clear, TRUE);
+
+        gtk_widget_hide (menu_stop);
+        gtk_widget_show (menu_search);
+    
+        fsexam_statusbar_update (stop_search ? _("Search stopped") 
+                                             : _("Search finished"));
+    }
+
+    fclose (fp);
+    g_free (buf);
+    g_strfreev (argv);
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/file-filter.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,42 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _FILE_FILTER_H
+#define _FILE_FILTER_H
+
+/*
+ * file-filter.h
+ *  
+ *      Filter files under given directory according to user's criteria.
+ *      The current implementation use file(1) command to do this job.
+ */
+/*
+ * run cmd, return GList
+ */
+GList *filter_cmd_run (const gchar *params);
+void  filter_gui_run (const gchar *folder, const gchar *params);
+
+#endif //_FSEXAM_FILTER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/file-validate.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,208 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <fcntl.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <libgen.h>
+#include <strings.h>
+#include <string.h>
+
+#ifdef sun
+#include <sys/mnttab.h>
+#else
+#include <mntent.h>
+#endif
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include "fsexam-header.h"
+
+/*
+ * Determine whether 'filename' is one file under directory 'path'
+ * 
+ * Params:
+ *      filename: abs path of file (both path has no '.' or '..')
+ */
+static gboolean
+compare_path (const gchar *path, const gchar *filename)
+{
+    if ((path == NULL) || (filename == NULL))
+        return FALSE;
+
+    while ((*path == *filename) && (*path != '\0') && (*filename != '\0')) {
+        path++;
+        filename++;
+    }
+
+    if ((*path == '\0') && ((*filename == '\0') || (*filename == '/')))
+        return TRUE;
+    else 
+        return FALSE;
+}
+
+/*
+ * Given file is remote file (NFS) or not
+ */
+gboolean
+is_remote_file (GList *remote_paths, const gchar *filename)
+{
+    if (filename == NULL)
+        return TRUE;    //The return value has no meaning
+
+    while (remote_paths) {
+        const gchar *mountp = remote_paths->data;
+
+        if (compare_path (mountp, filename))
+            return TRUE;
+
+        remote_paths = g_list_next (remote_paths);
+    }
+
+    return FALSE;
+}
+
+/*
+ * Whether need handle this file or not
+ */
+gboolean
+file_validate_for_contentconv (const gchar *filename, FSEXAM_setting *setting)
+{
+    struct stat     buf;
+    gboolean        ret = FALSE;
+    gchar           *ptr = NULL;
+    gchar           *abs_path = NULL;
+
+    if ((NULL == filename) || (NULL == setting))
+        return FALSE;
+
+    if (lstat(filename, &buf) < 0){
+        fsexam_errno = ERR_CANNOT_OPEN;
+        goto done;
+    }
+
+    if (! S_ISREG(buf.st_mode)) { 
+        fsexam_errno = ERR_NOT_REG_FILE;
+        goto done;
+    }
+
+    if (buf.st_size == 0) {
+        fsexam_errno = ERR_EMPTY_FILE;
+        goto done;
+    }
+
+    abs_path = get_abs_path (filename); /* for is_remote_file () */
+    ptr = basename (abs_path);          /* return "/" if only contain '/' */
+    
+    if (!setting->pref->hidden){
+        if (('/' == *ptr) || ('.' == *ptr)){
+            fsexam_errno = ERR_IGNORE_HIDDEN_FILE;
+            goto done;
+        }
+    }
+    
+    if ((!setting->pref->remote)
+            && (is_remote_file (setting->remote_path, abs_path))){
+        fsexam_errno = ERR_IGNORE_REMOTE_FILE;
+        goto done;
+    }
+
+    if ((!setting->pref->force) 
+            && (file_isutf8 (filename, DEFAULT_DETECTING_FLAG))) {
+        fsexam_errno = ERR_CONTENT_UTF8_ALREADY;
+        goto done;
+    }
+
+    ret = TRUE;
+
+done:
+    g_free (abs_path);
+
+    return ret;
+}
+
+#ifdef sun
+#define MNTFILENAME     "/etc/mnttab"
+
+GList *
+get_remote_paths ()
+{
+    struct  mnttab mt;
+    FILE    *fp = NULL;
+    GList   *list = NULL;
+
+    fp = fopen (MNTFILENAME, "r");
+
+    if (fp == NULL) {
+        g_print (_("Can't open file %s.\n"), MNTFILENAME);
+        return NULL;
+    }
+
+    while (getmntent (fp, &mt) == 0) {
+        if ((strcmp (mt.mnt_fstype, "nfs") == 0)
+                || (strcmp (mt.mnt_fstype, "autofs") == 0)) {
+            list = g_list_prepend (list, g_strdup (mt.mnt_mountp));
+        }
+    }
+
+    return list;
+}
+
+#else
+
+#define MNTFILENAME     "/etc/mtab"
+
+GList *
+get_remote_paths ()
+{
+    struct  mntent *mt;
+    FILE    *fp = NULL;
+    GList   *list = NULL;
+
+    fp = setmntent (MNTFILENAME, "r");
+
+    if (fp == NULL) {
+        g_print (_("Can't open file %s.\n"), MNTFILENAME);
+        return NULL;
+    }
+
+    while ((mt = getmntent (fp)) == 0) {
+        if ((strcmp (mt->mnt_type, "nfs") == 0)
+                || (strcmp (mt->mnt_type, "autofs") == 0)) {
+            list = g_list_prepend (list, g_strdup (mt->mnt_dir));
+        }
+    }
+
+    return list;
+}
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/file-validate.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,101 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _FILE_VALIDATE_H
+#define _FILE_VALIDATE_H
+
+/*
+ * file-validate.h
+ *
+ * Given a filename, determine whether it pass some criteria.
+ *
+ * Options:
+ *      - '--follow': handle at preprocessing stage
+ *      - '--symlink-target': handle at tree constructing stage
+ * 
+ * For filename conversion:
+ *      - Filter only directory/reg/symbolic file out
+ *      - Hidden flags
+ *      - Forceful conversion
+ *      - follow: this will be handled in fsexam-preprocessing.c
+ *      - remote file
+ *      - no-check-symlink-target
+ *
+ * For file content conversion:
+ *      - Filter only dir/regular/symbolic file out
+ *      - Hidden flags
+ *      - Forceful conversion
+ *      - Is plain text
+ *      - Special file such as .tar, .zip
+ *      - follow: this will be handled in fsexam-preprocessing.c
+ *      - remote file
+ */
+
+/*============================================================================
+ *  Function Name:  file_validate_for_contentconv
+ *
+ *  Parameters:
+ *      gchar *filename: the filename we will validate
+ *      VALIDATE_flag *flag: struct contain flags used to validate file
+ *
+ *  Desc:
+ *      file_validate_for_contentconv() determine whether fsexam will handling 
+ *      its content or not.
+ *
+ *  Return value:
+ *      True if fsexam will handle this file.
+ *      Otherwise False.
+ *
+ *  Author:     Yandong Yao 2006/08/24
+ ===========================================================================*/
+gboolean file_validate_for_contentconv(
+                            const gchar *filename, 
+                            FSEXAM_setting *setting);
+
+/*============================================================================
+ *  Function Name:  file_validate_for_nameconv
+ *
+ *  Parameters:
+ *      gchar *filename: the filename we will validate
+ *      VALIDATE_flag *flag: struct contain flags used to validate file
+ *
+ *  Desc:
+ *      file_validate_for_nameconv() will determine whether fsexam will 
+ *      convert filename or not.
+ *
+ *  Return value:
+ *      True if fsexam will handle this file's name, otherwise False
+ *
+ *  Author:     Yandong Yao 2006/08/24
+ ==========================================================================*/
+gboolean file_validate_for_nameconv(const gchar *filename, 
+                                    struct stat *statbuf, 
+                                    FSEXAM_setting *setting);
+
+GList    *get_remote_paths ();
+gboolean is_remote_file (GList *remote_path, const gchar *filename);
+
+#endif //_FSEXAM_VALIDATE_H
--- a/src/cmd/fsexam/src/fsexam-accels.h	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#ifndef FSEXAM_ACCELS_H
-#define FSEXAM_ACCELS_H
-
-#include <gtk/gtk.h>
-
-#define ACCEL_PATH_ROOT "<fsexam-accels>/menu"
-#define ACCEL_PATH_OPEN ACCEL_PATH_ROOT"/open"
-#define ACCEL_PATH_EXIT ACCEL_PATH_ROOT"/exit"
-#define ACCEL_PATH_UNDO ACCEL_PATH_ROOT"/undo"
-#define ACCEL_PATH_REVERT ACCEL_PATH_ROOT"/revert"
-#define ACCEL_PATH_CONVERT_NAME ACCEL_PATH_ROOT"/convertname"
-#define ACCEL_PATH_CONVERT_CONTENT ACCEL_PATH_ROOT"/convertcontent"
-#define ACCEL_PATH_PEEK_CONTENT ACCEL_PATH_ROOT"/peekcontent"
-#define ACCEL_PATH_REPORT_PANE ACCEL_PATH_ROOT"/reportpane"
-#define ACCEL_PATH_HELP ACCEL_PATH_ROOT"/help"
-#define ACCEL_PATH_ABOUT ACCEL_PATH_ROOT"/about"
-
-#endif
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-application-server.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,133 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-generic-factory.h>
+#include <bonobo/bonobo-main.h>
+#include <bonobo/bonobo-context.h>
+#include <bonobo-activation/bonobo-activation-register.h>
+
+#include "fsexam-application-server.h"
+#include "GNOME_Fsexam.h"
+
+#include "fsexam-header.h"
+#include "fsexam-ui.h"
+#include "fsexam.h"
+
+static void fsexam_application_server_class_init (FsexamApplicationServerClass *klass);
+static void fsexam_application_server_init (FsexamApplicationServer *a);
+static void fsexam_application_server_object_finalize (GObject *object);
+static GObjectClass *fsexam_application_server_parent_class;
+
+static BonoboObject *
+fsexam_application_server_factory (BonoboGenericFactory *this_factory,
+        const gchar *iid,
+        gpointer user_data)
+{
+    FsexamApplicationServer *a;
+
+    a = (FsexamApplicationServer *)g_object_new (FSEXAM_APPLICATION_SERVER_TYPE, NULL);
+
+    return BONOBO_OBJECT (a);
+}
+
+BonoboObject *
+fsexam_application_server_new (GdkScreen *screen)
+{
+    BonoboGenericFactory    *factory = NULL;
+    //char                    *display_name = NULL;
+    char                    *registration_id = NULL;
+
+    if (screen != NULL) {
+        //display_name = gdk_screen_make_display_name (screen);
+    }
+
+    registration_id = bonobo_activation_make_registration_id (
+            "OAFIID:GNOME_Fsexam_Factory",
+            //display_name);
+            NULL);
+
+    factory = bonobo_generic_factory_new (registration_id,
+            fsexam_application_server_factory,
+            NULL);
+
+    //g_free (display_name);
+    g_free (registration_id);
+
+    return BONOBO_OBJECT (factory);
+}
+
+static void
+impl_fsexam_application_server_grabFocus (PortableServer_Servant _servant,
+        CORBA_Environment *ev)
+{
+    if (cli_mode) {
+        g_print (_("One instance of fsexam is running already.\n"));
+    }else{
+        gtk_window_present (GTK_WINDOW (view->mainwin));
+    }
+
+    return;
+}
+
+static void
+fsexam_application_server_class_init (FsexamApplicationServerClass *klass)
+{
+    GObjectClass *object_class = (GObjectClass *)klass;
+    POA_GNOME_Fsexam_Application__epv *epv = &klass->epv;
+
+    fsexam_application_server_parent_class = (GObjectClass *)g_type_class_peek_parent (klass);
+    object_class->finalize = fsexam_application_server_object_finalize;
+
+    /* connect implementation callbacks */
+    epv->grabFocus = impl_fsexam_application_server_grabFocus;
+
+    return;
+}
+
+static void
+fsexam_application_server_init (FsexamApplicationServer *c)
+{
+}
+
+static void
+fsexam_application_server_object_finalize (GObject *object)
+{
+    FsexamApplicationServer *a = FSEXAM_APPLICATION_SERVER(object);
+
+    fsexam_application_server_parent_class->finalize (G_OBJECT (a));
+}
+
+
+BONOBO_TYPE_FUNC_FULL (
+        FsexamApplicationServer,                    
+        GNOME_Fsexam_Application, 
+        BONOBO_TYPE_OBJECT,           
+        fsexam_application_server)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-application-server.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,58 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _FSEXAM_APPLICATION_SERVER_H
+#define _FSEXAM_APPLICATION_SERVER_H
+
+#include "GNOME_Fsexam.h"
+#include <bonobo/bonobo-control.h>
+#include <bonobo/bonobo-object.h>
+
+G_BEGIN_DECLS
+
+#define FSEXAM_APPLICATION_SERVER_TYPE      (fsexam_application_server_get_type ())
+#define FSEXAM_APPLICATION_SERVER(o)        (G_TYPE_CHECK_INSTANCE_CAST((o), FSEXAM_APPLICATION_SERVER_TYPE, FsexamApplicationServer))
+#define FSEXAM_APPLICATION_SERVER_CLASS(k)  (G_TYPE_CHECK_CLASS_CAST((k), FSEXAM_APPLICATION_SERVER_TYPE, FsexamApplicationServerClass))
+#define FSEXAM_APPLICATION_SERVER_IS_OBJECT(o)  (G_TYPE_CHECK_INSTANCE_TYPE((o), FSEXAM_APPLICATION_SERVER_TYPE))
+#define FSEXAM_APPLICATION_SERVER_IS_CLASS(k)   (G_TYPE_CHECK_CLASS_TYPE((k), FSEXAM_APPLICATION_SERVER_TYPE))
+#define FSEXAM_APPLICATION_SERVER_GET_CLASS(o)  (G_TYPE_INSTANCE_GET_CLASS((o), FSEXAM_APPLICATION_SERVER_TYPE, FsexamApplicationServerClass))
+
+typedef struct {
+    BonoboObject parent;
+} FsexamApplicationServer;
+
+typedef struct {
+    BonoboObjectClass parent_class;
+
+    POA_GNOME_Fsexam_Application__epv epv;
+} FsexamApplicationServerClass;
+
+GType       fsexam_application_server_get_type (void);
+BonoboObject *fsexam_application_server_new (GdkScreen *screen);
+
+G_END_DECLS
+
+#endif  /* _FSEXAM_APPLICATION_SERVER_H */
--- a/src/cmd/fsexam/src/fsexam-content.c	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1054 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <locale.h>
-#include <string.h>
-
-#include <libgnome/gnome-i18n.h>
-
-#include "encode.h"
-#include "fsexam-history.h"
-#include "fsexam-preference.h"
-#include "fsexam-conversion.h"
-#include "fsexam-content.h"
-#include "fsexam.h"
-
-static gboolean
-fsexam_content_match_suffix (GSList *suffixlist, char *suffix)
-{
-  // unmatched if no suffix
-  if (!suffix) return FALSE;
-
-  while (suffixlist)
-    {
-      if (!g_ascii_strcasecmp ((gchar *)suffixlist->data, suffix))
-	return TRUE;
-      suffixlist = g_slist_next (suffixlist);
-    }
-
-  return FALSE;
-}
-
-static gboolean
-is_plain_text_by_locale (char *name, char *locale)
-{
-	gchar *cmd, *p, buf[256];
-	gboolean retval = FALSE;
-	FILE *ptr = NULL;
-
-	memset (buf, 0, 256);
-
-	// Since file command in solairs outputs localized file type,
-	// we just temporarily set LC_MESSAGES=C for the child process -- file
-	setenv ("LC_MESSAGES", "C", 1);
-
-	if (locale)
-		setenv ("LC_CTYPE", locale, 1);
-
-	// in case there includes any whitespace within the filename
-	cmd = g_strdup_printf ("file \"%s\"", name);
-
-	if ((ptr = popen (cmd, "r")) != NULL)
-	{
-		fgets (buf, 256, ptr);
-		pclose (ptr);
-        }
-
-	g_free (cmd);
-
-	if (*buf != 0x0)
-	{
-		p = buf;
-		while (*p != ':') ++p;
-		++p;
-		while (isspace (*p)) ++p;
-
-		if (strstr (p, "text"))
-			retval = TRUE;
-	}
-
-	// unset the LC_CTYPE, LC_MESSAGES variable.
-	unsetenv ("LC_CTYPE");
-	unsetenv ("LC_MESSAGES");
-
-	return retval;
-}
-
-static char*
-encoding_to_locale (char *encoding)
-{
-	int i = 0;
-	static char *mapping[][2] = {
-		{"EUC-JP",	"ja_JP.eucJP"},
-		{"SJIS", 	"ja_JP.PCK"},
-		{"ISO-2022-JP",	"ja"},
-		{"EUC-KR",	"ko_KR.EUC"},
-		{"ISO-2022-KR",	"ko"},
-		{"JOHAB",	"ko"},
-		{"GB18030",	"zh_CN.GB18030"},
-		{"ISO-2022-CN",	"zh_CN"},
-		{"BIG5",	"zh_TW.BIG5"},
-		{"EUC-TW",	"zh_TW.EUC"},
-		{"BIG5-HKSCS",	"zh_HK.BIG5HK"},
-	};
-
-	for (i=0; i < sizeof(mapping)/sizeof(*mapping); i++)
-	{
-		if (!strcmp (encoding, mapping[i][0]))
-			return strdup (mapping[i][1]);
-	}
-
-	return NULL;
-}
-
-static gboolean
-fsexam_content_check_filetype (char *name)
-{
-  gboolean retval = FALSE;
-
-  GList *p = NULL;
-  GList *encode_list = view->pref->encode_list;
-  
-  /* fast check in current locale */
-  if (is_plain_text_by_locale (name, NULL))
-	  return TRUE;
-
-  /* iterate encode_list, and get the corresponding locale, 
-   * then tell whether it's plain text file */
-  for (p = encode_list; p && retval != TRUE; p = p->next)
-  {
-	  char *locale = encoding_to_locale ( ((Encoding*) p->data)->codename );
-
-	  /* some times, encoding has no corresponding locale, since we already 
-	   * do the fast check, so just continue here */
-	  if (!locale)
-		  continue;
-
-	  if (is_plain_text_by_locale (name, locale))
-		  retval = TRUE;
-
-	  g_free (locale);
-  }
-  
-  return retval;
-}
-
-static gboolean
-fsexam_content_check_plain_text (char *name)
-{
-  gchar *suffix = g_strrstr (name, ".");
-
-  if (!fsexam_content_match_suffix (view->pref->suffix_list, suffix) &&
-      !fsexam_content_check_filetype (name))
-    {
-      gchar *statusmsg;
-
-      statusmsg = g_strdup_printf ("%s: %s", _("Not plain text"), name);
-      fsexam_statusbar_update (statusmsg);
-
-      g_free (statusmsg);
-
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-GMainLoop *loop = NULL;
-int encode_index = -1;
-
-static void
-widget_destroy (GtkWidget *widget,
-		gpointer user_data)
-{
-  GMainLoop *loop =*(GMainLoop **)user_data;
-
-  if (!loop) return;
-
-  if (g_main_loop_is_running (loop))
-    g_main_loop_quit (loop);
-
-  encode_index = -1;
-}
-
-static void
-encode_button_press (GtkWidget *widget,
-		     gpointer user_data)
-{
-  if (g_main_loop_is_running (loop))
-    g_main_loop_quit (loop);
-
-  encode_index = (int) user_data;
-}
-
-static gboolean
-fsexam_content_construct_ui (Encoding *encode,
-			     gint index,
-			     va_list args)
-{
-  GtkWidget *table;
-  GtkWidget *sw;
-  GtkTextBuffer *buffer;
-  GtkWidget *contents;
-  GtkWidget *label;
-  GtkWidget *button;
-  char *markup;
-
-  table = va_arg (args, GtkWidget *);
-
-  label = gtk_label_new (NULL);
-
-  markup = g_strdup_printf ("<b>%s</b>:", encode->codename);
-  gtk_label_set_markup (GTK_LABEL (label), markup);
-  g_free (markup);
-  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
-  gtk_table_attach (GTK_TABLE (table),
-		    label,
-		    /* X direction */ /* Y direction */
-		    index, index+1,           0, 1,
-		    GTK_EXPAND| GTK_FILL, 0,
-		    0, 0);
-
-  sw = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
-				       GTK_SHADOW_ETCHED_IN);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
-				  GTK_POLICY_AUTOMATIC,
-				  GTK_POLICY_AUTOMATIC);
-  gtk_widget_set_size_request (sw, 50, -1);
-
-  gtk_table_attach (GTK_TABLE (table),
-		    sw,
-		    /* X direction */ /* Y direction */
-		    index, index+1,   1, 2,
-		    GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
-		    0, 0);
-
-  contents = gtk_text_view_new ();
-
-  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (contents));
-  gtk_text_buffer_set_text (buffer, encode->u.contents, -1);
-
-  gtk_container_add (GTK_CONTAINER (sw), contents);
-
-  button = gtk_button_new_from_stock (GTK_STOCK_OK);
-  gtk_table_attach (GTK_TABLE (table),
-		    button,
-		    /* X direction */ /* Y direction */
-		    index, index+1,           2, 3,
-		    GTK_EXPAND | GTK_FILL, 0,
-		    0,  0);
-
-  g_signal_connect (G_OBJECT (button),
-		    "pressed",
-		    G_CALLBACK (encode_button_press),
-		    (gpointer)index);
-
-  return TRUE;
-}
-
-static int
-fsexam_content_show_candidates (GList *encode_list)
-{
-  int n_candidates = 0;
-  GtkWidget *table;
-  GtkWidget *win;
-  int x, y, width, height;
-
-  iterate_encode_with_func (encode_list, (void *)get_encode_elements, &n_candidates);
-
-  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_window_set_title (GTK_WINDOW (win), _("File System Examiner content conversion"));
-  g_signal_connect (G_OBJECT (win),
-		    "destroy",
-		    G_CALLBACK (widget_destroy),
-		    &loop);
-
-  gtk_window_set_modal (GTK_WINDOW (win), TRUE);
-  gtk_window_set_transient_for (GTK_WINDOW (win), GTK_WINDOW (view->mainwin));
-
-  table = gtk_table_new (3, n_candidates, FALSE);
-  gtk_container_set_border_width (GTK_CONTAINER (table), 1);
-  gtk_container_add (GTK_CONTAINER (win), table);
-
-  iterate_encode_with_func (encode_list, (void *)fsexam_content_construct_ui, table);
-
-  gtk_window_get_position (GTK_WINDOW (view->mainwin), &x, &y);
-  gtk_window_get_size (GTK_WINDOW (view->mainwin), &height, &width);
-
-  gtk_window_move (GTK_WINDOW (win), x+width/2, y+height/2);
-  gtk_window_set_default_size (GTK_WINDOW (win), 450, 300);			     
-  gtk_widget_show_all (win);
-
-  loop = g_main_new (FALSE);
-  GDK_THREADS_LEAVE ();
-  g_main_loop_run (loop);
-  GDK_THREADS_ENTER ();
-
-  g_main_loop_unref (loop);
-  loop = NULL;
-
-  if (encode_index != -1)
-    gtk_widget_destroy (win);
-
-  return encode_index;
-}
-
-// FIXME the default carriage return conversion should be 
-// specified by the preference setting?
-static gboolean
-exclude_windows_carriage_return (char *s)
-{
-  char *p = s;
-  gboolean crlf_flag = FALSE;
-
-  while (*s)
-    {
-      if (*s == '\r' && *(s+1) == '\n')
-	{
-	  crlf_flag = TRUE;
-	  ++s;
-	}
-
-      *p++ = *s++;
-    }
-
-  *p = 0x0;
-
-  return crlf_flag;
-}
-
-static char *
-include_windows_carriage_return (char *s)
-{
-  char *contents, *p;
-  gint num = 0;
-
-  p = s;
-  while (*p) { if (*p++ == '\n') ++num; }
-
-  p = contents = g_new0 (char, strlen (s) + num + 1);
-  while (*s)
-    {
-      if (*s == '\n')
-	*p++ = '\r';
-
-      *p++ = *s++;
-    }
-
-  return contents;
-}
-
-static void
-fsexam_content_convert_file (char *path,
-			     char *filename,
-			     gboolean same_serial)
-{
-  gchar  name[256];
-  gchar  *contents = NULL;
-  FSEXAM_pref *pref = view->pref;
-  gsize  length;
-  GError *g_error = NULL;
-  gboolean err;
-  Score score;
-  gboolean crlf_flag;
-
-  memset (name, 0, 256);
-  sprintf (name, "%s/%s", path, filename);
-
-  if (!fsexam_content_check_plain_text (name)) return;
-
-  err = g_file_get_contents (name, &contents, &length, &g_error);
-  if (err && !contents)
-    {
-      fsexam_statusbar_update (g_error->message);
-      g_free (g_error);
-      return;
-    }
-
-  if (crlf_flag = exclude_windows_carriage_return (contents))
-    length = strlen (contents);
-
-  score = decode_analyzer (pref->encode_list, ConvContent, contents, length);
-  if (score == FAIL)
-    {
-      fsexam_statusbar_update (_("Byte sequence not recognized yet"));
-      goto done;
-    }
-
-  if (score == ORIGINAL && !crlf_flag)
-    fsexam_statusbar_update (_("File content - UTF8 already"));
-  else
-    {
-      unsigned int serial;
-      ConvType convtype = ConvContent;
-      gchar *converted_text;
-      gchar *codeinfo = "dummy_codeinfo";
-      int index = -1;
-      int len;
-      FILE *fp = NULL;
-      gchar *new_path, *new_filename;
-
-      if (score == ORIGINAL)
-	{
-	  convtype = ConvContentCRLFOnly;
-	  converted_text = contents;
-	}
-      else
-	{
-	  GList *element;
-	  Encoding *encode;
-
-	  if ((index = fsexam_content_show_candidates (pref->encode_list)) == -1)
-	    goto done;
-
-	  element = g_list_nth (pref->encode_list, index);
-	  encode = (Encoding *)element->data;
-
-	  converted_text = encode->u.contents;
-
-	  if (crlf_flag) convtype = ConvContentWithCRLF;
-
-	  codeinfo = encode->codename;
-	}
-
-      if ((fp = fopen (name, "wb")) == NULL)
-	{
-	  fsexam_statusbar_update (_("File content - open failure"));
-	  goto done;
-	}
-
-      length = strlen (converted_text);
-      if ((len = fwrite (converted_text, 1, length, fp)) != length)
-	fsexam_statusbar_update (_("File content - write error"));
-      else
-	{
-	  char *message = NULL;
-
-	  switch (convtype)
-	    {
-	    case ConvContent:
-	      message = g_strdup_printf (_("File content - convert from %s"), codeinfo);
-	      break;
-	    case ConvContentWithCRLF:
-	      message = g_strdup_printf (_("File content - convert from %s and delete Carriage Return"), codeinfo);
-	      break;
-	    case ConvContentCRLFOnly:
-	      message = g_strdup (_("File content - delete Carriage Return only"));
-	      break;
-	    }
-
-	  fsexam_statusbar_update (message);
-
-	  if (message) g_free (message);
-	}
-
-      serial = fsexam_history_put (view->histinfo,
-				   convtype,
-				   codeinfo,
-				   filename,
-				   path,
-				   same_serial);
-
-      if (!same_serial)
-	fsexam_undo_insert (serial);
-
-      new_path = fsexam_validate_with_newline (path, TRUE);
-      new_filename = fsexam_validate_with_newline (filename, FALSE);
-
-      write_to_report_pane (pref, convtype, index, new_path, new_filename, view->lineoffset);
-
-      g_free (new_path);
-      g_free (new_filename);
-      fclose (fp);
-    }
-
-done:
-  // Free encode->u.contents to avoid memory leak
-  cleanup_encode (pref->encode_list);
-
-  g_free (contents);
-}
-
-static void
-fsexam_content_convert_single_selection (GtkTreeModel *model,
-					 GtkTreePath  *path,
-					 GtkTreeIter  *iter,
-					 gpointer     user_data)
-{
-  GtkTreeIter subiter;
-  gchar *filename;
-  gint *indicator = (gint *)user_data;
-  GString *dir;
-
-  if (gtk_tree_model_iter_children (model, &subiter, iter))
-    {
-      fsexam_statusbar_update (_("Cannot convert contents of folder"));
-
-      return;
-    }
-
-  gtk_tree_model_get (model, iter,
-		      FILENAME_COLUMN, &filename,
-		      -1);
-
-  dir = fsexam_filename_get_path (model, *iter, view->rootdir);
-
-  fsexam_content_convert_file (dir->str, filename, *indicator != 0);
-
-  ++*indicator;
-
-  g_free (filename);
-  g_string_free (dir, TRUE);
-}
-
-/*
- * Convert the file encoding from UTF8 to native encoding
- */
-void fsexam_content_convert ()
-{
-  GtkTreeSelection *selection;
-  gint same_serial_indicator = 0;
-
-  // Do nothing if view->rootdir isn't set yet
-  if (!view->rootdir) return;
-
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view->treeview));
-
-  gtk_tree_selection_selected_foreach (selection,
-				       fsexam_content_convert_single_selection,
-				       (gpointer) &same_serial_indicator);
-}
-
-/*
- * Convert the file content between UTF8 and native encoding 'native_encode'.
- * If crlf_flag is set, it depends on the 'delete_carriage_return' to either 
- * remove or add the carriage return code in the stream. And 'direction' 
- * controls in which direction the conversion would be performed:
- *
- *            ToDIR:        UTF8     --> native_encode
- *            FromDIR: native_encode --> UTF8
- *            NoneDIR:      Don't need conversion
- */
-gboolean
-fsexam_content_undo (char *filename,
-		     char *native_encode,
-		     ConvType convtype)
-{
-  gboolean crlf_flag, delete_carriage_return;
-  Direction direction;
-  GError *g_error = NULL;
-  gsize  length, len, outbytes_left, outbytes;
-  FILE   *fp = NULL;
-  gboolean success;
-  GIConv icd;
-  gint   num_uconv;
-  gchar  *inbuf, *contents = NULL;
-  gchar  *outbuf, *outbuf2 = NULL;
-  gchar  *converted_text;
-  gboolean retval = FALSE;
-
-  switch (convtype)
-    {
-    case ConvContent:
-      crlf_flag = FALSE;
-      delete_carriage_return = FALSE;
-      direction = ToDIR;
-      break;
-    case ConvContentWithCRLF:
-      crlf_flag = TRUE;
-      delete_carriage_return = FALSE;
-      direction = ToDIR;
-      break;
-    case ConvContentCRLFOnly:
-      crlf_flag = TRUE;
-      delete_carriage_return = FALSE;
-      direction = NoneDIR;
-      break;
-    case ConvContentReverse:
-      crlf_flag = FALSE;
-      delete_carriage_return = FALSE;
-      direction = FromDIR;
-      break;
-    case ConvContentWithCRLFReverse:
-      crlf_flag = TRUE;
-      delete_carriage_return = TRUE;
-      direction = FromDIR;
-      break;
-    case ConvContentCRLFOnlyReverse:
-      crlf_flag = TRUE;
-      delete_carriage_return = TRUE;
-      direction = NoneDIR;
-      break;
-    }
-
-  if (!g_file_test (filename, G_FILE_TEST_EXISTS))
-    {
-      char *message;
-
-      message = g_strdup_printf (_("%s doesn't exist yet"), filename);
-      fsexam_statusbar_update (message);
-      g_free (message);
-
-      return retval;
-    }
-
-  success = g_file_get_contents (filename, &contents, &length, &g_error);
-  if (!success && !contents)
-    {
-      fsexam_statusbar_update (g_error->message);
-      g_free (g_error);
-      return retval;
-    }
-
-  if (!length) 
-    {
-      fsexam_statusbar_update (_("File has been emptied, can not be restored!"));
-      return retval;
-    }
-
-  if (crlf_flag)
-    {
-      if (delete_carriage_return)
-	exclude_windows_carriage_return (contents);
-      else
-	{
-	  char *p = include_windows_carriage_return (contents);
-
-	  g_free (contents);
-	  contents = p;
-	}
-
-      length = strlen (contents);
-    }
-
-  if (direction == NoneDIR)
-    converted_text = contents;
-  else
-    {
-      if (direction == ToDIR)
-	{
-	  // don't try to convert if it is legacy encoding already
-	  if (!g_utf8_validate (contents, length, NULL))
-	      goto _Err;
-
-	  icd = g_iconv_open (native_encode, "UTF-8");
-	}
-      else if (direction == FromDIR)
-	icd = g_iconv_open ("UTF-8", native_encode);
-
-      outbuf2 = outbuf = g_new0 (char, length * 3);
-      outbytes = outbytes_left = length * 3;
-      inbuf = contents;
-      if ((num_uconv = g_iconv (icd, &inbuf, &length,
-				&outbuf, &outbytes_left)) == -1)
-	{
-	  fsexam_statusbar_update (_("File content - conversion failure"));
-	  goto _Err;
-	}
-
-      length = outbytes - outbytes_left;
-      converted_text = outbuf2;
-
-      g_free (icd);
-    }
-
-  if ((fp = fopen (filename, "wb")) == NULL)
-    {
-      fsexam_statusbar_update (_("File content - open failure"));
-      goto _Err;
-    }
-  
-  if ((len = fwrite (converted_text, 1, length, fp)) != length)
-    fsexam_statusbar_update (_("File content - write error"));
-  else
-    {
-      char *message = NULL;
-
-      switch (convtype)
-	{
-	case ConvContent:
-	  message = g_strdup_printf (_("Restore %s"), native_encode);
-	  break;
-	case ConvContentWithCRLF:
-	  message = g_strdup_printf (_("Restore %s and add Carriage Return"), native_encode);
-	  break;
-	case ConvContentCRLFOnly:
-	  message = g_strdup (_("Restore by adding Carriage Return"));
-	  break;
-	case ConvContentReverse:
-	  message = g_strdup (_("Restore UTF8"));
-	  break;
-	case ConvContentWithCRLFReverse:
-	  message = g_strdup (_("Restore UTF8 and delete Carriage Return"));
-	  break;
-	case ConvContentCRLFOnlyReverse:
-	  message = g_strdup (_("Restore by deleting Carriage Return"));
-	  break;
-	}
-      
-      fsexam_statusbar_update (message);
-      if (message) g_free (message);
-    }
-
-  retval = TRUE;
-
-  fclose (fp);
- _Err:
-  if (outbuf2) g_free (outbuf2);
-  g_free (contents);
-
-  return retval;
-}
-
-GdkPixmap *content_pixmap;
-
-static GdkPixmap *
-create_content_pixmap (GtkWidget *peekwin, char *content)
-{
-  PangoLayout *pango_layout;
-  PangoRectangle rect;
-  gint pixmap_width, pixmap_height;
-  GtkStyle *style;
-  GdkPixmap *pixmap;
-  PangoFontDescription *font_desc;
-  static PangoLayout *main_pango_layout = NULL;
-
-  enum { PADDING = 8 };
-
-  main_pango_layout = gtk_widget_create_pango_layout (view->mainwin, NULL);
-  font_desc = pango_font_description_copy (
-	  gtk_widget_get_style (view->mainwin)->font_desc);
-
-  pango_layout = pango_layout_new (pango_layout_get_context (main_pango_layout));
-
-  pango_layout_set_font_description (pango_layout, font_desc);
-  
-  pango_layout_set_text (pango_layout, content, -1);
-  pango_font_description_free (font_desc);
-
-  pango_layout_get_pixel_extents (pango_layout, &rect, NULL);
-
-  pixmap_width = rect.width + 2 * PADDING;
-  pixmap_height = rect.height + 2 * PADDING;
-
-  style = gtk_widget_get_style (view->mainwin);
-  
-  pixmap = gdk_pixmap_new (view->mainwin->window,
-			   pixmap_width, pixmap_height, -1);
-
-  gdk_draw_rectangle (pixmap, style->base_gc[GTK_STATE_NORMAL],
-		     TRUE, 0, 0, pixmap_width, pixmap_height);
-
-  gdk_draw_rectangle (pixmap, style->fg_gc[GTK_STATE_INSENSITIVE],
-		      FALSE, 1, 1, pixmap_width - 3, pixmap_height -3);
-
-  gdk_draw_layout (pixmap, style->text_gc[GTK_STATE_NORMAL],
-		   -rect.x + PADDING, -rect.y + PADDING,
-		   pango_layout);
-  g_object_unref (pango_layout);
-
-  return pixmap;
-}
-
-static void
-set_window_background (GtkWidget *window,
-		       GdkPixmap *pixmap)
-{
-  gdk_window_set_back_pixmap (window->window, pixmap, FALSE);
-}
-
-static void
-peek_window_realize (GtkWidget *peekwin,
-		     gpointer user_data)
-{
-  gint width, height;
-
-  set_window_background (peekwin, content_pixmap);
-  gdk_window_clear (peekwin->window);
-
-  gdk_drawable_get_size (GDK_DRAWABLE (content_pixmap),
-			 &width, &height);
-
-  gtk_widget_set_size_request (peekwin, width, height);
-  gtk_window_resize (GTK_WINDOW (peekwin), width, height);
-}
-
-static void
-update_peek_window (GtkWidget *peekwin, char *content)
-{
-  gint width, height;
-
-  g_return_if_fail (peekwin != NULL);
-
-  if (content_pixmap != NULL)
-    g_object_unref (content_pixmap);
-
-  content_pixmap = create_content_pixmap (peekwin, content);
-
-  if (GTK_WIDGET_REALIZED (peekwin))
-    {
-      set_window_background (peekwin, content_pixmap);
-      gdk_window_clear (peekwin->window);
-    }
-
-  gdk_drawable_get_size (GDK_DRAWABLE (content_pixmap),
-			 &width, &height);
-
-  gtk_widget_set_size_request (peekwin, width, height);
-  gtk_window_resize (GTK_WINDOW (peekwin), width, height);
-}
-
-static GtkWidget *
-make_peek_window ()
-{
-  GtkWidget *peekwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-
-  g_signal_connect (peekwin, "realize",
-		    G_CALLBACK (peek_window_realize),
-		    NULL);
-
-  gtk_window_set_type_hint (GTK_WINDOW (peekwin),
-			    GDK_WINDOW_TYPE_HINT_UTILITY);
-  gtk_window_set_decorated (GTK_WINDOW (peekwin), FALSE);
-  gtk_window_set_screen (GTK_WINDOW (peekwin),
-			 gtk_widget_get_screen (view->mainwin));
-  gtk_widget_set_app_paintable (peekwin, TRUE);
-
-  return peekwin;
-}
-
-static void
-get_upper_left_xy (GtkWidget *peekwin,
-		   gint width, gint height,
-		   gint x_root, gint y_root,
-		   gint *x, gint *y)
-{
-  *x = x_root;
-  *y = y_root;
-
-  *x -= width;
-  *y -= height;
-}
-
-static void
-place_peek_window (GtkWidget *peekwin,
-		   gint x_root,
-		   gint y_root)
-{
-  gint width, height;
-  gint x, y;
-
-  g_return_if_fail (peekwin != NULL);
-
-  gtk_widget_get_size_request (peekwin,
-			       &width,
-			       &height);
-
-  get_upper_left_xy (peekwin, width, height,
-		     x_root, y_root, &x, &y);
-
-  gtk_window_move (GTK_WINDOW (peekwin), x, y);
-}
-
-#define MAX_NUM_MULTIBYTE_CHARACTERS 400
-#define MAX_NUM_CHARACTERS 2000
-
-static gchar *
-fsexam_content_get_sample (char *file)
-{
-  char *p, *sample;
-  gsize length;
-  gint multi_num = 0, char_num = 0;
-  GError *err = NULL; 
-
-  if (!g_file_get_contents (file, &p, &length, &err))
-    {
-      fsexam_statusbar_update (err->message);
-      g_error_free (err);
-
-      return NULL;
-    }
-
-  sample = p;
-
-  while (1)
-    {
-      gunichar wc;
-
-      wc = g_utf8_get_char_validated (p, -1);
-      if (wc == 0x0 || multi_num == MAX_NUM_MULTIBYTE_CHARACTERS ||
-	  char_num == MAX_NUM_CHARACTERS) 
-	{
-	  *p = 0x0;
-	  break;
-	}
-      if (wc == (gunichar)-1 || wc == (gunichar)-2)
-	{
-	  ++multi_num;
-	  ++p;
-	}
-      else
-	{
-	  if (wc >= 0x7e)
-	    ++multi_num;
-
-	  p = g_utf8_next_char (p);
-	}
-      ++char_num;
-    }
-
-  return sample;
-}
-
-static void
-peekwin_destroy (GtkWidget *widget,
-		 gpointer user_data)
-{
-  GtkWidget *peekwin = view->peekwin;
-
-  view->peekwin = NULL;
-
-  gtk_object_destroy (GTK_OBJECT (peekwin));
-}
-
-static gboolean
-fsexam_content_get_selection (char **path,
-			     char **filename)
-{
-  GtkTreeSelection *selection;
-  GtkTreeIter iter, subiter;
-  GtkTreeModel *model;
-  GList *row;
-  GString *dir;
-
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view->treeview));
-  row = gtk_tree_selection_get_selected_rows (selection, &model);
-
-  if ( !row )
-      return FALSE;
-
-  if (g_list_length (row) > 1)
-    {
-      g_list_foreach (row, gtk_tree_path_free, NULL);
-      g_list_free (row);
-
-      fsexam_statusbar_update (_("Cannot preview multiple selections"));
-
-      return FALSE;
-    }
-
-  gtk_tree_model_get_iter (model, &iter, row->data);
-
-  g_list_foreach (row, gtk_tree_path_free, NULL);
-  g_list_free (row);
-
-  if (gtk_tree_model_iter_children (model, &subiter, &iter))
-    {
-      fsexam_statusbar_update (_("Cannot convert contents of folder"));
-
-      return FALSE;
-    }
-
-  gtk_tree_model_get (model, &iter,
-		      FILENAME_COLUMN, filename,
-		      -1);
-
-  dir = fsexam_filename_get_path (model, iter, view->rootdir);
-
-  *path = g_strdup (dir->str);
-
-  g_string_free (dir, TRUE);
-
-  return TRUE;
-}
-
-void
-fsexam_content_peek (gint x_root, gint y_root)
-{
-  char *path, *filename, *name, *sample_text;
-  int y_root2 = y_root;
-  
-  // Do nothing if view->rootdir isn't set yet
-  if (!view->rootdir) return;
-
-  if (!fsexam_content_get_selection (&path, &filename))
-    return;
-
-  if (!y_root)
-    {
-      int x, y, height, width;
-
-      gtk_window_get_position (GTK_WINDOW (view->mainwin), &x, &y);
-      gtk_window_get_size (GTK_WINDOW (view->mainwin), &height, &width);
-
-      x_root = x+width/2;
-      y_root = y+height/2;
-    }
-
-  name = g_strdup_printf ("%s/%s", path, filename);
-
-  if (!fsexam_content_check_plain_text (name))
-    goto ERR;
-
-  if (!view->peekwin)
-    view->peekwin = make_peek_window ();
-
-  place_peek_window (view->peekwin, x_root, y_root);
-
-  if ((sample_text = fsexam_content_get_sample (name)) == NULL)
-    goto ERR;
-
-  update_peek_window (view->peekwin, sample_text);
-
-  gtk_widget_show (view->peekwin);
-
-  set_window_background (view->peekwin, content_pixmap);
-  gdk_window_clear (view->peekwin->window);
-
-  if (y_root2 == 0)
-    g_signal_connect (G_OBJECT (view->peekwin),
-		      "focus-in-event",
-		      G_CALLBACK (peekwin_destroy),
-		      NULL);
-
-  g_free (sample_text);
-
- ERR:
-  g_free (name);
-  g_free (filename);
-  g_free (path);
-}
--- a/src/cmd/fsexam/src/fsexam-content.h	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#ifndef _FSEXAM_CONTENT_
-#define _FSEXAM_CONTENT_
-
-typedef enum {NoneDIR, ToDIR, FromDIR} Direction;
-
-void fsexam_content_convert ();
-gboolean fsexam_content_undo (char *, char *, ConvType);
-void fsexam_content_peek (int, int);
-
-#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-convcontent.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,569 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <libgen.h>
+
+#include <glib/gi18n.h>
+
+#include "fsexam-header.h"
+#include "encoding.h"
+#include "fsexam-convcontent.h"
+
+/* Store processed files, avoid loops */
+static GHashTable   *name_hash = NULL;
+
+static gboolean     convert_file (const gchar *name, 
+                                  FSEXAM_setting *setting, 
+                                  gboolean restore);
+static gboolean     convert_single_file (const gchar *fullpath, 
+                                  FSEXAM_setting *setting);
+static void         puts_msg (FSEXAM_setting *setting, 
+                                  const gchar *path, 
+                                  const gchar *from_en, 
+                                  const gchar *to_en);
+
+/*
+ * wrapper for fsexam_log_puts() and display_msg ()
+ */
+static void
+puts_msg (FSEXAM_setting *setting, 
+          const gchar *path, 
+          const gchar *from_en, 
+          const gchar *to_en)
+{
+    if ((setting == NULL) || (path == NULL))
+        return;
+
+    if (fsexam_errno == ERR_OK) {
+        gchar *msg;
+
+        if ((from_en == NULL) || (to_en == NULL))
+            return;
+
+        msg = g_strdup_printf (_("[Content] %s -> %s"), from_en, to_en);
+
+        fsexam_log_puts (setting->log_info, path, msg);
+        if (setting->display_msg)
+            setting->display_msg (path, msg);
+
+        g_free (msg);
+    }else{
+        fsexam_log_puts (setting->log_info, path, NULL);
+        if (setting->display_msg)
+            setting->display_msg (path, fsexam_error_get_msg ());
+    }
+
+    return;
+}
+
+/*
+ * Modify file contents, and write history info if needed
+ */
+static gboolean
+write_back_contents (FSEXAM_setting *setting, 
+                     const gchar *fullpath, 
+                     gchar *converted_contents, 
+                     short fid, 
+                     short tid)
+{
+    gboolean    ret = FALSE;
+    gboolean    need_free = FALSE;
+    gsize       length;
+
+    if ((NULL == setting) || (NULL == fullpath))
+        return FALSE;
+
+    if (converted_contents == NULL) {
+        const gchar  *from_encoding = id2encoding (fid);
+        const gchar  *to_encoding = id2encoding (tid);
+        gchar        *contents = NULL;
+        gboolean     err;
+
+        if ((NULL == from_encoding) || (NULL == to_encoding))
+            return FALSE;
+
+        err = g_file_get_contents (fullpath, &contents, &length, NULL);
+        if (err && !contents) {
+            fsexam_errno = ERR_CANNOT_READ;
+            goto done;
+        } else if (length == 0) {
+            fsexam_errno = ERR_EMPTY_FILE;
+            goto done;
+        }
+    
+        converted_contents = g_convert (contents,
+                                        length,
+                                        to_encoding,
+                                        from_encoding,
+                                        NULL,
+                                        NULL,
+                                        NULL);
+
+        g_free (contents);
+
+        if (converted_contents == NULL) {
+            fsexam_errno = ERR_CANNOT_CONVERT;
+            goto done;
+        }
+
+        need_free = TRUE;
+    }
+        
+    length = strlen (converted_contents);
+
+    if (g_file_set_contents (fullpath, converted_contents, length, NULL)) {
+        ret = TRUE;
+        ++setting->succ_num;
+
+        /* UNDO don't need write history */
+        if (! (setting->flags & FSEXAM_SETTING_FLAGS_UNDO)) {
+            gboolean same_serial = TRUE;
+            if (setting->flags & FSEXAM_SETTING_FLAGS_DIFF_SERIAL) {
+                setting->flags &= ~FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+                same_serial = FALSE;
+            }
+
+            fsexam_history_put (setting->hist_info, 
+                            ConvContent, 
+                            fullpath,
+                            fid,
+                            tid,
+                            same_serial);
+        }
+    }else{
+        ++setting->fail_num;
+        fsexam_errno = ERR_CANNOT_WRITE;
+    }
+
+done:
+    if (need_free)
+        g_free (converted_contents);
+
+    return ret;
+}
+
+/*
+ * Restore single one file. Won't care about follow or recursive 
+ */
+static gboolean
+restore_single_file (const gchar *fullpath, FSEXAM_setting *setting)
+{
+    gboolean    ret = FALSE;
+    Hist_item   *item = NULL;
+
+    if ((NULL == fullpath) || (NULL == setting))
+        return FALSE;
+
+    fsexam_errno = ERR_OK;
+
+    if (! setting->pref->dry_run  /* special type don't support dryrun */
+            && setting->pref->special 
+            && fsexam_special_convert_content (fullpath, setting, TRUE)) {
+        ++setting->succ_num;
+        return TRUE;    
+    }
+
+    item = fsexam_history_search (setting->hist_info, fullpath, FALSE);
+    if (item == NULL) {
+        fsexam_errno = ERR_HIST_NO_ITEM;
+        ++setting->ignore_num;
+        goto done;
+    }
+
+    ret = write_back_contents (setting, 
+                               fullpath, 
+                               NULL, 
+                               item->to_encoding, 
+                               item->from_encoding);
+    
+done:
+    puts_msg (setting, fullpath, 
+              item ? id2encoding (item->to_encoding) : NULL, 
+              item ? id2encoding (item->from_encoding) : NULL);
+
+    return ret;
+}
+
+/*
+ * Convert single one file, display candidate or dryrun.
+ * Won't care follow or recursive
+ */
+static gboolean
+convert_single_file (const gchar *fullpath, FSEXAM_setting *setting)
+{
+    Score       score;
+    Encoding    *encoding = NULL;
+    gboolean    ret = FALSE;
+    gboolean    err;
+    gsize       length;
+    gchar       *contents = NULL;
+    gchar       *sample_contents = NULL;
+    gboolean    need_free_contents = FALSE;
+
+    if ((NULL == fullpath) || (NULL == setting))
+        return FALSE;
+
+    fsexam_errno = ERR_OK;
+
+    if (! file_validate_for_contentconv (fullpath, setting)) {  
+        goto done;      /* fsexam_errno has been set, goto log */
+    }
+
+    if (! setting->pref->dry_run
+            && setting->pref->special 
+            && fsexam_special_convert_content (fullpath, setting, FALSE)) { 
+        ++setting->succ_num;
+        return TRUE;    
+    }
+
+    /* 
+     * handle encoding auto detection.
+     * And fsexam_is_plain_text/file(1) need these encodings 
+     */
+    if (setting->pref->auto_detect) { 
+        GList *detected_encoding;
+        
+        detected_encoding = file_encoding_detect (fullpath, 
+                                                  DEFAULT_DETECTING_FLAG);
+        setting->pref->encode_list = fsexam_encoding_add_auto (
+                                                setting->pref->encode_list, 
+                                                detected_encoding);
+        auto_encoding_free (detected_encoding);
+    }
+
+    if (! fsexam_is_plain_text (fullpath, setting)) {
+        /* This func need auto detected encoding */
+        fsexam_errno = ERR_FILE_TYPE_NOT_SUPPORT;
+        goto done;
+    }
+
+    /* plain text now */
+    err = g_file_get_contents (fullpath, &contents, &length, NULL);
+    if (err && !contents) {
+        fsexam_errno = ERR_CANNOT_READ;
+        goto done;
+    } else if (length == 0) {
+        fsexam_errno = ERR_EMPTY_FILE;
+        goto done;
+    }
+
+    sample_contents = get_sample_text (contents, &length);
+    score = fsexam_encoding_decode (setting->pref->encode_list,
+                                    ConvContent,
+                                    sample_contents,
+                                    length,
+                                    setting->pref->force);
+    g_free (contents);
+    g_free (sample_contents);
+
+    need_free_contents = TRUE;      /* need free contents in encoding_list */
+
+    if (setting->pref->dry_run){    /* dry run */
+        ret = fsexam_dryrun_puts (setting->dryrun_info, 
+                                  fullpath, 
+                                  score, 
+                                  setting->pref->encode_list, 
+                                  ConvContent); 
+        ret ? ++setting->succ_num : ++setting->fail_num;
+    } else {                        /* real convert */  
+        gint  index = 0;
+
+        if ((score == FAIL) || (score == ORIGINAL)){
+            fsexam_errno = (score == FAIL) ? ERR_NO_PROPER_ENCODING 
+                                           : ERR_CONTENT_UTF8_ALREADY;
+            goto done;
+        }   
+       
+        if (setting->gold_index != -1) {
+            index = setting->gold_index;
+        } else if (setting->pref->auto_conversion) {
+            index = fsexam_encoding_get_first_index (
+                                            setting->pref->encode_list);
+        } else {
+            index = setting->get_index (setting->pref->encode_list, FALSE);
+        }
+
+        if (-1 == index)
+            goto done;              /* cancel the selection */
+
+        encoding = (Encoding *)g_list_nth_data (setting->pref->encode_list, 
+                                                index);
+        if (NULL == encoding){
+            fsexam_errno = ERR_ENCODING_INDEX_INVALID;
+            goto done;
+        }
+
+        ret = write_back_contents (setting, 
+                                   fullpath, 
+                                   NULL,
+                                   encoding->encodingID, 
+                                   encoding2id ("UTF-8"));
+    }
+ 
+    goto cleanup;
+
+done:
+    ++setting->ignore_num;
+
+cleanup:
+    if (!setting->pref->dry_run) {
+        puts_msg (setting, fullpath, 
+                  encoding ? id2encoding (encoding->encodingID) : NULL, 
+                  "UTF-8");
+    }
+
+    if (setting->pref->auto_detect)
+        setting->pref->encode_list = fsexam_encoding_remove_auto (
+                                               setting->pref->encode_list);
+
+    if (need_free_contents)
+        fsexam_encoding_cleanup_content (setting->pref->encode_list);
+
+    return ret;
+}
+
+/* 
+ * Convert given file, handling various flags also
+ */
+static gboolean
+convert_file (const gchar *name, FSEXAM_setting *setting, gboolean restore)
+{
+    gchar    *abs_path = get_abs_path (name);
+    gboolean ret = FALSE;
+
+    if ((abs_path == NULL) || (setting == NULL)) {
+        goto done;
+    }
+
+    /* Global hash pointer */
+    if (g_hash_table_lookup (name_hash, abs_path)) {
+        ret = TRUE;
+        goto done;
+    }
+
+    g_hash_table_insert (name_hash, g_strdup (abs_path), (gpointer)-1);
+    ++setting->total_num;
+
+    if (restore) {
+        restore_single_file (abs_path, setting);
+    }else{
+        convert_single_file (abs_path, setting);
+    }
+    
+    if (setting->pref->follow 
+            && g_file_test (abs_path, G_FILE_TEST_IS_SYMLINK)) {
+        /* Symlink file */
+        gchar    *target = get_abs_path_for_symlink_target (abs_path);
+        ++setting->ignore_num;      /* ignore symlink file itself */
+
+        if (target == NULL)
+            goto done;
+
+        convert_file (target, setting, restore);
+
+        g_free (target);
+    }else if (setting->pref->recursive 
+            && g_file_test (abs_path, G_FILE_TEST_IS_DIR)) {
+        const gchar *filename = NULL;
+        GDir        *dp = g_dir_open (abs_path, 0, NULL);
+        ++setting->ignore_num;      /* ignore directory file itself */
+
+        if (dp == NULL)
+            goto done;
+
+        while ((filename = g_dir_read_name (dp)) != NULL) {
+            gchar *childname = g_strdup_printf ("%s/%s", abs_path, filename);
+            convert_file (childname, setting, restore);
+            g_free (childname);
+
+            if (setting->flags & FSEXAM_SETTING_FLAGS_STOP)
+                break;
+        }
+
+        g_dir_close (dp);
+    }
+    
+    ret = TRUE;
+
+done:
+    g_free (abs_path);
+
+    return ret;
+}
+
+static void
+dryrun_convert_contents (GSList *slist, FSEXAM_setting *setting)
+{
+    if ((NULL == slist) || (NULL == setting))
+        return;
+
+    while (slist != NULL) {
+        Dryrun_item *item = slist->data;
+        
+        ++setting->passin_num;
+        ++setting->total_num;
+       
+        write_back_contents (setting, item->path, NULL, 
+                             encoding2id (item->encoding), 
+                             encoding2id ("UTF-8"));
+
+        puts_msg (setting, item->path,  item->encoding, "UTF-8");
+
+        slist = slist->next;
+    }
+
+    return;
+}
+
+static gboolean
+_convert_or_restore_contents (FSEXAM_setting *setting, 
+                              GList *list, 
+                              gboolean restore)
+{
+    if ((list == NULL) || (setting == NULL))
+        return FALSE;
+
+    name_hash = g_hash_table_new_full (
+                    g_str_hash,
+                    g_str_equal,
+                    (GDestroyNotify) g_free,
+                    (GDestroyNotify) NULL);
+
+    if (name_hash == NULL) {
+        g_print (_("Can't new hash table.\n"));
+        return FALSE;
+    }
+
+    fsexam_setting_reset_stats (setting);
+
+    setting->passin_num = g_list_length (list);     /* passin No. of files */
+    setting->flags |= FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+
+    while (list) {
+        convert_file ((char *)list->data, setting, restore);
+
+        if (setting->flags & FSEXAM_SETTING_FLAGS_STOP)
+            break;
+
+        list = g_list_next (list);
+    }
+
+    setting->flags = 0;     /* clear all flags */
+    setting->display_stats (setting);
+    fsexam_log_flush (setting->log_info);
+
+    g_hash_table_destroy (name_hash);
+    name_hash = NULL;
+
+    return TRUE;
+
+}
+
+/*----------- Public API ---------------------*/
+
+/*
+ * Convert single file
+ */
+gboolean
+fsexam_convert_content (FSEXAM_setting *setting, const gchar *filename)
+{   
+    GList    *list = NULL;
+    gboolean ret;
+
+    if ((filename == NULL) || (setting == NULL))
+        return FALSE;
+
+    list = g_list_prepend (list, g_strdup (filename));
+    ret = fsexam_convert_content_batch (setting, list);
+    fsexam_list_free (list);
+
+    return ret;
+}
+
+/*
+ * Convert multiple files
+ */
+gboolean
+fsexam_convert_content_batch (FSEXAM_setting *setting, GList *list)
+{
+    return _convert_or_restore_contents (setting, list, FALSE);    
+}
+
+/*
+ * Restore file content
+ */
+gboolean
+fsexam_restore_content (FSEXAM_setting *setting, GList *list)
+{
+    return _convert_or_restore_contents (setting, list, TRUE);
+}
+
+/*
+ * Scenario based conversion: convert file content according to
+ * previous dryrun result.
+ */
+gboolean
+fsexam_convert_scenario_for_content (FSEXAM_setting *setting)
+{
+    g_return_val_if_fail (setting != NULL, FALSE);
+    GSList   *slist = NULL;
+    gboolean ret;
+   
+    fsexam_setting_reset_stats (setting);
+    setting->flags |= FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+    
+    /* construct file list from dryrun result */
+    ret = fsexam_dryrun_process (setting->dryrun_info, &slist);
+
+    if ((! ret) || (NULL == slist)) {
+        fsexam_log_puts (setting->log_info, NULL, NULL);
+        if (setting->display_msg)
+            setting->display_msg (NULL, fsexam_error_get_msg ());
+        setting->display_stats (setting);       /* display stats infor */
+        fsexam_log_flush (setting->log_info);
+
+        return FALSE;
+    }
+
+    dryrun_convert_contents (slist, setting);   /* real convert */
+
+    fsexam_dryrun_item_slist_free (slist);  /* free file list just create */
+    setting->flags = 0;                     /* clear all flags */
+    setting->display_stats (setting);       /* display stats infor */
+    fsexam_log_flush (setting->log_info);
+
+    return TRUE;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-convcontent.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,69 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_CONVCONTENT_H
+#define _FSEXAM_CONVCONTENT_H
+
+/*============================================================================
+ *  Function Name:  fsexam_convert_content
+ *
+ *  Parameters:
+ *      FSEXAM_setting *setting: struct contain all information
+ *      gchar * filename:   the filename which will be converted
+ *
+ *  Desc:
+ *      Convert one file's content to UTF-8
+ *
+ *  Return value:
+ *      True for success otherwise fail
+ *
+ *  Author:     Yandong Yao 2006/08/22
+ ============================================================================*/ 
+gboolean fsexam_convert_content (FSEXAM_setting *setting, 
+                                 const gchar *filename);
+/*============================================================================
+ *  Function Name:  fsexam_convert_filelist_for_content 
+ *
+ *  Parameters:
+ *      FSEXAM_setting *setting: the all-in-one struct
+ *      GList *list: The list contain file names
+ *
+ *  Desc:
+ *      Convert the content of file list 
+ *
+ *  Return value:
+ *      TRUE for success, otherwise fail
+ *
+ *  Author:     Yandong Yao 2006/08/22
+ ============================================================================*/
+gboolean fsexam_convert_content_batch (FSEXAM_setting *setting, GList *list);
+
+gboolean fsexam_convert_scenario_for_content (FSEXAM_setting *setting);
+
+gboolean fsexam_restore_content (FSEXAM_setting *setting, GList *list);
+
+#endif //_FSEXAM_CONVCONTENT_H
--- a/src/cmd/fsexam/src/fsexam-conversion.c	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1013 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-#include <libgnome/gnome-i18n.h>
-#include <glib.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include "encode.h"
-#include "fsexam-history.h"
-#include "fsexam-preference.h"
-#include "fsexam-content.h"
-#include "fsexam.h"
-
-void
-fsexam_undo_insert (guint serial)
-{
-  view->undo_list = g_slist_insert (view->undo_list, (gpointer)serial, -1);
-
-  gtk_widget_set_sensitive (view->undo_menuitem, TRUE);
-}
-
-static guint
-fsexam_undo_remove ()
-{
-  GSList *last = g_slist_last (view->undo_list);
-  guint serial = (guint)last->data;
-
-  view->undo_list = g_slist_remove (view->undo_list, (gpointer) last->data);
-
-  if (view->undo_list == NULL)
-    gtk_widget_set_sensitive (view->undo_menuitem, FALSE);
-
-  return serial;
-}
-
-void
-fsexam_undo_removeall ()
-{
-  g_slist_free (view->undo_list);
-
-  view->undo_list = NULL;
-
-  gtk_widget_set_sensitive (view->undo_menuitem, FALSE);
-}
-
-
-int indexg;
-static void
-fsexam_convert_candidate_set (GtkWidget *widget,
-			      gpointer user_data)
-{
-  indexg = (int)user_data;
-}
-
-static gboolean
-fsexam_convert_construct_ui (Encoding *encode,
-			     gint index,
-			     va_list args)
-{
-  GtkWidget *table;
-  GtkWidget *entry;
-  GtkWidget *radio;
-  GtkWidget **radio_group;
-
-  table = va_arg (args, GtkWidget *);
-  radio_group = va_arg (args, GtkWidget **);
-
-  if (!*radio_group)
-    radio = *radio_group = gtk_radio_button_new_with_label (NULL,
-					     encode->codename);
-  else
-    radio = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (*radio_group),
-					    encode->codename);
-
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     radio,
-			     0, 1, index, index+1);
-
-  entry = gtk_entry_new ();
-  gtk_entry_set_text (GTK_ENTRY (entry),
-		      encode->u.converted_text);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     entry,
-			     1, 2, index, index+1);
-  g_signal_connect (G_OBJECT (radio),
-			      "toggled",
-			      G_CALLBACK (fsexam_convert_candidate_set),
-			      (gpointer)index);
-
-  return TRUE;
-}
-
-/*
- * Create the candidate dialog which lists candidates for user
- * to select which one is the best one.
- * Return the index number of the toggled button, if no button
- * is toggled, return 0, the index number of the first button.
- */
-static gint
-fsexam_convert_with_candidates (FSEXAM_pref *pref)
-{
-  GtkWidget *dialog;
-  GtkWidget *hbox;
-  GtkWidget *stock;
-  GtkWidget *table;
-  GtkWidget *radio_group = NULL;
-  gint response;
-
-  dialog = gtk_dialog_new_with_buttons (_("File System Examiner name conversion"),
-					GTK_WINDOW (view->mainwin),
-					GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
-					GTK_STOCK_CANCEL,
-					GTK_RESPONSE_CANCEL,
-					GTK_STOCK_OK,
-					GTK_RESPONSE_OK,
-					NULL);
-
-  hbox = gtk_hbox_new (FALSE, 8);
-  gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
-		      hbox,
-		      FALSE,
-		      FALSE,
-		      0);
-
-  stock = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION,
-				    GTK_ICON_SIZE_DIALOG);
-  gtk_box_pack_start (GTK_BOX (hbox),
-		      stock,
-		      FALSE, FALSE, 0);
-
-  table = gtk_table_new (g_list_length (pref->encode_list), 3, FALSE);
-  gtk_table_set_row_spacings (GTK_TABLE (table), 4);
-  gtk_table_set_col_spacings (GTK_TABLE (table), 4);
-  gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
-
-  // initialize the global variable
-  indexg = -1;
-  iterate_encode_with_func (pref->encode_list, (void *)fsexam_convert_construct_ui, 
-			    table, &radio_group);
-
-  gtk_widget_show_all (hbox);
-  response = gtk_dialog_run (GTK_DIALOG (dialog));
-  if (response == GTK_RESPONSE_OK)
-    {
-      int index = 0;
-      // translate into the index in encode list
-      if (indexg == -1) 
-	iterate_encode_with_func (pref->encode_list,
-				  (void *)translate_encode_index,
-				  &index,
-				  &indexg);
-    }
-  else
-    indexg = -1;
-
-  gtk_widget_destroy (dialog);
-
-  return indexg;
-}
-
-/*
- * Execute the 'rename' action with the new filename
- * return TRUE if it works, otherwise, return FALSE
- * If failed, update the status bar with one specific error message 
- */
-static gboolean
-fsexam_filename_rename (gchar *dir,
-			gchar *oldname,
-			gchar *newname)
-{
-  gchar *original, *new;
-  gint val = -1;
-
-  original = g_new0 (gchar, strlen (dir) + strlen (oldname) + 2);
-  g_sprintf (original, "%s/%s", dir, oldname);
-
-  new = g_new0 (gchar, strlen (dir) + strlen (newname) + 2);
-  g_sprintf (new, "%s/%s", dir, newname);
-
-  if (g_file_test (new, G_FILE_TEST_IS_DIR))
-    {
-      fsexam_statusbar_update (_("Folder already exists"));
-      goto _ERR;
-    }
-  else if (g_file_test (new, G_FILE_TEST_EXISTS))
-    {
-      fsexam_statusbar_update (_("File already exists"));
-      goto _ERR;
-    }
-
-  if ((val = rename (original, new)) == -1)
-    {
-      // failed, update the status bar with error message
-      GFileError err;
-      char *msg = NULL;
-
-      // FIXME add more error message
-      err = g_file_error_from_errno (errno);
-      switch (errno)
-	{
-	case EACCES:
-	  msg = g_strdup_printf (_("No permission to rename"));
-	  break;
-	case ENOENT:
-	  msg = g_strdup_printf (_("File doesn't exist yet"));
-	  break;
-	}
-
-      if (msg) 
-	{
-	  fsexam_statusbar_update (msg);
-	  g_free (msg);
-	}
-    }
-
- _ERR:
-  g_free (original);
-  g_free (new);
-
-  return (val == 0);
-}
-
-/*
- * Concatenate each part to generate its full path name
- * The returned GString should be freed with g_string_free ()
- */
-GString *
-fsexam_filename_get_path (GtkTreeModel *model,
-			  GtkTreeIter iter,
-			  gchar *fullpath)
-{
-  GtkTreeIter parent;
-  GString *dir;
-
-  dir = g_string_new (NULL);
-
-  while (gtk_tree_model_iter_parent (model, &parent, &iter))
-    {
-      gchar *filename;
-
-      gtk_tree_model_get (model, &parent,
-			  FILENAME_COLUMN, &filename,
-			  -1);
-      iter = parent;
-      
-      dir = g_string_prepend (dir, filename);
-      dir = g_string_prepend (dir, "/");
-
-      g_free (filename);
-    }
-
-  if (fullpath)
-    {
-      // if it ends with '/', modify it to avoid two consecutive slashes
-      char *ch = fullpath + strlen (fullpath) - 1;
-
-      if (*ch == '/') *ch = 0;
-      dir = g_string_prepend (dir, fullpath);
-    }
-
-  return dir;
-}
-
-/*
- * Look backward in text buffer to get the above directory name
- * Return the directory name if found, otherwise, return NULL
- */
-static char *
-fsexam_buffer_search_backward (GtkTextBuffer *buffer,
-			       gint lineoffset)
-{
-  char *text = NULL;
-  GtkTextIter start, end;
-
-  while (lineoffset>=0)
-    {
-      gtk_text_buffer_get_iter_at_line_offset (buffer, &start, lineoffset, 0);
-      gtk_text_buffer_get_iter_at_line_offset (buffer, &end, lineoffset+1, 0);
-      text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE);
-
-      // test if the line in text buffer contains directory name
-      if (*text != '\n' && *text != '\t') break;
-
-      --lineoffset;
-      g_free (text);
-      text = NULL;
-    }
-
-  return text;
-}
-
-static gboolean
-write_to_buffer_in_report_pane (Encoding *encode,
-				gint index,
-				va_list args)
-{
-  gchar text[256];
-  ConvType convtype;
-  GtkTextBuffer *buffer;
-  GtkTextIter *iter;
-  GtkTextTag *colortag;
-  char *filename;
-  gint idx;
-
-  memset (text, 0, 256);
-
-  convtype = va_arg (args, ConvType);
-  buffer = va_arg (args, GtkTextBuffer *);
-  iter = va_arg (args, GtkTextIter *);
-  colortag = va_arg (args, GtkTextTag *);
-  filename = va_arg (args, char *);
-  idx = va_arg (args, int);
-
-  if (idx != index) return TRUE;
-
-  switch (convtype)
-    {
-    case ConvName:
-      g_sprintf (text, "\t[F] %s -- %s -> UTF8\n", encode->u.converted_text, encode->codename); 
-      break;
-    case ConvContent:
-      g_sprintf (text, "\t[C] %s -- %s -> UTF8\n", filename, encode->codename);
-      break;
-    case ConvContentWithCRLF:
-      g_sprintf (text, "\t[C] %s -- %s -> UTF8: %s\n", filename, encode->codename, _("delete Carriage Return"));
-      break;
-    }
-
-  gtk_text_buffer_get_iter_at_line (buffer, iter, view->lineoffset);
-
-  // use blue as background to indicate which encoding is used to convert
-  // gtk_text_buffer_insert_with_tags (buffer, iter, text, -1, colortag, NULL);
-  gtk_text_buffer_insert (buffer, iter, text, -1);
-  ++view->lineoffset;
-
-  return TRUE;
-}
-
-/*
- * Write the conversion result to report pane.
- * Use bold font to render directory name and blue as background in text buffer
- * to indicate which encoding is used to convert
- */
-int
-write_to_report_pane (FSEXAM_pref *pref, 
-		      ConvType convtype,
-		      gint index,
-		      gchar *path,
-		      gchar *filename,
-		      gint lineoffset)
-{
-  GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view->contents));
-  GtkTextIter iter;
-  char *text;
-  static GtkTextTag *boldtag = NULL, *colortag = NULL;
-
-  if (!boldtag)
-    boldtag = gtk_text_buffer_create_tag (buffer, "bold_tag",
-					  "font", "bold",
-					  "size_points", 12.0,
-					  NULL);
-  if (!colortag)
-    colortag = gtk_text_buffer_create_tag (buffer, "blue_foreground",
-					   "foreground", "blue",
-					   NULL);
-
-  if (lineoffset && (text = fsexam_buffer_search_backward (buffer, lineoffset -1)) &&
-      !strcmp (text, path))
-    {
-      // the current file is under the same directory with the above file
-      gtk_text_buffer_get_iter_at_line (buffer, &iter, lineoffset);
-      g_free (text);
-    }
-  else
-    {
-      // different directory, write the new directory name to text buffer
-      gtk_text_buffer_get_iter_at_line (buffer, &iter, lineoffset);
-      gtk_text_buffer_insert_with_tags (buffer, &iter, path, -1, boldtag, NULL);
-
-      ++view->lineoffset;
-    }
-
-  if (index == -1 || 
-      (convtype != ConvName && convtype != ConvContent && convtype != ConvContentWithCRLF))
-    {
-      gchar text[256];
-      gchar *codename = "native";
-
-      memset (text, 0, 256);
-      switch (convtype)
-	{
-	case ConvContentCRLFOnly:
-	  g_sprintf (text, "\t[C] %s: %s\n", filename, _("delete Carriage Return only"));
-	  break;
-	case ConvNameReverse:
-	  g_sprintf (text, "\t[UF] %s -- UTF8 -> %s\n", filename, codename);
-	  break;
-	case ConvContentReverse:
-	  g_sprintf (text, "\t[UC] %s -- UTF8 -> %s\n", filename, codename);
-	  break;
-	case ConvContentWithCRLFReverse:
-	  g_sprintf (text, "\t[UC] %s -- UTF8 -> %s: %s\n", filename, codename, _("add Carriage Return"));
-	  break;
-	case ConvContentCRLFOnlyReverse:
-	  g_sprintf (text, "\t[UC] %s: %s\n", filename, _("add Carriage Return only"));
-	  break;
-	}
-
-      gtk_text_buffer_insert (buffer, &iter, text, -1);
-      ++view->lineoffset;
-    }
-  else
-    iterate_encode_with_func (pref->encode_list, (void *)write_to_buffer_in_report_pane,
-			    convtype, buffer, &iter, colortag, filename, index);
-
-  return 0;
-}
-
-/*
- * Given name, check if it is UTF8, use the sequece of question mark
- * to replace the non-utf8 part and append the ":\n" to the new string 
- * for convenience if newline_flag is set to TRUE.
- */
-char *
-fsexam_validate_with_newline (char *name,
-			      gboolean newline_flag)
-{
-  char *text, *end;
-  int length;
-
-  if (newline_flag)
-    {
-      text = g_new0 (char, strlen (name) + 3);
-      g_sprintf (text, "%s:\n", name);
-    }
-  else
-    text = g_strdup (name);
-
-  length = strlen (text);
-
-  while (!g_utf8_validate (text, length, (const char **)&end)) *end = 0x3f;
-
-  return text;
-}
-
-static void
-fsexam_filename_convert_file (GtkTreeModel *model,
-			      GtkTreeIter *iter,
-			      gboolean same_serial)
-{
-  gchar *filename;
-  FSEXAM_pref *pref = view->pref;
-  Score score;
-
-  gtk_tree_model_get (model, iter,
-		      FILENAME_COLUMN, &filename,
-		      -1);
-
-  // if it is UTF8 encoding already, do nothing
-  score = decode_analyzer (pref->encode_list, ConvName, filename, strlen (filename));
-  if (score == FAIL)
-    {
-      fsexam_statusbar_update (_("File name - conversion failure"));
-      goto done;
-    }
-
-  if (score == ORIGINAL)
-    fsexam_statusbar_update (_("File name - UTF8 already"));
-  else
-    {
-      GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view->treeview));
-      gint index = 0;
-      Encoding *en;
-      GString *dir;
-
-      // Need reselection
-      if (same_serial)
-	gtk_tree_selection_select_iter (selection, iter);
-
-      if (!pref->auto_mode)
-	index = fsexam_convert_with_candidates (pref);
-      else
-	index = get_first_encode_index (pref->encode_list); 
-
-      //conversion isn't needed any more
-      if (index == -1) goto done;
-
-      en = (Encoding *)g_list_nth_data (pref->encode_list, index);
-
-      dir = fsexam_filename_get_path (model, *iter, view->rootdir);
-
-      if (fsexam_filename_rename (dir->str, filename,
-				  en->u.converted_text))
-	{
-	  char *text;
-	  guint serial;
-
-	  // write the pair of filenames into history file
-	  serial = fsexam_history_put (view->histinfo, 
-				       ConvName, 
-				       filename, 
-				       en->u.converted_text, 
-				       dir->str,
-				       same_serial);
-
-	  if (!same_serial)
-	    fsexam_undo_insert (serial);
-
-	  gtk_tree_store_set (GTK_TREE_STORE (model), iter,
-			      FILENAME_COLUMN, en->u.converted_text,
-			      -1);
-
-	  // indicate which encoding is used in the status bar
-	  fsexam_statusbar_update (en->codename);
-
-	  // to make sure that directory name is UTF8 encoding
-	  text = fsexam_validate_with_newline (dir->str, TRUE);
-
-	  // FIXME should we delete the conversion information due to undo?
-	  //
-	  // lineoffset records the current line in the text buffer
-	  view->lineoffset += write_to_report_pane (pref, ConvName, index, text, 
-				filename, view->lineoffset);
-
-	  g_free (text);
-	}
-
-      g_string_free (dir, TRUE);
-    }
-
-done:
-  g_free (filename);
-}
-
-static gboolean
-is_dummy_iter(GtkTreeModel *model,
-	      GtkTreeIter *iter)
-{
-  gchar *filename;
-  int retval;
-
-  gtk_tree_model_get (model, iter,
-		      FILENAME_COLUMN, &filename,
-		      -1);
-
-  retval = strcmp (filename, "");
-
-  g_free (filename);
-
-  return (retval == 0);
-}
-
-static void
-fsexam_filename_convert_dir (GtkTreeModel *model,
-			     GtkTreeIter *child,
-			     GtkTreeIter *iter)
-{
-  GtkTreePath *path = gtk_tree_model_get_path (model, iter);
-  GtkTreeIter subiter;
-  gboolean loaded = TRUE;
-
-  gtk_tree_model_get (model, iter,
-		      LOADED_COLUMN, &loaded,
-		      -1);
-
-  // if the row is collapsed and its subiters have been loaded already, 
-  // expand it!
-  if (loaded && !gtk_tree_view_row_expanded (GTK_TREE_VIEW (view->treeview), path))
-    gtk_tree_view_expand_row (GTK_TREE_VIEW (view->treeview), path, TRUE);
-
-  gtk_tree_path_free (path);
-
-  do
-    {
-      fsexam_filename_convert_file (model, child, TRUE);
-
-      if (gtk_tree_model_iter_children (model, &subiter, child) &&
-	  !is_dummy_iter (model, &subiter))
-	fsexam_filename_convert_dir (model, &subiter, child);
-    }
-  while (gtk_tree_model_iter_next (model, child));
-
-  return;
-}
-
-static void
-fsexam_filename_convert_single_selection (GtkTreeModel *model,
-					  GtkTreePath  *path,
-					  GtkTreeIter  *iter,
-					  gpointer     user_data)
-{
-  GtkTreeIter subiter;
-  gint *indicator = user_data;
-
-  fsexam_filename_convert_file (model, iter, *indicator != 0);
-
-  // check if the selected node is one directory and if recursive mode
-  // is set, wall through the whole directory to convert with
-  // fsexam_filename_convert_file ()
-  if (view->pref->recur_mode &&
-      gtk_tree_model_iter_children (model, &subiter, iter) &&
-      !is_dummy_iter (model, &subiter))
-    fsexam_filename_convert_dir (model, &subiter, iter);
-
-  ++*indicator;
-}
-
-/*
- * convert the specified file/directory
- */
-void
-fsexam_filename_convert ()
-{
-  GtkTreeSelection *selection;
-  gint same_serial_indicator = 0;
-
-  // Do nothing if view->rootdir isn't set yet
-  if (!view->rootdir) return;
-
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view->treeview));
-
-  gtk_tree_selection_selected_foreach (selection,
-				       fsexam_filename_convert_single_selection,
-				       (gpointer) &same_serial_indicator);
-}
-
-static gboolean
-fsexam_do_reverse (GtkTreeModel *model,
-		   GtkTreeIter *iter,
-		   ConvType convtype,
-		   gchar *path,
-		   gchar *filename,
-		   gchar *oldname)
-{
-  char *target_encode = oldname;
-  char name[256];
-  char *text;
-  gboolean retval = FALSE;
-
-  memset (name, 0, 256);
-  g_sprintf (name, "%s/%s", path, filename);
-  text = fsexam_validate_with_newline (path, TRUE);
-
-  switch (convtype)
-    {
-    case ConvName:
-      if (fsexam_filename_rename (path, filename, oldname))
-	{
-	  gchar *str = fsexam_validate_with_newline (oldname, FALSE);
-
-	  gtk_tree_store_set (GTK_TREE_STORE (model), iter,
-			    FILENAME_COLUMN, oldname,
-			    -1);
-	  write_to_report_pane (view->pref, GetConvTypeReverse (convtype), -1, text,
-				str, view->lineoffset);
-
-	  retval = TRUE;
-	  g_free (str);
-	}
-      break;
-    case ConvContent:
-    case ConvContentWithCRLF:
-    case ConvContentCRLFOnly:
-      {
-	gchar *str = fsexam_validate_with_newline (filename, FALSE);
-
-	if (fsexam_content_undo (name, target_encode, convtype))
-	  write_to_report_pane (view->pref, GetConvTypeReverse (convtype), -1, text,
-			      str, view->lineoffset);
-	retval = TRUE;
-	g_free (str);
-      }
-      break;
-    defaults:
-      break;
-    }
-
-  g_free (text);
-
-  return retval;
-}
-
-static void 
-fsexam_reverse_single_selection (GtkTreeModel *model,
-				 GtkTreePath  *path,
-				 GtkTreeIter  *iter,
-				 gpointer     user_data)
-{
-  char *oldname, *filename, *text, *value;
-  GString *dir;
-  ConvType convtype;
-  gint *indicator = (gint *)user_data;
-  guint serial;
-
-  gtk_tree_model_get (model, iter, FILENAME_COLUMN, &filename, -1);
-
-  dir = fsexam_filename_get_path (model, *iter, view->rootdir);
-
-  if (oldname = fsexam_history_get_reverse_by_value(view->histinfo,
-						     &convtype,
-						     filename,
-						     dir->str))
-    {
-      if (convtype == ConvName)
-	{
-	  text = filename;
-	  value = oldname;
-	}
-      else
-	{
-	  text = oldname;
-	  value = filename;
-	}
-
-      if (fsexam_do_reverse (model, iter, convtype,
-			     dir->str, filename, oldname))
-	{
-	  serial = fsexam_history_put (view->histinfo,
-				       GetConvTypeReverse (convtype),
-				       text,
-				       value,
-				       dir->str,
-				       *indicator != 0);
-	  if (*indicator == 0)
-	    fsexam_undo_insert (serial);
-
-	  ++*indicator;
-	}
-    }
-  else
-    goto Err;
-
-  // Need look backward further to check whether the other conversion
-  // exists, if yes, reverse it.
-  switch (convtype)
-    {
-    case ConvName:
-      convtype = ConvContent;
-      g_free (filename);
-      filename = g_strdup (oldname);
-      break;
-    case ConvContent:
-    case ConvContentWithCRLF:
-    case ConvContentCRLFOnly:
-      convtype = ConvName;
-      break;
-    }
-
-  if (!oldname) g_free (oldname);
-
-  if (oldname = fsexam_history_get_reverse_by_value2 (view->histinfo,
-						      &convtype,
-						      filename,
-						      dir->str))
-    {
-      if (convtype == ConvName)
-	{
-	  text = filename;
-	  value = oldname;
-	}
-      else
-	{
-	  text = oldname;
-	  value = filename;
-	}
-      
-      if (fsexam_do_reverse (model, iter, convtype,
-			     dir->str, filename, oldname))
-	fsexam_history_put (view->histinfo,
-			  GetConvTypeReverse (convtype),
-			  text,
-			  value,
-			  dir->str,
-			  TRUE);
-
-      g_free (oldname);
-    }
-
- Err:
-  g_string_free (dir, TRUE);
-  g_free (filename);
-}
-
-/*
- * Reverse all possible changes that have been made:
- *             file name
- *             file content
- */
-void
-fsexam_reverse ()
-{
-  GtkTreeSelection *selection;
-  gint same_serial_indicator = 0;
-
-  // Do nothing if view->rootdir isn't set yet
-  if (!view->rootdir) return;
-
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view->treeview));
-  
-  gtk_tree_selection_selected_foreach (selection,
-				       fsexam_reverse_single_selection,
-				       (gpointer) &same_serial_indicator);
-}
-
-/*
- * Walk through the iter and and make recursive call to get the node
- * by comparing its content with the 'name', it is gurenteered that
- * the 'name' wouldn't start with '/'.
- * Return TRUE if node is found, otherwise, return FALSE
- */ 
-static gboolean
-get_iter (GtkTreeModel *model,
-          GtkTreeIter *iter,
-          GtkTreeIter *node,
-          char *name)
-{
-  char *ch = name, *subname = NULL;
-
-  // the name wouldn't start with '/'
-  while (*ch != 0x0 && *ch != '/') ++ch;
-  if (*ch == '/') { *ch = 0x0; subname = ++ch; }
-
-  do
-    {
-      char *filename;
-
-      gtk_tree_model_get (model, iter,
-			  FILENAME_COLUMN, &filename,
-			  -1);
-
-      if (!strcmp (name, filename))
-	{
-	  GtkTreeIter subiter;
-
-	  g_free (filename);
-
-	  // the innest node, got it
-	  if (*ch == 0x0)
-	    {
-	      *node = *iter;
-	      return TRUE;
-	    }
-
-	  if (gtk_tree_model_iter_children (model, &subiter, iter) &&
-	      !is_dummy_iter (model, &subiter))
-	    {
-	      if (get_iter (model, &subiter, node, subname))
-		return TRUE;
-	      else
-		return FALSE;
-	    }
-	}
-      else
-	g_free (filename);
-    }
-  while (gtk_tree_model_iter_next (model, iter));
-
-  return FALSE;
-}
-
-/*
- * Get the relative name by concatenate 'path' and 'filename'
- * and comparing it with 'root' and return 'subname',
- * if don't match, return NULL
- */
-static char *
-get_relative_name (char *path, 
-		   char *filename, 
-		   char *root)
-{
-  char *name, *subname, *pName, *pRoot;
-
-  name = g_new0 (char, strlen (path) + strlen (filename) + 2);
-  if (path[strlen (path) -1] == '/')
-    g_sprintf (name, "%s%s", path, filename);
-  else
-    g_sprintf (name, "%s/%s", path, filename);
-
-  pName = name; pRoot = root;
-  while (*pName && *pRoot && *pName == *pRoot)
-    { ++pName; ++pRoot; }
-
-  if (*pRoot)
-    {
-      g_free (name);
-      return NULL;
-    }
-
-  // make sure the subname wouldn't start with '/'
-  if (*pName == '/') ++pName;
-
-  subname = g_strdup (pName);
-
-  g_free (name);
-
-  return subname;
-}
-
-void
-fsexam_undo ()
-{
-  char *oldname, *newname, *pathname;
-  ConvType convtype;
-  GtkTreeIter iter, node;
-  GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (view->treeview));
-  unsigned int serial;
-
-  if (view->undo_list == NULL) return;
-  serial = fsexam_undo_remove ();
-
-  while (fsexam_history_undo (view->histinfo, serial, &convtype,
-			       &oldname, &newname, &pathname))
-    {
-      char *subname;
-      char *native_encode = oldname;
-      char name[256];
-      char *text;
-
-      memset (name, 0, 256);
-      g_sprintf (name, "%s/%s", pathname, newname);
-      text = fsexam_validate_with_newline (pathname, TRUE);
-
-      if (!g_file_test (name, G_FILE_TEST_EXISTS)) continue;
-
-      subname = get_relative_name (pathname, newname, view->rootdir);
-
-      switch (convtype)
-	{
-	case ConvName:
-	  // fsexam filename undo
-	  gtk_tree_model_get_iter_first (model, &iter);
-	  if (get_iter (model, &iter, &node, subname))
-	    {
-	      gchar *str = fsexam_validate_with_newline (oldname, FALSE);
-
-	      gtk_tree_store_set (GTK_TREE_STORE (model), &node,
-				  FILENAME_COLUMN, oldname,
-				  -1);
-	      fsexam_filename_rename (pathname, newname, oldname);
-	      write_to_report_pane (view->pref, GetConvTypeReverse (convtype), -1, text,
-				    str, view->lineoffset);
-	      g_free (str);
-	    }
-	  break;
-	case ConvNameReverse:
-	  gtk_tree_model_get_iter_first (model, &iter);
-	  if (get_iter (model, &iter, &node, subname))
-	    {
-	      gtk_tree_store_set (GTK_TREE_STORE (model), &node,
-				  FILENAME_COLUMN, oldname,
-				  -1);
-
-	      fsexam_filename_rename (pathname, newname, oldname);
-
-	      // FIXME add write_to_report_pane
-	    }
-	  break;
-	case ConvContent:
-	case ConvContentWithCRLF:
-	case ConvContentCRLFOnly:
-	  if (fsexam_content_undo (name, native_encode, convtype))
-	    {
-	      gchar *str = fsexam_validate_with_newline (newname, FALSE);
-
-	      write_to_report_pane (view->pref, GetConvTypeReverse (convtype), -1, text,
-				str, view->lineoffset);
-	      g_free (str);
-	    }
-	  break;
-	case ConvContentReverse:
-	case ConvContentWithCRLFReverse:
-	case ConvContentCRLFOnlyReverse:
-	  // FIXME add write_to_report_pane
-	  fsexam_content_undo (name, native_encode, convtype);
-	  break;
-	}
-
-      g_free (newname), g_free (oldname);
-      g_free (pathname), g_free (subname);
-      g_free (text);
-    }
-}
--- a/src/cmd/fsexam/src/fsexam-conversion.h	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#ifndef _FSEXAM_CONVERSION_
-#define _FSEXAM_CONVERSION_
-
-void fsexam_undo_insert (unsigned int);
-void fsexam_undo_removeall ();
-void fsexam_filename_convert();
-void fsexam_undo ();
-void fsexam_reverse();
-GString *fsexam_filename_get_path (GtkTreeModel *, GtkTreeIter, char *);
-char *fsexam_validate_with_newline (char *, gboolean);
-int write_to_report_pane (FSEXAM_pref *, ConvType, gint, char *, char *, int);
-
-#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-convname.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,1392 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <strings.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <dirent.h>
+#include <libgen.h>
+#include <unistd.h>
+
+#include "fsexam-header.h"
+#include "fsexam-convcontent.h"
+
+/* Append SUFFIX when has duplicated name */
+#define SUFFIX  "utf-8"
+
+static gboolean write_to_disk (FSEXAM_setting *,
+                               const gchar *path,
+                               const gchar *origname,
+                               const gchar *utf8name,
+                               short from_encoding,
+                               short to_encoding,
+                               gchar **actualname);
+
+static gboolean real_convert (FSEXAM_setting *setting, 
+                              const gchar *dname, 
+                              const gchar *bname, 
+                              gchar **newname);
+static gboolean convert_symlink_target_node (
+                              GNode *node, 
+                              FSEXAM_setting *setting, 
+                              gboolean restore);
+static gboolean wrapped_convert_node (GNode *node, FSEXAM_setting *setting);
+static gboolean wrapped_restore_convert_node (GNode *node, gpointer data);
+static gboolean convert_node (GNode *node, gpointer data);
+static gboolean dryrun_convert_node (GNode *node, gpointer data);
+static gboolean restore_convert_node (GNode *node, gpointer data);
+static gboolean fsexam_convert_scenario_for_name (FSEXAM_setting *setting);
+static gboolean fsexam_restore_name (FSEXAM_setting *setting, GList *list);
+static gboolean _convert_directory (FSEXAM_setting *setting, const gchar *);
+static void     convert_directory (FSEXAM_setting *setting, GNode *node);
+static gint     construct_candidate_list (GList *list, gboolean forname);
+
+
+/*
+ *  Recreate symlink from file in symlink_node to file in target_node
+ */
+static gboolean
+relink_symlink (GNode *symlink_node, 
+                GNode *target_node, 
+                FSEXAM_setting *setting)
+{
+    gchar     *symlink_contents = NULL;
+    gchar     *symlink_path = NULL;
+    gchar     *target_path = NULL;
+    gchar     *log_msg = NULL;
+    gboolean  ret = FALSE;
+
+    if ((NULL == symlink_node) || (NULL == target_node) || (NULL == setting))
+        return FALSE;
+
+    symlink_path = fsexam_tree_get_path (symlink_node, FALSE);
+    symlink_contents = g_file_read_link (symlink_path, NULL);
+    
+    if (NULL == symlink_contents) {
+        fsexam_errno = ERR_CANNOT_READ;
+        goto done;
+    }
+
+    if (remove (symlink_path) == -1) {  /* delete original symlink */
+        fsexam_errno = ERR_CANNOT_RM_SYMLINK;
+        goto done;
+    }
+
+    if (*symlink_contents == '/') {     /* absolute symlink */
+        target_path = fsexam_tree_get_path (target_node, FALSE);
+    }else{
+        /* reconstruct symlink path for relative symlink */
+        gchar     *tmp = symlink_contents;
+        gchar     *cur = tmp;
+        GNode     *parent_node = symlink_node->parent;
+        gboolean  finish = FALSE;
+
+        while (!finish) {
+            if ((*tmp != '/') && (*tmp != '\0')) {
+                tmp++;
+                continue;
+            }else{                      /* got one subpath */
+                if (*tmp == '\0')
+                    finish = TRUE;
+                else
+                    *tmp = '\0';
+
+                if (strcmp (cur, ".") == 0) {
+                    /* no op */
+                }else if (strcmp (cur, "..") == 0) {
+                    parent_node = parent_node->parent;
+                }else if (strcmp (cur, "") == 0) {
+                    /* this means '//' in the symlink_contents */
+                    cur = "/";      
+                }else{
+                    GNode *gnode = fsexam_tree_search_name (parent_node, cur);
+                    if (gnode == NULL) {  /* fallback to use absolute path */
+                        g_free (target_path);
+                        target_path = fsexam_tree_get_path (target_node, FALSE);
+
+                        break;
+                    }else{
+                        TreeNode *tnode = (TreeNode *)gnode->data;
+
+                        if (TREENODE_IS_CONVERTED (tnode)) 
+                            cur = TREENODE_GET_UTF8 (tnode);
+                        else
+                            cur = TREENODE_GET_ORIG (tnode);
+                    }
+                    
+                    parent_node = parent_node->parent;
+                }
+               
+                if (target_path == NULL) {
+                    target_path = g_strdup (cur);
+                }else{
+                    if (strcmp (cur, "/") == 0) {
+                        cur = g_strdup_printf ("%s%s", target_path, cur);
+                    }else{
+                        cur = g_strdup_printf ("%s/%s", target_path, cur);
+                    }
+
+                    g_free (target_path);
+                    target_path = cur;
+                }
+
+                cur = ++tmp;
+            }
+        } /* endof while */
+    }
+
+    if (symlink (target_path, symlink_path) == -1) {
+        fsexam_errno = ERR_LOST_SYMLINK_FILE;
+        goto done;
+    }
+
+    ret = TRUE;
+
+done:
+    if (ret)    
+        log_msg = _("Re-create symbolic link success"); 
+
+    fsexam_log_puts (setting->log_info, symlink_path, log_msg);
+    if (setting->display_msg)
+        setting->display_msg (symlink_path, log_msg);
+
+    g_free (symlink_contents);
+    g_free (target_path);
+    g_free (symlink_path);
+
+    return ret;
+}
+
+/*====================================================================
+ *  Function Name:  write_to_disk
+ *
+ *  Parameters:
+ *      FSEXAM_setting *setting:
+ *      gchar *path:    The dir name which contain file to be renamed
+ *      gchar *orig:    The original name
+ *      gchar *utf8name:    The utf8 name
+ *      gchar **actualname: the actual name used if succeed
+ *
+ *  Desc:
+ *      Rename the file from orig to utf8name. If newname exists, then will 
+ *      find one new name, and actualname point to it.
+ *
+ *      Will handle log/history in this function, dryrun/restore
+ *      may call this function directly.
+ *
+ *  Return value:
+ *      If rename success, then return TRUE; 
+ *      otherwise(such as can't rename, can't write to log) return FALSE.
+ *
+ *  Author:     Yandong Yao 2006/08/31
+ ========================================================================*/ 
+static gboolean
+write_to_disk (FSEXAM_setting *setting, 
+               const gchar *path,      /* the path of current file */
+               const gchar *origname,  /* old base name            */
+               const gchar *utf8name,  /* new base name            */
+               short from_encoding,    /* from encoding            */
+               short to_encoding,      /* to encoding              */
+               gchar **actualname)      /* return the actual used   */
+{
+    static gchar    oldname[PATH_MAX];
+    static gchar    newname[PATH_MAX];
+    gchar           *retname = NULL;
+    gchar           *fname = NULL;
+    gchar           *msg = NULL;
+    gboolean        ret = FALSE;
+
+    if ((NULL == setting) || (NULL == path) || (NULL == origname) 
+            || (NULL == utf8name))
+        return FALSE;
+
+    fsexam_errno = ERR_OK;
+
+    /* construct full old name and full new name */
+    g_snprintf (oldname, PATH_MAX - 1, "%s/%s", path, origname);
+    g_snprintf (newname, PATH_MAX - 1, "%s/%s", path, utf8name);
+
+    /* whether newname == oldname? */
+    if (strcmp (utf8name, origname) == 0) {
+        fsexam_errno = ERR_NAME_SAME;
+        goto done;
+    }
+
+    if (g_file_test (newname, G_FILE_TEST_EXISTS)) {
+        fsexam_errno = ERR_NAME_EXIST;
+        fname = find_non_exist_name (newname);
+
+        if (fname == NULL) {
+            fsexam_errno = ERR_CANNOT_RENAME;
+        }else if (rename(oldname, fname) == 0){
+            retname = g_strdup (basename (fname));
+            ret = TRUE;
+        }else{
+            fsexam_errno = ERR_CANNOT_RENAME;
+        }
+    }else{
+        if (rename(oldname, newname) == 0){
+            retname = g_strdup (utf8name);
+            ret = TRUE;
+        }else{
+            fsexam_errno = ERR_CANNOT_RENAME; /* inc dup name */
+        }
+    }
+
+    if (ret) { 
+        if (! (setting->flags & FSEXAM_SETTING_FLAGS_UNDO)) {
+            gboolean same_serial = TRUE;
+
+            if (setting->flags & FSEXAM_SETTING_FLAGS_DIFF_SERIAL) {
+                setting->flags &= ~FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+                same_serial = FALSE;
+            }
+
+            fsexam_history_put (setting->hist_info, 
+                                ConvName, 
+                                newname,
+                                from_encoding, 
+                                to_encoding, 
+                                same_serial);
+        }
+
+        if (setting->update_gui) {
+            setting->update_gui (setting, path, origname, retname);
+        }
+        
+        ++setting->succ_num;
+    } else {
+        ++setting->fail_num;
+    }
+       
+done:
+    msg = g_strdup_printf (_("[Name] %s -> %s"), 
+                        id2encoding (from_encoding), 
+                        id2encoding (to_encoding));
+
+    /* Display messages to user */
+    if (setting->display_msg) {
+        if (ret) 
+            setting->display_msg (newname, msg);
+        else
+            setting->display_msg (oldname, fsexam_error_get_msg ());
+    }
+
+    /* Writting log */
+    if (fsexam_errno == ERR_OK) {
+        fsexam_log_puts (setting->log_info, newname, msg);
+    }else if (fsexam_errno == ERR_NAME_EXIST) {
+        fsexam_log_puts (setting->log_info, fname, NULL);
+    }else{
+        fsexam_log_puts (setting->log_info, newname, NULL);
+    }
+    
+    if (actualname != NULL)
+        *actualname = retname;  //freed outside
+    else
+        g_free (retname);
+
+    g_free (msg);
+    g_free (fname);
+
+    return ret;
+}
+
+/*====================================================================
+ *  Function Name:  real_convert
+ *
+ *  Parameters:
+ *      FSEXAM_setting *setting: 
+ *      const gchar *dname: the directory in which file reside
+ *      const gchar *bname: the filename without any directory name
+ *      gchar **newname: return the new name when success. Need free by caller
+ *
+ *  Desc:
+ *      real_convert() will convert the filename using provided encoding list,
+ *      and display candidates to user in interactive mode.
+ *
+ *      If success to rename file on the disk, then newname will contain the 
+ *      new name.
+ *
+ *      This function will handle log information also.
+ *
+ *      write_to_disk() will handle log either, because it can be call by
+ *      other funcs.
+ *
+ *  Return value:
+ *      If succeed to rename the file, return TRUE, otherwise return FALSE.
+ *      In dryrun mode, always return FALSE.
+ *
+ *      The most important usage for the return value is to determine whether
+ *      fsexam change the real file name on disk or not.
+ *
+ *  Author:     Yandong Yao 2006/09/01
+ ========================================================================*/ 
+static gboolean
+real_convert (FSEXAM_setting *setting, 
+              const gchar *dname, 
+              const gchar *bname, 
+              gchar **newname)
+{
+    Score       score;
+    gchar       *fullname = NULL;
+    gboolean    ret = FALSE;
+
+    if ((NULL == setting) || (NULL == dname) || (NULL ==bname))
+        return FALSE;
+
+    fsexam_errno = ERR_OK; 
+
+    fullname = g_strdup_printf ("%s/%s", dname, bname);
+
+    if (setting->pref->auto_detect) { /* handle encoding auto detection */
+        GList *detected_encoding;
+
+        detected_encoding = str_encoding_detect (bname, DEFAULT_DETECTING_FLAG);
+        setting->pref->encode_list = fsexam_encoding_add_auto (
+                                                setting->pref->encode_list, 
+                                                detected_encoding);
+        auto_encoding_free (detected_encoding);
+    }
+
+    score = fsexam_encoding_decode (setting->pref->encode_list, 
+                                    ConvName, 
+                                    (gchar *)bname, 
+                                    strlen(bname), 
+                                    setting->pref->force);
+
+
+    if (setting->pref->dry_run){    /* dry run */
+        ret = fsexam_dryrun_puts (setting->dryrun_info, 
+                                  fullname, 
+                                  score, 
+                                  setting->pref->encode_list, 
+                                  ConvName);    
+        ret ? ++setting->succ_num : ++setting->fail_num;
+    } else {                        /* real convert */  
+        gint        index = 0;
+        gchar       *actualname = NULL;
+        Encoding    *encoding = NULL;
+
+        if ((score == FAIL) || (score == ORIGINAL)){
+            fsexam_errno = (score == FAIL) ? ERR_NO_PROPER_ENCODING 
+                                           : ERR_NAME_UTF8_ALREADY;
+            fsexam_log_puts_folder_and_name (setting->log_info, 
+                                             dname, bname, 
+                                             NULL);
+            if (setting->display_msg)
+                setting->display_msg (fullname, fsexam_error_get_msg());
+
+            goto done;
+        }   
+       
+	    /* 
+	     * User may select don't ask me again
+	     */ 
+	    if (setting->gold_index != -1) {
+            index = setting->gold_index;
+	    } else if (setting->pref->auto_conversion) {
+            index = fsexam_encoding_get_first_index (
+                                        setting->pref->encode_list);
+        } else {
+            index = setting->get_index (setting->pref->encode_list, TRUE);
+        }
+
+        if (index == -1) {          /* cancel the selection */
+            fsexam_errno = ERR_CANCEL_CONVERSION;
+            goto done;
+        }
+
+        encoding = (Encoding *)g_list_nth_data (setting->pref->encode_list, 
+                                                index);
+        if (NULL == encoding){
+            fsexam_errno = ERR_ENCODING_INDEX_INVALID;
+            fsexam_log_puts_folder_and_name (setting->log_info, 
+                                             dname, bname, 
+                                             NULL);
+            if (setting->display_msg)
+                setting->display_msg (fullname, fsexam_error_get_msg());
+
+            goto done;
+        }
+
+        ret = write_to_disk (setting, 
+                             dname, 
+                             bname, 
+                             encoding->u.converted_text, 
+                             encoding->encodingID, 
+                             encoding2id ("UTF-8"),
+                             &actualname);
+
+        if ((ret) && (newname)) {   // Return new name
+            *newname = actualname;
+        }else{
+            g_free (actualname);
+        }
+    }
+    
+done:
+    if (setting->pref->auto_detect)
+        setting->pref->encode_list = fsexam_encoding_remove_auto (
+                                                setting->pref->encode_list);
+
+    g_free (fullname);
+
+    return ret;
+}
+
+/*
+ * convert one directory recursively. won't care about symlink
+ */
+static gboolean
+common_convert_directory (FSEXAM_setting *setting, 
+                          const gchar *dname, 
+                          gboolean restore)
+{
+    struct stat     statbuf;
+    struct dirent   *dirp = NULL;
+    DIR             *dp = NULL;
+    gchar           *childname = NULL;
+    gboolean        ret = FALSE;
+
+    if ((NULL == dname) || (NULL == setting))
+        return FALSE;
+
+    if ((dp = opendir (dname)) == NULL){
+        fsexam_errno = ERR_CANNOT_OPEN;
+        fsexam_log_puts (setting->log_info, dname, NULL);
+            if (setting->display_msg)
+                setting->display_msg (dname, fsexam_error_get_msg());
+
+        return ret;
+    }
+
+    while ((dirp = readdir (dp)) != NULL){
+        if ((strcmp (dirp->d_name, ".") == 0)
+                || (strcmp (dirp->d_name, "..") == 0))
+            continue;
+
+        fsexam_errno = ERR_OK;
+
+        childname = g_strdup_printf ("%s/%s", dname, dirp->d_name);
+
+        /* need convert this filename or not? */
+        if (lstat (childname, &statbuf) == -1) 
+            fsexam_errno = ERR_FILE_NONEXIST;
+        else if (!(S_ISREG(statbuf.st_mode)) 
+                && !(S_ISDIR(statbuf.st_mode)) && !(S_ISLNK(statbuf.st_mode))){
+            fsexam_errno = ERR_FILE_TYPE_NOT_SUPPORT; 
+        }else if ((! setting->pref->hidden) && (*(dirp->d_name) == '.')){
+            fsexam_errno = ERR_IGNORE_HIDDEN_FILE;
+        }else if ((!setting->pref->remote) 
+                && (is_remote_file (setting->remote_path, childname))) {
+            fsexam_errno = ERR_IGNORE_REMOTE_FILE;
+        } 
+
+        if (fsexam_errno != ERR_OK) {
+            fsexam_log_puts (setting->log_info, childname, NULL);
+            if (setting->display_msg)
+                setting->display_msg (childname, fsexam_error_get_msg());
+            g_free (childname);
+            continue;
+        }
+    
+        if ((!setting->pref->force) 
+                && (str_isutf8 (dirp->d_name, DEFAULT_DETECTING_FLAG))) {
+            fsexam_errno = ERR_NAME_UTF8_ALREADY;
+        }
+
+        if (restore) {
+            //Currently tree for restore name has no -R node, so no-op
+        }else if (fsexam_errno != ERR_NAME_UTF8_ALREADY) {
+            gchar  *newname = NULL;
+
+            ret = real_convert (setting, dname, dirp->d_name, &newname);
+
+            if (ret && newname != NULL){
+                g_free (childname);
+                childname = g_strdup_printf ("%s/%s", dname, newname);
+                lstat(childname, &statbuf); 
+            }
+                
+            g_free (newname);
+        }
+
+        if (setting->flags & FSEXAM_SETTING_FLAGS_STOP) {
+            g_free (childname);
+            goto done;
+        }
+
+        if (! setting->pref->dry_run 
+                && setting->pref->special 
+                && fsexam_special_is_special_for_name (childname, setting)) {
+            gchar *hist_search_path;
+
+            /* history search path is for search Hist_item in history file */
+            hist_search_path = g_strdup_printf ("%s/%s", dname, dirp->d_name);
+            fsexam_compress_convert_name (setting, 
+                                          childname, 
+                                          hist_search_path, 
+                                          restore);
+            g_free (hist_search_path);
+        } else if (S_ISDIR(statbuf.st_mode)) {
+            _convert_directory(setting, childname);
+        }
+
+        g_free (childname);
+    }
+
+done:
+    closedir (dp);
+
+    return ret;
+}
+
+static gboolean
+_convert_directory (FSEXAM_setting *setting, const gchar *dname)
+{
+    return common_convert_directory (setting, dname, FALSE);
+}
+
+/*
+static gboolean
+_restore_directory (FSEXAM_setting *setting, const gchar *dname)
+{
+    return common_convert_directory (setting, dname, TRUE);
+}
+*/
+
+/*
+ *  convert to fullpath, then call _convert_directory
+ */
+static void
+convert_directory (FSEXAM_setting *setting, GNode *node)
+{
+    gchar *dir = fsexam_tree_get_path (node, FALSE); 
+
+    _convert_directory (setting, dir);
+
+    return;
+}
+
+/*
+ * Convert the symlink target, and convert parent first if has not do.
+ */
+static gboolean
+convert_symlink_target_node (GNode *node, 
+                             FSEXAM_setting *setting, 
+                             gboolean restore)
+{
+    TreeNode    *tnode = NULL;
+
+    if ((NULL == node) || (NULL == setting))
+        return FALSE;
+    
+    tnode = (TreeNode *)node->data;
+
+    if (TREENODE_IS_TRAVERSED (tnode)) {
+        return TREENODE_IS_CONVERTED (tnode) ? TRUE : FALSE;
+    }
+
+    if (setting->flags & FSEXAM_SETTING_FLAGS_STOP)
+        return FALSE;    /* stop the recursive */
+
+    if ((node->parent != NULL) 
+        && (! TREENODE_IS_TRAVERSED ((TreeNode *)((node->parent)->data)))) {
+        convert_symlink_target_node (node->parent, setting, restore);
+    }
+
+    if (setting->flags & FSEXAM_SETTING_FLAGS_STOP)
+        return FALSE;    /* stop the recursive */
+
+    if (restore)
+        return wrapped_restore_convert_node (node, (gpointer)setting);
+    else
+        return wrapped_convert_node (node, (gpointer)setting);
+}
+
+/*============================================================================
+ * Function Name:   convert_node
+ *
+ * Parameters:
+ *      FSEXAM_setting *:   contain preference information
+ *      GNode *node:        The node which will be handled
+ *
+ * Desc:
+ *      GNode Traverse function. Convert one node in the whole tree. 
+ *      Need care about recursive flag
+ *
+ *      Because this function will called by g_node_traverse, so we need 
+ *      handle various error information here.
+ *
+ * Return value:
+ *      Return TRUE to stop g_node_traverse().
+ *
+ * Author:
+ *      Yandong Yao 2006/08/22
+ ============================================================================*/
+static gboolean 
+convert_node (GNode *node, gpointer data)
+{
+    FSEXAM_setting  *setting = (FSEXAM_setting *)data;
+
+    wrapped_convert_node (node, setting);
+
+    if (setting->flags & FSEXAM_SETTING_FLAGS_STOP)
+        return TRUE;
+
+    return FALSE;
+}
+
+/*
+ *  Return TRUE if current node has been converted.
+ */
+static gboolean
+wrapped_convert_node (GNode *node, FSEXAM_setting *setting)
+{
+    TreeNode        *tnode = node->data;
+    gboolean        node_converted = FALSE;
+    gchar           *fullpath = NULL;
+
+    if ((NULL == setting) || (NULL == tnode) 
+            || (TREENODE_IS_TRAVERSED (tnode))){
+        return FALSE;
+    }
+
+    TREENODE_SET_TRAVERSED (tnode, 1);  /* avoid infinite loop for symlink */
+
+    fsexam_errno = ERR_OK;
+
+    /* get stored error during tree construction */
+    if (TREENODE_FLAG_REMOTE_FILE (tnode)) {
+        fsexam_errno = ERR_IGNORE_REMOTE_FILE;
+    }else if (TREENODE_FLAG_HIDDEN_FILE (tnode)) {
+        fsexam_errno = ERR_IGNORE_HIDDEN_FILE;
+    }else if (TREENODE_FLAG_UTF8_ALREADY (tnode)) {
+        fsexam_errno = ERR_NAME_UTF8_ALREADY;
+    }
+
+    if (fsexam_errno != ERR_OK) {
+        fullpath = fsexam_tree_get_path (node, FALSE);
+        fsexam_log_puts (setting->log_info, fullpath, NULL);
+        if (setting->display_msg) {
+            setting->display_msg (fullpath, fsexam_error_get_msg ());
+        }
+
+        if (fsexam_errno != ERR_NAME_UTF8_ALREADY)
+            goto done;
+    }
+
+    if (TREENODE_IS_NEED_CONVERT (tnode)) {
+        gchar    *dir = fsexam_tree_get_path (node->parent, FALSE);
+        gchar    *bname = tnode->orig;
+        gchar    *newname = NULL;
+
+        node_converted = real_convert (setting, dir, bname, &newname);
+
+        if (node_converted && newname != NULL) {
+            TREENODE_SET_CONVERTED (tnode, 1);
+            TREENODE_SET_UTF8 (tnode, newname);
+        }
+        g_free (fullpath);
+        fullpath = g_strdup_printf ("%s/%s", dir, newname ? newname : bname);
+
+        g_free (dir);
+
+        if (setting->flags & FSEXAM_SETTING_FLAGS_STOP)
+            goto done;
+    }
+
+    if (TREENODE_IS_SPECIAL (tnode)) {
+        if (fullpath == NULL)
+                fullpath = fsexam_tree_get_path (node, FALSE);
+
+        /* 
+         * archive or compress filename may be converted already,
+         * so get the original name.
+         */
+        gchar *hist_search_path = fsexam_tree_get_path (node, TRUE);
+
+        fsexam_compress_convert_name (setting, 
+                                      fullpath, 
+                                      hist_search_path, 
+                                      FALSE);
+
+        g_free (hist_search_path);
+    }else if (TREENODE_IS_SYMLINK (tnode)) {
+        if (TREENODE_FLAG_TARGET_NOTEXIST (tnode)) {
+            if (fullpath == NULL)
+                fullpath = fsexam_tree_get_path (node, FALSE);
+            
+            fsexam_errno = ERR_SYMLINK_TARGET_NOEXIST;
+            fsexam_log_puts (setting->log_info, fullpath, NULL);
+            if (setting->display_msg) {
+                setting->display_msg (fullpath, fsexam_error_get_msg ());
+            }
+        }else if (!setting->pref->no_check_symlink_content) {
+            /* follow has been handled during tree construction */
+            GNode   *gnode = TREENODE_GET_TARGET (tnode);
+            
+            if ((gnode != NULL) && (gnode->data != NULL)) 
+                if (convert_symlink_target_node (gnode, setting, FALSE)) 
+                    relink_symlink (node, gnode, setting);
+        }
+    } else if ((setting->pref->recursive && TREENODE_IS_RECURSIVE (tnode))
+            && (!setting->pref->follow) 
+            && setting->pref->no_check_symlink_content){
+        convert_directory (setting, node);
+    }
+
+done:
+    g_free (fullpath);
+
+    return node_converted;
+}
+
+/*====================================================================
+ *  Function Name:  dryrun_convert_node
+ *
+ *  Parameters:
+ *      GNode *node:    one node created from dryrun result file.
+ *      gpointer data:  is FSEXAM_setting passed from g_node_traverse.
+ *
+ *  Desc:
+ *      Convert one node come from dryrun result file.
+ *
+ *      We need handle various error here.
+ *
+ *  Return value:
+ *      Always return TRUE, otherwise g_node_traverse will stop.
+ *
+ *  Exception:
+ *
+ *  Author:     Yandong Yao 2006/09/05
+ ========================================================================*/ 
+static gboolean
+dryrun_convert_node (GNode *node, gpointer data)
+{
+    FSEXAM_setting  *setting = (FSEXAM_setting *)data;
+    TreeNode        *tnode = node->data;
+    gchar            *path = NULL;
+    gboolean        ret;
+
+    if ((NULL == setting)
+            || (NULL == tnode)
+            || TREENODE_IS_TRAVERSED (tnode) 
+            || (TREENODE_GET_UTF8 (tnode) == NULL) 
+            || (! TREENODE_IS_NEED_CONVERT (tnode))) {   /* Ingore symlink */
+        return FALSE;
+    }
+
+    TREENODE_SET_TRAVERSED (tnode, 1);
+
+    path = fsexam_tree_get_path (node->parent, FALSE);  /* get real path */
+
+    ret = write_to_disk (setting, 
+                        path, 
+                        TREENODE_GET_ORIG (tnode),
+                        TREENODE_GET_UTF8 (tnode),
+                        TREENODE_GET_ID (tnode),        /* from encoding    */
+                        encoding2id ("UTF-8"),          /* to encoding      */
+                        NULL);
+
+    /* update TreeNode */
+    if (ret) {
+        TREENODE_SET_CONVERTED (tnode, 1);  
+    }
+
+    g_free (path);
+
+    return FALSE;
+}
+
+/*====================================================================
+ *  Function Name:  restore_convert_node
+ *
+ *  Parameters:
+ *      GNode *node:   node need restore
+ *      gpointer data: is FSEXAM_setting passed from g_node_traverse.
+ *
+ *  Desc:
+ *      restore one node come from history file
+ *      We need handle various error here.
+ *
+ *  Return value:
+ *      Always return FALSE, otherwise g_node_traverse will stop.
+ *
+ *  Author:     Yandong Yao 2006/11/27
+ ========================================================================*/ 
+static gboolean
+restore_convert_node (GNode *node, gpointer data)
+{
+    wrapped_restore_convert_node (node, data);
+
+    return FALSE;
+}
+
+/* 
+ * Return TRUE if node has been converted.
+ */
+static gboolean
+wrapped_restore_convert_node (GNode *node, gpointer data)
+{
+    FSEXAM_setting  *setting = (FSEXAM_setting *)data;  
+    TreeNode        *tnode = (node->data);
+    gboolean        node_converted = FALSE;
+    gchar           *dirpath = NULL;
+    gchar           *fullpath = NULL;
+
+    if ((NULL == setting) || (NULL == tnode) 
+            || TREENODE_IS_TRAVERSED (tnode)) { 
+        return FALSE;
+    }
+
+    TREENODE_SET_TRAVERSED (tnode, 1);
+
+    dirpath = fsexam_tree_get_path (node->parent, FALSE);
+    fullpath = fsexam_tree_get_path (node, FALSE);
+
+    if (dirpath == NULL) {
+        g_free (fullpath);
+        return FALSE;
+    }
+
+    fsexam_errno = ERR_OK;
+
+    /* do we need convert it? */
+    if (TREENODE_FLAG_REMOTE_FILE (tnode)) {
+        fsexam_errno = ERR_IGNORE_REMOTE_FILE;
+    }else if (TREENODE_FLAG_HIDDEN_FILE (tnode)) {
+        fsexam_errno = ERR_IGNORE_HIDDEN_FILE;
+    }
+
+    if (fsexam_errno != ERR_OK) {
+        fsexam_log_puts (setting->log_info, fullpath, NULL);
+        if (setting->display_msg) {
+            setting->display_msg (fullpath, fsexam_error_get_msg ());
+        }
+
+        goto done;
+    }
+
+    if (TREENODE_GET_ORIG (tnode) != NULL && TREENODE_GET_UTF8 (tnode) != NULL){
+        if (TREENODE_IS_REVERSE (tnode)) {
+            node_converted = write_to_disk (setting,
+                                            dirpath,
+                                            TREENODE_GET_ORIG (tnode),
+                                            TREENODE_GET_UTF8 (tnode),
+                                            encoding2id ("UTF-8"),
+                                            TREENODE_GET_ID (tnode),
+                                            NULL);
+
+        }else{
+            node_converted = write_to_disk (setting,
+                                            dirpath,
+                                            TREENODE_GET_ORIG (tnode),
+                                            TREENODE_GET_UTF8 (tnode),
+                                            TREENODE_GET_ID (tnode),
+                                            encoding2id ("UTF-8"),
+                                            NULL);
+        }
+
+        if (node_converted)
+            TREENODE_SET_CONVERTED (tnode, 1);
+
+        g_free (fullpath);
+        fullpath = fsexam_tree_get_path (node, FALSE);
+    }
+
+    if (TREENODE_IS_SPECIAL (tnode)) {
+        /* hist_search_path use the original name of special file */
+        gchar *hist_search_path = fsexam_tree_get_path (node, TRUE);
+
+        /* Restore special type file name */
+        fsexam_compress_convert_name (setting, 
+                                      fullpath, 
+                                      hist_search_path, 
+                                      TRUE);
+
+        g_free (hist_search_path);
+    }else if (TREENODE_IS_SYMLINK (tnode)) {
+        if (TREENODE_FLAG_TARGET_NOTEXIST (tnode)) {
+            fsexam_errno = ERR_SYMLINK_TARGET_NOEXIST;
+            fsexam_log_puts (setting->log_info, fullpath, NULL);
+            if (setting->display_msg) {
+                setting->display_msg (fullpath, fsexam_error_get_msg ());
+            }
+        }else if (!setting->pref->no_check_symlink_content) {
+            GNode   *gnode = TREENODE_GET_TARGET (tnode);
+
+            if ((gnode != NULL) && (gnode->data != NULL)) 
+                if (convert_symlink_target_node (gnode, setting, TRUE)) 
+                    relink_symlink (node, gnode, setting);
+        }
+    }
+
+done:
+    g_free (fullpath);
+    g_free (dirpath);
+
+    return node_converted;
+}
+
+/*
+ *  Display candidate list for CLI.
+ *  Return the total number of candidates.
+ */
+static gint
+construct_candidate_list (GList *list, gboolean forname)
+{
+    gint num_candidate = 0;
+
+    if (list == NULL)
+        return -1;
+
+    fprintf (stdout, _("Candidate list:\n"));
+    fprintf (stdout, _("\t[No.] Encoding name\tConversion Result\n"));
+
+    while (list != NULL) {
+        Encoding *encode = (Encoding *)list->data;
+
+        list = g_list_next (list);
+
+        if (encode->score == FAIL) 
+            continue;
+
+        if (forname)
+            fprintf (stdout, "\t[%i]   %s\t\t%s\n", 
+                     num_candidate, 
+                     id2encoding (encode->encodingID),
+                     encode->u.converted_text);
+        else {                          /* content */
+            fprintf (stdout, "\t[%i]   %s\t\t%s\n", 
+                     num_candidate, 
+                     id2encoding (encode->encodingID),
+                     encode->u.contents);
+        }
+
+        num_candidate++;
+    }
+
+    return num_candidate;
+}
+
+static gboolean
+fsexam_convert_scenario_for_name (FSEXAM_setting *setting)
+{
+    g_return_val_if_fail (setting != NULL, FALSE);
+
+    GSList   *slist = NULL;
+    GNode    *root = NULL;
+    gboolean ret;
+
+    ret = fsexam_dryrun_process (setting->dryrun_info, &slist);
+
+    if ((! ret) || (NULL == slist)) {
+        fsexam_log_puts (setting->log_info, NULL, NULL);
+        if (setting->display_msg)
+            setting->display_msg (NULL, fsexam_error_get_msg ());
+
+        setting->display_stats (setting);   /* display statastics */
+        fsexam_log_flush (setting->log_info);
+        return FALSE;
+    }
+
+    root = fsexam_tree_construct_from_dryrun (slist, setting);
+    fsexam_dryrun_item_slist_free (slist);
+
+    if (root == NULL) {
+        fsexam_errno = ERR_TREE_IS_EMPTY;
+        fsexam_log_puts (setting->log_info, NULL, NULL);
+        if (setting->display_msg)
+            setting->display_msg (NULL, fsexam_error_get_msg ());
+
+        return FALSE;
+    }
+
+    if (fsexam_debug () 
+            & (FSEXAM_DBG_OPTION | FSEXAM_DBG_TREE | FSEXAM_DBG_FILELIST)) {
+        return TRUE;
+    }
+
+    setting->flags |= FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+
+    g_node_traverse (root, 
+                    G_PRE_ORDER, 
+                    G_TRAVERSE_ALL, 
+                    -1, 
+                    dryrun_convert_node, 
+                    setting);
+
+    setting->display_stats (setting);   /* display statastics */
+    fsexam_log_flush (setting->log_info);
+    setting->flags = 0;
+    fsexam_tree_destroy (root);
+
+    return TRUE;
+
+}
+
+static gboolean
+fsexam_restore_name (FSEXAM_setting *setting, GList *list)
+{
+    g_return_val_if_fail (setting != NULL, FALSE);
+
+    GNode *root = NULL;
+
+    root = fsexam_tree_construct_from_history (list, 
+                                               setting->hist_info, 
+                                               setting);
+
+    if ((list == NULL) || (root == NULL)){
+        fsexam_errno = ERR_TREE_IS_EMPTY;
+        fsexam_log_puts (setting->log_info, NULL, NULL);
+        if (setting->display_msg)
+            setting->display_msg (NULL, fsexam_error_get_msg ());
+
+        return FALSE;
+    }
+
+    setting->flags |= FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+
+    if (fsexam_debug () 
+            & (FSEXAM_DBG_OPTION | FSEXAM_DBG_TREE | FSEXAM_DBG_FILELIST)) {
+        return TRUE;
+    }
+
+    g_node_traverse (root, 
+                    G_PRE_ORDER, 
+                    G_TRAVERSE_ALL, 
+                    -1, 
+                    restore_convert_node, 
+                    setting);
+
+    setting->display_stats (setting);   /* display statastics */
+    fsexam_log_flush (setting->log_info);
+    setting->flags = 0;
+    fsexam_tree_destroy (root);
+
+    return TRUE;
+}
+
+/* --------------   Public API  ------------------------ */
+
+/*
+ *  find one non exist name through append suffix.
+ *  need free by caller
+ */
+gchar *
+find_non_exist_name (const gchar *name)
+{
+    gchar   tmp[PATH_MAX];
+    gint    i;
+
+    for (i = 0; ; i++) {
+        if (i) {
+            g_snprintf (tmp, PATH_MAX - 1, "%s.%s.%d", name, SUFFIX, i);
+        }else{
+            g_snprintf (tmp, PATH_MAX - 1, "%s.%s", name, SUFFIX);
+        }
+
+        if (! g_file_test (tmp, G_FILE_TEST_EXISTS))
+            return g_strdup (tmp);
+    }
+}
+
+/*
+ * Convert single file's fullpath, don't care any flags
+ */
+gboolean
+fsexam_convert_single_filename (FSEXAM_setting *setting, 
+                                const gchar *filename,
+                                gchar **result_name)
+{
+    GNode    *root = NULL;
+    GNode    *tmp = NULL;
+    gboolean node_converted = FALSE;
+
+    if ((filename == NULL) || (setting == NULL)) {
+        return FALSE;
+    }
+
+    fsexam_setting_reset_stats (setting);
+
+    if ((root = fsexam_tree_construct_from_single_file (filename)) == NULL) {
+        fsexam_errno = ERR_TREE_IS_EMPTY;
+        fsexam_log_puts (setting->log_info, NULL, NULL);
+        if (setting->display_msg)
+            setting->display_msg (NULL, fsexam_error_get_msg ());
+
+        return FALSE;
+    }
+
+    setting->flags |= FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+
+    tmp = root;
+    while ((tmp = g_node_first_child (tmp)) != NULL) {
+        TreeNode *tnode = tmp->data;
+        gchar    *bname = tnode->orig;
+        gchar    *dir = NULL;
+        gchar    *newname = NULL;
+
+        if (! TREENODE_IS_NEED_CONVERT (tnode)) {
+            continue;
+        }
+
+        dir = fsexam_tree_get_path (tmp->parent, FALSE);
+        node_converted = real_convert (setting, dir, bname, &newname);
+        g_free (dir);
+
+        if (node_converted) {
+            TREENODE_SET_CONVERTED (tnode, 1);
+            TREENODE_SET_UTF8 (tnode, newname);
+
+            if ((G_NODE_IS_LEAF (tmp)) && (result_name != NULL)) {
+                /* last node */ 
+                *result_name = fsexam_tree_get_path (tmp, FALSE);
+            }
+        }else{
+            g_free (newname);
+            break;      /* fsexam_errno store the reason */
+        }
+    }
+    
+    setting->flags = 0;
+    fsexam_tree_destroy (root);
+
+    return node_converted;
+}
+
+gboolean
+fsexam_convert_filename (FSEXAM_setting *setting, const gchar *filename)
+{
+    g_return_val_if_fail (setting != NULL, FALSE);
+
+    GList       *list = NULL;
+    gboolean    ret;
+
+    if (filename != NULL) 
+        list = g_list_prepend (list, (gpointer) filename);
+
+    ret = fsexam_convert_filename_batch (setting, list);
+
+    fsexam_list_free (list);
+
+    return ret;
+}
+
+gboolean
+fsexam_convert_filename_batch (FSEXAM_setting *setting, GList *list)
+{
+    g_return_val_if_fail (setting != NULL, FALSE);
+
+    GNode *root = NULL;
+
+    fsexam_setting_reset_stats (setting);
+
+    if (list != NULL) 
+        root = fsexam_tree_construct_from_list (list, setting);
+
+    if ((NULL == list) || (NULL == root)){
+        fsexam_errno = ERR_TREE_IS_EMPTY;
+        fsexam_log_puts (setting->log_info, NULL, NULL);
+        if (setting->display_msg)
+            setting->display_msg (NULL, fsexam_error_get_msg ());
+
+        return FALSE;
+    }
+
+    if (fsexam_debug () 
+            & (FSEXAM_DBG_OPTION | FSEXAM_DBG_TREE | FSEXAM_DBG_FILELIST)) {
+        return TRUE;
+    }
+
+    setting->flags |= FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+
+    g_node_traverse (root, 
+                     G_PRE_ORDER, 
+                     G_TRAVERSE_ALL, 
+                     -1, 
+                     convert_node,  /* Return TRUE will stop the traverse */
+                     setting);
+
+    setting->display_stats (setting);   /* display statastics */
+    fsexam_log_flush (setting->log_info);
+    setting->flags = 0;             /* clear all flags after conversion */
+    fsexam_tree_destroy (root);
+
+    return TRUE;
+}
+
+
+//TODO: Add format validation
+gboolean
+fsexam_convert_scenario (FSEXAM_setting *setting)
+{
+    g_return_val_if_fail (setting != NULL, FALSE);
+
+    ConvType    type;
+    gboolean    ret;
+
+    fsexam_setting_reset_stats (setting);
+
+    if (setting->dryrun_info == NULL) {
+        fprintf (stderr, _("Can't access dry run result information.\n"));
+        return FALSE;
+    }
+
+    if (!fsexam_dryrun_get_convtype (setting->dryrun_info, &type))
+        return FALSE;
+
+    if (type == ConvName) {
+        ret = fsexam_convert_scenario_for_name (setting);
+    }else{
+        ret = fsexam_convert_scenario_for_content (setting);
+    }
+
+    return ret;
+}
+
+gboolean 
+fsexam_restore (FSEXAM_setting *setting, GList *list, ConvType restore_type)
+{
+    gboolean ret;
+
+    fsexam_setting_reset_stats (setting);
+
+    if (restore_type == RestoreConvName) {
+        ret = fsexam_restore_name (setting, list);
+    }else if (restore_type == RestoreConvContent) {
+        ret = fsexam_restore_content (setting, list);
+    }else{
+        g_print (_("Don't support this restore type.\n"));
+        ret = FALSE;
+    }
+
+    return ret;
+}
+
+
+/* ---------------  call back function for CLI ------------  */
+
+#define INPUT_LEN 10
+
+/*
+ *  Get the index of user's selection.
+ *  -1 returned if no selection.
+ */
+gint 
+get_index_default (GList *encoding_list, gboolean forname)
+{
+    gint     num_candidate;
+    gchar    input[INPUT_LEN];
+    gint     response;
+    gint     result_index;
+
+    num_candidate = construct_candidate_list (encoding_list, forname);
+
+    if (num_candidate < 1) {
+        fprintf (stderr, _("No proper encoding.\n"));
+        return -1;
+    }
+
+    do {
+        fprintf (stdout, _("Please select No.('s' to skip): "));
+        memset (input, 0, sizeof (input));  
+        fflush (stdin);             /* discard excess data */
+        fgets (input, sizeof(input), stdin);
+
+        if ((*input == '\n') || (*input == '\0'))   /* Return or Empty */
+            continue;
+
+        input[strlen (input) - 1] = '\0';   /* remove trailing '\n' */
+
+        if (g_ascii_strcasecmp (input, "s") == 0) {
+            response = -1;
+            break;
+        }else{
+            gchar *tmp = input;
+
+            for (; ((*tmp >= '0') && (*tmp <= '9') && (*tmp != '\0')); tmp++)
+                ;
+
+            if (*tmp != '\0')
+                continue;
+
+            response = atoi (input);    /* input belong [0-9]{1, 9}  */
+
+            if ((response < 0) || (response > num_candidate - 1))
+                continue;
+            else
+                break;
+        }
+    } while (TRUE);
+
+    if (response == -1)
+        return -1;
+
+    fsexam_encoding_iterate_with_func (encoding_list,
+                fsexam_encoding_translate_index,
+                &response,
+                &result_index);
+
+    return result_index;
+}
+
+/*
+ *  display_msg func for CLI
+ */
+void
+display_msg_default (const gchar *filename, const gchar *msg)
+{
+    if ((filename == NULL) || (msg == NULL))
+        return;
+
+    if (filename) {
+        if (g_utf8_validate (filename, -1, NULL)) {
+            fprintf (stderr, "%s: %s\n", filename, msg ? msg : "");
+        }else{
+            gchar *uri = g_filename_to_uri (filename, NULL, NULL);
+
+            if (uri == NULL) {  /* such as filename doesn't exist */
+                uri = fsexam_string_escape (filename);
+            }
+
+            fprintf (stderr, "%s: %s\n", uri, msg ? msg : "");
+            g_free (uri);
+        }
+    }else{ 
+        fprintf (stderr, "%s\n", msg);
+    }
+
+    return;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-convname.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,111 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_CONVNAME_H
+#define _FSEXAM_CONVNAME_H
+
+/*===================================================================
+ *  Function Name:  fsexam_convert_single_filename
+ *
+ *  Parameters:
+ *
+ *  Desc:   
+ *      Convert single full file path, don't care any other flags, such
+ *      as symlink, recursive etc.
+ *
+ *  Return value:
+ *      TRUE if success, FALSE if error occured
+ *
+ *  Author:     Yandong Yao 2007/02/06
+ =====================================================================*/
+gboolean fsexam_convert_single_filename (FSEXAM_setting *setting,
+                                         const gchar *filename,
+                                         gchar **result_name);
+
+/*============================================================================
+ *  Function Name:  fsexam_convert_filename
+ *
+ *  Parameters:
+ *      FSEXAM_setting *setting: struct contain all information
+ *      gchar * filename:   the filename which will be converted
+ *
+ *  Desc:
+ *      Convert one filename, but maybe convert more than one file, if 
+ *      has follow or recursive options.
+ *
+ *  Return value:
+ *      True for success otherwise fail
+ *
+ *  Author:     Yandong Yao 2006/08/22
+ ===========================================================================*/ 
+gboolean fsexam_convert_filename (FSEXAM_setting *setting, 
+                                  const gchar *filename);
+
+/*===========================================================================
+ *  Function Name:  fsexam_convert_filelist 
+ *
+ *  Parameters:
+ *      FSEXAM_setting *setting: the all-in-one struct
+ *      GList *list: The list contain file names
+ *
+ *  Desc:
+ *      Convert the whole tree structure for list.
+ *
+ *  Return value:
+ *      TRUE for success, otherwise fail
+ *
+ *  Author:     Yandong Yao 2006/08/22
+ ============================================================================*/
+gboolean fsexam_convert_filename_batch (FSEXAM_setting *setting, GList *list);
+
+/*====================================================================
+ *  Function Name:  fsexam_convert_scenario
+ *
+ *  Parameters:
+ *      FSEXAM_setting *setting: contain the setting 
+ *
+ *  Desc:
+ *      Scenario base conversion.  fsexam_dryrun_convert_filename() will convert
+ *      based on dryrun result.
+ *
+ *  Return value:
+ *      TRUE if success, otherwise fail
+ *
+ *  Author:     Yandong Yao 2006/08/31
+ ========================================================================*/ 
+gboolean fsexam_convert_scenario (FSEXAM_setting *);
+
+gboolean fsexam_restore (FSEXAM_setting *, GList *list, ConvType restore_type);
+
+gchar   *find_non_exist_name (const gchar *name);
+
+/* --------- Default handler ----------------- */
+gint get_index_default (GList *encoding_list, gboolean forname);
+void display_msg_default (const gchar *filename, const gchar *msg);
+
+
+#endif //_FSEXAM_CONVNAME_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-debug.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,54 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+int
+fsexam_debug (void)
+{
+    static int initialized = 0;
+    static int debug = 0;
+
+    if (0 == initialized){
+        char *ev = NULL;
+
+        initialized = 1;
+
+        ev = getenv ("FSEXAM_DEBUG");
+
+        if (ev != NULL){
+            debug = atoi (ev);
+            if (debug <= 0)
+                debug = 0;
+
+            (void) printf ("FSEXAM_DEBUG=%s, debug = %d\n", ev, debug);
+        }
+
+    }
+
+    return debug;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-debug.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,41 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifndef _FSEXAM_DEBUG
+#define _FSEXAM_DEBUG
+
+#define FSEXAM_DBG_OPTION       (1 << 0)
+#define FSEXAM_DBG_TREE         (1 << 1)
+#define FSEXAM_DBG_ENCODING     (1 << 2)
+#define FSEXAM_DBG_HASH         (1 << 3)
+#define FSEXAM_DBG_FILELIST     (1 << 4)
+#define FSEXAM_DBG_HISTORY      (1 << 5)
+#define FSEXAM_DBG_PLAIN_TEXT   (1 << 6)
+#define FSEXAM_DBG_ARCHIVE      (1 << 7)
+
+gint fsexam_debug (void);
+
+#endif  //_FSEXAM_DEBUG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-dialog.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,235 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <gconf/gconf-client.h>
+
+#include "fsexam-header.h"
+#include "fsexam-dialog.h"
+#include "fsexam-ui.h"
+
+extern gint indexg;
+
+/*
+ *  Callback for 'toggled' signal of GtkRadioButton
+ */
+void
+fsexam_convert_candidate_set (GtkWidget *widget,
+                              gpointer user_data)
+{
+    indexg = (gint)user_data;  /* the user_data is the real index in GList */
+}
+
+/*
+ *  Iterate function for Encoding List
+ *
+ *  Add one element of Encoding list into candidate dialog as one candidate.
+ */
+static gboolean
+fsexam_construct_index_ui (Encoding *encode,
+                           gint index,     /* the index in encode_list */ 
+                           va_list args)
+{
+    GtkWidget *table = NULL;
+    GtkWidget *entry = NULL;
+    GtkWidget *radio = NULL;
+    GtkWidget **radio_group = NULL;
+    gboolean  name_conversion;
+
+    table = va_arg (args, GtkWidget *);
+    radio_group = va_arg (args, GtkWidget **);
+    name_conversion = va_arg (args, gboolean);
+
+    /* Radio button */
+    if (*radio_group == NULL) { /* is NULL for the first element */
+        radio = gtk_radio_button_new_with_label (NULL,
+                                        id2encoding (encode->encodingID));
+        *radio_group = radio;
+    } else {
+        radio = gtk_radio_button_new_with_label_from_widget (
+                                        GTK_RADIO_BUTTON (*radio_group),
+                                        id2encoding (encode->encodingID));
+    }
+
+    gtk_table_attach (GTK_TABLE (table),
+                      radio, 
+                      0, 1, 
+                      index, index+1,
+                      GTK_FILL | GTK_SHRINK, /* GtkAttachOptions xoption */
+                      GTK_SHRINK,            /* GtkAttachOptions yoption */
+                      0,                     /* xpadding */
+                      0);                    /* ypadding */
+
+    /* Text Entry */
+    entry = gtk_entry_new ();
+
+    if (name_conversion) {
+        gtk_entry_set_text (GTK_ENTRY (entry), encode->u.converted_text);
+    }else{
+        gtk_entry_set_text (GTK_ENTRY (entry), encode->u.contents);
+    }
+
+    gtk_table_attach (GTK_TABLE (table),
+                      entry,
+                      1, 2, 
+                      index, index+1,
+                      GTK_EXPAND | GTK_FILL,
+                      GTK_SHRINK | GTK_FILL,
+                      0,
+                      0);
+
+
+    g_signal_connect (G_OBJECT (radio),
+                      "toggled",
+                      G_CALLBACK (fsexam_convert_candidate_set),
+                      (gpointer)index); /* this is the index in encode list */
+
+    return TRUE;
+}
+
+#define BOX_SPACE  8
+
+/*
+ * Create candidates list dialog for user to select
+ */
+GtkWidget *
+fsexam_dialog_candidate (GList *encoding, gboolean forname)
+{
+    GtkWidget   *dialog = NULL;
+    GtkWidget   *hbox = NULL;
+    GtkWidget   *vbox = NULL;
+    GtkWidget   *stock = NULL;
+    GtkWidget   *table = NULL;
+    GtkWidget   *button_ask = NULL;
+    GtkWidget   *radio_group = NULL;
+    gint        num_encoding;
+
+    num_encoding = fsexam_encoding_get_length (encoding);
+
+    dialog = gtk_dialog_new_with_buttons (
+                            _("Please select candidate"),
+                            GTK_WINDOW (view->mainwin),
+                            GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+                            GTK_STOCK_CANCEL,
+                            GTK_RESPONSE_CANCEL,
+                            GTK_STOCK_OK,
+                            GTK_RESPONSE_OK,
+                            NULL);
+
+    /* The main container for Dialog content */
+    hbox = gtk_hbox_new (FALSE, BOX_SPACE);
+    gtk_container_set_border_width (GTK_CONTAINER (hbox), BOX_SPACE);
+    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
+                        hbox,
+                        TRUE,   /* expand */
+                        TRUE,   /* fill */
+                        0);     /* padding */
+
+    /* Left part */
+    vbox = gtk_vbox_new (FALSE, BOX_SPACE);
+    gtk_box_pack_start (GTK_BOX (hbox), 
+                        vbox, 
+                        FALSE, 
+                        FALSE, 
+                        0);
+
+
+    /* Add Quesiton stock ICON into HBox */
+    stock = gtk_image_new_from_stock (GTK_STOCK_DIALOG_QUESTION,
+                                      GTK_ICON_SIZE_DIALOG);
+    gtk_box_pack_start (GTK_BOX (vbox), 
+                        stock, 
+                        TRUE, 
+                        TRUE, 
+                        0);
+    /* Ask me button */
+    button_ask = gtk_check_button_new_with_label (_("Don't ask me again"));
+    g_object_set_data (G_OBJECT (dialog), "chkbtn_ask", button_ask);
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button_ask), FALSE);
+    gtk_box_pack_start (GTK_BOX (vbox),
+                        button_ask,
+                        FALSE,
+                        FALSE,
+                        0);
+
+    /* Create table */
+    table = gtk_table_new (num_encoding,
+                           2, 
+                           FALSE);     /* homogouse */
+    gtk_table_set_row_spacings (GTK_TABLE (table), 4);
+    gtk_table_set_col_spacings (GTK_TABLE (table), 4);
+
+    if (num_encoding > 10) {
+        /* add scrollwindow */
+        GtkWidget   *scroll_window = NULL;
+        GtkWidget   *view_port = NULL;
+
+        view_port = gtk_viewport_new (NULL, NULL);
+        gtk_viewport_set_shadow_type (GTK_VIEWPORT (view_port),
+                                       GTK_SHADOW_NONE);
+        gtk_container_add (GTK_CONTAINER (view_port), table);
+
+        scroll_window = gtk_scrolled_window_new (NULL, NULL);
+        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window),
+                                        GTK_POLICY_AUTOMATIC,
+                                        GTK_POLICY_AUTOMATIC);
+        gtk_scrolled_window_set_shadow_type (
+                            GTK_SCROLLED_WINDOW (scroll_window),
+                            GTK_SHADOW_NONE);
+        gtk_container_add (GTK_CONTAINER (scroll_window), view_port);
+        
+        gtk_box_pack_start (GTK_BOX (hbox), 
+                            scroll_window, 
+                            TRUE, 
+                            TRUE, 
+                            5);
+
+        gtk_window_resize (GTK_WINDOW (dialog), 550, 400);
+    }else{
+        gint height;
+
+        gtk_box_pack_start (GTK_BOX (hbox), 
+                        table, 
+                        TRUE, 
+                        TRUE, 
+                        0);
+
+        gtk_window_get_size (GTK_WINDOW (dialog), NULL, &height);
+        gtk_window_resize (GTK_WINDOW (dialog), 450, height);
+    }
+
+    fsexam_encoding_iterate_with_func (encoding, 
+                                       fsexam_construct_index_ui,
+                                       table, 
+                                       &radio_group, 
+                                       forname);
+
+    gtk_widget_show_all (dialog);
+
+    return dialog;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-dialog.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,33 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_DIALOG_H_
+#define _FSEXAM_DIALOG_H_
+
+GtkWidget *fsexam_dialog_candidate (GList *encoding_list, gboolean forname);
+
+#endif  //_FSEXAM_DIALOG_H_
--- a/src/cmd/fsexam/src/fsexam-dnd.c	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-#include <libgnome/libgnome.h>
-#include <libgnomeui/libgnomeui.h>
-#include <libgnome/gnome-i18n.h>
-#include <eel/eel-vfs-extensions.h>
-#include <stdio.h>
-#include "encode.h"
-#include "fsexam-history.h"
-#include "fsexam-preference.h"
-#include "fsexam.h"
-
-enum {
-  FSEXAM_ICON_DND_GNOME_ICON_LIST,
-  FSEXAM_ICON_DND_URI_LIST,
-  FSEXAM_ICON_DND_TEXT
-};
-
-static GtkTargetEntry drop_types[] = {
-  {"text/uri-list", 0, FSEXAM_ICON_DND_URI_LIST},
-  {"text/plain", 0, FSEXAM_ICON_DND_TEXT},
-  {"x-special/gnome-icon-list", 0, FSEXAM_ICON_DND_GNOME_ICON_LIST}
-};
-
-static void
-drag_data_received_callback (GtkWidget *widget,
-			     GdkDragContext *context,
-			     int x, int y,
-			     GtkSelectionData *data,
-			     guint info,
-			     guint32 time,
-			     gpointer user_data)
-{
-  char *canonical_uri, *local_path, *p;
-
-  canonical_uri = eel_make_uri_canonical (data->data);
-
-  local_path = gnome_vfs_get_local_path_from_uri (canonical_uri);
-
-  if (local_path)
-    {
-      p = local_path;
-      while (*p != '\r' && *p != '\n') ++p;
-      *p = 0x0;
-
-      fsexam_treeview_construct (local_path);
-
-      g_free (local_path);
-    }
-  else
-    {
-      if (eel_uri_is_desktop (canonical_uri) || eel_uri_is_trash (canonical_uri))
-	{
-	  char *uri = eel_str_get_after_prefix (canonical_uri, ":");
-
-	  p = uri + 4; // to skip ":///"
-
-	  if (!strncmp (p, "home", 4) || !strncmp (p, "trash", 5))
-	    {
-	      if (*p == 'h')
-		local_path = g_strdup_printf ("%s/%s", g_getenv ("HOME"), "Documents");
-	      else
-		local_path = g_strdup_printf ("%s/%s", g_getenv ("HOME"), ".Trash");
-
-	      fsexam_treeview_construct (local_path);
-
-	      g_free (local_path);
-	    }
-
-	  g_free (uri);
-	}
-    }
-
-  gtk_drag_finish (context, TRUE, FALSE, time);
-  g_free (canonical_uri);
-  fsexam_statusbar_update("");
-}
-
-void
-fsexam_dnd_set (GtkWidget *widget)
-{
-  gtk_drag_dest_set (widget,
-		     GTK_DEST_DEFAULT_ALL,
-		     drop_types, G_N_ELEMENTS (drop_types),
-		     GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_ASK);
-
-  g_signal_connect (widget,
-		    "drag_data_received",
-		    G_CALLBACK (drag_data_received_callback),
-		    NULL);
-}
--- a/src/cmd/fsexam/src/fsexam-dnd.h	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#ifndef _FSEXAM_DND_H
-#define _FSEXAM_DND_H
-
-void fsexam_dnd_set (GtkWidget *);
-
-#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-dryrun.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,750 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <glib.h>
+#include <stdio.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+
+#include "fsexam-debug.h"
+#include "fsexam-header.h"
+
+void        cb_text_buffer_changed (GtkTextBuffer *buffer, gpointer data);
+
+static void fsexam_dryrun_base_init (gpointer g_class);
+
+static void dryrun_file_instance_init (GTypeInstance *instance, 
+        gpointer g_class);
+static void dryrun_file_interface_init (gpointer g_iface, 
+        gpointer iface_data);
+static void dryrun_file_class_init (GObjectClass *klass);
+
+static void dryrun_buffer_instance_init (GTypeInstance *instance,
+        gpointer g_class);
+static void dryrun_buffer_interface_init (gpointer g_iface,
+        gpointer iface_data);
+static void dryrun_buffer_class_init (GObjectClass *klass);
+
+static gboolean fsexam_dryrun_write_path (FsexamDryrun *, const gchar *);
+
+static gboolean fsexam_dryrun_write_candidate (FsexamDryrun *info,
+        const gchar *encoding_name,
+        const gchar *sample);
+
+/* FsexamDryrun Interface Implementation */
+static void
+fsexam_dryrun_base_init (gpointer g_class)
+{
+    static gboolean initialized = FALSE;
+
+    if (!initialized) {
+        initialized = TRUE;
+    }
+
+    return;
+}
+
+GType
+fsexam_dryrun_get_type (void)
+{
+    static GType type = 0;
+
+    if (type == 0) {
+        static const GTypeInfo info = {
+            sizeof (FsexamDryrunInterface),
+            fsexam_dryrun_base_init,    /* base_init */
+            NULL,                       /* bsae_finalize */
+            NULL,                       /* class_init */
+            NULL,                       /* class_finalize */
+            NULL,                       /* class_data */
+            0,                          /* sizeof (Instance) */
+            0,                          /* n_preallocs */
+            NULL,                       /* instance_init */
+        };
+
+        type = g_type_register_static (G_TYPE_INTERFACE, 
+                "FsexamDryrun", 
+                &info, 
+                0);
+    }
+
+    return type;
+}
+
+gboolean
+fsexam_dryrun_write (FsexamDryrun *self, const gchar *string)
+{
+    return FSEXAM_DRYRUN_GET_INTERFACE (self)->write (self, string);
+}
+
+gboolean
+fsexam_dryrun_read (FsexamDryrun *self, gchar *buf, guint size)
+{
+    return FSEXAM_DRYRUN_GET_INTERFACE (self)->read (self, buf, size);
+}
+
+/* --- Dryrun implementation on file --- */
+static void
+dryrun_file_finalize (GObject *object)
+{
+    FsexamDryrunFile *dryrun_file = FSEXAM_DRYRUN_FILE (object);
+
+    if (dryrun_file && dryrun_file->fp) {
+        fclose (dryrun_file->fp);
+        dryrun_file->fp = NULL;
+    }
+
+    return;
+}
+
+GType
+fsexam_dryrun_file_get_type (void)
+{
+    static GType type = 0;
+
+    if (type == 0) {
+        static const GTypeInfo info = {
+            sizeof (FsexamDryrunFileClass),
+            NULL,   /* base_init */
+            NULL,   /* base_finalize */
+            (GClassInitFunc) dryrun_file_class_init, 
+            NULL,   /* class_finalize */
+            NULL,   /* class_data */
+            sizeof (FsexamDryrunFile),
+            0,      /* n_preallocs */
+            (GInstanceInitFunc) dryrun_file_instance_init, 
+        };
+
+        static const GInterfaceInfo dryrun_info = {
+            (GInterfaceInitFunc) dryrun_file_interface_init,/* interface_init */
+            NULL,   /* interface_finalize */
+            NULL,   /* interface_data */
+        };
+
+        type = g_type_register_static (G_TYPE_OBJECT, "FsexamDryrunFile", &info, 0);
+        g_type_add_interface_static (type, FSEXAM_TYPE_DRYRUN, &dryrun_info);
+    }
+
+    return type;
+}
+
+/* write callback implementation of DryrunFile */
+static gboolean 
+dryrun_file_write (FsexamDryrunFile *self, const gchar *string)
+{
+    gboolean ret = TRUE;
+
+    if (fputs (string, self->fp) < 0)
+        ret = FALSE;
+
+    return ret;
+}
+
+static gboolean
+dryrun_file_read (FsexamDryrunFile *self, gchar *buf, guint size)
+{
+    gboolean ret = TRUE;
+
+    if (fgets (buf, size, self->fp) == NULL)
+        ret = FALSE;
+
+    return ret;
+}
+
+static void
+dryrun_file_interface_init (gpointer g_iface, gpointer iface_data)
+{
+    FsexamDryrunInterface *iface = (FsexamDryrunInterface *)g_iface;
+
+    iface->write = (gboolean (*) (FsexamDryrun *, const gchar *))dryrun_file_write;
+    iface->read = (gboolean (*) (FsexamDryrun *, gchar *, guint)) dryrun_file_read;
+
+    return;
+}
+
+static void
+dryrun_file_instance_init (GTypeInstance *instance, gpointer g_class)
+{
+    FsexamDryrunFile *self = FSEXAM_DRYRUN_FILE (instance);
+
+    self->fp = NULL;
+
+    return;
+}
+
+static void
+dryrun_file_class_init (GObjectClass *klass)
+{
+    klass->finalize = dryrun_file_finalize;
+
+    return;
+}
+
+FsexamDryrun *
+fsexam_dryrun_file_new (const gchar *filename, gboolean readonly)
+{
+    FsexamDryrunFile *dryrun = NULL;
+
+    if (filename == NULL)
+        return NULL;
+
+    dryrun = g_object_new (FSEXAM_TYPE_DRYRUN_FILE, NULL);
+    dryrun->fp = fopen (filename, readonly ? "r" : "w");
+
+    if (dryrun->fp == NULL) {
+        g_object_unref (dryrun);
+        return NULL;
+    }
+
+    return FSEXAM_DRYRUN (dryrun);
+}
+
+/* --- Widget implementation for dryrun --- */
+GType
+fsexam_dryrun_buffer_get_type (void)
+{
+    static GType type = 0;
+
+    if (type == 0) {
+        static const GTypeInfo info = {
+            sizeof (FsexamDryrunBufferClass),
+            NULL,   /* base_init */
+            NULL,   /* base_finalize */
+            (GClassInitFunc) dryrun_buffer_class_init, 
+            NULL,   /* class_finalize */
+            NULL,   /* class_data */
+            sizeof (FsexamDryrunBuffer),
+            0,      /* n_preallocs */
+            (GInstanceInitFunc) dryrun_buffer_instance_init, 
+        };
+
+        static const GInterfaceInfo dryrun_info = {
+            (GInterfaceInitFunc) dryrun_buffer_interface_init,
+            NULL,   /* interface_finalize */
+            NULL,   /* interface_data */
+        };
+
+        type = g_type_register_static (G_TYPE_OBJECT, "FsexamDryrunBuffer", &info, 0);
+        g_type_add_interface_static (type, FSEXAM_TYPE_DRYRUN, &dryrun_info);
+    }
+
+    return type;
+}
+
+/*
+ * Create mark and connect signal handler for GtkTextBuffer 
+ */
+static void
+setup_text_buffer (GtkTextBuffer *buffer)
+{
+    GtkTextIter iter;
+
+    if (buffer == NULL)
+        return;
+
+    gtk_text_buffer_get_end_iter (buffer, &iter);
+    gtk_text_buffer_create_mark (buffer, "end_mark", &iter, FALSE);
+
+    g_signal_connect (G_OBJECT (buffer), "changed", 
+                      G_CALLBACK (cb_text_buffer_changed), NULL);
+
+    return;
+}
+
+static gboolean 
+dryrun_buffer_write (FsexamDryrunBuffer *self, const gchar *string)
+{
+    GtkTextIter     iter;
+
+    if (self->buffer == NULL)
+        return FALSE;
+
+    gtk_text_buffer_get_end_iter (self->buffer, &iter);
+    gtk_text_buffer_insert (self->buffer, &iter, string, -1);
+
+    return TRUE;
+}
+
+/*
+ * read one line from text buffer and increase line number
+ */
+static gboolean
+dryrun_buffer_read (FsexamDryrunBuffer *self, gchar *buf, guint size)
+{
+    gboolean    ret = TRUE;
+    guint       line_count;
+    GtkTextIter start, end;
+    gchar       *text = NULL;
+
+    line_count = (guint) gtk_text_buffer_get_line_count (self->buffer);
+    line_count --;  /* The last line is empty line */
+
+    if (self->current_line >= line_count) /* EOF */
+        return FALSE;
+
+    gtk_text_buffer_get_iter_at_line (self->buffer, 
+            &start, 
+            self->current_line);
+    gtk_text_buffer_get_iter_at_line (self->buffer, 
+            &end, 
+            self->current_line + 1);
+
+    text = gtk_text_buffer_get_text (self->buffer, &start, &end, FALSE);
+
+    strlcpy (buf, text, size);
+
+    g_free (text);
+    self->current_line++;
+
+    return ret;
+}
+
+static void
+dryrun_buffer_interface_init (gpointer g_iface, gpointer iface_data)
+{
+    FsexamDryrunInterface *iface = (FsexamDryrunInterface *)g_iface;
+
+    iface->write = (gboolean (*) (FsexamDryrun *, const gchar *))dryrun_buffer_write;
+    iface->read = (gboolean (*) (FsexamDryrun *, gchar *, guint)) dryrun_buffer_read;
+
+    return;
+}
+
+static void
+dryrun_buffer_instance_init (GTypeInstance *instance, gpointer g_class)
+{
+    FsexamDryrunBuffer *self = FSEXAM_DRYRUN_BUFFER (instance);
+
+    self->buffer = NULL;
+    self->current_line = 0;
+
+    return;
+}
+
+static void 
+dryrun_buffer_finalize (GObject *object)
+{
+    return;
+}
+
+static void
+dryrun_buffer_class_init (GObjectClass *klass)
+{
+    klass->finalize = dryrun_buffer_finalize; 
+
+    return;
+}
+
+FsexamDryrun *
+fsexam_dryrun_buffer_new (void)
+{
+    FsexamDryrunBuffer *dryrun = NULL;
+
+    dryrun = g_object_new (FSEXAM_TYPE_DRYRUN_BUFFER, NULL);
+
+    return FSEXAM_DRYRUN (dryrun);
+}
+
+FsexamDryrun *
+fsexam_dryrun_buffer_new_with_buffer (GtkTextBuffer *buffer)
+{
+    FsexamDryrunBuffer *dryrun = NULL;
+
+    dryrun = g_object_new (FSEXAM_TYPE_DRYRUN_BUFFER, NULL);
+
+    if (buffer != NULL) {
+        dryrun->buffer = buffer;
+        setup_text_buffer (buffer);
+    }
+
+    return FSEXAM_DRYRUN (dryrun);
+}
+
+void
+fsexam_dryrun_buffer_clear_buffer (FsexamDryrunBuffer *buffer)
+{
+    GtkTextIter start, end;
+
+    gtk_text_buffer_get_start_iter (buffer->buffer, &start);
+    gtk_text_buffer_get_end_iter (buffer->buffer, &end);
+    gtk_text_buffer_delete (buffer->buffer, &start, &end);
+
+    buffer->current_line = 0;
+
+    return;
+}
+
+void 
+fsexam_dryrun_buffer_set_buffer (FsexamDryrunBuffer *buffer, 
+        GtkTextBuffer *buf)
+{
+    if (buffer == NULL)
+        return;
+
+    buffer->buffer = buf;
+    setup_text_buffer (buffer->buffer);
+    
+    return;
+}
+
+void 
+fsexam_dryrun_buffer_set_current_line (FsexamDryrunBuffer *buffer, guint line_no)
+{
+    if (buffer == NULL)
+        return;
+
+    buffer->current_line = line_no;
+
+    return;
+}
+
+/*
+ * Write the full file path into dryrun file
+ */
+static gboolean 
+fsexam_dryrun_write_path (FsexamDryrun *info, const gchar *path)
+{
+    if ((NULL == path) || (NULL == info))
+        return FALSE;
+
+    if (g_utf8_validate (path, -1, NULL)){
+        if (! fsexam_dryrun_write (info, path)){
+            fsexam_errno = ERR_CANNOT_WRITE_DRYRUN;
+            goto fail;
+        }
+    }else{
+        gchar *uri = NULL;
+        uri = g_filename_to_uri (path, NULL, NULL);
+        if (NULL == uri){
+            fsexam_errno = ERR_CANNOT_CONVERT_TO_URI;
+            goto fail;
+        }
+        if (! fsexam_dryrun_write (info, uri) < 0){
+            fsexam_errno = ERR_CANNOT_WRITE_DRYRUN;
+            g_free (uri);
+            goto fail;
+        }
+        g_free (uri);
+    }
+
+    fsexam_dryrun_write (info, "\n");
+    
+    return TRUE;
+
+fail:
+    return FALSE;
+}
+
+static gboolean
+fsexam_dryrun_write_candidate (FsexamDryrun *info, 
+                               const gchar *encoding_name, 
+                               const gchar *sample)
+{
+    if ((NULL == info) || (NULL == sample) || (NULL == encoding_name))
+        return FALSE;
+
+    if (! fsexam_dryrun_write (info, "\t")) {
+        fsexam_errno = ERR_CANNOT_WRITE_DRYRUN;
+        return FALSE;
+    }
+
+    fsexam_dryrun_write (info, encoding_name);
+    fsexam_dryrun_write (info, "\t");
+    fsexam_dryrun_write (info, sample);
+    fsexam_dryrun_write (info, "\n");
+
+    return TRUE;
+}
+
+gboolean
+fsexam_dryrun_write_msg (FsexamDryrun *info, const gchar *msg)
+{
+    if ((NULL == info) || (NULL == msg))
+        return FALSE;
+
+    if (! fsexam_dryrun_write (info, "\t")) {
+        fsexam_errno = ERR_CANNOT_WRITE_DRYRUN;
+        return FALSE;
+    }
+
+    fsexam_dryrun_write (info, msg);
+    fsexam_dryrun_write (info, "\n");
+
+    return TRUE;
+}
+
+gboolean 
+fsexam_dryrun_write_convtype (FsexamDryrun *info, ConvType type)
+{
+    g_return_val_if_fail ((info != NULL), FALSE);
+
+    if (type == ConvName)
+        fsexam_dryrun_write (info, "Name conversion\n");
+    else
+        fsexam_dryrun_write (info, "Content conversion\n");
+
+    return TRUE;
+}
+
+/*
+ * Get the conversion type, and set fsexam_errno if invalid
+ */
+gboolean
+fsexam_dryrun_get_convtype (FsexamDryrun *info, ConvType *type)
+{
+    const gint TYPE_LENGTH = 80;
+    gchar convtype[TYPE_LENGTH];
+    gchar *strip = NULL;
+
+    if (! fsexam_dryrun_read (info, convtype, sizeof (convtype))){
+        fsexam_errno = ERR_DRYRUN_FILE_INVALID;
+        return FALSE;
+    }
+
+    strip = g_strstrip (convtype);
+
+    if (strcmp (strip, "Name conversion") == 0)
+        *type = ConvName;
+    else if (strcmp (strip, "Content conversion") == 0)
+        *type = ConvContent;
+    else
+        fsexam_errno = ERR_DRYRUN_FILE_INVALID;
+
+    return TRUE;
+}
+
+/* 
+ *  Analyze dryrun result file, add Dryrun_item which represent
+ *  user selected encoding into GSList result.
+ */
+gboolean
+fsexam_dryrun_process (FsexamDryrun *info, GSList **result)
+{
+    g_return_val_if_fail (info != NULL, FALSE);
+
+    gchar    linebuf [PATH_MAX + 20];
+    gchar    *path = NULL, *encoding = NULL, *sample = NULL, *ptr = NULL;
+    GSList   *slist = NULL;
+    gboolean metpath = FALSE, metcode = FALSE, tab = FALSE;
+    gboolean ret = FALSE;
+
+    while (fsexam_dryrun_read (info, linebuf, sizeof (linebuf))) {
+        if (linebuf[strlen (linebuf) - 1] == '\n')
+            linebuf[strlen (linebuf) - 1] = '\0';
+
+        /* remove leading and trailing white space */
+        if ((ptr = str_compress (linebuf, &tab)) == NULL) {
+            continue;                       /* Empty line */
+        }
+
+        /* 
+         * Some files may not need convert at all, or have no 
+         * proper encoding. bypass it and continue.
+         */
+        if ((strcmp (ptr, FSEXAM_DRYRUN_NO_NEED_CONVERT) == 0)
+                || (strcmp (ptr, FSEXAM_DRYRUN_NO_PROPER_ENCODING) == 0)) {
+            if (!metpath) {
+                fsexam_errno = ERR_DRYRUN_FILE_INVALID;
+                goto done;
+            }
+
+            g_free (path);
+            path = NULL;
+            metpath = FALSE;
+            continue;
+        }
+        
+        if (tab) {
+            Dryrun_item *item = NULL;
+
+            if (!metpath) {
+                if (metcode) {      /* metpath will be false after first candidate */
+                    continue;       /* ignore non-first encoding candidate */
+                }else{
+                    fsexam_errno = ERR_DRYRUN_FILE_INVALID;
+                    goto done;
+                }
+            }
+
+            metcode = TRUE;
+
+            str_split (ptr, &encoding, &sample);
+            if ((encoding2id (encoding) == -1) || (sample == NULL)) {
+                fsexam_errno = ERR_DRYRUN_FILE_INVALID;
+                goto done;
+            }
+
+            /*
+             * Found one valid path/encoding pair.
+             */
+            if ((item = g_new0 (Dryrun_item, 1)) == NULL) {
+                fsexam_errno = ERR_NO_MEMORY;
+                goto done;
+            }
+
+            item->path = path;
+            item->encoding = encoding;
+
+            slist = g_slist_prepend (slist, item);
+
+            g_free (sample);
+            path = NULL;
+            encoding = NULL;
+            sample = NULL;
+
+            metpath = FALSE;
+        }else{
+            if (metpath) {
+                fsexam_errno = ERR_DRYRUN_FILE_INVALID;
+                goto done;
+            }
+
+            if ('/' == *ptr) {
+                path = g_strdup (ptr);
+            }else{
+                path = g_filename_from_uri (ptr, NULL, NULL);
+            }
+
+            if (NULL == path) {
+                fsexam_errno = ERR_DRYRUN_FILE_INVALID;
+                goto done;
+            }
+
+            metpath = TRUE;
+            metcode = FALSE;
+        }
+    }
+
+    if (NULL == slist)
+        fsexam_errno = ERR_DRYRUN_FILE_INVALID;
+    else
+        slist = g_slist_reverse (slist);
+
+    *result = slist;        /* caller must pass in this param */
+    ret = TRUE;
+
+done:
+    g_free (path);
+    g_free (encoding);
+    g_free (sample);
+
+    return ret;
+}
+
+void
+fsexam_dryrun_item_slist_free (GSList *slist)
+{
+    if (NULL == slist)
+        return;
+
+    while (slist != NULL) {
+        Dryrun_item *item = slist->data;
+
+        g_free (item->path);
+        g_free (item->encoding);
+        g_free (item);
+
+        slist = slist->next;
+    }
+
+    g_slist_free (slist);
+
+    return;
+}
+
+/* 
+ * Write one dryrun item into file
+ */
+gboolean
+fsexam_dryrun_puts (FsexamDryrun *info, 
+                    const gchar *fullpath, 
+                    Score score,            /* total score */
+                    GList *encoding_list, 
+                    ConvType convtype)
+{
+    gboolean    ret = TRUE;
+
+    if ((NULL == info) || (NULL == fullpath) || (NULL == encoding_list))
+        return FALSE;
+
+    if (! fsexam_dryrun_write_path (info, fullpath)) {
+        return FALSE;
+    }
+
+    if (score == FAIL){
+        if (! fsexam_dryrun_write_msg (info, 
+                                      _(FSEXAM_DRYRUN_NO_PROPER_ENCODING))){
+            fsexam_errno = ERR_CANNOT_WRITE_DRYRUN;
+            ret = FALSE;
+        }
+    }else if (score == ORIGINAL){
+        if (! fsexam_dryrun_write_msg (info, 
+                                       _(FSEXAM_DRYRUN_NO_NEED_CONVERT))) {
+            fsexam_errno = ERR_CANNOT_WRITE_DRYRUN;
+            ret = FALSE;
+        }
+    }else{
+        while (encoding_list) {
+            Encoding  *encoding = NULL;
+            gchar     *sample = NULL;
+            
+            encoding = (Encoding *)encoding_list->data; 
+            encoding_list = g_list_next (encoding_list);
+
+            if ((encoding->score == FAIL) || (encoding->score == ORIGINAL)){
+                continue;
+            }
+
+            if (convtype == ConvName) {
+                sample = encoding->u.converted_text;
+            }else{
+                sample = encoding->u.contents;
+            }
+
+            if (! fsexam_dryrun_write_candidate (info, 
+                                    id2encoding (encoding->encodingID),
+                                    sample)) {
+                fsexam_errno = ERR_CANNOT_WRITE_DRYRUN;
+                ret = FALSE;
+            }
+/*      BIG bug: double free
+            if (convtype != ConvName)
+                g_free (sample);
+*/
+        }
+    }
+
+    return ret;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-dryrun.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,141 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_DRYRUN_H
+#define _FSEXAM_DRYRUN_H
+
+#include <glib-object.h>
+
+/* --- Interface for handling dry run result --- */
+#define FSEXAM_TYPE_DRYRUN                  (fsexam_dryrun_get_type ())
+#define FSEXAM_DRYRUN(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSEXAM_TYPE_DRYRUN, FsexamDryrun))
+#define FSEXAM_IS_DRYRUN(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSEXAM_TYPE_DRYRUN))
+#define FSEXAM_DRYRUN_GET_INTERFACE(inst)   (G_TYPE_INSTANCE_GET_INTERFACE ((inst), FSEXAM_TYPE_DRYRUN, FsexamDryrunInterface)) 
+
+typedef struct _FsexamDryrun FsexamDryrun;  /* dummy object */
+typedef struct _FsexamDryrunInterface FsexamDryrunInterface;
+
+struct _FsexamDryrunInterface {
+    GTypeInterface parent;
+
+    /* write one string, may contain '\n' or not */
+    gboolean (*write) (FsexamDryrun *self, const gchar *string);
+    /* read one line */
+    gboolean (*read) (FsexamDryrun *self, gchar *buf, guint size);
+};
+
+GType    fsexam_dryrun_get_type (void);
+gboolean fsexam_dryrun_write (FsexamDryrun *self, const gchar *string);
+gboolean fsexam_dryrun_read (FsexamDryrun *self, gchar *buf, guint size);
+
+/* --- File implementation of the Interface --- */
+#define FSEXAM_TYPE_DRYRUN_FILE             (fsexam_dryrun_file_get_type ())
+#define FSEXAM_DRYRUN_FILE(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSEXAM_TYPE_DRYRUN_FILE, FsexamDryrunFile))
+#define FSEXAM_DRYRUN_FILE_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), FSEXAM_TYPE_DRYRUN_FILE, FsexamDryrunFileClass))
+#define FSEXAM_IS_DRYRUN_FILE(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSEXAM_TYPE_DRYRUN_FILE))
+#define FSEXAM_IS_DRYRUN_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSEXAM_TYPE_DRYRUN_FILE))
+#define FSEXAM_DRYRUN_FILE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), FSEXAM_TYPE_DRYRUN_FILE, FsexamDryrunFileClass))
+
+typedef struct _FsexamDryrunFile FsexamDryrunFile;
+typedef struct _FsexamDryrunFileClass FsexamDryrunFileClass;
+
+struct _FsexamDryrunFile {
+    GObject parent;
+
+    FILE *fp;
+};
+
+struct _FsexamDryrunFileClass {
+    GObjectClass parent;
+};
+
+GType fsexam_dryrun_file_get_type (void);
+FsexamDryrun *fsexam_dryrun_file_new (const gchar *file, gboolean);
+
+/* --- Widget implementation for Dryrun Interface --- */
+#define FSEXAM_TYPE_DRYRUN_BUFFER           (fsexam_dryrun_buffer_get_type ())
+#define FSEXAM_DRYRUN_BUFFER(obj)           (G_TYPE_CHECK_INSTANCE_CAST ((obj), FSEXAM_TYPE_DRYRUN_BUFFER, FsexamDryrunBuffer))
+#define FSEXAM_DRYRUN_BUFFER_CLASS(klass)  (G_TYPE_CHECK_CLASS_CAST ((klass), FSEXAM_TYPE_DRYRUN_BUFFER, FsexamDryrunBufferClass))
+#define FSEXAM_IS_DRYRUN_BUFFER(obj)        (G_TYPE_CHECK_INSTANCE_TYPE ((obj), FSEXAM_TYPE_DRYRUN_BUFFER))
+#define FSEXAM_IS_DRYRUN_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), FSEXAM_TYPE_DRYRUN_BUFFER))
+#define FSEXAM_DRYRUN_BUFFER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), FSEXAM_TYPE_DRYRUN_BUFFER, FsexamDryrunBufferClass))
+
+typedef struct _FsexamDryrunBuffer FsexamDryrunBuffer;
+typedef struct _FsexamDryrunBufferClass FsexamDryrunBufferClass;
+
+struct _FsexamDryrunBuffer {
+    GObject parent;
+
+    GtkTextBuffer *buffer;
+    guint current_line;  /* used only for reading text from buffer */
+};
+
+struct _FsexamDryrunBufferClass {
+    GObjectClass parent;
+};
+
+GType        fsexam_dryrun_buffer_get_type (void);
+FsexamDryrun *fsexam_dryrun_buffer_new (void);
+FsexamDryrun *fsexam_dryrun_buffer_new_with_buffer (GtkTextBuffer *buffer);
+void         fsexam_dryrun_buffer_set_buffer (FsexamDryrunBuffer *buffer, GtkTextBuffer *buf);
+void         fsexam_dryrun_buffer_clear_buffer (FsexamDryrunBuffer *buffer);
+void         fsexam_dryrun_buffer_set_current_line (FsexamDryrunBuffer *buffer, guint line_no);
+
+
+/* --- Dryrun result content processing API --- */
+#define FSEXAM_DRYRUN_NO_PROPER_ENCODING    "No-proper-encoding"
+#define FSEXAM_DRYRUN_NO_NEED_CONVERT       "No-need-convert"
+
+typedef struct _Dryrun_item Dryrun_item;
+struct _Dryrun_item {
+    gchar *path;
+    gchar *encoding;
+};
+
+/*
+ * Write conversion type into dryrun result file 
+ */
+gboolean fsexam_dryrun_write_convtype (FsexamDryrun *info, ConvType convtype);
+gboolean fsexam_dryrun_get_convtype (FsexamDryrun *info, ConvType *type);
+
+/*
+ *  Write one dryrun item including all candidates
+ */
+gboolean fsexam_dryrun_puts (FsexamDryrun *info, 
+                             const gchar *fullpath, 
+                             Score score, 
+                             GList *encoding_list, 
+                             ConvType convtype);
+gboolean fsexam_dryrun_write_msg (FsexamDryrun *, const gchar *);
+
+/*
+ *  Read dryrun file and proces each item using given handler
+ */
+gboolean fsexam_dryrun_process (FsexamDryrun *info, GSList  **slist);
+void     fsexam_dryrun_item_slist_free (GSList *slist);
+
+#endif //_FSEXAM_DRYRUN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-encoding-dialog.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,654 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <strings.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gconf/gconf-client.h>
+#include <glade/glade.h>
+#include <gtk/gtk.h>
+
+#include "fsexam-header.h"
+#include "fsexam-encoding-dialog.h"
+#include "fsexam-preference-dialog.h"
+#include "fsexam-ui.h"
+
+/* the encoding has been selected, will used to update encoding treeview */
+static GSList *selected_encodings = NULL;
+
+/*
+ *  - convert encoding to locale for file(1)
+ *  - convert encoding to cononical name
+ *  - convert encoding to id
+ *  - auto_ef encoding
+ */
+static FsexamEncoding encodings[] = {
+    /* Index                    Charset        Cononical Name   Name                        locale */
+    { FSEXAM_ENCODING_BIG5,     "BIG5",        "BIG5",          N_("Chinese Traditional"),  "zh_TW.BIG5" },
+    { FSEXAM_ENCODING_HKSCS,    "BIG5-HKSCS",  "BIG5HKSCS",     N_("Chinese Traditional(Hong Kong)"),"zh_HK.BIG5HK" },
+    { FSEXAM_ENCODING_CP1250,   "CP1250",      "CP1250",        N_("Central European"),     NULL }, 
+    { FSEXAM_ENCODING_CP1251,   "CP1251",      "CP1251",        N_("Cyrillic"),             NULL },
+    { FSEXAM_ENCODING_CP1252,   "CP1252",      "CP1252",        N_("Western"),              NULL },
+    { FSEXAM_ENCODING_CP1253,   "CP1253",      "CP1253",        N_("Greek"),                NULL },
+    { FSEXAM_ENCODING_CP1254,   "CP1254",      "CP1254",        N_("Turkish"),              NULL },
+    { FSEXAM_ENCODING_CP1255,   "CP1255",      "CP1255",        N_("Hebrew"),               NULL },
+    { FSEXAM_ENCODING_CP1256,   "CP1256",      "CP1256",        N_("Arabic"),               NULL },
+    { FSEXAM_ENCODING_CP1257,   "CP1257",      "CP1257",        N_("Baltic"),               NULL },
+    { FSEXAM_ENCODING_CP1258,   "CP1258",      "CP1258",        N_("Vietnamese"),           NULL },
+    { FSEXAM_ENCODING_CP437,    "CP437",       "CP437",         N_("Western Europe"),       NULL },
+    { FSEXAM_ENCODING_CP737,    "CP737",       "CP737",         N_("Greek"),                NULL },
+    { FSEXAM_ENCODING_CP850,    "CP850",       "CP850",         N_("Western Europe"),       NULL },
+    { FSEXAM_ENCODING_CP852,    "CP852",       "CP852",         N_("Central Europe"),       NULL },
+    { FSEXAM_ENCODING_CP855,    "CP855",       "CP855",         N_("Russian"),              NULL },
+    { FSEXAM_ENCODING_CP857,    "CP857",       "CP857",         N_("Turkish"),              NULL },
+    { FSEXAM_ENCODING_CP860,    "CP860",       "CP860",         N_("Portuguese"),           NULL },
+    { FSEXAM_ENCODING_CP861,    "CP861",       "CP861",         N_("Icelandic"),            NULL },
+    { FSEXAM_ENCODING_CP863,    "CP863",       "CP863",         N_("French Canadian"),      NULL },
+    { FSEXAM_ENCODING_CP865,    "CP865",       "CP865",         N_("Nordic"),               NULL },
+    { FSEXAM_ENCODING_CP866,    "CP866",       "CP866",         N_("Cyrillic/Russian"),     NULL },
+    { FSEXAM_ENCODING_CP869,    "CP869",       "CP869",         N_("Greek"),                NULL },
+    { FSEXAM_ENCODING_CP949,    "CP874",       "CP874",         N_("Thai"),                 NULL },
+    { FSEXAM_ENCODING_CP949,    "CP932",       "CP932",         N_("Japanese"),             NULL },
+//  { FSEXAM_ENCODING_CP949,    "CP936",       "CP936",         N_("Simplified Chinese"),   NULL },
+    { FSEXAM_ENCODING_CP949,    "CP949",       "CP949",         N_("Korean"),               NULL },
+//  { FSEXAM_ENCODING_CP949,    "CP950",       "CP950",         N_("Traditional Chinese"),  NULL },
+    { FSEXAM_ENCODING_eucJP,    "eucJP",       "EUCJP",         N_("Japanese"),             "ja_JP.eucJP" },
+    { FSEXAM_ENCODING_EUC_KR,   "EUC-KR",      "EUCKR",         N_("Korean"),               "ko_KR.EUC" },
+    { FSEXAM_ENCODING_EUC_TH,   "EUC-TH",      "EUCTH",         N_("Thai"),                 NULL },
+    { FSEXAM_ENCODING_EUC_TW,   "EUC-TW",      "EUCTW",         N_("Chinese Traditional"),  "zh_TW.EUC" },
+    { FSEXAM_ENCODING_GB18030,  "GB18030",     "GB18030",       N_("Chinese Simplified"),   "zh_CN.GB18030" },
+    { FSEXAM_ENCODING_GB2312,   "GB2312",      "GB2312",        N_("Chinese Simplified"),   "zh" },
+    { FSEXAM_ENCODING_GBK,      "GBK",         "GBK",           N_("Chinese Simplified"),   "zh_CN.GBK" },
+    { FSEXAM_ENCODING_ISO_2022_CN,  "ISO-2022-CN",   "ISO2022CN",  N_("Chinese Simplified"), "zh" },
+    { FSEXAM_ENCODING_ISO_2022_JP,  "ISO-2022-JP",  "ISO2022JP",  N_("Japanese"),           "ja" },
+    { FSEXAM_ENCODING_ISO_2022_KR,  "ISO-2022-KR",  "ISO2022KR",  N_("Korean"),             "ko" },
+    { FSEXAM_ENCODING_8859_1,   "ISO-8859-1",   "ISO88591",     N_("Western"),              "de_AT.ISO8859-1" },    
+    { FSEXAM_ENCODING_8859_10,  "ISO-8859-10",  "ISO885910",    N_("Nordic"),               NULL },
+    { FSEXAM_ENCODING_8859_11,  "ISO-8859-11",  "ISO885911",    N_("Thai"),                 "th_TH.ISO8859-11"},
+    { FSEXAM_ENCODING_8859_13,  "ISO-8859-13",  "ISO885913",    N_("Baltic"),               "lv_LV.ISO8859-13"},
+    { FSEXAM_ENCODING_8859_14,  "ISO-8859-14",  "ISO885914",    N_("Celtic"),               NULL },
+    { FSEXAM_ENCODING_8859_15,  "ISO-8859-15",  "ISO885915",    N_("Western"),              "de_AT.ISO8859-15"},
+    { FSEXAM_ENCODING_8859_16,  "ISO-8859-16",  "ISO885916",    N_("Romanian"),             NULL },
+    { FSEXAM_ENCODING_8859_2,   "ISO-8859-2",   "ISO88592",     N_("Central European"),     "pl_PL.ISO8859-2" },
+    { FSEXAM_ENCODING_8859_3,   "ISO-8859-3",   "ISO88593",     N_("South European"),       NULL },
+    { FSEXAM_ENCODING_8859_4,   "ISO-8859-4",   "ISO88594",     N_("Baltic"),               NULL },
+    { FSEXAM_ENCODING_8859_5,   "ISO-8859-5",   "ISO88595",     N_("Cyrillic"),             "bg_BG.ISO8859-5" },
+    { FSEXAM_ENCODING_8859_6,   "ISO-8859-6",   "ISO88596",     N_("Arabic"),               NULL },
+    { FSEXAM_ENCODING_8859_7,   "ISO-8859-7",   "ISO88597",     N_("Greek"),                NULL },
+    { FSEXAM_ENCODING_8859_8,   "ISO-8859-8",   "ISO88598",     N_("Hebrew"),               NULL },
+    { FSEXAM_ENCODING_8859_9,   "ISO-8859-9",   "ISO88599",     N_("Turkish"),              "tr_TR.ISO8859-9"},
+    { FSEXAM_ENCODING_JOHAB,    "JOHAB",        "JOHAB",        N_("Korean"),               NULL },
+    { FSEXAM_ENCODING_SJIS,     "SJIS",         "SJIS",         N_("Japanese"),             "ja_JP.PCK" },
+/*   { FSEXAM_ENCODING_UTF_16,   "UTF-16",       "UTF16",        N_("Unicode"),              NULL },
+    { FSEXAM_ENCODING_UTF_16BE, "UTF-16BE",     "UTF16BE",      N_("Unicode"),              NULL },
+    { FSEXAM_ENCODING_UTF_16LE, "UTF-16LE",     "UTF16LE",      N_("Unicode"),              NULL },
+*/
+    { FSEXAM_ENCODING_UTF_8,    "UTF-8",        "UTF8",         N_("Unicode"),              NULL },
+};
+
+static short max_length = sizeof (encodings) / sizeof (encodings[0]);
+
+gchar *
+id2encoding (short id)
+{
+    if ((id < max_length) && (id >= 0))
+        return encodings[id].charset;
+    else
+        g_print (_("Warning: The encoding id %d is greater than max length %d.\n"),
+                 id, 
+                 max_length);
+
+    return NULL;
+}
+
+#define MAX_CODENAME_LEN    63
+
+/* The following characters do not exist in the normalized code names. */
+#define	SKIPPABLE_CHAR(c)	\
+	((c) == '-' || (c) == '_' || (c) == '.' || (c) == '@')
+
+short 
+encoding2id (const gchar *encoding_name)
+{
+    char  s[MAX_CODENAME_LEN + 1];
+    char  *tmp;
+	int   i;
+    short low = 0;
+    short high = max_length - 1;
+    short mid;
+
+    if (encoding_name == NULL)
+        return (short)-1;
+
+    /*
+	 * Normalize a code name, n, by not including skippable characters
+	 * and folding uppercase letters to corresponding lowercase letters.
+	 * We only fold 7-bit ASCII uppercase characters.
+	 */
+	for (i = 0, tmp = (char *)encoding_name; *tmp; tmp++) {
+		if (SKIPPABLE_CHAR(*tmp))
+			continue;
+
+		/* If unreasonably lengthy, we don't support such names. */
+		if (i >= MAX_CODENAME_LEN)
+			return (short)-1;
+
+		s[i++] = (*tmp >= 'a' && *tmp <= 'z') ? 
+                 *tmp - 'a' + 'A' : *tmp;
+	}
+	s[i] = '\0';
+
+    /* binsearch normalized name */
+    while (low <= high) {
+        gint   result;
+    
+        mid = (low + high) / 2;
+        result = g_ascii_strcasecmp (s, encodings[mid].normalized_name);
+
+        if (result == 0)
+            return mid;
+        else if (result > 0)
+            low = mid + 1;
+        else
+            high = mid - 1;
+    }
+
+    g_print (_("Encoding '%s' is not supported.\n"), encoding_name);
+
+    return (short)-1;
+}
+
+gchar *
+encoding_to_locale (const gchar *encoding)
+{
+    gint id = -1;
+
+    id = encoding2id (encoding);
+
+    if (id != -1)
+        return encodings[id].locale;
+    else
+        return NULL;
+}
+
+void
+show_avail_encoding ()
+{
+    gint i;
+
+    g_print (_("The supported encoding list:\n"));
+    for (i = 0; i < max_length; i ++) {
+        g_print ("\t%-15s\t%s\n", encodings[i].charset, _(encodings[i].name));
+    }
+
+    return;
+}
+
+/* Encoding manipulate dialog */
+
+enum {
+    ENCODING_COLUMN_NAME,
+    ENCODING_COLUMN_CHARSET,
+    ENCODING_N_COLUMNS
+};
+
+/*
+ * whether given encoding has in list already or not
+ */
+static gboolean
+encoding_in_selected_list (GSList *list, const gchar *name)
+{
+    GSList  *tmp = list;
+
+    if ((NULL == list) || (NULL == name))
+        return FALSE;
+
+    while (tmp != NULL) {
+        if (g_ascii_strcasecmp (name, (gchar *)tmp->data) == 0)
+            return TRUE;
+
+        tmp = g_slist_next (tmp);
+    }
+
+    return FALSE;
+}
+
+/*
+ *  Update selected encoding TreeView according to selected_encoding
+ */
+static void
+update_selected_tree_model (GtkListStore *store)
+{
+    GSList      *tmp = selected_encodings;
+    GtkTreeIter iter;
+
+    if (NULL == store)
+        return;
+
+    gtk_list_store_clear (store);
+
+    while (tmp != NULL) {
+        short encoding_id = encoding2id (tmp->data);
+        tmp = tmp->next;
+
+        if (encoding_id == -1)
+            continue;
+
+        gtk_list_store_append (store, &iter);
+        gtk_list_store_set (
+                store, &iter,
+                ENCODING_COLUMN_CHARSET, encodings[encoding_id].charset,
+                ENCODING_COLUMN_NAME, _(encodings[encoding_id].name),
+               -1);
+    }
+
+    return;
+}
+
+/*
+ *  Remove the selected encoding after click 'Remove' button
+ *  Just remove encoding from selected_encodings list.
+ */
+static void
+remove_encoding_of_cur_row (GtkTreeModel   *model,
+                            GtkTreePath    *path,
+                            GtkTreeIter    *iter,
+                            gpointer       data)
+{
+    gchar   *charset = NULL;
+    gchar   *name = NULL;
+    
+    gtk_tree_model_get (model, 
+                        iter,
+                        ENCODING_COLUMN_CHARSET, &charset,
+                        ENCODING_COLUMN_NAME, &name,
+                        -1);
+
+    selected_encodings = remove_string_from_slist (selected_encodings, charset);
+
+    g_free (charset);
+    g_free (name);
+
+    return;
+}
+
+/*
+ *  Add current selected encoding 
+ */
+static void
+add_encoding_of_cur_row (GtkTreeModel   *model,
+                         GtkTreePath    *path,
+                         GtkTreeIter    *iter,
+                         gpointer       data)
+{
+    GtkWidget *selected_treeview = data;
+    gchar     *charset = NULL;
+    gchar     *name = NULL;
+
+    gtk_tree_model_get (model, 
+                        iter,
+                        ENCODING_COLUMN_CHARSET, &charset,
+                        ENCODING_COLUMN_NAME, &name,
+                        -1);
+
+    if (! encoding_in_selected_list (selected_encodings, charset)) {
+        GtkTreeModel    *selected_model;
+        GtkTreeIter     selected_iter;
+
+        /* Add new encoding to selected tree view */
+        selected_model = gtk_tree_view_get_model (
+                                    GTK_TREE_VIEW (selected_treeview));
+        gtk_list_store_append (GTK_LIST_STORE (selected_model), &selected_iter);
+        gtk_list_store_set (GTK_LIST_STORE (selected_model), &selected_iter,
+                            ENCODING_COLUMN_CHARSET, charset,
+                            ENCODING_COLUMN_NAME, name,
+                            -1);
+        
+        /* Add new encoding to static gchar *selected_encodings */
+        selected_encodings = g_slist_append (selected_encodings, 
+                                             g_strdup (charset));
+    }
+
+    g_free (charset);
+    g_free (name);
+
+    return;
+}
+
+/*
+ * count the number of selected encoding. used for button sensitive
+ */
+static void
+count_selected_items_func (GtkTreeModel *model,
+                           GtkTreePath  *path,
+                           GtkTreeIter  *iter,
+                           gpointer     data)
+{
+    gint *count = data;
+
+    *count += 1;
+
+    return;
+}
+
+/*
+ *  callback for 'Add' button
+ */
+static void
+add_button_clicked_callback (GtkWidget *button, gpointer data)
+{
+    GtkWidget           *dialog = data;
+    GtkWidget           *treeview = NULL;
+    GtkTreeSelection    *selection = NULL;
+
+    treeview = g_object_get_data (G_OBJECT (dialog), 
+                                "encoding-dialog-available-treeview");
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+
+    treeview = g_object_get_data (G_OBJECT (dialog), 
+                                "encoding-dialog-displayed-treeview");
+
+    gtk_tree_selection_selected_foreach (selection,
+                                         add_encoding_of_cur_row,
+                                         treeview);
+    
+    return;
+}
+
+/*
+ *  callback for 'Remove' button
+ */
+static void
+remove_button_clicked_callback (GtkWidget *button, gpointer data)
+{
+    GtkWidget           *dialog = data;
+    GtkWidget           *treeview = NULL;
+    GtkTreeSelection    *selection = NULL;
+    GtkListStore        *store = NULL;
+
+    treeview = g_object_get_data (G_OBJECT (dialog), 
+                                  "encoding-dialog-displayed-treeview");
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+
+    /* Remove from selected_encoding list first */
+    gtk_tree_selection_selected_foreach (selection,
+                                         remove_encoding_of_cur_row,
+                                         NULL);
+
+    /* Then get the reference of store and update it */
+    store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)));
+    update_selected_tree_model (store);
+
+    return;
+}
+
+/*
+ *  Set the button's sensitivity
+ */
+static void
+available_selection_changed_callback (GtkTreeSelection *selection, 
+                                      gpointer data)
+{
+    GtkWidget   *dialog = data;
+    GtkWidget   *add_button = NULL;
+    gint        count = 0;
+
+    gtk_tree_selection_selected_foreach (selection,
+                                         count_selected_items_func,
+                                         &count);
+
+    add_button = g_object_get_data (G_OBJECT (dialog), "encoding-dialog-add");
+    gtk_widget_set_sensitive (add_button, count > 0);
+
+    return;
+}
+
+/*
+ * Set button's sensitivity.
+ */
+static void
+selected_selection_changed_callback (GtkTreeSelection *selection, gpointer data)
+{
+    GtkWidget   *dialog = data;
+    GtkWidget   *remove_button = NULL;
+    int         count = 0;
+
+    gtk_tree_selection_selected_foreach (selection,
+                                         count_selected_items_func,
+                                         &count);
+
+    remove_button = g_object_get_data (G_OBJECT (dialog), "encoding-dialog-remove");
+
+    gtk_widget_set_sensitive (remove_button, count > 0);
+
+    return;
+}
+
+/*
+ *  Create selected encoding GtkTreeModel
+ */
+static void
+register_selected_encoding_tree_model (GtkListStore *store, 
+                                       GSList *selected_list)
+{
+    GSList      *list = selected_list;
+    GtkTreeIter iter;
+
+    if ((NULL == store) || (NULL == selected_list))
+        return;
+
+    while (list) {
+        short   encoding_id = encoding2id ((gchar *)list->data);
+
+        if (encoding_id != -1) {
+            gtk_list_store_append (store, &iter);
+            gtk_list_store_set (store, &iter,
+                    ENCODING_COLUMN_CHARSET, id2encoding (encoding_id),
+                    ENCODING_COLUMN_NAME, _(encodings[encoding_id].name),
+                    -1);
+        }
+
+        list = g_slist_next (list);
+    }
+
+    return;
+}
+
+/* 
+ * Response call back for Encoding dialog
+ */
+static void
+dialog_response_callback (GtkWidget *window, gint id, gpointer data)
+{
+    GtkWidget *dialog = data;
+
+    if (id == GTK_RESPONSE_OK) {
+        /* 
+         * update encoding list in Preferences dialog 
+         * according to selected_encodings 
+         */
+        fsexam_prefdialog_update_encoding_model (dialog, selected_encodings);
+    }
+
+    /* free selected_encodings */
+    fsexam_slist_free (selected_encodings);
+    selected_encodings = NULL;
+
+    gtk_widget_destroy (GTK_WIDGET (window));
+
+    return;
+}
+
+/* 
+ *  callback for encoding Add event 
+ *      GtkWindow *parent: The preference dialog, used to generate 
+ *                         selected encoding list
+ */ 
+void
+cb_create_encoding_dialog (GtkWidget *parent)
+{
+    gint            i;
+    GladeXML        *xml =  NULL;
+    GtkWidget       *dialog = NULL;
+    GtkWidget       *widget = NULL;
+    GtkListStore    *tree = NULL;
+    GtkTreeIter     iter;
+    GtkTreeViewColumn *column = NULL;
+    GtkCellRenderer   *renderer = NULL;
+    GtkTreeSelection  *selection = NULL;
+
+    if (parent == NULL)
+        return;
+
+    xml = fsexam_gui_load_glade_file (FSEXAM_GLADE_FILE, 
+                                      "encodings-dialog",
+                                      GTK_WINDOW (view->mainwin));
+    if (xml == NULL)
+        return;
+
+    dialog = glade_xml_get_widget (xml, "encodings-dialog");
+    gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL);
+    g_signal_connect (G_OBJECT (dialog), "response",
+                      G_CALLBACK (dialog_response_callback),
+                      parent);
+
+    /* buttons */
+    widget = glade_xml_get_widget (xml, "add-button");
+    g_object_set_data (G_OBJECT (dialog),
+                       "encoding-dialog-add",
+                       widget);
+    g_signal_connect (G_OBJECT (widget), "clicked",
+                      G_CALLBACK (add_button_clicked_callback),
+                      dialog);
+
+    widget = glade_xml_get_widget (xml, "remove-button");
+    g_object_set_data (G_OBJECT (dialog),
+                       "encoding-dialog-remove",
+                       widget);
+    g_signal_connect (G_OBJECT (widget), "clicked",
+                      G_CALLBACK (remove_button_clicked_callback),
+                      dialog);
+
+    /* Create List Store (Model) */
+    tree = gtk_list_store_new (ENCODING_N_COLUMNS, 
+                               G_TYPE_STRING, 
+                               G_TYPE_STRING);
+
+    /* Add the data into Model */
+    i = 0;
+    while (i < (gint) G_N_ELEMENTS (encodings) - 1) { /* skip 'UTF-8' by -1 */
+        gtk_list_store_append (tree, &iter);
+        gtk_list_store_set (tree, &iter,
+                    ENCODING_COLUMN_CHARSET, encodings[i].charset,
+                    ENCODING_COLUMN_NAME, _(encodings[i].name),
+                    -1);
+        ++i;
+    }
+
+    /* Tree view of avaiable encodings */
+    widget = glade_xml_get_widget (xml, "available-treeview");
+    g_object_set_data (G_OBJECT (dialog),
+                       "encoding-dialog-available-treeview",
+                       widget);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (
+                    _("_Description"), renderer,
+                    "text", ENCODING_COLUMN_NAME,
+                    NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column);
+    gtk_tree_view_column_set_sort_column_id (column, ENCODING_COLUMN_NAME);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (
+                    _("_Encoding"), renderer,
+                    "text", ENCODING_COLUMN_CHARSET,
+                    NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column);
+    gtk_tree_view_column_set_sort_column_id (column, ENCODING_COLUMN_CHARSET);
+
+    gtk_tree_view_set_model (GTK_TREE_VIEW (widget), GTK_TREE_MODEL (tree));
+    g_object_unref (G_OBJECT (tree));
+
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+    gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
+                                 GTK_SELECTION_MULTIPLE);
+
+    available_selection_changed_callback (selection, dialog);
+    g_signal_connect (G_OBJECT (selection), "changed",
+                      G_CALLBACK (available_selection_changed_callback),
+                      dialog);
+
+    /* Tree view of selected encodings */
+    widget = glade_xml_get_widget (xml, "displayed-treeview");
+    g_object_set_data (G_OBJECT (dialog),
+                       "encoding-dialog-displayed-treeview",
+                       widget);
+    tree = gtk_list_store_new (ENCODING_N_COLUMNS, 
+                               G_TYPE_STRING, 
+                               G_TYPE_STRING);
+    
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (
+                    _("_Description"), renderer,
+                    "text", ENCODING_COLUMN_NAME,
+                    NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column);
+    gtk_tree_view_column_set_sort_column_id (column, ENCODING_COLUMN_NAME);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (
+                    _("_Encoding"), renderer,
+                    "text", ENCODING_COLUMN_CHARSET,
+                    NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (widget), column);
+    gtk_tree_view_column_set_sort_column_id (column, ENCODING_COLUMN_CHARSET);
+
+    /* Add the data */
+    selected_encodings = fsexam_prefdialog_get_encoding_list (parent);
+    register_selected_encoding_tree_model (tree, selected_encodings);
+
+    gtk_tree_view_set_model (GTK_TREE_VIEW (widget), GTK_TREE_MODEL (tree));
+    g_object_unref (G_OBJECT (tree));
+    
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
+    gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
+                                 GTK_SELECTION_MULTIPLE);
+
+    selected_selection_changed_callback (selection, dialog);
+    g_signal_connect (G_OBJECT (selection), "changed",
+                      G_CALLBACK (selected_selection_changed_callback),
+                      dialog);
+
+    gtk_dialog_run (GTK_DIALOG (dialog));
+    g_object_unref (G_OBJECT (xml));
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-encoding-dialog.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,110 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifndef _FSEXAM_ENCODING_DIALOG_H
+#define _FSEXAM_ENCODING_DIALOG_H
+
+typedef enum
+{
+    FSEXAM_ENCODING_8859_1,	/* 0 */
+    FSEXAM_ENCODING_8859_10,
+    FSEXAM_ENCODING_8859_11,
+    FSEXAM_ENCODING_8859_13,
+    FSEXAM_ENCODING_8859_14,
+    FSEXAM_ENCODING_8859_15,
+    FSEXAM_ENCODING_8859_16,
+    FSEXAM_ENCODING_8859_2,
+    FSEXAM_ENCODING_8859_3,
+    FSEXAM_ENCODING_8859_4,
+    FSEXAM_ENCODING_8859_5,	/* 10 */
+    FSEXAM_ENCODING_8859_6,
+    FSEXAM_ENCODING_8859_7,
+    FSEXAM_ENCODING_8859_8,
+    FSEXAM_ENCODING_8859_9,
+    FSEXAM_ENCODING_BIG5,
+    FSEXAM_ENCODING_HKSCS,
+    FSEXAM_ENCODING_CP1250, 
+    FSEXAM_ENCODING_CP1251,
+    FSEXAM_ENCODING_CP1252,
+    FSEXAM_ENCODING_CP1253,	/* 20 */
+    FSEXAM_ENCODING_CP1254,
+    FSEXAM_ENCODING_CP1255,
+    FSEXAM_ENCODING_CP1256,
+    FSEXAM_ENCODING_CP1257,
+    FSEXAM_ENCODING_CP1258,
+    FSEXAM_ENCODING_CP437,
+    FSEXAM_ENCODING_CP737,
+    FSEXAM_ENCODING_CP775,
+    FSEXAM_ENCODING_CP850,
+    FSEXAM_ENCODING_CP852,	/* 30 */
+    FSEXAM_ENCODING_CP855,
+    FSEXAM_ENCODING_CP857,
+    FSEXAM_ENCODING_CP860,
+    FSEXAM_ENCODING_CP861,
+    FSEXAM_ENCODING_CP862,
+    FSEXAM_ENCODING_CP863,
+    FSEXAM_ENCODING_CP864,
+    FSEXAM_ENCODING_CP865,
+    FSEXAM_ENCODING_CP866,
+    FSEXAM_ENCODING_CP869,	/* 40 */
+    FSEXAM_ENCODING_CP874,
+    FSEXAM_ENCODING_CP935,
+    FSEXAM_ENCODING_CP937,
+    FSEXAM_ENCODING_CP949,
+    FSEXAM_ENCODING_EUC_KR,
+    FSEXAM_ENCODING_EUC_TH,
+    FSEXAM_ENCODING_EUC_TW,
+    FSEXAM_ENCODING_eucJP,
+    FSEXAM_ENCODING_GB18030,
+    FSEXAM_ENCODING_GB2312,	/* 50 */
+    FSEXAM_ENCODING_GBK,
+    FSEXAM_ENCODING_ISO_2022_CN,
+    FSEXAM_ENCODING_ISO_2022_JP,
+    FSEXAM_ENCODING_ISO_2022_KR,
+    FSEXAM_ENCODING_JOHAB,
+    FSEXAM_ENCODING_SJIS,
+    FSEXAM_ENCODING_UTF_16,
+    FSEXAM_ENCODING_UTF_16BE,
+    FSEXAM_ENCODING_UTF_16LE,
+    FSEXAM_ENCODING_UTF_8	/* 60 */
+}FsexamEncodingIndex;
+
+typedef struct {
+    gint    index;              /* Numeric name of encoding */
+    gchar   *charset;           /* External encoding name for user */
+    gchar   *normalized_name;   /* normalized name for comparison */
+    gchar   *name;          	/* Country or region for this charset */
+    gchar   *locale;            /* used for file(1) */
+}FsexamEncoding;
+
+/* encoding & ID map */
+gchar   *id2encoding (short id);
+gchar   *encoding_to_locale (const gchar *encoding_name);
+short   encoding2id (const gchar *encoding_name);
+void    show_avail_encoding (void);
+
+void    cb_create_encoding_dialog (GtkWidget *parent);
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-error.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,106 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#include "fsexam-error.h"
+
+#include <stdio.h>
+#include <glib/gi18n.h>
+
+char *errmsg[] = {
+    N_("Success"),                              /* ERR_OK */
+    N_("File name is UTF-8 already"),           /* ERR_NAME_UTF8_ALREADY */
+    N_("File content is UTF-8 already"),        /* ERR_CONTENT_UTF8_ALREADY */
+    N_("New name is the same as old name"),     /* ERR_NAME_SAME */
+
+    /* Error */
+    "holder for ERR_ERROR",
+    N_("File doesn't exist"),                   /* ERR_FILE_NONEXIST */
+    N_("No Memory"),                            /* ERR_NO_MEMORY */
+    N_("Invalid encoding index"),               /* ERR_ENCODING_INDEX_INVALID */
+    N_("Can't open file"),                      /* ERR_CANNOT_OPEN */
+    N_("Can't rename file"),                    /* ERR_CANNOT_RENAME */
+    N_("Can't write file"),                     /* ERR_CANNOT_WRITE */
+    N_("Given encoding list is not suitable"),  /* ERR_NO_PROPER_ENCODING */
+    N_("Is not regular file"),                  /* ERR_NOT_REG_FILE */
+    N_("Symlink target don't exist"),           /* ERR_SYMLINK_TARGET_NOEXIST */
+    N_("Can't convert given file"),             /* ERR_CANNOT_CONVERT */
+    N_("Can't read file"),                      /* ERR_CANNOT_READ */
+    N_("No proper permission"),                     /* ERR_NO_RIGHTS */
+    /* ERR_CANNOT_RM_SYMLINK */
+    N_("Can't relink symbolic link which will break symbolic link"), 
+    /* ERR_LOST_SYMLINK_FILE */
+    N_("Have deleted symbolic link file, but can't recreate it"), 
+    N_("Dryrun file format is invalid"),        /* ERR_DRYRUN_FILE_INVALID */
+    N_("Can't get current directory"),          /* ERR_GET_CWD */
+    N_("Can't change directory"),               /* ERR_CHDIR */
+   
+    /* Warning */
+   "HOLDER for ERR_WARNING", 
+    N_("No history information for current file"),   /* ERR_HIST_NO_ITEM  */
+    N_("No given files or all files are UTF-8 already"), /* ERR_TREE_IS_EMPTY */
+    /* ERR_NAME_EXIST */
+    N_("Same name file exists, will append 'utf-8' as suffix"),
+    N_("Skip hidden file"),                     /* ERR_IGNORE_HIDDEN_FILE */
+    N_("Skip non-local file"),                  /* ERR_IGNORE_REMOTE_FILE */
+    N_("Empty file"),                           /* ERR_EMPTY_FILE */
+    N_("No parameters"),                        /* ERR_NO_PARAMS */
+    N_("Error occurred during filtering"),      /* ERR_FILTER */
+    N_("Don't support this kind of file type"), /* ERR_FILE_TYPE_NOT_SUPPORT */
+    N_("Buffer overflow"),                      /* ERR_BUFFER_OVERFLOW */
+    N_("Canceled the conversion"),              /* ERR_CANCEL_CONVERSION */
+
+    /* Won't Log */
+    "HOLDER for won't log",
+    N_("Can't write dryrun result file"),       /* ERR_CANNOT_WRITE_DRYRUN */
+    N_("Can't open dryrun result file"),        /* ERR_CANNOT_OPEN_DYRRUN */
+    N_("Can't convert filename to URI"),        /* ERR_CANNOT_CONVERT_TO_URI */
+
+    /* MISC*/
+    N_("Unknown error occurred"),                /* ERR_MISC */
+};
+
+//TODO: store the errno in the system.
+ERROR_NO fsexam_errno = ERR_OK;
+
+const char *
+fsexam_error_get_msg ()
+{
+    return _(errmsg[fsexam_errno]);
+}
+
+void
+_fsexam_perror (char *errnofile, int line, char *filename)
+{
+    if (filename != NULL){
+        printf (_("ERROR ==> %s:%d (%s): %s\n"), errnofile, line, 
+                filename, _(errmsg[fsexam_errno]));
+        return;
+    }
+
+    printf (_("ERROR ==> %s:%d %s\n"), errnofile, line, _(errmsg[fsexam_errno]));
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-error.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,112 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_ERROR_H
+#define _FSEXAM_ERROR_H
+
+/*
+ * If change any ERR_*, exec 'make clean' before 'make'
+ */
+typedef enum {
+    /* INFO */
+    ERR_OK =                    0,
+    ERR_NAME_UTF8_ALREADY, 
+    ERR_CONTENT_UTF8_ALREADY,
+    ERR_NAME_SAME,
+    /* ERROR */
+    ERR_ERROR,                  /* 1 */ 
+    ERR_FILE_NONEXIST, 
+    ERR_NO_MEMORY, 
+    ERR_ENCODING_INDEX_INVALID,
+    ERR_CANNOT_OPEN,    
+    ERR_CANNOT_RENAME, 
+    ERR_CANNOT_WRITE,
+    ERR_NO_PROPER_ENCODING,
+    ERR_NOT_REG_FILE,
+    ERR_SYMLINK_TARGET_NOEXIST,
+    ERR_CANNOT_CONVERT, 
+    ERR_CANNOT_READ, 
+    ERR_NO_RIGHTS, 
+    ERR_CANNOT_RM_SYMLINK,
+    ERR_LOST_SYMLINK_FILE,
+    ERR_DRYRUN_FILE_INVALID,
+    ERR_GET_CWD,
+    ERR_CHDIR,
+    /* WARNING */
+    ERR_WARNING, 
+    ERR_HIST_NO_ITEM,
+    ERR_TREE_IS_EMPTY, 
+    ERR_NAME_EXIST, 
+    ERR_IGNORE_HIDDEN_FILE,
+    ERR_IGNORE_REMOTE_FILE,
+    ERR_EMPTY_FILE, 
+    ERR_NO_PARAMS, 
+    ERR_FILTER, 
+    ERR_FILE_TYPE_NOT_SUPPORT, 
+    ERR_BUFFER_OVERFLOW,
+    ERR_CANCEL_CONVERSION,
+    /* Won't write log */
+    ERR_WONNOT_LOG, 
+    ERR_CANNOT_WRITE_DRYRUN,
+    ERR_CANNOT_OPEN_DRYRUN,
+    ERR_CANNOT_CONVERT_TO_URI,
+    /* Misc error */
+    ERR_MISC, 
+} ERROR_NO;
+
+extern ERROR_NO fsexam_errno;
+
+const char  *fsexam_error_get_msg (void);
+
+void        _fsexam_perror (char *errnofile, int line, char *filename);
+
+#define fsexam_perror(filename) \
+        do {        \
+            _fsexam_perror (__FILE__, __LINE__, filename);  \
+        }while (0) 
+
+/*
+ * How to make one elegant error handling machanism?
+ *
+ *      - system error: errno need remember
+ *      - custermized error: fsexam_errno
+ *      - error context: such as 
+ *          - filename, may be more than one file
+ *          - Sometime there is error occured, but we still have
+ *            get some result, such as get_abs_path, we have get
+ *            the abs path, but can't rechange to old_cwd
+ *
+ *      - buffer overflow: do we need check and report?
+ *          - strlcpy, strlcat
+ *          - fgets
+ *
+ *      - Who need to check the input is NULL or not?
+ *          - caller?
+ *          - callee?
+ */
+
+#endif //_FSEXAM_ERROR_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-header.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,61 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_HEADER_H
+#define _FSEXAM_HEADER_H
+
+#include <stdio.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gconf/gconf-client.h>
+#include <glade/glade.h>
+
+#include "fsexam.h"
+#include "fsexam-debug.h"
+#include "auto-detect.h"
+#include "fsexam-helper.h"
+#include "encoding.h"
+#include "fsexam-log.h"
+#include "fsexam-history.h"
+#include "fsexam-dryrun.h"
+#include "fsexam-pref.h"
+#include "fsexam-setting.h"
+#include "fsexam-plaintext.h"
+#include "fsexam-specialfile.h"
+#include "fsexam-tree.h"
+#include "fsexam-error.h"
+#include "file-validate.h"
+#include "fsexam-convname.h"
+#include "fsexam-convcontent.h"
+#include "fsexam-encoding-dialog.h"
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-helper.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,824 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <ctype.h>
+#include <glib.h>
+#include <unistd.h>
+#include <libgen.h>
+#include <limits.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+
+#include "fsexam-helper.h"
+#include "fsexam-error.h"
+#include "fsexam.h"
+
+short encoding2id (const gchar *encoding_name);
+
+gboolean
+str_isascii (const gchar *s, gint len)
+{
+    if (NULL == s)
+        return FALSE;
+
+    if (len <= 0)
+        len = strlen (s);
+
+    while ((len-- != 0 )&& (*s != '\0')) {
+        if (isascii((gint)*s++) == 0)
+            return FALSE;
+    }
+
+    return TRUE;
+}
+
+/*
+ * This function will resolve symbolic link also because of getcwd;
+ * Need remove any redundancy '/' in the full path
+ *
+ * Note:
+ *      It is hard to get the symlink path for arbitratry input.
+ *      pwd of bash can do this, but it do that througth 'PWD' env var
+ */
+gchar *
+get_abs_path (const gchar *file)
+{
+    if (file == NULL)
+        return NULL;
+
+    gchar       result[PATH_MAX];
+    gchar       old_cwd[PATH_MAX];
+    struct stat statbuf;
+
+    memset (old_cwd, 0, sizeof (old_cwd));
+
+    if (lstat (file, &statbuf) < 0) {
+        fsexam_errno = ERR_FILE_NONEXIST;
+        return NULL;
+    }
+
+    if (getcwd(old_cwd, sizeof (old_cwd)) == NULL) {
+        fsexam_errno = ERR_GET_CWD;
+        return NULL;
+    }
+
+    memset (result, sizeof (result), 0);
+
+    if (S_ISDIR (statbuf.st_mode)) {        /* is folder */
+        if ((chdir(file)) < 0){
+            fsexam_errno = ERR_CHDIR;
+            goto fail;
+        }
+        
+        if (getcwd(result, PATH_MAX) == NULL)
+            goto fail;
+
+        if (chdir (old_cwd) < 0) {
+            fsexam_errno = ERR_CHDIR;
+        }
+
+        return g_strdup (result);
+    } else {                                /* non folder */
+        gchar *dir = NULL;
+        gchar *base = NULL;
+
+        dir = g_path_get_dirname (file);
+        
+        if (chdir(dir) < 0){
+            fsexam_errno = ERR_CHDIR;
+            g_free (dir);
+            goto fail;
+        }
+
+        g_free (dir);
+
+        if (getcwd(result, PATH_MAX) == NULL){
+            fsexam_errno = ERR_GET_CWD;
+            goto fail;
+        }
+
+        if (chdir (old_cwd) < 0) {
+            fsexam_errno = ERR_CHDIR;
+        }
+
+        base = g_path_get_basename (file);
+
+        if (strcmp (base, ".") != 0){
+            strlcat (result, "/", PATH_MAX);
+            strlcat (result, base, PATH_MAX);
+        }
+
+        g_free (base);
+
+        return g_strdup (result);
+    }
+
+fail:
+    chdir (old_cwd);
+
+    return NULL;
+}
+
+/* 
+ * file exist and is regular | symlink | directory
+ */
+gboolean
+file_exist (gchar *file)
+{
+    struct stat buf;
+
+    if (lstat(file, &buf) == -1){
+        return FALSE;
+    }
+
+    if (!(S_ISREG(buf.st_mode)) && !(S_ISDIR(buf.st_mode)) && 
+            !(S_ISLNK(buf.st_mode))){
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+/*
+ * Remove trailing space, '\n' and leading space
+ *
+ * Please take care if operate on dynamically allocated storage, 
+ * pointer will change
+ *
+ * g_strstrip is for this
+ */
+/*
+gchar * 
+str_chomp (gchar *str)
+{
+    gint    len, i, j;
+    gchar   *result = NULL;
+
+   if (str == NULL)
+       return NULL;
+
+    len = strlen (str);
+    result = str;
+
+    if (result[len-1] == '\n'){
+        result[len-1] = '\0';
+        len --;
+    }
+
+    i = j = 0;
+    for (; i < len; i++){
+        if (g_ascii_isspace(*(str+i))){
+            continue;
+        }else{
+            break;
+        }
+    }
+
+    if (i == len-1){
+        *result = '\0';
+    }else{
+        for (; i < len; i++){   
+            *(result+j) = *(str+i);
+            j++;
+        }
+        *(result+j) = '\0';
+    }
+
+    return result;
+}
+*/
+
+/*
+ * Remove leading and trailing space
+ * tab return TRUE if there is '\t' before any non-space characters
+ */
+gchar *
+str_compress (gchar *str, gboolean *tab)
+{
+    gchar *end = NULL;
+
+    *tab = FALSE;
+    if (str == NULL)
+        return NULL;
+
+    while (g_ascii_isspace (*str)){
+        if ('\t' == *str)
+            *tab = TRUE;
+
+        str ++;
+    }
+
+    if ('\0' == *str)
+        return NULL;
+
+    end = str + strlen (str) - 1;
+    
+    while (g_ascii_isspace (*end)){
+        *end -- = '\0';
+    }
+
+    return str;
+}
+
+/*
+ * split str to 2 string according to space
+ */
+void 
+str_split (gchar *str, gchar **str1, gchar **str2)
+{
+    gchar *end = str;
+
+    if (str == NULL)
+        return; 
+
+    while ((*end != '\0') && (! g_ascii_isspace (*end))){
+        end ++;
+    }
+
+    if (str1 != NULL)
+        *str1 = g_strndup (str, end - str);
+
+    if (str2 == NULL)
+        return;
+
+    if ('\0' == *end){
+        *str2 = NULL;
+        return;
+    }
+
+    while ((*end != '\0') && (g_ascii_isspace (*end))){
+        end ++;
+    }
+    if ('\0' == *end){
+        *str2 = NULL;
+    }else{
+        *str2 = g_strdup (end);
+    }
+
+    return;
+}
+
+void 
+list_free (gpointer data, gpointer user_data)
+{
+    if (data)
+        g_free ((gchar *)data);
+
+    return;
+}
+
+void 
+list_print (gpointer data, gpointer user_data)
+{
+    if (user_data)
+        fputs (user_data, stdout);
+    
+    fputs ("\t", stdout);
+    fputs (data, stdout);
+    fputs ("\n", stdout);
+
+    return;
+}
+
+/*
+ * split encoding string according to ':' or ';'
+ */
+GSList *
+encoding_string_parse (const gchar *en_text)
+{
+    GSList  *list = NULL;
+    gchar   *cur = NULL;
+
+    if ((en_text == NULL) || (*en_text == '\0'))
+        return NULL;
+
+    cur = (gchar *)en_text;
+    while (TRUE) {
+        if ((*cur == ':') || (*cur == ',')) {
+            *cur = '\0';
+            if (cur != en_text) {
+                if (encoding2id (en_text) == -1) {
+                    g_print (_("Encoding '%s' is not supported\n"),
+                            (char *)en_text);
+                } else {
+                    list = g_slist_append (list, g_strdup (en_text));
+                }
+            }
+            
+            en_text = ++cur;
+        } if (*cur == '\0') {   /* the last element */
+            if (cur != en_text) {
+                if (encoding2id (en_text) == -1) {
+                    g_print (_("Encoding '%s' is not supported\n"),
+                            (char *)en_text);
+                } else {
+                    list = g_slist_append (list, g_strdup (en_text));
+                }
+            }
+
+            break;
+        }else{
+            cur++;
+        }
+    }
+
+    return list;
+}
+
+/*
+ * Get the abs path for symlink's target file
+ */
+gchar *
+get_abs_path_for_symlink_target (const gchar *symlink)
+{
+    gchar   *target = NULL;
+    gchar   *abs_path = NULL;
+    
+    if (symlink == NULL)
+        return NULL;
+
+    target = g_file_read_link (symlink, NULL);
+    if (target == NULL) 
+        return NULL;
+
+    if (*target == '/') {
+        abs_path = get_abs_path (target);
+    } else {
+        gchar   *first = NULL;
+        gchar   *folder = g_path_get_dirname (symlink);    
+       
+        first = g_strdup_printf ("%s/%s", folder, target);
+        abs_path = get_abs_path (first);
+
+        g_free (folder);
+        g_free (first);
+    }
+
+    g_free (target);
+
+    return abs_path;
+}
+
+void 
+hash_print (gpointer key, gpointer value, gpointer data)
+{
+    g_print ("key = %s\n", (gchar *)key ?  (gchar *)key : "NULL");
+    
+    return;
+}
+
+void 
+fsexam_list_free (GList *list)
+{
+    if (NULL == list) 
+        return;
+
+    GList *tmp = list;
+
+    while (tmp){
+        g_free (tmp->data);
+
+        tmp = g_list_next (tmp);
+    }
+
+    g_list_free (list);
+
+    return;
+}
+
+void 
+fsexam_slist_free (GSList *list)
+{
+    if (NULL == list) return;
+
+    GSList *tmp = list;
+
+    while (tmp){
+        g_free (tmp->data);
+
+        tmp = g_slist_next (tmp);
+    }
+
+    g_slist_free (list);
+
+    return;
+}
+
+#define SAMPLE_MIN_LEN  30
+
+/*
+ *  Get one sample line which contain non-ascii characters from contents 
+ *  which is UTF-8 already
+ *  Get one sample line which contain non-ascii characters from contents. 
+ *  contents maybe in various encoding:
+ *      - ASCII: get first non_empty line which > MIN_LEN
+ *      - UTF-8: get the first non_ASCII line > MIN_LEN
+ *      - Other: get the first line which > MIN_LEN
+ */
+
+gchar *
+get_sample_text (const gchar *contents, guint *length)
+{
+    const gchar *start = contents;
+    const gchar *nonempty_line = NULL;
+    const gchar *nonascii_line = NULL;
+    const gchar *nonutf8_line = NULL;
+    gint        nonempty_len = 0;
+    gint        nonascii_len = 0;
+    gint        nonutf8_len = 0; 
+    gint        len;
+
+    if (NULL == contents)
+        return NULL;
+
+    while (TRUE) {
+        len = 0;
+        for (; (*contents != '\0') && (*contents != '\n'); contents++)  
+            len++;
+       
+        /* got one new line */
+        if (len == 0) {
+            if (*contents == '\0') {    /* EOF */
+                if (nonutf8_line != NULL) {
+                    if (length != NULL)
+                        *length = nonutf8_len;
+
+                    return g_strndup (nonutf8_line, nonutf8_len);
+                }else if (nonascii_line != NULL) {
+                    if (length != NULL)
+                        *length = nonascii_len;
+
+                    return g_strndup (nonascii_line, nonascii_len);
+                }else if (nonempty_line != NULL) {
+                    if (length != NULL)
+                        *length = nonempty_len;
+
+                    return g_strndup (nonempty_line, nonempty_len);
+                }else{
+                    if (length != NULL)
+                        *length = 1;
+
+                    return "";          /* all line is empty */
+                }
+            }else{                      /* empty line */
+                start = ++contents;
+            }
+
+            continue;
+        }
+
+        if ((NULL == nonempty_line) 
+                || ((nonempty_len < SAMPLE_MIN_LEN) && (len > nonempty_len))) {
+            nonempty_line = start;
+            nonempty_len = len;
+        }
+
+        if (str_isascii (start, len)) {                 /* pure ASCII line */
+            start = ++contents;         
+        }else if (g_utf8_validate (start, len, NULL)) { /* Non-ASCII UTF-8 */
+            if ((NULL == nonascii_line)
+                    || ((nonascii_len < SAMPLE_MIN_LEN) 
+                        && (len > nonascii_len)) ) {
+                nonascii_line = start;
+                nonascii_len = len;
+            } 
+
+            start = ++contents;         
+        }else{                                          /* Non-UTF8 line */ 
+            if (len > SAMPLE_MIN_LEN) {
+                break; 
+            }else{
+                if ((NULL == nonutf8_line) || (nonutf8_len < len)){
+                    nonutf8_line = start;
+                    nonutf8_len = len;
+                }
+
+                start = ++contents;     /* continue */
+            }
+        }
+    }
+
+    if (length != NULL)
+        *length = len;
+
+    return g_strndup (start, len);
+}
+
+/*
+ * Remove the first element containing user's data
+ */
+GSList *
+remove_string_from_slist (GSList *list, const gchar *str)
+{
+    GSList *tmp = list;
+
+    if ((NULL == list) || (NULL == str))
+        return list;
+
+    while (tmp != NULL) {
+        if (strcmp (tmp->data, str) == 0)
+            break;
+
+        tmp = tmp->next;
+    }
+
+    if (tmp != NULL) {
+        g_free (tmp->data);
+        list = g_slist_delete_link (list, tmp);
+    }
+
+    return list;
+}
+
+GList *
+remove_string_from_list (GList *list, const gchar *str)
+{
+    GList *tmp = list;
+
+    if ((NULL == list) || (NULL == str))
+        return list;
+
+    while (tmp != NULL) {
+        if (strcmp (tmp->data, str) == 0)
+            break;
+
+        tmp = tmp->next;
+    }
+
+    if (tmp != NULL) {
+        g_free (tmp->data);
+        list = g_list_delete_link (list, tmp);
+    }
+
+    return list;
+}
+
+static gboolean
+remove_hash_entry_or_not (gpointer key, gpointer value, gpointer data)
+{
+    return TRUE;
+}
+
+void
+fsexam_hash_remove_all (GHashTable *hash)
+{
+    if (hash == NULL)
+        return;
+
+    g_hash_table_foreach_remove (hash, remove_hash_entry_or_not, NULL);
+
+    return;
+}
+
+/*
+ * is path2 is subpath or parent of path1
+ */
+gboolean
+fsexam_is_subpath (const gchar *path1, const gchar *path2)
+{
+    gint        len;
+    const gchar *tmp;
+
+    if (! g_str_has_prefix (path1, path2))
+        return FALSE;
+
+    len = strlen (path2);
+    tmp = path1 + len;
+
+    if (*tmp == '\0' || *tmp == '/')
+        return TRUE;
+
+    return FALSE;
+}
+
+/*
+ * Get the display name
+ */
+gchar *
+fsexam_filename_display_name (const gchar *filename)
+{
+    gchar *end = NULL;
+    gchar *start = NULL;
+    gchar *result = NULL;
+
+    start = result = g_strdup (filename);
+
+    for (;;) {
+        gboolean valid;
+        valid = g_utf8_validate (start, -1, (const gchar **)&end);
+
+        if (!*end)
+            break;
+
+        if (!valid)
+            *end++ = '?';
+
+        start = end;
+    }
+
+    return result;
+}
+
+/* 
+ * Get the display basename 
+ */
+gchar *
+fsexam_filename_display_basename (const gchar *filename)
+{
+    //gchar *result = g_strdup (filename);
+    
+    return fsexam_filename_display_name (filename);
+    //return result;
+}
+
+/*
+ * Escape string
+ */
+gchar *
+fsexam_string_escape (const gchar *string)
+{
+    gint    len;
+    gchar   *escape = NULL, *tmp = NULL;
+    gchar   *result = NULL;
+
+    if (string == NULL)
+        return NULL;
+
+    len = strlen (string) * 4 + 1;
+    tmp = escape = g_new0 (gchar, len);
+
+    while (*string != '\0') {
+        if (*(guchar *)string >= 0x80) {
+            gchar *t;
+            t = g_strdup_printf ("\\x%X", *(guchar *)string);
+            strlcpy (tmp, t, len);
+            g_free (t);
+            tmp += 4;
+        }else{
+            *tmp++ = *string;
+        }
+
+        string ++;
+    }
+    
+    *tmp = '\0';
+    result = g_strdup (escape);
+    g_free (escape);
+
+    return result;
+}
+
+/*
+ * convert one string to hex format
+ */
+char *
+fsexam_print_hex(const char *str)
+{
+    char *result = NULL;
+    char *tmp;
+
+    if (str == NULL)
+        return "NULL";
+
+    if (*str == '\0')
+        return "";
+
+    result = g_malloc(PATH_MAX);
+    memset(result, 0, PATH_MAX);
+
+    tmp = result;
+    int len = PATH_MAX;
+
+    while (*str) {
+        int ch = (unsigned char)*str++;
+
+        if (ch > 0x7f) {
+            snprintf(tmp, len, "\\x%X", ch);
+            tmp += 4;
+            len -= 4;
+        } else {
+            snprintf(tmp, len, "\\x%02X", ch);
+            tmp += 4;
+            len -= 4;
+        }
+    }
+
+    return result;
+}
+
+
+#ifndef HAVE_STRLCPY
+/*
+ * strlcpy implement copied from opensolaris.org
+ */
+size_t
+strlcpy(char *dst, const char *src, size_t len)
+{
+    size_t slen = strlen(src);
+    size_t copied;
+
+    if (len == 0)
+        return (slen);
+
+    if (slen >= len)
+        copied = len - 1;
+    else
+        copied = slen;
+
+    (void) memcpy(dst, src, copied);
+    dst[copied] = '\0';
+
+    return (slen);
+}
+#endif
+
+#ifndef HAVE_STRLCAT
+/*
+ * strlcat implement copied from opensolaris.org
+ */
+size_t
+strlcat(char *dst, const char *src, size_t dstsize)
+{
+    char *df = dst;
+    size_t left = dstsize;
+    size_t l1;
+    size_t l2 = strlen(src);
+    size_t copied;
+
+    while (left-- != 0 && *df != '\0')
+        df++;
+
+    l1 = df - dst;
+    if (dstsize == l1)
+        return (l1 + l2);
+
+    copied = l1 + l2 > dstsize ? dstsize - l1 - 1 : l2;
+
+    (void) memcpy(dst + l1, src, copied);
+    dst[l1 + copied] = '\0';
+
+    return (l1 + l2);
+}
+#endif
+
+#ifdef HAVE_NO_GLIB_2_8
+/*
+ * Implement g_file_set_contents as it only exist in glib-2.8+
+ */
+gboolean
+g_file_set_contents(const gchar *filename,
+        const gchar *contents,
+        gssize length,
+        GError **error)
+{
+    FILE *fp = NULL;
+    gsize num;
+
+
+    fp = fopen (filename, "wb");
+    if (fp == NULL) {
+        return FALSE;
+    }
+
+    num = fwrite (contents, 1, length, fp);
+    fclose (fp);
+
+    if (num < length)
+        return FALSE;
+
+    return TRUE;
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-helper.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,229 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_HELPER_H_
+#define _FSEXAM_HELPER_H_
+
+#define FREE(p) if (p) {        \
+                    free (p); \
+                    p = NULL;   \
+                }
+
+/*=========================================================================
+ *  Function Name:  str_isascii
+ *
+ *  Parameters:
+ *
+ *  Desc:
+ *      Determine whether the parameter str contains only ascii characters.
+ *
+ *  Return value:
+ *      Return True if str contain only ASCII
+ *      Otherwise False
+ *
+ *  Author:     Yandong Yao 2006/08/24
+ ========================================================================*/
+gboolean str_isascii (const gchar *str, gint len);
+
+/*============================================================================
+ *  Function Name:  get_abs_path
+ *
+ *  Parameters:
+ *      const gchar *file: the path
+ *
+ *  Desc:
+ *      Convert relative path to absolute path, eliminate all '.', '..' 
+ *      in the path
+ *
+ *  Return value:
+ *      If the file exist, then return its absolute path
+ *      if not exist or error occur, then return NULL.
+ *
+ *      As we can't determine whether the path is abs path already unless 
+ *      traverse the whole string, so we always return a new string which 
+ *      you need free when don't use them any more.
+ *
+ *  Author:     Yandong Yao 2006/08/24
+ ============================================================================*/
+gchar * get_abs_path (const gchar *file);
+
+/*============================================================================
+ *  Function Name:  file_exist
+ *
+ *  Parameters:
+ *
+ *  Desc:
+ *      Determine whether file exist and S_ISREG || s_ISDIR || S_ISLNK 
+ *
+ *  Return value:
+ *      Return True if file exist and S_ISREG || s_ISDIR || S_ISLNK 
+ *      Otherwise return False.
+ *
+ *  Author:     Yandong Yao 2006/08/24
+ ===========================================================================*/
+gboolean file_exist (gchar *file);
+
+/*============================================================================
+ *  Function Name:  str_chomp
+ *
+ *  Parameters:
+ *
+ *  Desc:   
+ *      Remove trailing newline '\n'
+ *      Remove heading space
+ *
+ *  Return value:
+ *      Return the original string, won't allocate any new memory
+ *
+ *  Author:     Yandong Yao 2006/08/24
+ ===========================================================================*/
+gchar * str_chomp (gchar *str);
+
+/*====================================================================
+ *  Function Name:  str_compress
+ *
+ *  Parameters:
+ *      gchar *string:  the original string, null terminated.
+ *      gboolean *tab:  whether contain '\t' before the first non-space char
+ *
+ *  Desc:
+ *      str_compress() function will remove any heading or tailing space.
+ *      The modification is in-place, so it will change the original string.
+ *
+ *      if string contain '\t' before first non-space char, then *tab = TRUE;
+ *
+ *  Return value:
+ *      The new start position in original string
+ *
+ *  Exception:
+ *
+ *  Author:     Yandong Yao 2006/08/30
+ ========================================================================*/ 
+gchar *str_compress (gchar *string, gboolean *tab);
+
+/*====================================================================
+ *  Function Name:  str_split
+ *
+ *  Parameters:
+ *      gchar *str: The original string
+ *      gchar **str1: pointer to the first string
+ *      gchar **str2: pointer to the second string
+ *
+ *  Desc:
+ *      Split the original string into two separate string according to space 
+ *      chars. If there is no space,the *str2 = NULL;
+ *
+ *  Return value:
+ *      N/A
+ *
+ *  Author:     Yandong Yao 2006/08/31
+ ========================================================================*/ 
+void str_split (gchar *str, gchar **str1, gchar **str2);
+
+/*===================================================================
+ *  Function Name:  list_free
+ *
+ *  Parameters:
+ *      gpointer data:  the data stored in GList or GSList
+ *      gpointer user_data: arbitrary user data
+ *
+ *  Desc:
+ *      This function is just a wrap of g_free, so that it can be
+ *      used as g_list_foreach to free the glist data memory
+ *
+ *  Return value:
+ *
+ *  Author:     Yandong Yao 2006/10/17
+ ======================================================================*/
+void list_free (gpointer data, gpointer user_data);
+
+void list_print (gpointer data, gpointer user_data);
+
+/*===================================================================
+ *  Function Name:  encoding_string_parse
+ *
+ *  Parameters:
+ *      const gchar *encoding_string: one string contain encoding name 
+ *      separated by ',' or ':'
+ *
+ *  Desc:
+ *      Split ',' or ':' separated encoding string into encoding list
+ *
+ *  Return value:
+ *      GSList *, need free when don't use at more
+ *
+ *  Author:     Yandong Yao 2006/11/15
+  ==========================================================================*/
+GSList *encoding_string_parse (const gchar *encoding_string);
+
+gchar *get_abs_path_for_symlink_target (const gchar *symlink);
+
+void hash_print (gpointer key, gpointer value, gpointer data);
+
+
+void fsexam_list_free (GList *list);
+void fsexam_slist_free (GSList *list);
+void fsexam_hash_remove_all (GHashTable *hash);
+
+gchar   *get_sample_text (const gchar *contents, guint *length);
+
+GList   *remove_string_from_list (GList *list, const gchar *str);
+GSList  *remove_string_from_slist (GSList *list, const gchar *str);
+
+gboolean fsexam_is_subpath (const gchar *path1, const gchar *path2);
+
+/* 
+ * get the display name
+ */
+gchar   *fsexam_filename_display_name (const gchar *filename);
+
+/*
+ * get the display name: this func will anaylize '/'
+ */
+gchar   *fsexam_filename_display_basename (const gchar *filename);
+
+/*
+ * escape string
+ */
+gchar   *fsexam_string_escape (const gchar *string);
+
+gchar   *fsexam_print_hex (const gchar *str);
+
+#ifndef HAVE_STRLCPY
+size_t strlcpy (char *dst, const char *src, size_t len);
+#endif
+
+#ifndef HAVE_STRLCAT
+size_t strlcat (char *dst, const char *src, size_t dstsize);
+#endif
+
+#ifdef HAVE_NO_GLIB_2_8
+gboolean g_file_set_contents (const gchar *filename, const gchar *contents,
+        gssize length, GError **error);
+#endif
+
+#endif //_FSEXAM_HELPER_H_
--- a/src/cmd/fsexam/src/fsexam-history.c	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,436 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <encode.h>
-#include "fsexam-history.h"
-
-#define MAGICNUM 0xCDEF
-
-#define VALID_CONVTYPE(v) (((v) == ConvName) || ((v) & ConvContent))
-#define MATCH_CONVTYPE(v, w) ((v) == ConvName ? (w) == ConvName : \
-                  ((w) == ConvContent || (w) == ConvContentWithCRLF || (w) == ConvContentCRLFOnly))
-
-History_info *histinfo;
-
-typedef struct _History_item
-{
-  guint32  serial;    // used by undo action for multi-selection, not persisted in disk
-  ConvType convtype;
-
-  guchar   *text;     // the old name
-  guchar   *value;    // the new name
-  guchar   *path;     // its directory name
-}History_item;
-
-/* defined to History_info in header file */
-struct _History_info
-{
-  FILE  *fp;		// FILE stream pointer for ~/.fsexam.history
-  GList *histlist;	// the list of History_item
-};
-
-static void 
-release_each_item (gpointer data_ptr, gpointer p)
-{
-	History_item *h = (History_item *) data_ptr;
-
-	g_free (h->text);
-	g_free (h->value);
-	g_free (h->path);
-
-	g_free (h);
-}
-
-static void 
-serialize_history_item (gpointer data_ptr, gpointer fp)
-{
-	FILE *stream = (FILE *) fp;
-	History_item *h = (History_item *) data_ptr;
-
-	if (VALID_CONVTYPE (h->convtype))
-		fprintf (stream, "%d\27%s\27%s\27%s\n", h->convtype, h->text, h->value, h->path);
-}
-
-static GList*
-deserialize_history_data (FILE* fp)
-{
-	GList *histlist = NULL;
-	History_item *tmp = NULL;
-
-	char linebuf[2048];
-	
-	if (!fp)
-		return NULL;
-
-	memset (linebuf, 0, sizeof(linebuf));
-
-	while ( fgets (linebuf, sizeof(linebuf), fp) ) 
-	{
-		char *conv = NULL;
-		char *text = NULL;
-		char *value = NULL;
-		char *path = NULL;
-
-		char *last_char = NULL;
-
-		if ( linebuf [sizeof(linebuf)-1] != '\0' &&
-		     linebuf [sizeof(linebuf)-1] != '\n')
-		{
-			memset (linebuf, 0, sizeof(linebuf));
-			continue;
-		}
-
-		linebuf [strlen(linebuf)-1] = '\0';
-
-		conv = strtok_r (linebuf, "\27", &last_char);
-		text = strtok_r (NULL, "\27", &last_char);
-		value = strtok_r (NULL, "\27", &last_char);
-		path = last_char;
-
-		if (!conv || !text || !value || !path)
-			continue;
-
-		tmp = g_new0 (History_item, 1);
-
-		tmp->serial = 0;
-		tmp->convtype = atoi (conv);
-
-		tmp->text = strdup (text);
-		tmp->value = strdup (value);
-		tmp->path = strdup (path);
-
-		histlist = g_list_append (histlist, (gpointer) tmp);
-
-	}
-
-	return histlist;
-}
-
-static gboolean
-serialize_history_data (GList *histlist, FILE* fp)
-{
-	if (!histlist || !fp)
-		return FALSE;
-
-	g_list_foreach (histlist, serialize_history_item, fp);
-
-	return TRUE;
-}
-
-static unsigned int
-get_serial (History_item *h,
-            gboolean same_serial)
-{
-  unsigned int serial;
-
-  if (!h) return 0;
-  
-  serial = h->serial;
-
-  if (!same_serial)
-    {
-      if (serial == G_MAXUINT) serial = 0;
-      else ++serial;
-    } 
-
-  return serial;
-}
-
-static History_item*
-locate_with_serial (History_info *info, 
-		    guint32 serial)
-{
-	GList *ptr = NULL;
-	History_item *h = NULL;
-
-	ptr = g_list_last (info->histlist);
-
-	if (ptr)
-		h = (History_item *) (ptr->data);
-	else
-		return NULL;
-
-	while (1) {
-		if (h->serial == serial ) return h;
-
-		if (h->serial < serial) break;
-
-		ptr = g_list_previous (ptr);
-
-		if (ptr)
-			h = (History_item *) (ptr->data);
-		else
-			break;
-	}
-
-	return NULL;
-}
-
-
-/*
- * put a history item in the info->histlist, and return info->serial
- */
-unsigned int
-fsexam_history_put (History_info *info, 
-		    ConvType convtype,
-		    char *text, 
-		    char *value, 
-		    char *path,
-		    gboolean same_serial)
-{
-	g_assert (text && value && path);
-
-	GList *ptr = NULL;
-	History_item *prev = NULL;
-	History_item *h = g_new0 (History_item, 1);
-	
-	h->convtype = convtype;
-
-	h->text = g_strdup (text);
-	h->value = g_strdup (value);
-	h->path = g_strdup (path);
-
-	ptr = g_list_last (info->histlist);
-	if (ptr) prev = (History_item*) (ptr->data);
-
-	h->serial = get_serial (prev, same_serial);
-
-	info->histlist = g_list_append (info->histlist, (gpointer)h);
-	
-	return h->serial;
-}
-
-/*
- * Search backward with 'text' and 'path' to check whether any history
- * item can match them and return its 'value' if found.
- * Otherwise, return NULL.
- */
-char *
-fsexam_history_get_reverse (History_info *info, 
-			    ConvType *convtype, 
-			    char *text, 
-			    char *path)
-{
-	GList *ptr = NULL;
-	History_item *h = NULL;
-	char *value = NULL;
-
-	ptr = g_list_last (info->histlist);
-
-	if (ptr) 
-		h = (History_item*) (ptr->data);
-	else
-		return NULL;
-
-	while (1) {
-		if (VALID_CONVTYPE (h->convtype) &&
-		    !strcmp (h->text, text) &&
-		    !strcmp (h->path, path) ) 
-		{
-			*convtype = h->convtype;
-			value = g_strdup (h->value);
-			break;
-		}
-
-		ptr = g_list_previous (ptr);
-
-		if (ptr)
-			h = (History_item*) (ptr->data);
-		else
-			break;
-	}
-
-	return value;
-}
-
-/*
- * Search backward with 'value' and 'path' to check whether any history
- * item can match them with the same converion type and return its 
- * 'text' if found.
- * Otherwise, return NULL.
- */
-char *
-fsexam_history_get_reverse_by_value2 (History_info *info, 
-				      ConvType *convtype, 
-				      char *value, 
-				      char *path)
-{
-	GList *ptr = NULL;
-	History_item *h = NULL;
-	char *text = NULL;
-
-	ptr = g_list_last (info->histlist);
-
-	if (ptr)
-		h = (History_item*) (ptr->data);
-	else
-		return NULL;
-
-	while (1) {
-		if (MATCH_CONVTYPE (*convtype, h->convtype) &&
-		    !strcmp (h->value, value) &&
-		    !strcmp (h->path, path) ) 
-		{
-			*convtype = h->convtype;
-			text = g_strdup (h->text);
-			break;
-		}
-
-		ptr = g_list_previous (ptr);
-
-		if (ptr)
-			h = (History_item*) (ptr->data);
-		else
-			break;
-	}
-
-	return text;
-}
-
-/*
- * Search backward with 'value' and 'path' to check whether any history
- * item can match them and return its 'text' and the conversion type
- * if found.
- * Otherwise, return NULL.
- */
-char *
-fsexam_history_get_reverse_by_value (History_info *info, 
-				     ConvType *convtype, 
-				     char *value, 
-				     char *path)
-{
-	GList *ptr = NULL;
-	History_item *h = NULL;
-	char *text = NULL;
-
-	ptr = g_list_last (info->histlist);
-
-	if (ptr)
-		h = (History_item*) (ptr->data);
-	else
-		return NULL;
-
-	while (1) {
-		if (VALID_CONVTYPE(h->convtype) &&
-		    !strcmp (h->value, value) &&
-		    !strcmp (h->path, path) ) 
-		{
-			*convtype = h->convtype;
-			text = g_strdup (h->text);
-			break;
-		}
-
-		ptr = g_list_previous (ptr);
-
-		if (ptr)
-			h = (History_item*) (ptr->data);
-		else
-			break;
-	}
-
-	return text;
-}
-
-gboolean
-fsexam_history_undo (History_info *info,
-		     unsigned int serial,
-		     ConvType *convtype, 
-		     char **text, 
-		     char **value, 
-		     char **path)
-{
-	History_item *h = NULL;
-
-	h = locate_with_serial (info, serial);
-
-	if (!h) return FALSE;
-
-	*convtype = h->convtype;
-	*text = g_strdup (h->text);
-	*value = g_strdup (h->value);
-	*path = g_strdup (h->path);
-
-	info->histlist = g_list_remove (info->histlist, (gconstpointer)h);
-
-	return TRUE;
-}
-
-/*
- * If the file specified by filename exist and open properly, 
- * deserialize the data from file to list of History_items.
- */
-History_info *
-fsexam_history_open (char *filename)
-{
-	struct stat stat_buf;
-	History_info *info = g_new0 (History_info, 1);
-
-	if (stat (filename, &stat_buf) == -1)
-		info->fp = fopen (filename, "w+b");
-	else
-		info->fp = fopen (filename, "r+b");
-
-	info->histlist = deserialize_history_data (info->fp);
-	
-	return info;
-}
-
-/* Serialize list of History_items, and save to info->fp */
-gboolean
-fsexam_history_update (History_info *info)
-{
-	fseek (info->fp, SEEK_SET, 0);
-	serialize_history_data (info->histlist, info->fp);
-	return TRUE;
-}
-
-/* 
- * Serialize list of History_items, and save to info->fp.
- * At last, close info->fp, and release info->histlist.
- */
-gboolean
-fsexam_history_close (History_info *info)
-{
-	fseek (info->fp, SEEK_SET, 0);
-	serialize_history_data (info->histlist, info->fp);
-	fclose (info->fp);
-
-	g_list_foreach (info->histlist, release_each_item, NULL);
-	g_list_free (info->histlist);
-
-	g_free (info);
-
-	return TRUE;
-}
--- a/src/cmd/fsexam/src/fsexam-history.h	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _FSEXAM_HISTORY_
-#define _FSEXAM_HISTORY_
-
-typedef struct _History_info History_info;
-
-History_info *fsexam_history_open (char *);
-gboolean fsexam_history_close (History_info *);
-gboolean fsexam_history_update (History_info *);
-
-gboolean fsexam_history_undo (History_info *, guint, ConvType *, char **, char **, char **);
-guint fsexam_history_put (History_info *, ConvType, char *, char *, char *, gboolean);
-gchar *fsexam_history_get_reverse (History_info *, ConvType *, char *, char *);
-gchar *fsexam_history_get_reverse_by_value (History_info *, ConvType *, char *, char *);
-gchar *fsexam_history_get_reverse_by_value2 (History_info *, ConvType *, char *, char *);
-
-#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-log.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,173 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <stdio.h>
+
+#include "encoding.h"
+#include "fsexam-log.h"
+#include "fsexam-error.h"
+#include "fsexam-helper.h"
+
+static gboolean log_puts (Log_info *info, 
+                          const gchar *category, 
+                          const gchar *filename, 
+                          const gchar *msg);
+
+Log_info *
+fsexam_log_open (const gchar *logfile)
+{
+    Log_info *log_info = NULL;
+
+    if (NULL == logfile)
+        return NULL;
+
+    log_info = g_new0 (Log_info, 1);
+
+    log_info->fp = fopen (logfile, "a");
+    if (log_info->fp == NULL){
+        fsexam_errno = ERR_CANNOT_OPEN;
+    };
+
+    return log_info;
+}
+
+static gboolean
+log_puts (Log_info *info, 
+          const gchar *category, 
+          const gchar *filename, 
+          const gchar *msg)
+{
+    gint ret;
+
+    if (filename) {
+        if (g_utf8_validate (filename, -1, NULL)) {
+            ret = fprintf (info->fp, "%s %s: %s\n", 
+                           category, 
+                           filename, 
+                           msg ? msg : "");
+        }else{
+            gchar *uri = g_filename_to_uri (filename, NULL, NULL);
+            ret = fprintf (info->fp, "%s %s: %s\n", 
+                           category, 
+                           uri, 
+                           msg ? msg : "");
+            g_free (uri);
+        }
+    }else{
+        ret = fprintf (info->fp, "%s %s\n", category, msg ? msg : "");
+    }
+
+    if (ret < 0) {
+        fsexam_errno = ERR_CANNOT_WRITE;
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+gboolean 
+fsexam_log_puts (Log_info *info, const gchar *filename, const gchar *msg)
+{
+    gboolean    ret = TRUE;
+    const char  *messages = NULL;
+
+    if ((info == NULL) || (info->fp == NULL)) {
+        return FALSE;
+    }
+
+    if (msg == NULL)
+        messages = fsexam_error_get_msg ();
+    else
+        messages = msg;
+
+    if (fsexam_errno < ERR_ERROR) {
+        /* Information */
+        ret = log_puts (info, LOG_INFO, filename, messages);
+    }else if (fsexam_errno < ERR_WARNING) {
+        /* ERROR */
+        ret = log_puts (info, LOG_ERROR, filename, messages);
+    }else if (fsexam_errno < ERR_WONNOT_LOG) {
+        /* WARNING */
+        ret = log_puts (info, LOG_WARNING, filename, messages);
+    }else if (fsexam_errno < ERR_MISC) {
+        /* won't log */
+    }else{
+        /* unknow error */
+        ret = log_puts (info, LOG_ERROR, filename, _("Unknown error occurred"));
+    }
+
+    return ret;
+}
+
+gboolean
+fsexam_log_puts_folder_and_name (Log_info *info, 
+                                 const gchar *dirname, 
+                                 const gchar *filename, 
+                                 const gchar *msg)
+{
+    gchar     *fullpath = NULL;
+    gboolean  ret;
+
+    if ((NULL == info) || (NULL == info->fp))
+        return FALSE;
+
+    fullpath = g_strdup_printf ("%s/%s", dirname, filename);
+    if (fullpath == NULL)
+        return FALSE;
+
+    ret = fsexam_log_puts (info, fullpath, msg);
+
+    g_free (fullpath);
+
+    return ret;
+}
+
+void
+fsexam_log_flush (Log_info *info)
+{
+    if (info == NULL || info->fp == NULL)
+        return;
+
+    fflush (info->fp);
+
+    return;
+}
+
+void 
+fsexam_log_close (Log_info *info)
+{
+    if ((info == NULL) || (info->fp == NULL))
+        return;
+
+    fclose (info->fp);
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-log.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,90 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_LOG_H
+#define _FSEXAM_LOG_H
+
+/*
+ * What is need log and what is not.
+ *
+ * The problem is that when we want to write log/mes info to the
+ * terminal, we need the fullpath, while the subcoponent of fullpath
+ * may contain NON-UTF8 characters.
+ *
+ * We can always met with such problem if we have no rights to 
+ * modify filename on the disk, but we can always reduce this kind
+ * of problem as far as possible.
+ *
+ * So we defer the error msg during constructing tree and handle them
+ * during convertsion to ensure the path name conatin no non-utf8 name
+ * as far as possible.
+ *
+ *  - File doesn't exist
+ *
+ *  - File Type Not Supported
+ * 
+ *  - No History Item:
+ *      Display in log file when there is no history info.
+ *
+ *  -----------------------------------------------------
+ *  - Symlink target doesn't exist: 
+ *      the target file does't exist: get_abs_path_for_symlink_target == NULL
+ *      log when traverse tree and after we convert symlink's filename
+ *      Restore: 
+ *
+ *  - UTF-8 already:    
+ *      Restore: Don't display such kind of error info, cause it is proper 
+ *      behavior
+ *
+ *  - Remote file
+ *
+ *  - Hidden file
+ *
+ */
+
+typedef struct _Log_info Log_info;
+struct _Log_info {
+    FILE *fp;
+};
+
+#define LOG_INFO    "(II)"
+#define LOG_WARNING "(WW)"
+#define LOG_ERROR   "(EE)"
+
+Log_info *  fsexam_log_open (const gchar *logfile);
+gboolean    fsexam_log_puts (Log_info *info, 
+                             const gchar *filename, 
+                             const gchar *msg);
+gboolean    fsexam_log_puts_folder_and_name (Log_info *info, 
+                             const gchar *dirname, 
+                             const gchar *filename, 
+                             const gchar *msg);
+
+void        fsexam_log_flush (Log_info *info);
+void        fsexam_log_close (Log_info *info);
+
+#endif //_FSEXAM_LOG_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-plaintext.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,237 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <locale.h>
+
+#include <glib.h>
+
+#include "fsexam-header.h"
+#include "fsexam-plaintext.h"
+
+#define FILE_CMD    "/usr/bin/file"
+
+static gchar * 
+get_utf8_locale (void)
+{
+    gchar       buf[50];
+    FILE        *fp = NULL;
+    gchar       **argv = NULL;
+    GError      *error = NULL;
+    gint        child_stdout;
+    gboolean    find = FALSE;
+
+    memset (buf, 0, sizeof (buf));
+
+    argv = g_new0 (gchar *, 3);
+    argv[0] = "/usr/bin/locale"; 
+    argv[1] = "-a";
+    argv[2] = NULL;
+
+    if (!g_spawn_async_with_pipes (NULL, argv, NULL,
+                0, 	/* GSpawnFlags */
+                NULL,   /* child setup func */
+                NULL,   /* user data */
+                NULL,   /* pid */
+                NULL,
+                &child_stdout,
+                NULL,
+                &error)) {
+        g_print (error->message);
+        goto done;
+    }
+
+    if ((fp = fdopen (child_stdout, "r")) == NULL) {
+        g_print (_("Can't open pipe file descriptor.\n"));
+        goto done;
+    }
+
+    while (fgets (buf, sizeof (buf), fp) != NULL) {
+        if (buf[strlen (buf) - 1] == '\n')
+            buf[strlen (buf) -1] = '\0';
+
+        if (g_str_has_suffix (buf, "UTF-8")) {
+            find = TRUE;
+            break;
+        }
+    }
+
+done:
+    if (error != NULL)
+        g_error_free (error);
+
+    if (fp != NULL)
+        fclose (fp);
+
+    g_free (argv);
+
+    if (! find) {
+        g_print (_("The system has no UTF-8 locale\n"));
+        return NULL;
+    }
+
+    return g_strdup (buf);
+}
+
+static gboolean
+is_plain_text_by_locale (const gchar *name, const gchar *locale)
+{
+    gchar       buf[256];
+    FILE        *fp = NULL;
+    gchar       **argv = NULL;
+    gchar       **envp = NULL;
+    GError      *error = NULL;
+    gint        child_stdout;
+    gboolean    retval = FALSE;
+
+    argv = g_new0 (gchar *, 3);
+    argv[0] = FILE_CMD;
+    argv[1] = (gchar *) name;
+    argv[2] = NULL;
+
+    envp = g_new0 (gchar *, 4);
+    envp[0] = "LC_ALL=";
+    envp[1] = "LC_MESSAGES=C";
+    if (locale) {
+        envp[2] = g_strdup_printf ("LC_CTYPE=%s", locale);
+    }else{
+        envp[2] = NULL;
+    }
+    envp[3] = NULL;
+
+    if (!g_spawn_async_with_pipes (NULL, argv, envp,
+                0, 	    /* GSpawnFlags */
+                NULL,   /* child setup func */
+                NULL,   /* user data */
+                NULL,   /* pid */
+                NULL,
+                &child_stdout,
+                NULL,
+                &error)) {
+        g_print (error->message);
+        goto done;
+    }
+
+    if ((fp = fdopen (child_stdout, "r")) == NULL) {
+        g_print (_("Can't open pipe file descriptor.\n"));
+        goto done;
+    }
+
+    memset (buf, 0, sizeof (buf));
+    fgets (buf, sizeof (buf), fp);
+
+    if (fsexam_debug () & FSEXAM_DBG_PLAIN_TEXT) {
+        gchar *lc_all = NULL;
+        gchar *lc_ctype = NULL;
+
+        lc_all = getenv ("LC_ALL");
+        setenv ("LC_ALL", "", TRUE);    /* unset LC_ALL to get LC_CTYPE */
+
+        if (locale == NULL)
+            lc_ctype = setlocale (LC_CTYPE, NULL);
+        else
+            lc_ctype = (char *)locale;
+        g_print ("LC_CTYPE=%s, file type: %s\n", 
+                lc_ctype ? lc_ctype : "NULL",
+                buf ? buf : "Unknown");
+    
+        if (lc_all != NULL)
+            setenv ("LC_ALL", lc_all, TRUE);    /* reset LC_ALL */
+    }
+
+    if (*buf != '\0') {
+        gchar *p = buf;
+        while (*p != ':') 
+            ++p;
+        ++p;
+        while (isspace (*p)) 
+            ++p;
+
+        if (strstr (p, "text"))
+            retval = TRUE;
+    }
+
+done:
+    if (error != NULL)
+        g_error_free (error);
+    if (fp != NULL)
+        fclose (fp);
+
+    g_free (argv);
+    g_free (envp[2]);
+    g_free (envp);
+
+    return retval;
+}
+
+gboolean
+fsexam_is_plain_text (const gchar *name, FSEXAM_setting *setting)
+{
+    static gboolean first = TRUE;
+    gboolean    retval = FALSE;
+    GList       *p = NULL;
+    GList       *encode_list = NULL;
+
+    if (setting->pref->force)
+        return TRUE;
+
+    /* fast check in current locale */
+    if (is_plain_text_by_locale (name, NULL))
+        return TRUE;
+
+    /* check on UTF-8 locale */
+    if (first) {
+        setting->utf8_locale = get_utf8_locale ();
+        first = FALSE;
+    }
+
+    if (setting->utf8_locale != NULL &&
+            is_plain_text_by_locale (name, setting->utf8_locale))
+        return TRUE;
+
+    encode_list = setting->pref->encode_list;
+    for (p = encode_list; p; p = p->next)
+    {
+        const gchar *locale = encoding_to_locale (id2encoding (
+                                    ((Encoding*) p->data)->encodingID));
+
+        if (locale == NULL)
+            continue;
+
+        if (is_plain_text_by_locale (name, locale)) {
+            retval = TRUE;
+            break;
+        }
+    }
+
+    return retval;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-plaintext.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,33 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_PLAINTEXT_H
+#define _FSEXAM_PLAINTEXT_H
+
+gboolean fsexam_is_plain_text (const gchar *filename, FSEXAM_setting *setting);
+
+#endif //_FSEXAM_PLAINTEXT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-pref.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,292 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gconf/gconf-client.h>
+
+#include "fsexam.h"
+#include "fsexam-header.h"
+
+void cb_toolbar_style (GConfClient *, guint, GConfEntry *, gpointer);
+
+static GSList *
+remove_duplicated_encoding_name (GSList *list, GSList *standard)
+{
+    GSList *result = list;
+
+    while (list != NULL) {
+        GSList *second = standard;
+        
+        while (second != NULL) {
+            if (encoding2id (list->data) == encoding2id (second->data))
+                break;
+            second = g_slist_next (second);
+        }
+
+        if (second != NULL) {       /* duplicated, remove it */
+            GSList *next = NULL;
+
+            next = g_slist_next (list);
+            result = g_slist_delete_link (result, list);
+            list = next;
+        } else {
+            list = g_slist_next (list);
+        }
+    }
+
+    return result;
+}
+
+FSEXAM_pref *
+fsexam_pref_init (gboolean cmd_mode)
+{
+    FSEXAM_pref *pref = NULL;
+    GConfClient *gconf_client = NULL;
+
+    pref = g_new0 (FSEXAM_pref, 1);
+
+    gconf_client = pref->gconf_client = gconf_client_get_default ();
+    pref->hist_len = gconf_client_get_int (gconf_client, HISTLEN, NULL);
+
+    if (cmd_mode){
+        pref->auto_detect = FALSE;
+        pref->hidden = FALSE;
+        pref->auto_conversion= FALSE;
+        pref->recursive = FALSE;
+        pref->remote = FALSE;
+        pref->follow = FALSE;
+        pref->no_check_symlink_content = FALSE;
+        pref->use_log = FALSE;
+        pref->log_file = NULL;
+        pref->suffix_list = NULL;
+        pref->special = 0;
+    }else{
+		gconf_client_notify_add (gconf_client,
+				TOOLBAR_STYLE,
+				cb_toolbar_style,
+				NULL, NULL, NULL);
+
+        pref->auto_detect = gconf_client_get_bool (gconf_client,
+                                    AUTODETECTMODE,
+                                    NULL);
+        pref->hidden = gconf_client_get_bool (gconf_client,
+                                    HIDDENMODE,
+                                    NULL);
+        pref->auto_conversion= gconf_client_get_bool (gconf_client,
+                                    INTERACTIVEMODE,
+                                    NULL);
+        pref->recursive = gconf_client_get_bool (gconf_client,
+                                    RECURSIVEMODE,
+                                    NULL);
+        pref->remote = gconf_client_get_bool (gconf_client,
+                                    REMOTEMODE,
+                                    NULL);
+        pref->follow = gconf_client_get_bool (gconf_client,
+                                    FOLLOWMODE,
+                                    NULL);
+        pref->use_log = gconf_client_get_bool (gconf_client,
+                                    USELOG,
+                                    NULL);
+        pref->no_check_symlink_content = gconf_client_get_bool (gconf_client,
+                                    CHECKSYMLINKTARGETMODE,
+                                    NULL);
+        pref->suffix_list = (GSList *) gconf_client_get_list (gconf_client,
+                                    SUFFIXLIST,
+                                    GCONF_VALUE_STRING,
+                                    NULL);
+        pref->log_file = gconf_client_get_string (gconf_client,
+                                    LOGFILE,
+                                    NULL);
+        pref->special = gconf_client_get_int (gconf_client,
+                                    SPECIAL,
+                                    NULL);
+    }
+
+    pref->conv_content = FALSE;
+    pref->dry_run = FALSE;
+    pref->force = FALSE;
+
+    pref->encode_list = NULL;
+    pref->encode_name_list = NULL;
+
+    return pref;
+}
+
+void
+fsexam_pref_destroy (FSEXAM_pref *pref)
+{
+    if (NULL == pref)
+        return;
+
+    g_object_unref (pref->gconf_client);
+    fsexam_encoding_destroy (pref->encode_list);
+
+    fsexam_slist_free (pref->encode_name_list);
+    fsexam_slist_free (pref->suffix_list);
+
+    g_free (pref->log_file);
+    g_free (pref);
+}
+
+/*
+ *  Init encoding_list and encoding_name_list from gconf and CLI option
+ */
+void
+fsexam_pref_set_encoding_list (FSEXAM_pref *pref,
+                               gchar *encoding_string,
+                               gboolean append,
+                               gboolean prepend,
+                               gboolean save)
+{
+    GConfClient     *client;
+
+    if (NULL == pref)
+        return;
+
+    client = pref->gconf_client;
+
+    if (encoding_string == NULL){   /* Use GConf Encoding list only */
+        pref->encode_name_list = (GSList *)gconf_client_get_list (client,
+                                                    ENCODINGLIST,
+                                                    GCONF_VALUE_STRING,
+                                                    NULL);
+        pref->encode_list = fsexam_encoding_init (pref->encode_name_list);
+    }else{
+        GSList      *encode_text;
+
+        /* encoding list from command line arguments */
+        pref->encode_name_list = encoding_string_parse (encoding_string);
+
+        /* encoding list from gconf database */
+        encode_text = (GSList *)gconf_client_get_list (client,
+                                                       ENCODINGLIST,
+                                                       GCONF_VALUE_STRING,
+                                                       NULL);
+        
+        if (append) {
+            pref->encode_name_list = remove_duplicated_encoding_name (
+                    pref->encode_name_list,
+                    encode_text);
+            pref->encode_name_list = g_slist_concat (encode_text, 
+                                                     pref->encode_name_list);
+        }else if (prepend){
+            pref->encode_name_list = remove_duplicated_encoding_name (
+                    pref->encode_name_list,
+                    encode_text);
+            pref->encode_name_list = g_slist_concat (pref->encode_name_list, 
+                                                     encode_text);
+        }else{
+            fsexam_slist_free (encode_text);    /* free encode from gconf */
+        }
+
+        if (save){
+            gconf_client_set_list (client,
+                                   ENCODINGLIST,
+                                   GCONF_VALUE_STRING,
+                                   pref->encode_name_list,
+                                   NULL);
+        }
+
+        pref->encode_list = fsexam_encoding_init (pref->encode_name_list);
+    }
+
+    return;
+}
+
+/* 
+ * Update FSEAM_pref encoding name and encoding list, save to gconf
+ * if client != NULL
+ *
+ * slist will be used directly, so caller don't free it 
+ */
+void
+fsexam_pref_update_encoding (FSEXAM_pref *pref, 
+                             GSList *slist, 
+                             GConfClient *client)
+{
+    if (NULL == pref) {
+		fsexam_slist_free (slist);
+        return;
+	}
+
+    if (client != NULL) {   /* save to gconf */
+        gconf_client_set_list (client,
+                               ENCODINGLIST,
+                               GCONF_VALUE_STRING,
+                               slist,
+                               NULL);
+    }
+
+    /* free the old data */
+    fsexam_slist_free (pref->encode_name_list);
+    fsexam_encoding_destroy (pref->encode_list);
+   
+    /* init with new data */
+    pref->encode_name_list = slist;
+    pref->encode_list = fsexam_encoding_init (pref->encode_name_list);
+
+    return;
+}
+
+/*
+ *  Save the user's preference setting into gconf database
+ */
+void
+fsexam_pref_save_to_gconf (FSEXAM_pref *pref, 
+                           GConfClient *client, 
+                           gboolean save_encoding)
+{
+    if ((NULL == pref) || (NULL == client))
+        return;
+
+    gconf_client_set_bool (client, AUTODETECTMODE, pref->auto_detect, NULL);
+    gconf_client_set_bool (client, HIDDENMODE, pref->hidden, NULL);
+    gconf_client_set_bool (client, RECURSIVEMODE, pref->recursive, NULL);
+    gconf_client_set_bool (client, REMOTEMODE, pref->remote, NULL);
+    gconf_client_set_bool (client, FOLLOWMODE, pref->follow, NULL);
+    gconf_client_set_bool (client, USELOG, pref->use_log, NULL);
+    gconf_client_set_bool (client, INTERACTIVEMODE, 
+                           pref->auto_conversion, NULL);
+    gconf_client_set_bool (client, CHECKSYMLINKTARGETMODE, 
+                           pref->no_check_symlink_content, NULL);
+
+    if (pref->log_file != NULL)
+    	gconf_client_set_string (client, LOGFILE, pref->log_file, NULL);
+    gconf_client_set_int (client, SPECIAL, pref->special, NULL);
+    gconf_client_set_int (client, HISTLEN, pref->hist_len, NULL);
+
+    if (save_encoding)
+        gconf_client_set_list (client, ENCODINGLIST,
+                               GCONF_VALUE_STRING, pref->encode_name_list,
+                               NULL);
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-pref.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,93 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_PREF_H
+#define _FSEXAM_PREF_H
+
+#define AUTODETECTMODE  "/apps/fsexam/auto_detect"
+#define INTERACTIVEMODE "/apps/fsexam/auto_mode"
+#define RECURSIVEMODE   "/apps/fsexam/recur_mode"
+#define HIDDENMODE      "/apps/fsexam/hidden"
+#define REMOTEMODE      "/apps/fsexam/remote"
+#define FOLLOWMODE      "/apps/fsexam/follow"
+#define SUFFIXLIST      "/apps/fsexam/suffix"
+#define CHECKSYMLINKTARGETMODE  "/apps/fsexam/no_check_symlink_content"
+#define USELOG          "/apps/fsexam/uselog"
+#define LOGFILE         "/apps/fsexam/logfile"
+#define HISTLEN         "/apps/fsexam/hist_len"
+#define SPECIAL         "/apps/fsexam/special"
+#define ENCODINGLIST    "/apps/fsexam/encoding"
+
+#define TOOLBAR_STYLE	"/desktop/gnome/interface/toolbar_style"
+
+typedef struct _FSEXAM_pref FSEXAM_pref;
+
+struct _FSEXAM_pref {
+    GConfClient *gconf_client;
+
+    gboolean    auto_detect;
+    gboolean    auto_conversion;
+    gboolean    follow;
+    gboolean    hidden;
+    gboolean    recursive;
+    gboolean    remote;
+    gboolean    no_check_symlink_content;
+
+    gboolean    force;
+    gboolean    dry_run;
+    gboolean    conv_content;
+    gboolean    use_log;
+
+    gint        hist_len;   /* history info len */
+    gint        special;    /* special file type */
+
+    GList       *encode_list;       /* Encoding data structure list */
+    GSList      *encode_name_list;  /* contains only encoding name */
+    GSList      *suffix_list;   /* not use now */
+
+    gchar       *log_file;
+};
+
+FSEXAM_pref *   fsexam_pref_init (gboolean cmd_mode);
+
+void            fsexam_pref_set_encoding_list (FSEXAM_pref *pref,
+                                               gchar *encoding_string, 
+                                               gboolean append, 
+                                               gboolean prepend, 
+                                               gboolean save);
+
+void            fsexam_pref_update_encoding (FSEXAM_pref *pref, 
+                                             GSList *slist, 
+                                             GConfClient *client);
+
+void            fsexam_pref_save_to_gconf (FSEXAM_pref *pref, 
+                                           GConfClient *client,
+                                           gboolean save_encoding);
+
+void            fsexam_pref_destroy (FSEXAM_pref *pref);
+
+#endif //_FSEXAM_PREPROCESS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-preference-dialog.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,803 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <libgen.h>
+#include <strings.h>
+#include <string.h>
+
+#include <glade/glade.h>
+#include <gtk/gtk.h>
+#include <glib.h>
+#include <libgnome/libgnome.h>
+#include <libgnomeui/libgnomeui.h>
+#include <glib/gi18n.h>
+#include <gconf/gconf-client.h>
+
+#include "fsexam-header.h"
+#include "fsexam-debug.h"
+#include "fsexam-preference-dialog.h"
+#include "fsexam-ui.h"
+#include "callbacks.h"
+
+enum {
+    COLUMN_ENCODING_NAME = 0,
+    ENCODING_NUM_COLS
+};
+
+typedef enum {
+    ActionInvalid,
+    ActionAutoDetect,
+    ActionAutoConversion,
+    ActionRecursive,
+    ActionHidden,
+    ActionFollow,
+    ActionRemote,
+    ActionNoCheckSymlink,
+    ActionSpecial,
+    ActionCompress,
+    ActionUseLog,
+    ActionLogFile,
+    ActionHistLen,
+    ENCODING_UP,
+    ENCODING_DOWN,
+    ENCODING_ADD,
+    ENCODING_DELETE,
+    ENCODING_SAVE,
+    ENCODING_RESET
+} EncodingActionType;
+
+static gboolean get_encoding_name_of_row (GtkTreeModel *,
+                                          GtkTreePath *,
+                                          GtkTreeIter *,
+                                          gpointer);
+static void selection_changed_callback (GtkTreeSelection *, gpointer);
+static void handle_encoding_action (EncodingActionType, GtkWidget *);
+static void cb_set_sensitive (GtkWidget *, gpointer);
+static void cb_pref_reset (GtkDialog *, FSEXAM_pref *);
+static void cb_encoding_manipulate (GtkWidget *, gpointer);
+static void selection_changed_callback (GtkTreeSelection *, gpointer);
+static void pref_dialog_response_callback (GtkWidget *, int, gpointer);
+static void create_encodings_treeview (GtkTreeView *, GtkWidget *);
+static void show_pref_help(void);
+
+/*
+ * Get the current rows encoding name, and append it to the user
+ * provided list
+ */
+static gboolean
+get_encoding_name_of_row (GtkTreeModel *model,
+                          GtkTreePath  *path,
+                          GtkTreeIter  *iter,
+                          gpointer     user_data)
+{
+    GSList  **list = user_data;
+    gchar   *name = NULL;
+
+    gtk_tree_model_get (model, iter, COLUMN_ENCODING_NAME, &name, -1);
+    *list = g_slist_prepend (*list, name);  /* free name when free list */
+
+    return FALSE;
+}
+
+/*
+ *  Event handler for Up/Down/Add/Remove/Save button of encoding treeview
+ */
+static void
+handle_encoding_action (EncodingActionType type, GtkWidget *dialog)
+{
+    GtkTreeSelection *selection = NULL;
+    GtkTreeModel     *model = NULL;
+    GtkWidget        *view = NULL;
+    GtkTreeIter      iter_cur, iter_other;
+
+    if (type == ActionInvalid)
+        return;
+
+    view = g_object_get_data (G_OBJECT (dialog), "treeview_encoding_list");
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
+
+    if (gtk_tree_selection_get_selected (selection, &model, &iter_cur)) {
+        GtkTreePath *treepath = gtk_tree_model_get_path (model, &iter_cur);
+        iter_other = iter_cur;
+
+        switch (type) {
+            case ENCODING_UP:
+                if ((gtk_tree_path_prev (treepath)) 
+                    && (gtk_tree_model_get_iter (model, &iter_other, treepath)))
+                {
+                        gtk_list_store_swap (GTK_LIST_STORE (model), 
+                                             &iter_cur, 
+                                             &iter_other);
+                }
+
+                gtk_widget_set_sensitive (
+                        g_object_get_data (G_OBJECT (dialog), "button_down"),
+                        TRUE);
+                if (! gtk_tree_path_prev (treepath)) {
+                    gtk_widget_set_sensitive (
+                            g_object_get_data (G_OBJECT (dialog), "button_up"),
+                            FALSE);
+                }
+                
+                break;
+            case ENCODING_DOWN:
+                if (gtk_tree_model_iter_next (model, &iter_other)) {
+                    gtk_list_store_swap (GTK_LIST_STORE (model), 
+                                         &iter_cur, 
+                                         &iter_other);
+                }
+
+                gtk_widget_set_sensitive (
+                        g_object_get_data (G_OBJECT (dialog), "button_up"),
+                        TRUE);
+                if (! gtk_tree_model_iter_next (model, &iter_cur)) {
+                    gtk_widget_set_sensitive (
+                        g_object_get_data (G_OBJECT (dialog), "button_down"),
+                        FALSE);
+                }
+            
+                break;
+            case ENCODING_DELETE:
+                gtk_list_store_remove (GTK_LIST_STORE (model), &iter_cur);
+
+                break;
+
+            default:
+                break;
+        }
+
+        if (treepath != NULL)
+            gtk_tree_path_free (treepath);
+    }
+
+    return;
+}
+
+/*
+ * Make related button sensitive or not,
+ * according to 'Button Specail' and 'Button Use Log"
+ */
+static void
+cb_set_sensitive (GtkWidget *widget, gpointer data)
+{
+    GtkWidget   *dialog = data;
+    gboolean    active; 
+
+    active = gtk_toggle_button_get_active (
+                g_object_get_data (G_OBJECT (dialog), "special"));
+    gtk_widget_set_sensitive(
+                g_object_get_data (G_OBJECT (dialog), "compress"), 
+                active);
+
+    active = gtk_toggle_button_get_active (
+                g_object_get_data (G_OBJECT (dialog), "use_log"));
+    gtk_widget_set_sensitive (
+                g_object_get_data (G_OBJECT (dialog), "log_file"), 
+                active);
+    gtk_widget_set_sensitive (
+                g_object_get_data (G_OBJECT (dialog), "label_log_file"), 
+                active);
+
+    return;
+}
+
+/*
+ * Refresh FSEXAM_pref data structure after clicked preference dialog's
+ * 'OK' Button
+ *
+ * TODO: Use flags to indicate what we have changed.
+ */
+static void
+cb_pref_reset (GtkDialog *dialog, FSEXAM_pref *pref)
+{
+    gboolean    active;
+    GtkWidget   *w = NULL;
+
+    w = g_object_get_data (G_OBJECT (dialog), "auto_detect");
+    pref->auto_detect = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
+
+    w = g_object_get_data (G_OBJECT (dialog), "auto_convert");
+    pref->auto_conversion = gtk_toggle_button_get_active (
+                                    GTK_TOGGLE_BUTTON (w));
+
+    w = g_object_get_data (G_OBJECT (dialog), "recursive");
+    pref->recursive = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
+
+    w = g_object_get_data (G_OBJECT (dialog), "hidden");
+    pref->hidden = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
+
+    w = g_object_get_data (G_OBJECT (dialog), "follow");
+    pref->follow = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
+
+    w = g_object_get_data (G_OBJECT (dialog), "remote");
+    pref->remote = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
+
+    w = g_object_get_data (G_OBJECT (dialog), "nocheck_symlink");
+    pref->no_check_symlink_content = gtk_toggle_button_get_active (
+                                    GTK_TOGGLE_BUTTON (w));
+
+    /* Special type handling setting */
+    w = g_object_get_data (G_OBJECT (dialog), "special");
+    active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
+
+    if (active) {		/* enable special handling */
+        w = g_object_get_data (G_OBJECT (dialog), "compress");
+        active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
+        if (active) {
+            pref->special |= SPECIAL_COMPRESS;
+        }else{
+            pref->special &= ~SPECIAL_COMPRESS;
+        }
+    }else{
+        pref->special = SPECIAL_NO;
+    }
+
+    /* Log setting */
+    w = g_object_get_data (G_OBJECT (dialog), "use_log");
+    active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
+    
+    if (active) {
+        gchar *new_log_name = NULL;
+
+        pref->use_log = TRUE;
+
+        w = g_object_get_data (G_OBJECT (dialog), "log_file");
+        new_log_name = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (w));
+
+        if ((pref->log_file == NULL) || ((new_log_name != NULL) 
+			&& (strcmp (new_log_name, pref->log_file) != 0))) {
+            Log_info  *new_log_info = fsexam_log_open (new_log_name);
+
+            if (new_log_info != NULL) { /* change to new log struct */
+                fsexam_log_close (view->setting->log_info);
+                g_free (pref->log_file);
+
+                pref->log_file = g_strdup (new_log_name);
+                view->setting->log_info = new_log_info;
+            }
+        }
+
+        g_free (new_log_name);
+    }else{
+        pref->use_log = FALSE;
+
+        if (view->setting->log_info != NULL) {
+            /*
+             * We won't gfree(pref->log_file), result in it will remember the
+             * last setting: will be written to gconf before exit.
+             */
+            fsexam_log_close (view->setting->log_info);
+            view->setting->log_info = NULL;
+        }
+    }
+
+    /* history length */
+    w = g_object_get_data (G_OBJECT (dialog), "spinbutton_hist_len");
+    pref->hist_len = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (w));
+
+    /* update encoding */
+    fsexam_pref_update_encoding (
+                    view->setting->pref,
+                    fsexam_prefdialog_get_encoding_list (GTK_WIDGET (dialog)),
+                    NULL);
+
+    return;
+}
+
+/* wrapper for cb_create_encoding_dialog func in other source file */
+static void
+create_encoding_dialog (GtkWidget *widget, gpointer data)
+{
+    GtkWidget   *parent = data;
+
+    cb_create_encoding_dialog (parent);
+
+    return;
+}
+
+/*
+ *  Wrapper for handle_encoding_action: handle actions on encoding
+ */
+static void
+cb_encoding_manipulate (GtkWidget *widget, gpointer user_data)
+{
+    GtkWidget   *dialog = user_data;
+
+    EncodingActionType type = ActionInvalid;
+
+    if (g_object_get_data (G_OBJECT (dialog), "button_up") == widget)
+        type = ENCODING_UP;
+    else if (g_object_get_data (G_OBJECT (dialog), "button_down") == widget)
+        type = ENCODING_DOWN;
+    else if (g_object_get_data (G_OBJECT (dialog), "button_delete") == widget)
+        type = ENCODING_DELETE;
+    else if (g_object_get_data (G_OBJECT (dialog), "button_reset") == widget)
+        type = ENCODING_RESET;
+    
+    handle_encoding_action (type, dialog);
+
+    if (GTK_WIDGET_CAN_FOCUS (widget))
+        gtk_widget_grab_focus (widget);
+
+    return;
+}
+
+/* 
+ * callback for 'Save' button:
+ * save encoding into gconf and sync with Encoding list
+ */
+static void
+save_encoding_list (GtkWidget *widget, gpointer data)
+{
+    GtkWidget *dialog = data;
+    GtkWidget *confirm_dlg = NULL;
+    gint      response;
+
+    confirm_dlg = gtk_message_dialog_new (
+                    GTK_WINDOW (view->mainwin),
+                    GTK_DIALOG_DESTROY_WITH_PARENT,
+                    GTK_MESSAGE_WARNING,
+                    GTK_BUTTONS_YES_NO,
+                    _("Do you want to save this encoding list permanently?"));
+
+    response = gtk_dialog_run (GTK_DIALOG (confirm_dlg));
+
+    if (response == GTK_RESPONSE_YES) {
+        GSList *list;
+
+        list = fsexam_prefdialog_get_encoding_list (dialog);
+        fsexam_pref_update_encoding (view->setting->pref, 
+                                     list, 
+                                     view->setting->pref->gconf_client);
+    }
+
+    gtk_widget_destroy (confirm_dlg);
+
+    return;
+}
+
+/*
+ *  Fill in Model data according to Encoding List
+ */
+static void
+set_encodings_treeview_model (GtkTreeView *view, GSList *encoding_list)
+{
+    GtkListStore  *store = NULL;
+    GtkTreeIter   iter;
+    GSList        *list = encoding_list;
+
+    store = (GTK_LIST_STORE (gtk_tree_view_get_model (view)));
+	gtk_list_store_clear (store);
+
+    while (list) {
+        short encoding_id = encoding2id ((gchar *)list->data);
+        list = g_slist_next (list);
+
+        if (encoding_id == -1)
+            continue;
+
+        gtk_list_store_append (store, &iter);
+        gtk_list_store_set (store, &iter,
+                            COLUMN_ENCODING_NAME, id2encoding (encoding_id),
+                            -1);
+    }
+
+	return;
+}
+
+/*
+ * Create GtkTreeView and empty TreeModel
+ */
+static void
+create_encodings_treeview (GtkTreeView *encode_view, 
+                           GtkWidget *dialog)
+{
+    GtkCellRenderer     *renderer = NULL;
+    GtkTreeViewColumn   *column = NULL;
+    GtkTreeSelection    *selection = NULL;
+	GtkListStore		*store = NULL;
+    
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (NULL,
+                                    renderer,
+                                    "text", COLUMN_ENCODING_NAME,
+                                    NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (encode_view), column);
+    gtk_tree_view_set_search_column (GTK_TREE_VIEW (encode_view),
+                                    COLUMN_ENCODING_NAME);
+
+    selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (encode_view)),
+    gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+    /* selection event handler */
+    selection_changed_callback (selection, dialog);
+    g_signal_connect (G_OBJECT (selection), 
+                      "changed",
+                      G_CALLBACK (selection_changed_callback), 
+                      dialog);
+
+	/* create empty model */
+	store = gtk_list_store_new (ENCODING_NUM_COLS, G_TYPE_STRING);
+    gtk_tree_view_set_model (GTK_TREE_VIEW (encode_view), 
+							 GTK_TREE_MODEL (store));
+    g_object_unref (store);
+
+    return;
+
+}
+
+/*
+ * callback to handle sensitive/insensitive of buttons
+ */
+static void
+selection_changed_callback (GtkTreeSelection *selection, gpointer data)
+{
+    GtkWidget       *dialog = data;
+    GtkWidget       *up_button = NULL;
+    GtkWidget       *down_button = NULL;
+    GtkWidget       *delete_button = NULL;
+    GtkTreeModel    *model = NULL;
+    GtkTreeIter     iter;
+    gboolean        has_selection;
+
+    up_button = g_object_get_data (G_OBJECT (dialog), "button_up");
+    down_button = g_object_get_data (G_OBJECT (dialog), "button_down");
+    delete_button = g_object_get_data (G_OBJECT (dialog), "button_delete");
+
+    has_selection = gtk_tree_selection_get_selected (
+                                        selection,
+                                        &model,
+                                        &iter);
+
+    if (has_selection) {
+        GtkTreePath *treepath = NULL;
+    
+        treepath = gtk_tree_model_get_path (model, &iter);
+
+        gtk_widget_set_sensitive (delete_button, TRUE);
+
+        if (! gtk_tree_path_prev (treepath))
+            gtk_widget_set_sensitive (up_button, FALSE);
+        else
+            gtk_widget_set_sensitive (up_button, TRUE);
+        
+        if (! gtk_tree_model_iter_next (model, &iter))
+            gtk_widget_set_sensitive (down_button, FALSE);
+        else
+            gtk_widget_set_sensitive (down_button, TRUE);
+
+        gtk_tree_path_free (treepath);
+    }else{
+        gtk_widget_set_sensitive (up_button, FALSE);
+        gtk_widget_set_sensitive (down_button, FALSE);
+        gtk_widget_set_sensitive (delete_button, FALSE);
+    }
+
+    return;
+}
+
+static void 
+show_pref_help(void)
+{
+    GError *err = NULL;
+
+    gnome_help_display ("fsexam.xml", "fsexam-prefs", &err);
+
+    if (err) {
+        GtkWidget *dialog;
+        dialog = gtk_message_dialog_new (
+                        GTK_WINDOW (view->mainwin),
+                        GTK_DIALOG_DESTROY_WITH_PARENT,
+                        GTK_MESSAGE_ERROR,
+                        GTK_BUTTONS_CLOSE,
+                        _("There was an error when displaying help: %s"),
+                        err->message);
+
+        g_signal_connect (G_OBJECT (dialog),
+                          "response",
+                          G_CALLBACK (gtk_widget_destroy),
+                          NULL);
+
+        gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+        gtk_widget_show (dialog);
+        g_error_free (err);
+    }
+
+    return;
+}
+
+/*
+ * Dialog response event hander 
+ */
+static void
+pref_dialog_response_callback (GtkWidget *window, gint id, gpointer data)
+{
+    FSEXAM_pref     *pref = data;
+
+    if (id == GTK_RESPONSE_OK) {
+        cb_pref_reset (GTK_DIALOG (window), pref);
+
+        if (fsexam_debug() & FSEXAM_DBG_OPTION) {
+            fsexam_setting_print (view->setting);
+        }
+    } else if (id == GTK_RESPONSE_HELP) {
+        show_pref_help ();
+        return;
+    }
+
+    gtk_widget_destroy (window);
+
+    return;
+}
+
+/*
+ *  callback for 'Preferences' menu: create preference dialog 
+ */
+void
+cb_create_pref_dialog ()
+{
+    FSEXAM_pref  *pref = view->setting->pref;
+    GtkWidget    *dialog = NULL;
+    GtkWidget    *w = NULL;
+    GladeXML     *xml = NULL;
+		
+    xml = fsexam_gui_load_glade_file (FSEXAM_GLADE_FILE, 
+                                      "pref_dialog",
+                                      GTK_WINDOW (view->mainwin));
+    if (xml == NULL)
+        return;
+
+    /* main dialog */
+    dialog = glade_xml_get_widget (xml, "pref_dialog");
+    gtk_dialog_set_default_response (GTK_DIALOG (dialog), 
+    		GTK_RESPONSE_CANCEL);
+    g_signal_connect (G_OBJECT (dialog), "response",
+    		G_CALLBACK (pref_dialog_response_callback),
+    		pref);
+
+    /* buttons */
+    w = glade_xml_get_widget (xml, "chkbtn_auto_detect");
+    g_object_set_data (G_OBJECT (dialog), "auto_detect", w);
+
+    w = glade_xml_get_widget (xml, "chkbtn_auto_convert");
+    g_object_set_data (G_OBJECT (dialog), "auto_convert", w);
+    
+    w = glade_xml_get_widget (xml, "chkbtn_recursive");
+    g_object_set_data (G_OBJECT (dialog), "recursive", w);
+
+    w = glade_xml_get_widget (xml, "chkbtn_hidden");
+    g_object_set_data (G_OBJECT (dialog), "hidden", w);
+
+    w = glade_xml_get_widget (xml, "chkbtn_follow");
+    g_object_set_data (G_OBJECT (dialog), "follow", w);
+
+    w = glade_xml_get_widget (xml, "chkbtn_remote");
+    g_object_set_data (G_OBJECT (dialog), "remote", w);
+
+    w = glade_xml_get_widget (xml, "chkbtn_nocheck_symlink");
+    g_object_set_data (G_OBJECT (dialog), "nocheck_symlink", w);
+
+    /* Special file type */
+    w = glade_xml_get_widget (xml, "chkbtn_special");
+    g_object_set_data (G_OBJECT (dialog), "special", w);
+    g_signal_connect (G_OBJECT (w), "toggled",
+                      G_CALLBACK (cb_set_sensitive), dialog);
+
+    w = glade_xml_get_widget (xml, "chkbtn_compress");
+    g_object_set_data (G_OBJECT (dialog), "compress", w);
+
+    /* Use log or not */
+    w = glade_xml_get_widget (xml, "chkbtn_use_log");
+    g_object_set_data (G_OBJECT (dialog), "use_log", w);
+    g_signal_connect (G_OBJECT (w), "toggled", 
+                      G_CALLBACK (cb_set_sensitive), dialog);
+
+    w = glade_xml_get_widget (xml, "label_log_file");
+    g_object_set_data (G_OBJECT (dialog), "label_log_file", w);
+
+    w = glade_xml_get_widget (xml, "filebtn_log_file");
+    g_object_set_data (G_OBJECT (dialog), "log_file", w);
+
+    w = glade_xml_get_widget (xml, "spinbutton_hist_len");
+    g_object_set_data (G_OBJECT (dialog), "spinbutton_hist_len", w);
+
+    /* Up/Down/Add/Delete buttons */
+    w = glade_xml_get_widget (xml, "chkbtn_up");
+    g_object_set_data (G_OBJECT (dialog), "button_up", w);
+    g_signal_connect (G_OBJECT (w), 
+                      "clicked",
+                      G_CALLBACK (cb_encoding_manipulate),
+                      dialog);
+
+    w = glade_xml_get_widget (xml, "chkbtn_down");
+    g_object_set_data (G_OBJECT (dialog), "button_down", w);
+    g_signal_connect (G_OBJECT (w), 
+                      "clicked",
+                      G_CALLBACK (cb_encoding_manipulate),
+                      dialog);
+
+    w = glade_xml_get_widget (xml, "chkbtn_delete");
+    g_object_set_data (G_OBJECT (dialog), "button_delete", w);
+    g_signal_connect (G_OBJECT (w), 
+                      "clicked",
+                      G_CALLBACK (cb_encoding_manipulate),
+                      dialog);
+
+    w = glade_xml_get_widget (xml, "chkbtn_save");
+    g_object_set_data (G_OBJECT (dialog), "button_save", w);
+    g_signal_connect (G_OBJECT (w), 
+                      "clicked",
+                      G_CALLBACK (save_encoding_list),
+                      dialog);
+
+    w = glade_xml_get_widget (xml, "chkbtn_add");
+    g_signal_connect (G_OBJECT (w), 
+                      "clicked",
+                      G_CALLBACK (create_encoding_dialog),
+                      dialog);
+
+    /* Init encoding list from FSEXAM_setting->pref->encoding_list */
+    w  = glade_xml_get_widget (xml, "treeview_encoding_list");
+    g_object_set_data (G_OBJECT (dialog), "treeview_encoding_list", w);
+
+    /* create tree view and empty tree model */
+    create_encodings_treeview (GTK_TREE_VIEW (w), dialog); 
+   
+    g_object_unref (xml);       /* destroy xml */
+
+    /* buttons */
+    w = g_object_get_data (G_OBJECT (dialog), "auto_detect");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), pref->auto_detect);
+
+    w = g_object_get_data (G_OBJECT (dialog), "auto_convert");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), pref->auto_conversion);
+    
+    w = g_object_get_data (G_OBJECT (dialog), "recursive");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), pref->recursive);
+
+    w = g_object_get_data (G_OBJECT (dialog), "hidden");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), pref->hidden);
+
+    w = g_object_get_data (G_OBJECT (dialog), "follow");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), pref->follow);
+
+    w = g_object_get_data (G_OBJECT (dialog), "remote");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w),  pref->remote);
+
+    w = g_object_get_data (G_OBJECT (dialog), "nocheck_symlink");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), 
+                                  pref->no_check_symlink_content);
+
+    /* Special file type */
+    w = g_object_get_data (G_OBJECT (dialog), "special");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), 
+                                  pref->special == 0 ? FALSE : TRUE);
+
+    w = g_object_get_data (G_OBJECT (dialog), "compress");
+
+    gtk_widget_set_sensitive (w, pref->special == 0 ? FALSE : TRUE);
+    if ((pref->special & SPECIAL_COMPRESS) != 0) {
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), TRUE);
+    }else{
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), FALSE);
+    }
+
+    /* Use log or not */
+    w = g_object_get_data (G_OBJECT (dialog), "use_log");
+    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), pref->use_log);
+
+    w = g_object_get_data (G_OBJECT (dialog), "log_file");
+
+    if (pref->log_file != NULL) {
+        gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (w), pref->log_file);
+    }
+
+    /* Use log or not */
+    if (pref->use_log) {
+        gtk_widget_set_sensitive (w, TRUE);
+        gtk_widget_set_sensitive (
+                g_object_get_data (G_OBJECT (dialog), "label_log_file"),
+                TRUE);
+    }else{
+        gtk_widget_set_sensitive (w, FALSE);
+        gtk_widget_set_sensitive (
+                g_object_get_data (G_OBJECT (dialog), "label_log_file"),
+                FALSE);
+    }
+
+    w = g_object_get_data (G_OBJECT (dialog), "spinbutton_hist_len");
+    gtk_spin_button_set_value (GTK_SPIN_BUTTON (w), (gdouble)pref->hist_len);
+
+    /* Init encoding list from FSEXAM_setting->pref->encoding_list */
+    w  = g_object_get_data (G_OBJECT (dialog), "treeview_encoding_list");
+    set_encodings_treeview_model (GTK_TREE_VIEW (w), pref->encode_name_list);
+   
+    gtk_dialog_run (GTK_DIALOG (dialog));
+
+    return;
+}
+
+/*
+ *  Return a new list containing encoding names.
+ *  Need free it when no one use it any more.
+ */
+GSList *
+fsexam_prefdialog_get_encoding_list (GtkWidget *window)
+{
+    GtkWidget       *treeview = NULL;
+    GtkTreeModel    *treemodel = NULL;
+    GSList          *result = NULL;
+
+    treeview  = g_object_get_data (G_OBJECT (window), "treeview_encoding_list");
+    treemodel = gtk_tree_view_get_model (GTK_TREE_VIEW (treeview));
+
+    gtk_tree_model_foreach (treemodel, 
+                            get_encoding_name_of_row, 
+                            (gpointer) &result);
+
+    result = g_slist_reverse (result);
+    
+    return result;
+}
+
+/*
+ *  Update encoding treeview according to new encoding list
+ */
+void
+fsexam_prefdialog_update_encoding_model (GtkWidget *window, 
+                                         GSList *new_encoding_list)
+{
+    GtkWidget       *treeview = NULL;
+    GtkListStore    *store = NULL;
+    GtkTreeIter     iter;
+    GSList          *tmp = new_encoding_list;
+
+    treeview = g_object_get_data (G_OBJECT (window), "treeview_encoding_list");
+    store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (treeview)));
+
+    gtk_list_store_clear (store);
+
+    while (tmp != NULL) {
+        gchar *name = tmp->data;
+        short encoding_id = encoding2id (name);
+
+        tmp = tmp->next;
+
+        if (encoding_id == -1)
+            continue;
+
+        gtk_list_store_append (store, &iter);
+        gtk_list_store_set (store, &iter,
+                            COLUMN_ENCODING_NAME, name,
+                            -1);
+    }
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-preference-dialog.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,37 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_PREFERENCE_DIALOG_H
+#define _FSEXAM_PREFERENCE_DIALOG_H
+
+void    cb_create_pref_dialog (void);
+void    fsexam_prefdialog_update_encoding_model (
+                              GtkWidget *window, 
+                              GSList *new_encoding_list);
+GSList  *fsexam_prefdialog_get_encoding_list (GtkWidget *window);
+
+#endif
--- a/src/cmd/fsexam/src/fsexam-preference.c	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,595 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-#include <libgnome/gnome-i18n.h>
-#include <libgnome/libgnome.h>
-#include <string.h>
-#include "encode.h"
-#include "fsexam-history.h"
-#include "fsexam-preference.h"
-#include "fsexam.h"
-
-#define  PATH           "/apps/fsexam"
-#define  AUTOMATICMODE  "/apps/fsexam/auto_mode"
-#define  RECURSIVEMODE  "/apps/fsexam/recur_mode"
-#define  ENCODINGLIST   "/apps/fsexam/encoding"
-#define  SUFFIXLIST     "/apps/fsexam/suffix"
-
-#define  PREF_AUTO_MODE 0x1
-#define  PREF_RECUR_MODE 0x2
-#define  PREF_ENCODING_LIST 0x4
-
-enum {
-  COLUMN_ENCODING_NAME = 0,
-  COLUMN_ENCODING_INDEX,
-  ENCODING_NUM_COLS
-};
-
-void
-fsexam_pref_free (FSEXAM_pref *pref)
-{
-  destroy_encode (pref->encode_list);
-  g_free (pref);
-}
-
-static GtkTreeModel *
-create_encodings_treeview_model (FSEXAM_pref *pref)
-{
-  GtkListStore *store;
-  GtkTreeIter  iter;
-  GList        *list = pref->encode_list;
-  gint         i = 0;
-  
-  store = gtk_list_store_new (ENCODING_NUM_COLS,
-			      G_TYPE_STRING,
-			      G_TYPE_INT);
-
-  while (list)
-    {
-      Encoding *en = (Encoding *)list->data;
-      
-      gtk_list_store_append (store, &iter);
-      gtk_list_store_set (store, &iter,
-			  COLUMN_ENCODING_NAME, en->codename,
-			  COLUMN_ENCODING_INDEX, i,
-			  -1);
-      ++i;
-      list = g_list_next (list);
-    }
-
-  return GTK_TREE_MODEL (store);
-}
-
-static gboolean
-set_button_sensitive (GtkTreeView *treeview,
-		      gpointer user_data)
-{
-  FSEXAM_pref *pref = view->pref;
-  GtkTreeSelection *selection;
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-  gint num_encode_list = g_list_length (pref->encode_list);
-
-  if (num_encode_list == 1) return TRUE;
-
-  selection = gtk_tree_view_get_selection (treeview);
-  if (gtk_tree_selection_get_selected (selection, &model, &iter))
-    {
-      gint index;
-
-      gtk_tree_model_get (model, &iter, COLUMN_ENCODING_INDEX, &index, -1);
-
-      if (index == 0)
-	{
-	  gtk_widget_set_sensitive (pref->up_button, FALSE);
-	  gtk_widget_set_sensitive (pref->down_button, TRUE);
-	}
-      else if (index == num_encode_list - 1)
-	{
-	  gtk_widget_set_sensitive (pref->up_button, TRUE);
-	  gtk_widget_set_sensitive (pref->down_button, FALSE);
-	}
-      else
-	{
-	  gtk_widget_set_sensitive (pref->up_button, TRUE);
-	  gtk_widget_set_sensitive (pref->down_button, TRUE);
-	}
-    }
-
-  return TRUE;
-}
-
-static GtkWidget *
-create_encodings_treeview (FSEXAM_pref *pref)
-{
-  GtkTreeModel *model;
-  GtkWidget *encode_view;
-  GtkCellRenderer *renderer;
-  GtkTreeViewColumn *column;
-
-  model = create_encodings_treeview_model (pref);
-  encode_view = gtk_tree_view_new_with_model (model);
-  gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (encode_view), FALSE);
-  gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (encode_view)),
-			       GTK_SELECTION_SINGLE);
-  renderer = gtk_cell_renderer_text_new ();
-
-  column = gtk_tree_view_column_new_with_attributes (NULL,
-						     renderer, 
-						     "text",
-						     COLUMN_ENCODING_NAME,
-						     NULL);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (encode_view),
-			       column);
-  gtk_tree_view_set_search_column (GTK_TREE_VIEW (encode_view),
-				   COLUMN_ENCODING_NAME);
-
-  return encode_view;
-}
-
-static gint
-compEncodeList (gconstpointer a,
-		gconstpointer b,
-		gpointer user_data)
-{
-  gchar *aText = ((Encoding *)a)->codename;
-  gchar *bText = ((Encoding *)b)->codename;
-  GSList *slist = (GSList *)user_data;
-  gint ai = 0, bi = 0, i = 0;
-
-  while (slist)
-    {
-      if (!strcmp ((gchar *)slist->data, aText)) ai = i;
-      else if (!strcmp ((gchar *)slist->data, bText)) bi = i;
-
-      ++i;
-      slist = g_slist_next (slist);
-    }
-
-  return (ai - bi);
-}
-
-static void
-fsexam_pref_encoding_sync (FSEXAM_pref *pref, GSList *slist)
-{
-  pref->encode_list = g_list_sort_with_data (pref->encode_list, compEncodeList, slist);
-}
-
-static GSList *
-adjust_encoding_set (GtkTreeModel *model)
-{
-  GtkTreeIter iter;
-  gchar *codename;
-  GSList *list = NULL;
-
-  gtk_tree_model_get_iter_first (model, &iter);
-
-  do 
-    {
-      gtk_tree_model_get (model, &iter,
-			  COLUMN_ENCODING_NAME, &codename,
-			  -1);
-      list = g_slist_append (list, (gpointer)codename);
-    } 
-  while (gtk_tree_model_iter_next (model, &iter));
-
-  return list;
-}
-
-static void
-fsexam_tree_iter_swap (GtkTreeModel *model, GtkTreeIter a, GtkTreeIter b)
-{
-  gchar *aText, *bText;
-
-  gtk_tree_model_get (model, &a,
-		      COLUMN_ENCODING_NAME, &aText,
-		      -1);
-
-  gtk_tree_model_get (model, &b,
-		      COLUMN_ENCODING_NAME, &bText,
-		      -1);
-
-  gtk_list_store_set (GTK_LIST_STORE (model), &a,
-		      COLUMN_ENCODING_NAME, bText,
-		      -1);
-  gtk_list_store_set (GTK_LIST_STORE (model), &b,
-		      COLUMN_ENCODING_NAME, aText,
-		      -1);
-
-  g_free (aText); g_free (bText);
-}
-
-static void
-fsexam_pref_set (GtkWidget *button,
-		 gpointer  user_data)
-{
-  FSEXAM_pref  *pref = (FSEXAM_pref *)user_data;
-  GtkTreeSelection *selection;
-  gint num_encode_list = g_list_length (pref->encode_list);
-  
-  if (GTK_BUTTON (button) == GTK_BUTTON (pref->recur_button))
-    {
-      if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
-	pref->recur_mode = TRUE;
-      else
-	pref->recur_mode = FALSE;
-
-      pref->changed |= PREF_RECUR_MODE;
-    }
-  else if (GTK_BUTTON (button) == GTK_BUTTON (pref->auto_button))
-    {
-      if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
-	pref->auto_mode = TRUE;
-      else
-	pref->auto_mode = FALSE;
-
-      pref->changed |= PREF_AUTO_MODE;
-    }
-  else if (GTK_BUTTON (button) == GTK_BUTTON (pref->up_button))
-    {
-      GtkTreeModel *model;
-      GtkTreeIter iter, prev;
-
-      selection = gtk_tree_view_get_selection ((GtkTreeView *) pref->encode_view);
-
-      if (gtk_tree_selection_get_selected (selection, &model, &iter))
-	{
-	  gint index;
-	  
-	  gtk_tree_model_get (model, &iter, COLUMN_ENCODING_INDEX, &index, -1);
-	  if (index)
-	    {
-	      gchar *path;
-
-	      if (index == num_encode_list - 1)
-		gtk_widget_set_sensitive (pref->down_button, TRUE);
-		
-	      path = gtk_tree_path_to_string (gtk_tree_path_new_from_indices (--index, -1));
-	      gtk_tree_model_get_iter_from_string (model, &prev, path);
-	      gtk_tree_selection_select_iter (selection, &prev);
-
-	      fsexam_tree_iter_swap (model, iter, prev);
-
-	      if (index == 0)
-		gtk_widget_set_sensitive (button, FALSE);
-
-	      g_free (path);
-	    }
-	}
-
-      pref->changed |= PREF_ENCODING_LIST;
-    }
-  else if (GTK_BUTTON (button) == GTK_BUTTON (pref->down_button))
-    {
-      GtkTreeModel *model;
-      GtkTreeIter iter, next;
-
-      selection = gtk_tree_view_get_selection ((GtkTreeView *) pref->encode_view);
-
-      if (gtk_tree_selection_get_selected (selection, &model, &iter))
-	{
-	  gint index;
-
-	  gtk_tree_model_get (model, &iter, COLUMN_ENCODING_INDEX, &index, -1);
-	  if (index < num_encode_list - 1)
-	    {
-	      gchar *path;
-
-	      if (index == 0)
-		gtk_widget_set_sensitive (pref->up_button, TRUE);
-
-	      path = gtk_tree_path_to_string (gtk_tree_path_new_from_indices (++index, -1));
-	      gtk_tree_model_get_iter_from_string (model, &next, path);
-	      gtk_tree_selection_select_iter (selection, &next);
-
-	      fsexam_tree_iter_swap (model, iter, next);
-
-	      if (index == num_encode_list - 1)
-		gtk_widget_set_sensitive (button, FALSE);
-
-	      g_free (path);
-	    }
-
-	  pref->changed |= PREF_ENCODING_LIST;
-	}
-    }
-  else if (GTK_BUTTON (button) == GTK_BUTTON (pref->add_button))
-    {
-      // FIXME
-    }
-  else if (GTK_BUTTON (button) == GTK_BUTTON (pref->del_button))
-    {
-      // FIXME
-    }
-}
-
-FSEXAM_pref *
-create_fsexam_pref ()
-{
-  FSEXAM_pref *pref;
-  GSList *encode_text;
-
-  pref = g_new0 (FSEXAM_pref, 1);
-  
-  pref->client = gconf_client_get_default ();
-  pref->recur_mode = gconf_client_get_bool (pref->client,
-					    RECURSIVEMODE,
-					    NULL);
-  pref->auto_mode = gconf_client_get_bool (pref->client,
-					   AUTOMATICMODE,
-					   NULL);
-  pref->suffix_list = (GSList *)gconf_client_get_list (pref->client,
-						       SUFFIXLIST,
-						       GCONF_VALUE_STRING,
-						       NULL);
-  encode_text = (GSList *)gconf_client_get_list (pref->client,
-					    ENCODINGLIST,
-					    GCONF_VALUE_STRING,
-					    NULL);
-  pref->encode_list = init_encode (encode_text);
-
-  g_slist_free (encode_text);
-
-  return pref;
-}
-
-static void
-show_help ()
-{
-  GError *err = NULL;
-  
-  gnome_help_display ("fsexam.xml", "fsexam-prefs", &err);
-
-  if (err)
-    {
-      GtkWidget *dialog;
-
-      dialog = gtk_message_dialog_new (GTK_WINDOW (view->mainwin),
-				       GTK_DIALOG_DESTROY_WITH_PARENT,
-				       GTK_MESSAGE_ERROR,
-				       GTK_BUTTONS_CLOSE,
-				       _("There was an error displaying help: %s"),
-				       err->message);
-
-      gtk_dialog_run (GTK_DIALOG (dialog));
-
-      gtk_widget_destroy (dialog);
-
-      g_error_free (err);
-    }
-}
-
-void
-create_pref_dialog (gpointer data,
-		    gpointer action,
-		    GtkWidget *widget)
-{
-  FSEXAM_pref *pref = view->pref;
-  GtkWidget *dialog;
-  GtkWidget *hbox;
-  GtkWidget *table;
-  GtkWidget *label;
-  GtkWidget *button;
-  gchar *markup;
-  gint response;
-  gint num_encode_list = g_list_length (pref->encode_list);
-
-  dialog = gtk_dialog_new_with_buttons (_("File System Examiner preferences"),
-					GTK_WINDOW (view->mainwin),
-					GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
-					NULL);
-  
-  hbox = gtk_hbox_new ( FALSE, 8);
-  gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialog)->vbox),
-		      hbox,
-		      FALSE,
-		      FALSE,
-		      0);
-
-  table = gtk_table_new (1, 4, FALSE);
-  gtk_table_set_row_spacings (GTK_TABLE (table), 4);
-  gtk_table_set_col_spacings (GTK_TABLE (table), 4);
-  gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
-
-  label = gtk_label_new (NULL);
-  markup = g_strdup_printf ("<b>%s</b>", _("Sub-folder:"));
-  gtk_label_set_markup (GTK_LABEL (label), markup);
-  g_free (markup);
-  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     label,
-			     0, 1, 0, 1);
-
-  pref->recur_button = gtk_check_button_new_with_mnemonic (_("_Recursive Mode"));
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->recur_button), 
-				pref->recur_mode);
-  g_signal_connect (G_OBJECT (pref->recur_button),
-		    "toggled",
-		    G_CALLBACK (fsexam_pref_set),
-		    pref);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     pref->recur_button,
-			     0, 1, 1, 2);
-
-  label = gtk_label_new (NULL);
-  markup = g_strdup_printf ("<b>%s</b>", _("User intervention:"));
-  gtk_label_set_markup (GTK_LABEL (label), markup);
-  g_free (markup);
-  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     label,
-			     0, 1, 2, 3);
-
-  pref->auto_button = gtk_check_button_new_with_mnemonic (_("_Automatic Conversion"));
-  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->auto_button), 
-				pref->auto_mode);
-  g_signal_connect (G_OBJECT (pref->auto_button),
-		    "toggled",
-		    G_CALLBACK (fsexam_pref_set),
-		    pref);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     pref->auto_button,
-			     0, 1, 3, 4);
-
-  table = gtk_table_new (1, 2, FALSE);
-  gtk_table_set_row_spacings (GTK_TABLE (table), 4);
-  gtk_table_set_col_spacings (GTK_TABLE (table), 4);
-  gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
-
-  label = gtk_label_new (NULL);
-  markup = g_strdup_printf ("<b>%s</b>", _("Encode list:"));
-  gtk_label_set_markup (GTK_LABEL (label), markup);
-  g_free (markup);
-  gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
-  gtk_table_attach (GTK_TABLE (table),
-		    label,
-		    0, 1, 0, 1,
-		    GTK_EXPAND | GTK_FILL, 0,
-		    0, 0);
-
-  pref->encode_view = create_encodings_treeview (pref);
-  g_signal_connect (G_OBJECT (pref->encode_view),
-		    "cursor-changed",
-		    G_CALLBACK (set_button_sensitive),
-		    NULL);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     pref->encode_view,
-			     0, 1, 1, 2);
-
-  table = gtk_table_new (4, 1, FALSE);
-  gtk_table_set_row_spacings (GTK_TABLE (table), 4);
-  gtk_table_set_col_spacings (GTK_TABLE (table), 4);
-  gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
-  
-  pref->add_button = gtk_button_new_from_stock (GTK_STOCK_ADD);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     pref->add_button,
-			     0, 1, 0, 1);
-  g_signal_connect (G_OBJECT (pref->add_button),
-		    "clicked",
-		    G_CALLBACK (fsexam_pref_set),
-		    view->pref);
-
-  view->pref->del_button = gtk_button_new_from_stock (GTK_STOCK_DELETE);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     pref->del_button,
-			     0, 1, 1, 2);
-  g_signal_connect (G_OBJECT (pref->del_button),
-		    "clicked",
-		    G_CALLBACK (fsexam_pref_set),
-		    pref);
-
-  pref->up_button = gtk_button_new_from_stock (GTK_STOCK_GO_UP);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     pref->up_button,
-			     0, 1, 2, 3);
-  g_signal_connect (G_OBJECT (pref->up_button),
-		    "clicked",
-		    G_CALLBACK (fsexam_pref_set),
-		    pref);
-
-  if (num_encode_list == 1)
-    gtk_widget_set_sensitive (pref->up_button, FALSE);
-
-  pref->down_button = gtk_button_new_from_stock (GTK_STOCK_GO_DOWN);
-  gtk_table_attach_defaults (GTK_TABLE (table),
-			     pref->down_button,
-			     0, 1, 3, 4);
-  g_signal_connect (G_OBJECT (pref->down_button),
-		    "clicked",
-		    G_CALLBACK (fsexam_pref_set),
-		    pref);
-
-  if (num_encode_list == 1)
-    gtk_widget_set_sensitive (pref->down_button, FALSE);
-
-  gtk_button_box_set_layout (GTK_BUTTON_BOX (GTK_DIALOG (dialog)->action_area),
-			     GTK_BUTTONBOX_EDGE);
-
-  button = gtk_button_new_from_stock (GTK_STOCK_HELP);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
-		      button, TRUE, FALSE, 0);
-  g_signal_connect (G_OBJECT (button),
-		    "clicked",
-		    G_CALLBACK (show_help),
-		    NULL);
-  gtk_widget_show (button);
-
-  gtk_dialog_add_button (GTK_DIALOG (dialog),
-			 GTK_STOCK_CLOSE,
-			 GTK_RESPONSE_CLOSE);
-
-  gtk_widget_show_all (hbox);
-
-  // FIXME
-  gtk_widget_hide (pref->add_button);
-  gtk_widget_hide (pref->del_button);
-
-  response = gtk_dialog_run (GTK_DIALOG (dialog));
-
-  if (response == GTK_RESPONSE_CLOSE)
-    {
-      if (pref->changed & PREF_ENCODING_LIST)
-	{
-	  GSList *slist;
-
-	  slist = adjust_encoding_set (gtk_tree_view_get_model (GTK_TREE_VIEW (pref->encode_view)));
-
-	  gconf_client_set_list (pref->client,
-				 ENCODINGLIST,
-				 GCONF_VALUE_STRING,
-				 slist,
-				 NULL);
-
-	  fsexam_pref_encoding_sync (pref, slist);
-
-	  g_slist_free (slist);
-	}
-
-      if (pref->changed & PREF_AUTO_MODE)
-	gconf_client_set_bool (pref->client,
-			       AUTOMATICMODE,
-			       pref->auto_mode,
-			       NULL);
-
-      if (pref->changed & PREF_RECUR_MODE)
-	gconf_client_set_bool (pref->client,
-			       RECURSIVEMODE,
-			       pref->recur_mode,
-			       NULL);
-    }
-
-  pref->changed = 0x0;
-  gtk_widget_destroy (dialog);
-}
--- a/src/cmd/fsexam/src/fsexam-preference.h	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#ifndef _FSEXAM_PREFERENCE_
-
-#define _FSEXAM_PREFERENCE_
-
-typedef struct _fsexam_pref FSEXAM_pref;
-
-struct _fsexam_pref
-{
-  GConfClient * client;
-  gboolean recur_mode;
-  gboolean auto_mode;
-
-  GList * encode_list;
-  GSList * suffix_list;
-  char  changed;
-
-  // dynamic widget
-  GtkWidget * auto_button;
-  GtkWidget * recur_button;
-  GtkWidget * encode_view;
-  GtkWidget * add_button;
-  GtkWidget * del_button;
-  GtkWidget * up_button;
-  GtkWidget * down_button;
-};
-
-// public application
-void fsexam_pref_free (FSEXAM_pref *);
-FSEXAM_pref *create_fsexam_pref ();
-void  create_pref_dialog (gpointer, gpointer, GtkWidget *);
-
-#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-setting.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,174 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "fsexam-header.h"
+
+/*
+ * Init FSEXAM_setting structure
+ */
+FSEXAM_setting *
+fsexam_setting_init (gboolean cmd_mode)
+{
+    FSEXAM_setting *setting = NULL;
+
+    setting = g_new0 (FSEXAM_setting, 1);
+
+    setting->pref = fsexam_pref_init (cmd_mode);
+    setting->gold_index = -1;
+    setting->utf8_locale = NULL;
+    setting->flags = 0;
+    setting->hist_info = NULL;
+    setting->remote_path = NULL;
+    
+    if (cmd_mode){
+        setting->dryrun_info = NULL;
+        setting->log_info = NULL;
+    }else{
+        if (setting->pref->use_log && (setting->pref->log_file != NULL)){
+            setting->log_info = fsexam_log_open (setting->pref->log_file);
+        }
+
+        /* Init dryrun at the beginning for GUI dryrun */
+        setting->dryrun_info = fsexam_dryrun_buffer_new ();
+    }
+
+    fsexam_setting_reset_stats (setting);
+    
+    return setting;
+}
+
+/*
+ * Reset the statistics variable for FSEXAM_setting
+ */
+void
+fsexam_setting_reset_stats (FSEXAM_setting *setting)
+{
+    g_return_if_fail (setting != NULL);
+
+    setting->passin_num = 0;
+    setting->total_num = 0;
+    setting->succ_num = 0;
+    setting->fail_num = 0;
+    setting->ignore_num = 0;
+
+    /* reset gold_index also */
+    setting->gold_index = -1;
+
+    return;
+}
+
+/*
+ * Display the statistics information
+ */
+void
+fsexam_setting_display_stats (FSEXAM_setting *setting)
+{
+    g_return_if_fail (setting != NULL);
+
+    g_print (_("Rough summary: %d given, %d total, %d ignore, %d fail, %d succeed\n"),
+            setting->passin_num,
+            setting->total_num,
+            setting->ignore_num,
+            setting->fail_num,
+            setting->succ_num);
+
+    return;
+}
+
+/*
+ * Destroy FSEXAM_setting structure 
+ */
+void 
+fsexam_setting_destroy (FSEXAM_setting *setting)
+{
+    if (NULL == setting)
+        return;
+
+    if (setting->pref != NULL){
+        fsexam_pref_destroy (setting->pref);
+    }
+
+    g_free (setting->utf8_locale);
+
+    if (setting->hist_info)
+        fsexam_history_close (setting->hist_info);
+    if (setting->log_info)
+        fsexam_log_close (setting->log_info);
+    if (setting->dryrun_info)
+        g_object_unref (setting->dryrun_info);
+    if (setting->remote_path)
+        fsexam_list_free (setting->remote_path);
+    
+    g_free (setting);
+
+    return;
+}
+
+/*
+ *  Print FSEXAM_setting structure
+ */
+void
+fsexam_setting_print (FSEXAM_setting *setting)
+{
+    if ((setting == NULL) || (setting->pref == NULL)) {
+        g_print ("seting or setting->pref is NULL\n");
+        return;
+    }
+
+    g_print ("===========================Setting=================\n");
+    g_print ("\tPreference\n");
+    g_print ("\t\tconvcontent = %s\n", 
+             setting->pref->conv_content ? "TRUE" : "False");
+    g_print ("\t\tautodetect = %s\n", 
+             setting->pref->auto_detect ? "TRUE" : "False");
+    g_print ("\t\tdryrun= %s\n", setting->pref->dry_run ? "TRUE" : "False");
+    g_print ("\t\tforce = %s\n", setting->pref->force ? "TRUE" : "False");
+    g_print ("\t\thidden = %s\n", setting->pref->hidden ? "TRUE" : "False");
+    g_print ("\t\tauto_conversion= %s\n", 
+             setting->pref->auto_conversion? "TRUE" : "False");
+    g_print ("\t\trecursive = %s\n", 
+             setting->pref->recursive ? "TRUE" : "False");
+    g_print ("\t\tno-check-symlink-content= %s\n", 
+             setting->pref->no_check_symlink_content ? "TRUE" : "FALSE");
+    g_print ("\t\tfollow = %s\n", setting->pref->follow ? "TRUE" : "False");
+    g_print ("\t\tremote = %s\n", setting->pref->remote ? "TRUE" : "False");
+    g_print ("\t\tuse_log = %s\n", setting->pref->use_log ? "TRUE" : "False");
+    g_print ("\t\thist_len = %d\n", setting->pref->hist_len);
+
+    g_print ("\t\tlog_file = %s\n", 
+             setting->pref->log_file ? setting->pref->log_file : "NULL");
+    if (setting->remote_path) {
+        g_print ("\tNFS mount point\n");
+        g_list_foreach (setting->remote_path, list_print, "\t");
+    }
+    g_print ("======================== End of Setting ============\n");
+
+    return;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-setting.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,85 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_SETTING_H
+#define _FSEXAM_SETTING_H
+
+/* Use same serial for history item or not */
+#define FSEXAM_SETTING_FLAGS_DIFF_SERIAL    (1<<0)  
+/* Don't write history information during UNDO */
+#define FSEXAM_SETTING_FLAGS_UNDO           (1<<1)
+#define FSEXAM_SETTING_FLAGS_SCENARIO       (1<<2)
+#define FSEXAM_SETTING_FLAGS_STOP           (1<<3)
+
+typedef struct _FSEXAM_setting FSEXAM_setting;
+
+struct _FSEXAM_setting {
+    FSEXAM_pref     *pref;          /* Config preferences */
+    guint           flags;          /* Flags for one pass of conversion */
+    /* encoding index for current pass, -1 means nop */
+    gint            gold_index;
+    gchar           *utf8_locale;   /* UTF-8 locale name */
+   
+    Hist_info       *hist_info;     /* For history */
+    Log_info        *log_info;      /* For log */
+    FsexamDryrun    *dryrun_info;   /* For dryrun */
+    GList           *remote_path;   /* For NFS/Local file */
+
+    /* The number of files passed in by user */
+    guint           passin_num;     
+    /* The total number of files processed */
+    guint           total_num;     
+    /* The number of files are ignored, including no hist, doesn't exist ...*/
+    guint           ignore_num;     
+    /* The number of files which are converted successfully */
+    guint           succ_num;       
+    /* The No. of files which met error during converting: such as no rights */
+    guint           fail_num;       
+
+    /* Function pointer to handle GUI/CMD diff */
+
+    /* get the candidate index */
+    gint (*get_index)  (GList *encoding_list, gboolean forname);    
+    /* update GUI after conversion */
+    void (*update_gui) (FSEXAM_setting *setting,                    
+                        const gchar *path, 
+                        const gchar *oldname, 
+                        const gchar *newname);
+    /* display information */
+    void (*display_msg) (const gchar *fname, const gchar *msg);     
+    /* display statistics information */
+    void (*display_stats) (FSEXAM_setting *setting);
+};
+
+FSEXAM_setting *fsexam_setting_init (gboolean cmd_mode);
+void            fsexam_setting_destroy (FSEXAM_setting *setting);
+
+void            fsexam_setting_reset_stats (FSEXAM_setting *setting);
+void            fsexam_setting_display_stats (FSEXAM_setting *setting);
+void            fsexam_setting_print (FSEXAM_setting *setting);
+
+#endif //_FSEXAM_SETTING_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-specialfile.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,1847 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <locale.h>
+#include <strings.h>
+#include <string.h>
+#include <unistd.h>
+#include <libgen.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+
+#include "fsexam-header.h"
+#include "fsexam-specialfile.h"
+
+/* -------------  Compress file type implementation ------------ */
+typedef enum {
+    COMP_TARGZ = 0,
+    COMP_TARBZ2,
+    COMP_TAR,
+    COMP_ZIP,
+    COMP_Z,
+}Compress_Type; 
+
+typedef struct {
+    gchar *result_path;      /* used to generate hist path */
+    gchar *search_path;      /* used to generate hist search path */
+    gchar *log_path;         /* used to generate log_path */
+    gint  temp_dir_len;
+}Compress_info;
+
+static gchar    *iso8859_locale = NULL;
+const gchar *compress_pair[][3] = {
+    /* Type         UNCOMPRESS                 COMPRESS */
+    {".tar.gz",  "LC_ALL=%s gzcat %s | tar -xf - 2>/dev/null",    "LC_ALL=%s tar -cf - . | gzip > ../%s"},
+    {".tar.bz2", "LC_ALL=%s bzcat %s | tar -xf - 2>/dev/null",    "LC_ALL=%s tar -cf - . | bzip2 -z > ../%s"},
+    {".tar",     "LC_ALL=%s tar -xf %s 2>/dev/null",              "LC_ALL=%s tar -cf - . > ../%s"},
+    {".zip",     "unzip -q %s 2>/dev/null",             "zip -qr %s .; mv %s .."},
+    {".tar.Z",   "uncompress -c %s | tar -xf - 2>/dev/null", "tar -cf - . | compress -fc > ../%s"},
+};
+
+#define TARCMD  "/usr/sfw/bin/gtar"
+
+static gboolean fsexam_special_is_compress (const gchar *, Compress_Type *);
+static gboolean compress_common_convert (const gchar *,
+        Compress_info *,
+        FSEXAM_setting *,
+        gboolean restore,
+        gboolean nameconvert);
+static gboolean compress_convert_content (const gchar *,
+        Compress_info *,
+        FSEXAM_setting *,
+        gboolean restore);
+
+static Compress_info *
+compress_info_new (const gchar *result_path,
+        const gchar *search_path,
+        const gchar *log_path)
+{
+    Compress_info *info = NULL;
+
+    if (NULL == result_path)
+        return NULL;
+
+    info = g_new0 (Compress_info, 1);
+    info->result_path = g_strdup (result_path);
+    info->search_path = g_strdup (search_path ? search_path : result_path);
+    info->log_path = g_strdup (log_path ? log_path : result_path);
+
+    return info;
+}
+            
+static void
+compress_info_free (Compress_info *info)
+{
+    if (info == NULL) {
+        return;
+    }
+
+    g_free (info->result_path);
+    g_free (info->search_path);
+    g_free (info->log_path);
+    g_free (info);
+
+    return;
+}
+
+/*
+ *  ensure $PWD is the directory of temparay directory
+ */
+static gchar *
+compose_compress_cmd (Compress_Type type, const gchar *bname)
+{
+    if (type == COMP_ZIP) {
+        return g_strdup_printf (compress_pair[type][2], bname, bname);
+    }
+   
+    if (type <= COMP_TAR) {
+        return g_strdup_printf (compress_pair[type][2], iso8859_locale, bname);
+    }
+
+    return g_strdup_printf (compress_pair[type][2], bname);
+}
+
+/* 
+ * Generate history path or log path for compress file.
+ *      Please note that we may nested to handling compress file. so 
+ *      orig_compress_file 
+ *      may be in the form "/tmp/test/test.tar[src/test.tar][cmd/data.tar]
+ *                          -------------------------------  ------------
+ *                          orig_compress_file               fullpath - temp..
+ *
+ *      fullpath: the full path of compress file in question such as /tmp/a.tar
+ *
+ * The sequence of converting compress filename and content:
+ *      regurlar: first file name , then file content. otherwise the log/hist
+ *                info is not consistent with disk data.
+ *      resotre ; first filecontent, then file name itself, otherwise 
+ *                        can't search the history  correctly
+ */
+static gchar *
+compose_path (const gchar *fullpath, 
+        Compress_info *info, 
+        gboolean forhist,
+        gboolean restore)
+{
+    const gchar *relative_path;
+    gchar       *result = NULL;
+#define URI_HEAD_LEN    7
+
+    if ((NULL == fullpath) || (NULL == info))
+        return NULL;
+    
+    relative_path = fullpath + info->temp_dir_len + 1;
+
+    if (forhist) { 
+        /* 
+         *  Convert hist_path to uri, remove 'file://' then concat with
+         *  relative_path
+         */
+        gchar *uri;
+        
+        uri = g_filename_to_uri (
+                restore ? info->search_path : info->result_path, 
+                NULL, 
+                NULL);
+        result = g_strdup_printf ("%s\t%s", 
+                uri + URI_HEAD_LEN, 
+                relative_path);
+
+        g_free (uri);
+    }else {
+        gchar *esc_path = NULL;
+
+        if (! g_utf8_validate (relative_path, -1, NULL)) {
+            esc_path = g_strescape (relative_path, NULL);
+        }
+
+        if (g_utf8_validate (info->log_path, -1, NULL)) {
+            result = g_strdup_printf ("%s [%s]", 
+                    info->log_path, 
+                    esc_path ? esc_path : relative_path);
+        }else{
+            gchar *uri = g_filename_to_uri (info->log_path, NULL, NULL);
+            result = g_strdup_printf ("%s [%s]", 
+                    uri, 
+                    esc_path ? esc_path : relative_path);
+            g_free (uri);
+        }
+    }
+
+    return result;
+}
+
+/*
+ *  caller pass in orig_compress_file;
+ */
+static gboolean
+compress_write_to_disk (FSEXAM_setting *setting, 
+            const gchar *path,      /* the path of current file */
+            const gchar *origname,  /* old base name            */
+            const gchar *utf8name,  /* new base name            */
+            Compress_info *info,
+            short from_encoding,    /* from encoding            */
+            short to_encoding,      /* to encoding              */
+            gchar **actualname)      /* return the actual used   */
+{
+    static gchar    oldname[PATH_MAX];
+    static gchar    newname[PATH_MAX];
+    gchar           *retname = NULL;
+    gchar           *fname = NULL;
+    gchar           *log_path = NULL;
+    gboolean        ret = FALSE;
+
+    fsexam_errno = ERR_OK;
+
+    /* construct full old name and full new name */
+    g_snprintf (oldname, PATH_MAX - 1, "%s/%s", path, origname);
+    g_snprintf (newname, PATH_MAX - 1, "%s/%s", path, utf8name);
+
+    if (g_file_test (newname, G_FILE_TEST_EXISTS)) {
+        fsexam_errno = ERR_NAME_EXIST;
+        fname = find_non_exist_name (newname);
+
+        if (fname == NULL) {
+            fsexam_errno = ERR_CANNOT_RENAME;
+        }else if (rename(oldname, fname) == 0){
+            retname = g_strdup (basename (fname));
+            ret = TRUE;
+        }else{
+            fsexam_errno = ERR_CANNOT_RENAME;
+        }
+    }else{
+        if (rename(oldname, newname) == 0){
+            retname = g_strdup (utf8name);
+            ret = TRUE;
+        }else{
+            fsexam_errno = ERR_CANNOT_RENAME;
+        }
+    }
+
+    /* history file; GUI vs. CLI */
+    if ((ret)  && (! (setting->flags & FSEXAM_SETTING_FLAGS_UNDO))) {
+        gboolean same_serial = TRUE;
+        if (setting->flags & FSEXAM_SETTING_FLAGS_DIFF_SERIAL) {
+            setting->flags &= ~FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+            same_serial = FALSE;
+        }
+
+        gchar *hist_path =  compose_path (newname, info, TRUE, FALSE);
+
+        fsexam_history_put (setting->hist_info, 
+                            ConvNameSpecial, 
+                            hist_path,
+                            from_encoding, 
+                            to_encoding, 
+                            same_serial);
+
+        g_free (hist_path);
+    } 
+  
+    ret ? ++setting->succ_num : ++setting->fail_num;
+
+    log_path = compose_path (ret ? newname : oldname, info, FALSE, FALSE);
+
+    /* log file */
+    if (fsexam_errno == ERR_OK) {
+        gchar   *msg = g_strdup_printf ("%s -> %s", 
+                        id2encoding (from_encoding), 
+                        id2encoding (to_encoding));
+        fsexam_log_puts (setting->log_info, log_path, msg);
+        if (setting->display_msg) {
+            setting->display_msg (log_path, msg);
+        }
+        g_free (msg);
+    }else if (fsexam_errno == ERR_NAME_EXIST) {
+        fsexam_log_puts (setting->log_info, log_path, NULL);
+        if (setting->display_msg) {
+            setting->display_msg (log_path, fsexam_error_get_msg ());
+        }
+    }else{
+        fsexam_log_puts (setting->log_info, log_path, NULL);
+        if (setting->display_msg) {
+            setting->display_msg (log_path, fsexam_error_get_msg ());
+        }
+
+    }
+
+    if (actualname != NULL)
+        *actualname = retname;  //freed outside
+    else
+        g_free (retname);
+
+    g_free (log_path);
+    g_free (fname);
+
+    return ret;
+}
+
+/*
+ * Restore single file.
+ *
+ * Note that search path is in info directly, don't use compose any more.
+ * This is diff with non-restore operation.
+ */
+static gboolean
+compress_restore_single_filename (FSEXAM_setting *setting,
+        const gchar *fullpath,
+        const gchar *dname,
+        const gchar *bname,
+        Compress_info *info,
+        gchar **newname)
+{
+    gboolean ret = FALSE;
+    Hist_item *item = NULL;
+    gchar     *converted_text = NULL;
+    gchar     *log_path;
+
+    fsexam_errno = ERR_OK;
+
+    item = fsexam_history_search (setting->hist_info, info->search_path, TRUE);
+
+    if ((item == NULL) || (item->convtype != ConvNameSpecial)) {
+        fsexam_errno = ERR_HIST_NO_ITEM;
+        goto done;
+    }
+
+    converted_text = g_convert (bname,
+            strlen (bname),
+            id2encoding (item->from_encoding),
+            id2encoding (item->to_encoding),
+            NULL,
+            NULL,
+            NULL);
+    
+    if (converted_text == NULL) {
+        fsexam_errno = ERR_CANNOT_CONVERT;
+        goto done;
+    }
+
+    ret = compress_write_to_disk (setting,
+            dname,
+            bname,
+            converted_text,
+            info,
+            item->to_encoding,
+            item->from_encoding,
+            newname);
+
+    g_free (converted_text);
+
+    return ret;
+
+done:
+    log_path = compose_path (fullpath, info, FALSE, FALSE);
+    fsexam_log_puts (setting->log_info, log_path, NULL);
+    if (setting->display_msg)
+        setting->display_msg (log_path, fsexam_error_get_msg());
+
+    g_free (log_path);
+
+
+    return ret;
+}
+
+/*
+ *
+ */
+static gboolean
+compress_convert_single_filename (FSEXAM_setting *setting,
+        const gchar *fullpath,
+        const gchar *dname, /* info->log path, info->dname */
+        const gchar *bname,
+        Compress_info *info,
+        gchar **newname)
+{
+    Score       score;
+    Encoding    *encoding = NULL;
+    gboolean    ret = FALSE;
+
+    fsexam_errno = ERR_OK;  /* initialize fsexam_errno */
+
+    if (setting->pref->auto_detect) { /* handle encoding auto detection */
+        GList *detected_encoding = str_encoding_detect (bname, 
+                DEFAULT_DETECTING_FLAG);
+        setting->pref->encode_list = fsexam_encoding_add_auto (
+                setting->pref->encode_list, 
+                detected_encoding);
+        auto_encoding_free (detected_encoding);
+    }
+
+    score = fsexam_encoding_decode (setting->pref->encode_list, 
+                             ConvName, 
+                             (char *)bname, 
+                             strlen(bname), 
+                             setting->pref->force);
+
+
+    if (setting->pref->dry_run){    /* dry run */
+        //don't support dryrun
+    } else {                    /* real convert */  
+        gint     index = 0;
+        gchar    *actualname = NULL;
+
+        if ((score == FAIL) || (score == ORIGINAL)){
+            fsexam_errno = (score == FAIL) ? ERR_NO_PROPER_ENCODING 
+                                           : ERR_NAME_UTF8_ALREADY;
+            
+            goto done;
+        }   
+       
+        if (setting->gold_index != -1) {
+            index = setting->gold_index;
+	    } else if (setting->pref->auto_conversion) {
+            index = fsexam_encoding_get_first_index (
+                    setting->pref->encode_list);
+        } else {
+            index = setting->get_index (setting->pref->encode_list, TRUE);
+        }
+
+        if (-1 == index) {
+            goto cleanup;
+        }
+
+        encoding = (Encoding *)g_list_nth_data (setting->pref->encode_list, 
+                index);
+        if (NULL == encoding){
+            fsexam_errno = ERR_ENCODING_INDEX_INVALID;
+            goto done;
+        }
+
+        ret = compress_write_to_disk (setting, 
+                dname, 
+                bname, 
+                encoding->u.converted_text, 
+                info,
+                encoding->encodingID, 
+                encoding2id ("UTF-8"),
+                &actualname);
+
+        if ((ret) && (newname)) {   // Return new name
+            *newname = actualname;
+        }else{
+            g_free (actualname);
+        }
+
+        return ret;
+    }
+    
+done:
+    if (fsexam_errno != ERR_OK && !setting->pref->dry_run) {
+        gchar *log_path;
+
+        log_path = compose_path (fullpath, info, FALSE, FALSE);
+        fsexam_log_puts (setting->log_info, log_path, NULL);
+        if (setting->display_msg)
+            setting->display_msg (log_path, fsexam_error_get_msg());
+
+        g_free (log_path);
+    }
+
+cleanup:
+
+    if (setting->pref->auto_detect)
+        setting->pref->encode_list = fsexam_encoding_remove_auto (
+                setting->pref->encode_list);
+
+    return ret;
+}
+
+/*
+ * Convert the name of files in archive/compress type file
+ * And will handle flags
+ */
+static gboolean
+compress_convert_filename (const gchar *fullpath, 
+        Compress_info *info,
+        FSEXAM_setting *setting, 
+        gboolean restore)
+{
+    gchar           *bname = NULL;
+    gchar           *dname = NULL;
+    gchar           *newname = NULL;
+    gchar           *abs_path = NULL;
+    struct stat     statbuf;
+    gboolean        ret = FALSE;
+    gboolean        need_free_newname = FALSE;
+
+    if ((NULL == fullpath) || (NULL == info) || (NULL == setting))
+        return FALSE;
+
+    fsexam_errno = ERR_OK;
+    bname = g_path_get_basename (fullpath);
+    dname = g_path_get_dirname (fullpath);
+
+    if (lstat (fullpath, &statbuf) == -1) 
+        fsexam_errno = ERR_FILE_NONEXIST;
+    else if (!(S_ISREG(statbuf.st_mode)) 
+            && !(S_ISDIR(statbuf.st_mode)) && !(S_ISLNK(statbuf.st_mode))){
+        fsexam_errno = ERR_FILE_TYPE_NOT_SUPPORT; 
+    }else if ((! setting->pref->hidden) && (*bname == '.')){
+        fsexam_errno = ERR_IGNORE_HIDDEN_FILE;
+    }else if ((!setting->pref->remote) 
+            && (is_remote_file (setting->remote_path, fullpath))) {
+        fsexam_errno = ERR_IGNORE_REMOTE_FILE;
+    }
+
+    if (fsexam_errno != ERR_OK) {
+        gchar *log_path = compose_path (fullpath, info, FALSE, FALSE);
+
+        fsexam_log_puts (setting->log_info, log_path, NULL);
+        if (setting->display_msg)
+            setting->display_msg (log_path, fsexam_error_get_msg());
+        g_free (log_path);
+
+        goto done;
+    }
+   
+    if (restore && (strlen (fullpath) != info->temp_dir_len)) {
+       ret = compress_restore_single_filename (setting,
+                fullpath, 
+                dname,
+                bname,
+                info, 
+                &newname);
+    }else if (strlen (fullpath) != info->temp_dir_len) {
+        if ((!setting->pref->force) 
+                && (str_isutf8 (bname, DEFAULT_DETECTING_FLAG))) {
+            gchar *log_path = compose_path (fullpath, info, FALSE, FALSE);
+            fsexam_errno = ERR_NAME_UTF8_ALREADY;
+
+            fsexam_log_puts (setting->log_info, log_path, NULL);
+            if (setting->display_msg)
+                setting->display_msg (log_path, fsexam_error_get_msg());
+            g_free (log_path);
+        }else{
+            ret = compress_convert_single_filename (setting,
+                fullpath,
+                dname,
+                bname,
+                info,
+                &newname);
+        }
+    }
+
+    if (ret && newname != NULL) {
+        abs_path = g_strdup_printf ("%s/%s", dname, newname);
+        need_free_newname = TRUE;
+    }else{
+        abs_path = (gchar *)fullpath;
+    }
+
+    if (setting->flags & FSEXAM_SETTING_FLAGS_STOP)
+        goto done;
+
+    if (fsexam_special_is_compress (abs_path, NULL)){ 
+        /* nested compress file */
+        gchar   *log_path = compose_path (abs_path, info, FALSE, FALSE);
+        gchar   *result_path = compose_path (abs_path, info, TRUE, FALSE);
+        gchar   *search_path; 
+       
+        if (restore) {
+            search_path = g_filename_to_uri (info->search_path, NULL, NULL);
+
+        }else{
+            search_path = compose_path (abs_path, info, TRUE, TRUE);
+        }
+            
+        Compress_info *new_info = compress_info_new (result_path, 
+                search_path + URI_HEAD_LEN, 
+                log_path);
+
+        g_free (log_path); 
+        g_free (result_path);
+        g_free (search_path);
+
+        if (NULL == new_info) {
+            goto done;
+        }
+
+        compress_common_convert (abs_path, 
+                new_info,
+                setting, 
+                restore, 
+                TRUE);
+
+        compress_info_free (new_info);
+    } else if (setting->pref->recursive 
+            && S_ISDIR (statbuf.st_mode)) { /* Directory */
+        const gchar *filename = NULL;
+        gchar       *old_search_path = g_strdup (info->search_path);
+        GDir        *dp = g_dir_open (abs_path, 0, NULL);
+
+        if (dp == NULL)
+            goto done;
+
+        while ((filename = g_dir_read_name (dp)) != NULL) {
+            gchar *childname = g_strdup_printf ("%s/%s", abs_path, filename);
+
+            if (restore) {
+                gchar *tmp;
+                tmp = g_strdup_printf (
+                        info->temp_dir_len == strlen (abs_path) ? "%s\t%s" 
+                                                                : "%s/%s",
+                        old_search_path, 
+                        filename);
+                g_free (info->search_path);
+                info->search_path = tmp;
+            }
+
+            compress_convert_filename (childname, 
+                    info,
+                    setting, 
+                    restore);
+
+            g_free (childname);
+
+            if (setting->flags & FSEXAM_SETTING_FLAGS_STOP)
+                break;
+        }
+
+        g_free (old_search_path);
+        g_dir_close (dp);
+    }
+
+done:
+    if (need_free_newname) {
+        g_free (newname);
+    }
+
+    g_free (bname);
+    g_free (dname);
+
+    return ret;
+}
+
+/*
+ * Modify file content on the disk
+ */
+static gboolean
+compress_write_back_contents (FSEXAM_setting *setting, 
+        const gchar *fullpath, 
+        Compress_info *info,
+        gchar *converted_contents, 
+        short fid, 
+        short tid)
+{
+    gsize       length;
+    gchar       *hist_path = NULL;
+    gchar       *log_path = NULL;
+    gboolean    same_serial = TRUE;
+    gboolean    need_free = FALSE;
+    gboolean    ret = FALSE;
+    const gchar  *from_encoding = id2encoding (fid);
+    const gchar  *to_encoding = id2encoding (tid);
+
+    if (converted_contents == NULL) {
+        gchar        *contents = NULL;
+        gboolean    err;
+
+        err = g_file_get_contents (fullpath, &contents, &length, NULL);
+
+        if (err && !contents) {
+            fsexam_errno = ERR_CANNOT_READ;
+            goto done;
+        } else if (length == 0) {
+            fsexam_errno = ERR_EMPTY_FILE;
+            goto done;
+        }
+    
+        converted_contents = g_convert (contents,
+                                        length,
+                                        to_encoding,
+                                        from_encoding,
+                                        NULL,
+                                        NULL,
+                                        NULL);
+
+        g_free (contents);
+
+        if (converted_contents == NULL) {
+            fsexam_errno = ERR_CANNOT_CONVERT;
+            goto done;
+        }
+
+        need_free = TRUE;
+    }
+
+    length = strlen (converted_contents);
+
+    /* Modify file contents on the disk */
+    if (g_file_set_contents (fullpath, converted_contents, length, NULL)) {
+        ret = TRUE;
+        ++setting->succ_num;
+    }else{
+        fsexam_errno = ERR_CANNOT_WRITE;
+        ++setting->fail_num;
+        goto done;
+    }
+    
+
+    if (setting->flags & FSEXAM_SETTING_FLAGS_UNDO) {
+        goto done;
+    }
+
+    if (setting->flags & FSEXAM_SETTING_FLAGS_DIFF_SERIAL) {
+        setting->flags &= ~FSEXAM_SETTING_FLAGS_DIFF_SERIAL;
+        same_serial = FALSE;
+    }
+
+    hist_path = compose_path (fullpath, info, TRUE, FALSE);
+    
+    fsexam_history_put (setting->hist_info, 
+                        ConvContentSpecial, 
+                        hist_path,
+                        fid,
+                        tid,
+                        same_serial);
+
+done:
+    log_path = compose_path (fullpath, info, FALSE, FALSE);
+
+    /* log file */
+    if (fsexam_errno == ERR_OK) {
+        gchar   *msg = g_strdup_printf (_("[Content] %s -> %s"), 
+                        from_encoding, 
+                        to_encoding);
+        fsexam_log_puts (setting->log_info, log_path, msg);
+        if (setting->display_msg) {
+            setting->display_msg (log_path, msg);
+        }
+        g_free (msg);
+    }else{
+        fsexam_log_puts (setting->log_info, log_path, NULL);
+        if (setting->display_msg) {
+            setting->display_msg (log_path, fsexam_error_get_msg ());
+        }
+    }
+
+
+    g_free (hist_path);
+    g_free (log_path);
+
+    if (need_free)
+        g_free (converted_contents);
+
+    return ret;
+}
+
+/*
+ * Restore single file's content.
+ */
+static gboolean
+compress_restore_single_file_content (const gchar *fullpath, 
+        Compress_info *info,
+        FSEXAM_setting *setting)
+{
+    gboolean    ret = FALSE;
+    gchar       *hist_path = NULL;
+    gchar       *log_path = NULL;
+    Hist_item   *item = NULL;
+
+    ++setting->total_num;
+    fsexam_errno = ERR_OK;
+
+    hist_path = compose_path (fullpath, info, TRUE, TRUE);
+    item = fsexam_history_search (setting->hist_info, hist_path, FALSE);
+
+    if ((item == NULL) || (item->convtype != ConvContentSpecial)) {
+        fsexam_errno = ERR_HIST_NO_ITEM;
+        goto done;
+    }
+
+    ret = compress_write_back_contents (setting, 
+            fullpath, 
+            info,                   /* Compress info struct */
+            NULL,                   /* contents pointer */
+            item->to_encoding, 
+            item->from_encoding);
+
+    goto cleanup;
+    
+done:
+    log_path = compose_path (fullpath, info, FALSE, FALSE);
+
+    fsexam_log_puts (setting->log_info, log_path, NULL);
+    if (setting->display_msg)
+        setting->display_msg (log_path, fsexam_error_get_msg());
+   
+cleanup:
+    g_free (hist_path);
+    g_free (log_path);
+
+    return ret;
+}
+
+/* 
+ * Convert single one file's content. Don't care flags
+ */
+static gboolean
+compress_convert_single_file_content (const gchar *fullpath, 
+        Compress_info *info,
+        FSEXAM_setting *setting)
+{
+    Score       score;
+    Encoding    *encoding = NULL;
+    gboolean    err;
+    gchar       *sample_contents = NULL;
+    gchar       *contents = NULL;
+    gsize       length;
+    gint        index = 0;
+    gboolean    need_free_contents = FALSE;
+    gboolean    ret = FALSE;
+
+    fsexam_errno = ERR_OK;
+    ++setting->total_num;
+
+    if (! file_validate_for_contentconv (fullpath, setting)) { 
+        /* Don't need convert current file's content */
+        goto done; 
+    }
+
+    /* handle encoding auto detection, plain text need this */
+    if (setting->pref->auto_detect) { 
+        GList *detected_encoding;
+        
+        detected_encoding = file_encoding_detect (fullpath, 
+                DEFAULT_DETECTING_FLAG);
+        setting->pref->encode_list = fsexam_encoding_add_auto (
+                setting->pref->encode_list, 
+                detected_encoding);
+        auto_encoding_free (detected_encoding);
+    }
+
+    if (! fsexam_is_plain_text (fullpath, setting)) {
+        fsexam_errno = ERR_FILE_TYPE_NOT_SUPPORT;
+        goto done;
+    }
+
+    /* plain text now */
+    err = g_file_get_contents (fullpath, &contents, &length, NULL);
+    if (err && !contents) {
+        fsexam_errno = ERR_CANNOT_READ;
+        goto done;
+    } else if (length == 0) {
+        fsexam_errno = ERR_EMPTY_FILE;
+        goto done;
+    }
+
+    sample_contents = get_sample_text (contents, &length);
+    score = fsexam_encoding_decode (setting->pref->encode_list,
+                        ConvContent,
+                        sample_contents,
+                        length,
+                        setting->pref->force);
+
+    g_free (contents);
+    g_free (sample_contents);
+
+    need_free_contents = TRUE;      /* free contents in encoding_list */
+
+    if (setting->pref->dry_run) {
+        /* Don't support dry run for special file */
+    }else{
+        if ((score == FAIL) || (score == ORIGINAL)){
+            fsexam_errno = (score == FAIL) ? ERR_NO_PROPER_ENCODING 
+                                           : ERR_CONTENT_UTF8_ALREADY;
+            goto done;
+        }   
+        
+        if (setting->gold_index != -1) {
+            index = setting->gold_index;
+        } else if (setting->pref->auto_conversion) {
+            index = fsexam_encoding_get_first_index (
+                            setting->pref->encode_list);
+        } else {
+            index = setting->get_index (setting->pref->encode_list, FALSE);
+        }
+
+        if (index == -1) {
+            goto cleanup; 
+        }
+
+        encoding = (Encoding *)g_list_nth_data (setting->pref->encode_list, 
+                                                index);
+        if (NULL == encoding){
+            fsexam_errno = ERR_ENCODING_INDEX_INVALID;
+            goto done;
+        }
+
+        ret = compress_write_back_contents (setting, 
+                    fullpath, 
+                    info,
+                    NULL,       /* contents pointer */
+                    encoding->encodingID, 
+                    encoding2id ("UTF-8"));
+    }
+        
+done:
+    if (fsexam_errno != ERR_OK && !setting->pref->dry_run) {
+        gchar *log_path = compose_path (fullpath, info, FALSE, FALSE);
+        
+        fsexam_log_puts (setting->log_info, log_path, NULL);
+        if (setting->display_msg)
+            setting->display_msg (log_path, fsexam_error_get_msg());
+
+        g_free (log_path);
+    }
+
+cleanup:
+    if (setting->pref->auto_detect)
+        setting->pref->encode_list = fsexam_encoding_remove_auto (
+                                            setting->pref->encode_list);
+
+    if (need_free_contents)
+        fsexam_encoding_cleanup_content (setting->pref->encode_list);
+
+    return ret;
+}
+
+/*
+ *  Convert the content of unarchive/uncompress files.
+ *  don't handle symlink for special type file.
+ */
+static gboolean
+compress_convert_content (const gchar *fullpath, 
+        Compress_info *info,
+        FSEXAM_setting *setting, 
+        gboolean restore)
+{
+    gboolean ret = FALSE;
+    gchar   *abs_path = get_abs_path (fullpath);
+    struct  stat statbuf;
+
+    if ((abs_path == NULL) || (setting == NULL) || (info == NULL))
+        return FALSE;
+
+    if (lstat (abs_path, &statbuf) == -1) {
+        fsexam_errno = ERR_CANNOT_OPEN;
+        goto done;
+    }
+
+    if (fsexam_special_is_compress (abs_path, NULL)){ 
+        /* nested compress file */
+        gchar   *search_path = compose_path (abs_path, info, TRUE, TRUE);
+        gchar   *result_path = compose_path (abs_path, info, TRUE, FALSE);
+        gchar   *log_path = compose_path (abs_path, info, FALSE, FALSE);
+        Compress_info *new_info = compress_info_new (result_path, 
+                                                    search_path, 
+                                                    log_path);
+        if (NULL == new_info) {
+            goto done;
+        }
+
+        compress_common_convert (abs_path, 
+                new_info,
+                setting, 
+                restore, 
+                FALSE);
+
+        compress_info_free (new_info);
+    }else if (S_ISREG (statbuf.st_mode)) {  /* regular file */
+        if (restore) {
+            compress_restore_single_file_content (abs_path, 
+                    info,
+                    setting);
+        }else{
+            compress_convert_single_file_content (abs_path, 
+                    info,
+                    setting);
+        }
+    } else if (setting->pref->recursive 
+            && S_ISDIR (statbuf.st_mode)) { /* Directory */
+        const gchar *filename = NULL;
+        GDir        *dp = g_dir_open (abs_path, 0, NULL);
+
+        if (dp == NULL)
+            goto done;
+
+        while ((filename = g_dir_read_name (dp)) != NULL) {
+            gchar *childname = g_strdup_printf ("%s/%s", abs_path, filename);
+
+            compress_convert_content (childname, 
+                    info,
+                    setting, 
+                    restore);
+
+            g_free (childname);
+
+            if (setting->flags && FSEXAM_SETTING_FLAGS_STOP)
+                break;
+        }
+
+        g_dir_close (dp);
+    }
+
+done:
+    g_free (abs_path);
+
+    return ret;
+}
+
+/*
+ * Whether give file is supported archive/compress file or not
+ */
+static gboolean
+fsexam_special_is_compress (const gchar *filename, Compress_Type *type)
+{
+    int i;
+
+    if (NULL == filename) {
+        return FALSE;
+    }
+
+    for (i = 0; i < sizeof (compress_pair)/sizeof (compress_pair[0]); i++) {
+        if (g_str_has_suffix (filename, compress_pair[i][0])) {
+            if (type != NULL)
+                *type = (Compress_Type) i;
+
+            return TRUE;
+        }
+    }
+    
+    return FALSE;
+}
+
+static gboolean
+get_iso8859_locale (FSEXAM_setting *setting)
+{
+    static gboolean first = TRUE;
+
+    if (first) {
+        char  *old_locale = setlocale (LC_ALL, NULL);
+
+        if ((setlocale (LC_ALL, "en_US.ISO8859-1")) != NULL) {
+            iso8859_locale = "en_US.ISO8859-1";
+        }else if ((setlocale (LC_ALL, "fr_FR.ISO8859-1")) != NULL) {
+            iso8859_locale = "fr_FR.ISO8859-1";
+        }else if ((setlocale (LC_ALL, "de_DE.ISO8859-1")) != NULL) {
+            iso8859_locale = "de_DE.ISO8859-1";
+        }else if ((setlocale (LC_ALL, "es_ES.ISO8859-1")) != NULL) {
+            iso8859_locale = "es_ES.ISO8859-1";
+        }else if ((setlocale (LC_ALL, "it_IT.ISO8859-1")) != NULL) {
+            iso8859_locale = "it_IT.ISO8859-1";
+        }else if ((setlocale (LC_ALL, "sv_SE.ISO8859-1")) != NULL) {
+            iso8859_locale = "sv_SE.ISO8859-1";
+        }else{
+            iso8859_locale = NULL;
+        }
+
+        /* reset locale */
+        if (old_locale != NULL)
+            setlocale (LC_ALL, old_locale);
+
+        first = FALSE;
+    }
+
+    if (iso8859_locale == NULL && setting->display_msg) 
+        setting->display_msg (NULL, _("Can not run tar command due to lack of iso8859-1 locale, please see fsexam(1) man page for more info."));
+ 
+    return (iso8859_locale != NULL);
+}
+
+static gboolean
+run_cmd (gchar **argv, gchar **envp, FSEXAM_setting *setting)
+{
+    FILE *fp = NULL;
+    gchar tmp[200];
+    GError *error = NULL;
+    gboolean ret = FALSE;
+    gint child_stderr;
+
+    if (! g_spawn_async_with_pipes (NULL, argv, envp, 0,
+                NULL, NULL, NULL, NULL,
+                NULL,
+                &child_stderr,
+                &error)) {
+        setting->display_msg (NULL, error->message); 
+        g_error_free (error);
+        goto DONE;
+    }
+
+    fp = fdopen (child_stderr, "r");
+    if (fp == NULL) {
+        goto DONE;
+    }
+
+    if (fgets (tmp, sizeof (tmp), fp) != NULL) {
+        setting->display_msg (NULL, tmp); 
+        goto DONE;
+    }
+
+    ret = TRUE;
+
+DONE:
+    if (fp != NULL)
+        fclose (fp);
+
+    return ret;
+}
+
+static gboolean
+uncompress_pre (const gchar *fullpath, const gchar *tmpdir,
+        FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gboolean ret = FALSE;
+
+    if (! get_iso8859_locale (setting)) {
+       return FALSE;
+    }
+
+    /* cp target file into current directory */
+    argv = g_malloc (sizeof (gchar **) * 4);
+    argv[0] = "/usr/bin/cp";
+    argv[1] = (gchar *)fullpath;
+    argv[2] = (gchar *)tmpdir;
+    argv[3] = NULL;
+
+    if (! run_cmd (argv, NULL, setting))
+        goto DONE;
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+
+    return ret;
+}
+
+static gboolean
+delete_files (const gchar *filename, FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gboolean ret = FALSE;
+
+    /* rm target file into current directory */
+    argv = g_malloc (sizeof (gchar **) * 4);
+    argv[0] = "/usr/bin/rm";
+    argv[1] = "-rf";
+    argv[2] = (gchar *)filename;
+    argv[3] = NULL;
+
+    if (! run_cmd (argv, NULL, setting))
+        goto DONE;
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+
+    return ret;
+}
+
+static gboolean
+uncompress_post (const gchar *filename, FSEXAM_setting *setting)
+{
+   if (! delete_files (filename, setting))
+       return FALSE;
+
+   return TRUE;
+}
+
+static gboolean
+uncompress_bz2 (const gchar *fullpath, const gchar *tmpdir,
+        FSEXAM_setting *setting)
+{
+    gchar *bname = NULL;
+    gchar **argv = NULL;
+    gchar **envp = NULL;
+    gboolean ret = FALSE;
+        
+    if (! uncompress_pre (fullpath, tmpdir, setting)) {
+        return FALSE;
+    }
+
+    bname = g_path_get_basename (fullpath);
+
+    argv = g_malloc (sizeof (gchar **) * 4);
+    argv[0] = "/usr/bin/bunzip2";
+    argv[1] = bname;
+    argv[2] = NULL;
+
+    /* bunzip2 */
+    if (! run_cmd (argv, NULL, setting)) {
+        goto DONE;
+    }
+
+    /* untar */
+    *(bname + strlen (bname) - 4) = '\0';  /* 4 is strlen(".bz2") */
+    argv[0] = TARCMD;
+    argv[1] = "-xf";
+    argv[2] = bname;
+    argv[3] = NULL;
+
+    envp = g_malloc (sizeof (gchar **) * 2);
+    envp[0] = iso8859_locale;
+    envp[1] = NULL;
+
+    if (! run_cmd (argv, envp, setting)) 
+        goto DONE;
+
+    /* delete bname */
+    if (! uncompress_post (bname, setting))
+        goto DONE;
+
+
+    ret = TRUE;
+
+DONE:
+    g_free (bname);
+    g_free (argv);
+    g_free (envp);
+
+    return ret;
+}
+
+static gboolean
+uncompress_gz (const gchar *fullpath, const gchar *tmpdir,
+        FSEXAM_setting *setting)
+{
+    gchar *bname = NULL;
+    gchar **argv = NULL;
+    gchar **envp = NULL;
+    gboolean ret = FALSE;
+        
+    if (! uncompress_pre (fullpath, tmpdir, setting)) {
+        return FALSE;
+    }
+
+    bname = g_path_get_basename (fullpath);
+
+    argv = g_malloc (sizeof (gchar **) * 4);
+    argv[0] = "/usr/bin/gunzip";
+    argv[1] = bname;
+    argv[2] = NULL;
+
+    /* bunzip2 */
+    if (! run_cmd (argv, NULL, setting)) {
+        goto DONE;
+    }
+
+    /* untar */
+    *(bname + strlen (bname) - 3) = '\0';  /* 3 is strlen(".gz") */
+    argv[0] = TARCMD;
+    argv[1] = "-xf";
+    argv[2] = bname;
+    argv[3] = NULL;
+
+    envp = g_malloc (sizeof (gchar **) * 2);
+    envp[0] = iso8859_locale;
+    envp[1] = NULL;
+
+    if (! run_cmd (argv, envp, setting)) 
+        goto DONE;
+
+    /* delete bname */
+    if (! uncompress_post (bname, setting))
+        goto DONE;
+
+
+    ret = TRUE;
+
+DONE:
+    g_free (bname);
+    g_free (argv);
+    g_free (envp);
+
+    return ret;
+}
+
+static gboolean
+uncompress_tar (const gchar *fullpath, FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gchar **envp = NULL;
+    gboolean ret = FALSE;
+        
+    if (! get_iso8859_locale (setting))
+        return FALSE;
+
+    argv = g_malloc (sizeof (gchar **) * 4);
+    argv[0] = TARCMD;
+    argv[1] = "-xf";
+    argv[2] = (gchar *)fullpath;
+    argv[3] = NULL;
+
+    envp = g_malloc (sizeof (gchar **) * 2);
+    envp[0] = iso8859_locale;
+    envp[1] = NULL;
+
+    if (! run_cmd (argv, envp, setting)) 
+        goto DONE;
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+    g_free (envp);
+
+    return ret;
+}
+
+static gboolean
+uncompress_unzip (const gchar *fullpath, FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gboolean ret = FALSE;
+        
+    argv = g_malloc (sizeof (gchar **) * 4);
+    argv[0] = "/usr/bin/unzip";
+    argv[1] = "-q";
+    argv[2] = (gchar *)fullpath;
+    argv[3] = NULL;
+
+    if (! run_cmd (argv, NULL, setting)) 
+        goto DONE;
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+
+    return ret;
+}
+
+static gboolean
+uncompress_Z (const gchar *fullpath, const gchar *tmpdir,
+        FSEXAM_setting *setting)
+{
+    gchar *bname = NULL;
+    gchar **argv = NULL;
+    gchar **envp = NULL;
+    gboolean ret = FALSE;
+        
+    if (! uncompress_pre (fullpath, tmpdir, setting)) {
+        return FALSE;
+    }
+
+    bname = g_path_get_basename (fullpath);
+
+    argv = g_malloc (sizeof (gchar **) * 4);
+    argv[0] = "/usr/bin/uncompress";
+    argv[1] = "-c";
+    argv[2] = bname;
+    argv[3] = NULL;
+
+    /* bunzip2 */
+    if (! run_cmd (argv, NULL, setting)) {
+        goto DONE;
+    }
+
+    /* untar */
+    *(bname + strlen (bname) - 2) = '\0';  /* 2 is strlen(".Z") */
+    argv[0] = TARCMD;
+    argv[1] = "-xf";
+    argv[2] = bname;
+    argv[3] = NULL;
+
+    envp = g_malloc (sizeof (gchar **) * 2);
+    envp[0] = iso8859_locale;
+    envp[1] = NULL;
+
+    if (! run_cmd (argv, envp, setting)) 
+        goto DONE;
+
+    /* delete bname */
+    if (! uncompress_post (bname, setting))
+        goto DONE;
+
+
+    ret = TRUE;
+
+DONE:
+    g_free (bname);
+    g_free (argv);
+    g_free (envp);
+
+    return ret;
+}
+
+/*
+ * Uncompress .bz2, .gz, .zip, .Z
+ */
+static gboolean
+fsexam_uncompress (const gchar *fullpath, const gchar *tmpdir,
+        Compress_Type type, FSEXAM_setting *setting)
+{
+    /* uncompress */
+    if (type == COMP_TARGZ) {
+        return uncompress_gz (fullpath, tmpdir, setting);
+    } else if (type == COMP_TARBZ2) {
+        return uncompress_bz2 (fullpath, tmpdir, setting);
+    } else if (type == COMP_TAR) {
+        return uncompress_tar (fullpath, setting);
+    } else if (type == COMP_ZIP) {
+        return uncompress_unzip (fullpath, setting);
+    } else if (type == COMP_Z) {
+        return uncompress_Z (fullpath, tmpdir, setting);
+    } else {
+         if (setting->display_msg)
+             setting->display_msg (fullpath,
+                     _("Don't support this file type"));
+    }
+
+    return FALSE;
+}
+
+static gboolean
+compress_bz2 (const gchar *target_name, FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gboolean ret = FALSE;
+
+    argv = g_malloc (sizeof (gchar **) * 5);
+    argv[0] = TARCMD;
+    argv[1] = "-cjf";
+    argv[2] = (gchar *)target_name;
+    argv[3] = ".";
+    argv[4] = NULL;
+
+    if (! run_cmd (argv, NULL, setting)) {
+        goto DONE;
+    }
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+
+    return ret;
+}
+
+static gboolean
+compress_tar (const gchar *target_name, FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gboolean ret = FALSE;
+
+    argv = g_malloc (sizeof (gchar **) * 5);
+    argv[0] = TARCMD;
+    argv[1] = "-cf";
+    argv[2] = (gchar *)target_name;
+    argv[3] = ".";
+    argv[4] = NULL;
+
+    if (! run_cmd (argv, NULL, setting)) {
+        goto DONE;
+    }
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+
+    return ret;
+}
+
+static gboolean
+compress_Z (const gchar *target_name, FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gboolean ret = FALSE;
+
+    argv = g_malloc (sizeof (gchar **) * 5);
+    argv[0] = TARCMD;
+    argv[1] = "-cZf";
+    argv[2] = (gchar *)target_name;
+    argv[3] = ".";
+    argv[4] = NULL;
+
+    if (! run_cmd (argv, NULL, setting)) {
+        goto DONE;
+    }
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+
+    return ret;
+}
+
+/*
+ * zip in the current directory, then move to target dir.
+ * Otherwise zip(1) will append the new files into old file
+ */
+static gboolean
+compress_zip (const gchar *target_name, const gchar *tmpdir,
+        FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gboolean ret = FALSE;
+    gchar *bname = NULL;
+    gchar *tmpname = NULL;
+
+    bname = g_path_get_basename (target_name);
+    tmpname = g_strdup_printf ("%s/%s", tmpdir, bname);
+
+    argv = g_malloc (sizeof (gchar **) * 5);
+    argv[0] = "/usr/bin/zip";
+    argv[1] = "-qr";
+    argv[2] = tmpname;
+    argv[3] = ".";
+    argv[4] = NULL;
+
+    if (! run_cmd (argv, NULL, setting)) {
+        goto DONE;
+    }
+
+    argv[0] = "/usr/bin/cp";
+    argv[1] = tmpname;
+    argv[2] = (gchar *)target_name;
+    argv[3] = NULL;
+
+    if (! run_cmd (argv, NULL, setting))
+        goto DONE;
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+    g_free (bname);
+    g_free (tmpname);
+
+    return ret;
+}
+
+
+static gboolean
+compress_gz (const gchar *target_name, FSEXAM_setting *setting)
+{
+    gchar **argv = NULL;
+    gboolean ret = FALSE;
+
+    argv = g_malloc (sizeof (gchar **) * 5);
+    argv[0] = TARCMD;
+    argv[1] = "-czf";
+    argv[2] = (gchar *)target_name;
+    argv[3] = ".";
+    argv[4] = NULL;
+
+    if (! run_cmd (argv, NULL, setting)) {
+        goto DONE;
+    }
+
+    ret = TRUE;
+
+DONE:
+    g_free (argv);
+
+    return ret;
+}
+
+
+/*
+ * Compress .bz2, .gz, .zip, .Z
+ *  dname: the directory name which will contain the result file
+ *  bname: the result filename, such as *.tar.bz2
+ */
+static gboolean
+fsexam_compress (const gchar *target_name, const gchar *tmpdir,
+        Compress_Type type, FSEXAM_setting *setting)
+{
+    /* uncompress */
+    if (type == COMP_TARGZ) {
+        return compress_gz (target_name, setting);
+    } else if (type == COMP_TARBZ2) {
+        return compress_bz2 (target_name, setting);
+    } else if (type == COMP_TAR) {
+        return compress_tar (target_name, setting);
+    } else if (type == COMP_ZIP) {
+        return compress_zip (target_name, tmpdir, setting);
+    } else if (type == COMP_Z) {
+        return compress_Z (target_name, setting);
+    } else {
+         if (setting->display_msg)
+             setting->display_msg (target_name,
+                     _("Don't support this file type"));
+    }
+
+    return FALSE;
+}
+
+/*
+ * Description: 
+ *      Unarchive/Uncompress file, execute name or content conversion, then
+ *      Rearchive/Recompress and replace the original file.
+ * 
+ * Parameter:
+ *      fullpath: the full path of compress file, such as /tmp/a.tar
+ *      info:     Path needed by compress conversion 
+ */
+static gboolean
+compress_common_convert (const gchar *fullpath, 
+        Compress_info *info,
+        FSEXAM_setting *setting, 
+        gboolean restore, 
+        gboolean nameconvert)
+{
+    Compress_Type   type;
+    gchar    oldcwd[PATH_MAX];
+    gchar    *bname = NULL;
+    gchar    *dname = NULL;
+    gchar    *tempdir = NULL;       /* temparay directory */
+    gchar    *template = NULL;      /* template for temp dir */
+    gchar    *compress_cmd = NULL;
+
+    if (! fsexam_special_is_compress (fullpath, &type)) {
+        return FALSE;
+    }
+
+    /* 
+     * cd to temparary directory at the same directory 
+     * with original file  and then uncompress.
+     */
+    if (getcwd (oldcwd, PATH_MAX) == NULL) {
+        fsexam_errno = ERR_GET_CWD;
+        goto done;
+    }
+
+    bname = g_path_get_basename (fullpath);
+    dname = g_path_get_dirname (fullpath);
+
+    template = g_strdup_printf ("%sXXXXXX", fullpath);
+    tempdir = mkdtemp (template);
+
+    if (tempdir == NULL) {
+        if (fsexam_debug () & FSEXAM_DBG_ARCHIVE)
+            g_print ("mkdtemp return NULL\n");
+
+        fsexam_errno = ERR_NO_RIGHTS;
+        goto done;
+    }
+
+    if (fsexam_debug () & FSEXAM_DBG_ARCHIVE)
+        g_print ("Succeed to create tempdir %s\n", tempdir);
+
+    if (chdir (tempdir)) {          /* uncompress file into temp dir */
+        fsexam_errno = ERR_NO_RIGHTS;
+        goto done;
+    }
+    
+    if (! fsexam_uncompress (fullpath, tempdir, type, setting)) {
+        if (fsexam_debug () & FSEXAM_DBG_ARCHIVE) {
+            g_print ("Error when uncompress %s to %s\n", fullpath, tempdir);
+        }
+        /* chdir to orig dir at error */
+        chdir (oldcwd);
+        goto done;
+    }
+
+    if (fsexam_debug () & FSEXAM_DBG_ARCHIVE)
+        g_print ("Succeed to uncompress %s to %s\n", fullpath, tempdir);
+
+    /* 
+     * Before converting, ensure the tempdir is not empty.
+     * If it is empty, this means that the archive file
+     * may have absolute path, this will dangerous. Or
+     * we met with unknow error.
+     */
+    if (rmdir (tempdir) == 0) {
+        if (fsexam_debug () & FSEXAM_DBG_ARCHIVE) {
+            g_print ("Error: archive use absolute path or met unknow error\n");
+        }
+
+        if (setting->display_msg)
+            setting->display_msg (NULL, 
+                    _("The archive file is empty or has absolute path, so can not convert files in this archive file"));
+        chdir (oldcwd);
+        goto done;
+    }
+
+    info->temp_dir_len = strlen (tempdir);
+
+    if (nameconvert) {      /* name conversion */
+        compress_convert_filename (tempdir,     /* contain unarchived files */
+                info,
+                setting, 
+                restore);
+    } else {                /* content conversion */
+        compress_convert_content (tempdir,      /* contain unarchived files */
+                info,
+                setting, 
+                restore);
+    }
+
+    /* recompress */
+    if (! fsexam_compress (fullpath, tempdir, type, setting)) {
+        /* chdir to orig dir at error */
+        if (fsexam_debug () & FSEXAM_DBG_ARCHIVE) {
+            g_print ("Error when recompress %s to %s\n", tempdir, fullpath);
+        }
+    }
+
+    if (fsexam_debug () & FSEXAM_DBG_ARCHIVE)
+        g_print ("Succeed to recompress %s to %s\n", tempdir, fullpath);
+
+    chdir (oldcwd);
+    if (! delete_files (tempdir, setting)) {
+        if (fsexam_debug () & FSEXAM_DBG_ARCHIVE) {
+            g_print ("Error when delete tempdir: %s\n", tempdir);
+        }
+    }
+
+    if (fsexam_debug () & FSEXAM_DBG_ARCHIVE)
+        g_print ("Succeed to delete tempdir %s\n", tempdir);
+    
+done:
+    g_free (dname);
+    g_free (bname);
+    g_free (template);
+
+    return TRUE;
+}
+
+/* content conversion */
+static gboolean
+fsexam_compress_convert_content (const gchar *fullpath, 
+        FSEXAM_setting *setting, 
+        gboolean restore)
+{
+    Compress_info *info;
+    gboolean      ret;
+
+    info = compress_info_new (fullpath, NULL, NULL);
+
+    if (info == NULL)
+        return FALSE;
+
+    ret = compress_common_convert (fullpath,   /* abs path of archive file */
+                info,
+                setting, 
+                restore,    /* Convert or Restore */
+                FALSE);     /* Content conversion instead of name conversion */
+
+    compress_info_free (info);
+
+    return ret;
+}
+
+
+
+
+/* ----------- For content conversion --------------------------- */
+
+gboolean 
+fsexam_special_is_special_for_content (const gchar *fullpath, 
+        FSEXAM_setting *setting)
+{
+    return fsexam_special_is_compress (fullpath, NULL);
+}
+
+/*
+ * Iterate every special file handling module. This assumes that no two special
+ * module will handle the same one file.  Return True if file has been 
+ * proccessed by one special module; otherwise return False.
+ */
+gboolean 
+fsexam_special_convert_content (const gchar *fullpath, 
+        FSEXAM_setting *setting,
+        gboolean restore)
+{
+    g_return_val_if_fail ((fullpath != NULL) && (setting != NULL), FALSE);
+
+    gboolean        ret;
+
+    if (fsexam_compress_convert_content (fullpath, setting, restore)) {
+        ret = TRUE;
+    }else{
+        ret = FALSE;
+    }
+
+    return ret;
+}
+
+
+/* ------------- For name convert ------------------- */
+
+/*
+ *  If fullpath is supported archive or compress file, then 
+ *  return TRUE, otherwise return FALSE.
+ */
+gboolean 
+fsexam_special_is_special_for_name (const gchar *fullpath, 
+                                    FSEXAM_setting *setting)
+{
+    return fsexam_special_is_compress (fullpath, NULL);
+}
+
+/*===================================================================
+ *  Description:
+ *      Convert or Restore the name of special type file.
+ *
+ *  Parameters:
+ *      setting: Contain Total setting/preference information
+ *      fullpath: Absolute path or archive or compress file, such as
+ *                /tmp/test/test.tar.gz
+ *      hist_search_path: Use the oldname(before restore) as history search
+ *               path. This is only used for restore. This can ensure path
+ *               in history is consistent with path in disk.
+ *      restore: convert name or restore name
+ *
+ *  Return value:
+ *=====================================================================*/
+gboolean 
+fsexam_compress_convert_name (FSEXAM_setting *setting, 
+                            const gchar *fullpath, 
+                            const gchar *hist_search_path, 
+                            gboolean restore)
+{
+    gboolean      ret;
+    Compress_info *info;
+    gchar         *search_path;
+
+    /* 
+     * hist_search_path is passed by caller, and it is different when
+     * restore is performed. When restore, search_path is the direct
+     * path used to search in history, don't need compose
+     */
+    search_path = g_filename_to_uri (hist_search_path, NULL, NULL);
+    info = compress_info_new (fullpath, search_path +URI_HEAD_LEN, fullpath);
+
+    if (NULL == info) {
+        return FALSE;
+    }
+    
+    ret = compress_common_convert (fullpath,   /* abs path of archive file */
+                info,
+                setting, 
+                restore,            /* Convert or Restore */
+                TRUE);              /* Convert Name instead of content */
+
+    compress_info_free (info);
+    g_free (search_path);
+
+    return ret;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-specialfile.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,56 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_SPECIALFILE_H
+#define _FSEXAM_SPECIALFILE_H
+
+#define SPECIAL_NO          (0)
+#define SPECIAL_COMPRESS    (1<<0)
+
+/*
+ *  API for special file content conversion
+ */
+
+gboolean fsexam_special_is_special_for_content (const gchar *fullpath, 
+                        FSEXAM_setting *setting);
+gboolean fsexam_special_convert_content (const gchar *fullpath, 
+                        FSEXAM_setting *setting,
+                        gboolean restore);
+
+/*
+ *  API for special file name conversion. 
+ */
+
+gboolean fsexam_special_is_special_for_name (const gchar *fullpath, 
+                        FSEXAM_setting *setting);
+
+gboolean fsexam_compress_convert_name (FSEXAM_setting *setting, 
+                        const gchar *fullpath, 
+                        const gchar *hist_search_path, 
+                        gboolean restore);
+
+#endif //_FSEXAM_SPECIALFILE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-tree.c	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,1082 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+#include <dirent.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <libgen.h>
+
+#include <glib.h>
+
+#include "fsexam-debug.h"
+#include "fsexam-header.h"
+
+static gboolean compare_filename (GNode *node, gchar *filename);
+static gboolean fsexam_tree_node_data_destroy (GNode *node, gpointer data);
+static gboolean fsexam_tree_fill_target (GNode *node, gpointer root);
+static GNode    *fsexam_tree_insert_single_file_full (GNode *root, 
+                                const gchar *fullname, 
+                                short from_id, 
+                                short to_id, 
+                                FSEXAM_setting *setting);
+static GNode    *fsexam_tree_insert_single_file (GNode *root, 
+                                const gchar *fullname, 
+                                FSEXAM_setting *setting);
+static gboolean fsexam_tree_insert_file (GNode *root, 
+                                const gchar *fullname, 
+                                FSEXAM_setting *setting, 
+                                GNode **node);
+static gboolean fsexam_tree_insert_file_for_restore (GNode *root, 
+                                const gchar *filename, 
+                                FSEXAM_setting *setting, GNode **node);
+
+TreeNode *
+fsexam_node_new (const gchar *filename, 
+                 gboolean recursive, 
+                 gboolean need_convert)
+{
+    TreeNode *node = NULL;
+    gchar    *orig = NULL;
+    
+    if (NULL == filename)
+        return NULL;
+
+    node = g_new0 (TreeNode, 1);
+
+    orig = g_strdup (filename);
+    TREENODE_SET_ORIG (node, orig);
+    TREENODE_SET_UTF8 (node, NULL);
+    TREENODE_SET_TARGET (node, NULL);
+    TREENODE_SET_ID (node, (short)-1);
+    TREENODE_SET_RECURSIVE (node, recursive ? 1 : 0);
+    TREENODE_SET_TRAVERSED (node, 0);
+    TREENODE_SET_EXPAND (node, 0);
+    TREENODE_SET_REVERSE (node, 0);
+    TREENODE_SET_CONVERTED (node, 0);
+    TREENODE_SET_SYMLINK (node, 0);
+    TREENODE_SET_SPECIAL (node, 0);
+    TREENODE_SET_FLAGS (node, 0);
+    TREENODE_SET_NEED_CONVERT (node, need_convert ? 1 : 0);
+
+    return node;
+}
+
+void
+fsexam_node_destroy (TreeNode *node)
+{
+    if (NULL == node)
+        return;
+
+    g_free (TREENODE_GET_ORIG(node));
+    g_free (TREENODE_GET_UTF8(node));
+    g_free (node);
+
+    return;
+}
+ /* ---------   API For Tree Struct ------------------ */
+
+
+/*
+ * Unlink one node from tree and destroy all its node
+ */
+static void
+unlink_and_destroy (GNode *node, gpointer data)
+{
+    if (NULL == node)
+        return;
+
+    g_node_unlink (node);
+    fsexam_tree_destroy (node);
+}
+
+/*
+ * free one tree node's data
+ */
+static gboolean
+fsexam_tree_node_data_destroy (GNode *node, gpointer  data)
+{
+    fsexam_node_destroy (node->data);
+
+    return FALSE;
+}
+
+/*
+ * Init the whole tree to have only one node for '/'
+ */
+GNode *
+fsexam_tree_init ()
+{
+    TreeNode *node = fsexam_node_new ("/", FALSE, FALSE);
+
+    return g_node_new (node);
+}
+
+
+/*
+ *  Compare whether node's original name is filename or not 
+ */
+static gboolean 
+compare_filename (GNode *node, gchar *filename)
+{
+    TreeNode *tnode = NULL;
+
+    if ((NULL == node) || (NULL == filename))
+        return FALSE;
+
+    tnode = node->data;
+    if (strcmp (filename, TREENODE_GET_ORIG (tnode)) != 0){
+        return FALSE;
+    } 
+   
+    return TRUE;
+}
+
+/*
+ * Fill target field for one symlink node, If the target file
+ * doesn't exist, set flag so handle it during conversion.
+ *
+ * called only when !follow && !no_check_symlink_content
+ */
+static gboolean
+fsexam_tree_fill_target (GNode *node, gpointer root)
+{
+    if ((NULL == node) || (NULL == root))
+        return FALSE;
+
+    TreeNode *tnode = node->data;
+
+    if (TREENODE_FLAG_TARGET_NOTEXIST (tnode)) {
+        return FALSE;
+    }
+
+    if ((TREENODE_IS_SYMLINK (tnode)) 
+            && (TREENODE_GET_TARGET (tnode) == NULL)) {
+        /* Have not set target link */
+        gchar   *abs_path = fsexam_tree_get_path (node, TRUE);
+        gchar   *target = NULL;
+
+        if (abs_path == NULL)
+            return FALSE;
+            
+        target = get_abs_path_for_symlink_target (abs_path);
+
+        if (target != NULL) {
+            GNode *tmp = fsexam_tree_search_path ((GNode *)root, target);
+
+            if (tmp != NULL) {
+                TREENODE_SET_TARGET (tnode, tmp);
+            }
+        }else{
+            TREENODE_SET_FLAGS (tnode, TREEFLAG_TARGET_NOTEXIST);
+        }
+
+        g_free (target);
+        g_free (abs_path);
+    }
+    
+    return FALSE;
+}
+
+/*
+ *  Insert one file(with full path) into tree, don't handle flags
+ *  if last=TRUE, then only convert basename
+ *  Return the last node
+ */
+static GNode *
+insert_single_file (GNode *root, const gchar *fullpath, gboolean last)
+{
+    GNode   *parent = root;
+    gchar   subdir[PATH_MAX];
+    gchar   *tmp = subdir;
+
+    if ((NULL == root) || (NULL == fullpath))
+        return NULL;
+
+    if (*(++fullpath) == '\0') {    /* skip the leading '/' */
+        return NULL;
+    }
+
+    while (TRUE) {
+        *tmp++ = *fullpath++; 
+        
+        if ((*fullpath == '\0') || (*fullpath == '/')){
+            GNode       *gnode = NULL;
+            TreeNode    *tnode = NULL;
+            
+            *tmp = '\0';
+
+            if (subdir == tmp)      /* empty subcomponent */
+                continue;
+
+            gnode = fsexam_tree_search_name (parent, subdir);
+
+            if (gnode == NULL) {    /* new node */
+                gboolean  need_convert = FALSE;
+
+                if ((last) && (*fullpath == '\0')) {
+                    need_convert = !str_isutf8 (subdir, DEFAULT_DETECTING_FLAG);
+                }else if (!last){
+                    need_convert = !str_isutf8 (subdir, DEFAULT_DETECTING_FLAG);
+                }
+                
+                tnode = fsexam_node_new (subdir, FALSE, need_convert);
+                parent = g_node_insert(parent, -1, g_node_new (tnode));
+            } else {                /* existing node */
+                parent = gnode;
+            }
+
+            tmp = subdir;           /* prepare for next subdirectory */
+    
+            if (*fullpath == '/'){
+                fullpath++;
+            } else {                /* (*fullpath == '\0')  */
+                break;
+            }
+        }
+    }
+
+    return parent;
+}
+
+/*
+ *  Insert single file and set flags.
+ *  Return the new added last node 
+ */
+static GNode * 
+fsexam_tree_insert_single_file (GNode *root, 
+                                const gchar *fullpath, 
+                                FSEXAM_setting *setting) 
+{
+    GNode       *last = NULL;
+    TreeNode    *tnode = NULL;
+    gchar       *bname = NULL;
+    
+    if ((NULL == root) || (NULL == fullpath) || (NULL == setting)) {     
+        return NULL;
+    } 
+    
+    if ((last = insert_single_file (root, fullpath, TRUE))  == NULL) {
+        return NULL;
+    }
+
+    tnode = last->data;
+    bname = TREENODE_GET_ORIG (tnode);
+
+    if ((!setting->pref->force) 
+            && (str_isutf8 (bname, DEFAULT_DETECTING_FLAG))) {
+        TREENODE_SET_FLAGS (tnode, TREEFLAG_UTF8_ALREADY);  
+        TREENODE_SET_NEED_CONVERT (tnode, 0);   /* restore don't use this */
+    }if ((!setting->pref->remote) 
+            && (is_remote_file (setting->remote_path, fullpath))) {
+        TREENODE_SET_FLAGS (tnode, TREEFLAG_REMOTE_FILE);
+    } else if ((!setting->pref->hidden) 
+            && (('/' == *bname) || ('.' == *bname))) {
+        TREENODE_SET_FLAGS (tnode, TREEFLAG_HIDDEN_FILE);
+    } else if (setting->pref->special 
+            && fsexam_special_is_special_for_name (fullpath, setting)) {
+        TREENODE_SET_SPECIAL (tnode, 1);
+    }
+
+    return last;
+}
+
+/*
+ *  Insert one file and set flags.
+ *
+ *  fullname:  the real name on the disk.
+ *  from_id:   the encoding of fullname (real encoding on the disk)
+ *  to_id:     the encoding we will convert to
+ *
+ *  Note:
+ *      TreeNode->orig maybe UTF-8 encoded while TreeNode->utf8 may
+ *      be not real UTF-8
+ */
+static GNode *
+fsexam_tree_insert_single_file_full (GNode *root,
+                                     const gchar *fullname,
+                                     short from_id,
+                                     short to_id,
+                                     FSEXAM_setting *setting)
+{
+    GNode        *last = NULL;
+    static short utf8_id;
+
+    ++setting->total_num;
+    utf8_id = encoding2id ("UTF-8");
+
+    last = insert_single_file (root, fullname, TRUE);
+
+    if (last != NULL) {
+        TreeNode    *tnode = last->data;
+        const gchar *from_encoding = id2encoding (from_id);
+        const gchar *to_encoding = id2encoding (to_id);
+        gchar       *orig_name = TREENODE_GET_ORIG (tnode); /* disk name */
+        gchar       *new_name = NULL;
+
+        new_name = g_convert (orig_name,
+                              strlen (orig_name),
+                              to_encoding,        //to_encoding
+                              from_encoding,      //from_encoding
+                              NULL,
+                              NULL,
+                              NULL);
+
+        TREENODE_SET_UTF8 (tnode, new_name);    //free when don't use
+
+        if (g_ascii_strcasecmp (from_encoding, "UTF-8") == 0) {
+            TREENODE_SET_REVERSE (tnode, 1);
+            TREENODE_SET_ID (tnode, to_id);
+        }else if (g_ascii_strcasecmp (to_encoding, "UTF-8") == 0) {
+            TREENODE_SET_ID (tnode, from_id);
+        }
+
+        if (setting->pref->special 
+                && fsexam_special_is_special_for_name (fullname, setting)) {
+            TREENODE_SET_SPECIAL (tnode, 1);
+        }
+    }
+
+    return last;
+}
+
+/*
+ * Insert one file and handle recursive and symlink.
+ * Return TRUE when only insert the current file successfully.
+ *
+ * Note that the file may have been added into the tree already.
+ */
+static gboolean
+fsexam_tree_insert_file (GNode *root, 
+                        const gchar *filename, 
+                        FSEXAM_setting *setting, 
+                        GNode **node)
+{
+    struct      stat buf;
+    GNode       *newnode = NULL;
+    TreeNode    *tnode = NULL;
+    gchar       *fullname = NULL;
+    gboolean    ret = FALSE;
+
+    if ((root == NULL) || (filename == NULL) || (setting == NULL)) {
+           return FALSE;
+    }
+   
+    fsexam_errno = ERR_OK;
+    fullname = get_abs_path (filename);
+   
+    /* 
+     * we need lstat for both new node and existing node for
+     * following determination on S_ISLNK and S_ISREG
+     */
+    if (lstat (fullname, &buf) == -1) {
+        fsexam_errno = ERR_FILE_NONEXIST;
+    } else if (!(S_ISREG(buf.st_mode)) && !(S_ISDIR(buf.st_mode)) 
+            && !(S_ISLNK(buf.st_mode))){
+        fsexam_errno = ERR_FILE_TYPE_NOT_SUPPORT; 
+    }
+    
+    if (fsexam_errno != ERR_OK) {
+        fsexam_log_puts (setting->log_info, filename, NULL);
+        if (setting->display_msg) {
+            setting->display_msg (filename, fsexam_error_get_msg());
+        }
+        goto done;
+    }
+
+    /* Is this file added into the tree by other path? */
+    newnode = fsexam_tree_search_path (root, fullname);
+
+    if (newnode == NULL) {
+        ++setting->total_num;
+
+        /* Insert this file if not in tree already */
+        if ((newnode = insert_single_file (root, fullname, TRUE)) == NULL)
+            goto done;
+    } 
+
+    if (node != NULL)
+        *node = newnode;
+    tnode = (TreeNode *)newnode->data;
+    ret = TRUE;
+
+    {
+        /* 
+         * Code block to set flags for both new node and old node
+         */
+        gchar *bname = TREENODE_GET_ORIG (tnode);
+        TREENODE_SET_NEED_CONVERT (tnode, 1);
+
+        if ((!setting->pref->force) 
+                && (str_isutf8 (bname, DEFAULT_DETECTING_FLAG))) {
+            TREENODE_SET_FLAGS (tnode, TREEFLAG_UTF8_ALREADY);  
+            TREENODE_SET_NEED_CONVERT (tnode, 0);   /* restore not use this */
+            ++setting->ignore_num;
+        } 
+        if ((!setting->pref->remote) 
+                && (is_remote_file (setting->remote_path, fullname))) {
+            TREENODE_SET_FLAGS (tnode, TREEFLAG_REMOTE_FILE);
+            ++setting->ignore_num;
+        } 
+        if ((!setting->pref->hidden) 
+                && (('/' == *bname) || ('.' == *bname))) {
+            TREENODE_SET_FLAGS (tnode, TREEFLAG_HIDDEN_FILE);
+            ++setting->ignore_num;
+        } 
+        if (setting->pref->special 
+            && fsexam_special_is_special_for_name (fullname, setting)) {
+            TREENODE_SET_SPECIAL (tnode, 1);
+        }
+    }
+
+    /* 
+     * This node may has processed 'symlink' and 'recursive', such as if 
+     * parent directory is processed after subdirectory has been handled,
+     * or if one symlink link to its ancestor.
+     */
+    if (S_ISLNK (buf.st_mode) && ! TREENODE_IS_SYMLINK (tnode)) {
+        TREENODE_SET_SYMLINK (tnode, 1);
+        TREENODE_SET_TARGET  (tnode, NULL);
+   
+        /* Here we only handle 'follow', 'no_check...' is delayed to caller */
+        if (setting->pref->follow) {
+            gchar  *target = get_abs_path_for_symlink_target (fullname);
+            GNode   *added_node = NULL;
+    
+            if (target != NULL) {
+            //recursive call myself
+            fsexam_tree_insert_file (root, target, setting, &added_node);
+                        
+            if (added_node != NULL) {
+                TREENODE_SET_TARGET (tnode, added_node);
+            }
+            } else {
+                    TREENODE_SET_FLAGS (tnode, TREEFLAG_TARGET_NOTEXIST);
+            }
+    
+            g_free (target);
+        } 
+    } else if ((S_ISDIR (buf.st_mode)) && setting->pref->recursive) {
+        if ((! setting->pref->follow 
+                    && setting->pref->no_check_symlink_content)) {
+            /* create -R node */
+            TREENODE_SET_RECURSIVE (tnode, 1);
+            g_node_children_foreach (newnode, 
+                            G_TRAVERSE_ALL, 
+                            unlink_and_destroy, 
+                            NULL);
+        } else if (! TREENODE_IS_EXPAND (tnode)) {
+            /* expand this node only if we have not expanded it before */
+            DIR *dp = opendir (fullname);
+
+            /* We are in the process of expanding one node recursively */
+            TREENODE_SET_EXPAND (tnode, 1);
+
+            if (dp != NULL) {
+                struct dirent *dirent = NULL;
+
+                while ((dirent = readdir (dp)) != NULL) {
+                    gchar   *childname = NULL;
+
+                    if ((strcmp (dirent->d_name, ".") == 0)
+                            || (strcmp (dirent->d_name, "..") == 0))
+                        continue;
+
+                    childname = g_strdup_printf ("%s/%s", 
+                                                 fullname, 
+                                                 dirent->d_name);
+                    fsexam_tree_insert_file (root, childname, setting, NULL);
+                    g_free (childname);
+                }
+
+                closedir (dp);
+            }
+        }
+    }
+
+    g_free (fullname);
+    return ret;
+
+done:
+    g_free (fullname);
+    ++setting->ignore_num;
+
+    return ret;
+}
+
+static gboolean
+fsexam_tree_insert_file_for_restore (GNode *root, 
+                                     const gchar *filename, 
+                                     FSEXAM_setting *setting, 
+                                     GNode **node)
+{
+    struct      stat statbuf;
+    GNode       *newnode = NULL;
+    TreeNode    *tnode = NULL;
+    gchar       *fullname = NULL;
+    Hist_item   *item = NULL;
+    gboolean    ret = FALSE;
+
+    if ((NULL == root) || (NULL == filename) || (NULL == setting))
+        return FALSE;
+
+    ++setting->total_num;
+    fullname = get_abs_path (filename);
+
+    fsexam_errno = ERR_OK;
+    if (lstat (fullname, &statbuf) == -1) {
+        fsexam_errno = ERR_FILE_NONEXIST;
+        ++setting->ignore_num;
+
+        goto done;
+    }
+
+    item = fsexam_history_search (setting->hist_info, fullname, TRUE);
+
+    if (item == NULL) {
+        fsexam_errno = ERR_HIST_NO_ITEM;
+        /* for special file only */
+        if (setting->pref->special 
+                && fsexam_special_is_special_for_name (fullname, setting)) {
+            newnode = fsexam_tree_insert_single_file (root,
+                                    fullname,   //real name on the disk
+                                    setting);
+        }else{
+            ++setting->ignore_num;
+        }
+    } else if ((item != NULL) && (item->convtype == ConvName)) {
+        if (((newnode = fsexam_tree_search_path (root, fullname)) != NULL) 
+                || ((newnode = insert_single_file (root, fullname, TRUE)) != NULL)) {
+            /* New added node or existing node */
+            const gchar  *from_encoding = id2encoding (item->to_encoding);
+            const gchar  *to_encoding = id2encoding (item->from_encoding);
+            gchar        *orig_name = NULL;
+            gchar        *new_name = NULL;
+
+            tnode = (TreeNode *)newnode->data;
+
+            orig_name = TREENODE_GET_ORIG (tnode);  //The real name on disk
+            new_name = g_convert (orig_name,
+                                strlen (orig_name),
+                                to_encoding,        //to_encoding
+                                from_encoding,      //from_encoding
+                                NULL,
+                                NULL,
+                                NULL);
+
+            g_free (TREENODE_GET_UTF8 (tnode));     //need this?
+            TREENODE_SET_UTF8 (tnode, new_name);
+
+            if (g_ascii_strcasecmp (from_encoding, "UTF-8") == 0) {
+                TREENODE_SET_REVERSE (tnode, 1);
+                TREENODE_SET_ID (tnode, item->from_encoding);   /* to_id */
+            }else if (g_ascii_strcasecmp (to_encoding, "UTF-8") == 0) {
+                TREENODE_SET_ID (tnode, item->to_encoding);     /* from_id */
+            }
+
+            if (setting->pref->special 
+                    && fsexam_special_is_special_for_name (fullname, setting)) {
+                TREENODE_SET_SPECIAL (tnode, 1);
+            }
+
+            if (node != NULL)
+                *node = newnode;
+            ret = TRUE;
+        }
+    }
+
+    if (fsexam_errno != ERR_OK) {
+        fsexam_log_puts (setting->log_info, filename, NULL);
+        if (setting->display_msg != NULL) {
+            setting->display_msg (filename, fsexam_error_get_msg());
+        }
+    }
+
+    /* 
+     * This node may has processed symlink and recursive, such as if parent
+     * directory is processed after subdirectory has been handled, or if
+     * one symlink link to its ancestor.
+     */
+    if (S_ISLNK (statbuf.st_mode)) {
+        if (tnode == NULL) {    /* No history infor, but it is symlink */
+            GNode *gnode = fsexam_tree_insert_single_file (root, 
+                                                           fullname, 
+                                                           setting);
+            if (gnode != NULL)
+                tnode = gnode->data;
+        }
+
+        if ((tnode == NULL) || TREENODE_IS_SYMLINK (tnode))
+            goto done;
+
+        TREENODE_SET_SYMLINK (tnode, 1);
+        TREENODE_SET_TARGET  (tnode, NULL);
+
+        if (setting->pref->follow) {
+            gchar   *target = get_abs_path_for_symlink_target (fullname);
+            GNode   *added_node = NULL;
+
+            if (target != NULL) {
+                fsexam_tree_insert_file_for_restore (root, 
+                        target, setting, &added_node);
+
+                if (added_node != NULL) {
+                    TREENODE_SET_TARGET (tnode, added_node);
+                }
+            }else{
+                TREENODE_SET_FLAGS (tnode, TREEFLAG_TARGET_NOTEXIST);
+            }
+
+            g_free (target);
+        }
+    } else if ((S_ISDIR (statbuf.st_mode)) && setting->pref->recursive) {
+        DIR *dp = NULL;
+
+        if (tnode == NULL) {
+            /* 
+             * No history infor for current file, but it is directory,
+             * and have 'recursive' flag, so we add this file into tree
+             * always.
+             */
+            GNode *gnode = fsexam_tree_insert_single_file (root, 
+                                                           fullname, 
+                                                           setting);
+            if (gnode != NULL)
+                tnode = gnode->data;
+        }
+
+        if ((tnode == NULL) || TREENODE_IS_EXPAND (tnode))
+            goto done;
+
+        /* expand this node only when we have not expaned it before */
+        TREENODE_SET_EXPAND (tnode, 1);
+        
+        if (setting->flags & FSEXAM_SETTING_FLAGS_UNDO)
+            goto done;  /* don't need further handling for UNDO */
+
+        if ((dp = opendir (fullname)) != NULL) {
+            struct dirent *dirent = NULL;
+
+            while ((dirent = readdir (dp)) != NULL) {
+                gchar    *childname = NULL;
+
+                if ((strcmp (dirent->d_name, ".") == 0)
+                        || (strcmp (dirent->d_name, "..") == 0))
+                    continue;
+
+                childname = g_strdup_printf ("%s/%s", fullname, dirent->d_name);
+                fsexam_tree_insert_file_for_restore (root, 
+                                                     childname, 
+                                                     setting, 
+                                                     NULL);
+                g_free (childname);
+            }
+
+            closedir (dp);
+        }
+    }
+
+done:
+    g_free (fullname);
+    
+    return ret;
+}
+
+/* --- public API --- */
+
+/*
+ * Construct tree from single file, don't care flags at all
+ */
+GNode *
+fsexam_tree_construct_from_single_file (const gchar *filename)
+{
+    GNode *root;
+    gchar *abs_path = NULL;
+
+    abs_path = get_abs_path (filename);
+
+    if (NULL == abs_path)
+        return NULL;
+
+    if ((root = fsexam_tree_init ()) == NULL)
+        return NULL;
+
+    insert_single_file (root, abs_path, FALSE);
+
+    if (fsexam_debug () & FSEXAM_DBG_TREE) {
+        g_node_traverse (root, G_PRE_ORDER, 
+                         G_TRAVERSE_ALL, -1, 
+                         display_node, NULL);
+    }
+
+    g_free (abs_path);
+
+    return root;
+}
+
+GNode *
+fsexam_tree_construct_from_file (const gchar *filename, 
+                                 FSEXAM_setting *setting)
+{
+    GList   *list = NULL;
+    GNode   *root = NULL;
+
+    if ((NULL == filename) || (NULL == setting))
+        return NULL;
+
+    list = g_list_prepend (list, (gpointer)filename);
+
+    root = fsexam_tree_construct_from_list (list, setting);
+
+    fsexam_list_free (list);
+
+    return root;
+}
+
+GNode *
+fsexam_tree_construct_from_list (GList *list, FSEXAM_setting *setting)
+{
+    GNode *root;
+
+    if ((NULL == list) || (NULL == setting))
+        return NULL;
+    
+    if ((root  = fsexam_tree_init ()) == NULL) {
+        return NULL;
+    }
+
+    for (; list != NULL; list = g_list_next (list)) {
+        gchar *filename = list->data;
+        ++setting->passin_num;
+
+        (void) fsexam_tree_insert_file (root, filename, setting, NULL);
+    }
+
+    if (! setting->pref->follow && ! setting->pref->no_check_symlink_content) {
+        /* need separate traverse to mark symlink target */
+        g_node_traverse (root,
+                        G_PRE_ORDER,
+                        G_TRAVERSE_ALL,
+                        -1,
+                        fsexam_tree_fill_target,
+                        (gpointer)root);
+    }
+
+    if (fsexam_debug () & FSEXAM_DBG_TREE) {
+        g_node_traverse (root, G_PRE_ORDER, 
+                         G_TRAVERSE_ALL, -1, 
+                         display_node, NULL);
+    }
+
+    return root;
+}
+
+/*
+ * construct tree from list + history
+ */
+GNode *
+fsexam_tree_construct_from_history (GList *list, 
+                                    Hist_info *info, 
+                                    FSEXAM_setting *setting)
+{
+    GNode *root;
+
+    if ((NULL == list) || (NULL == setting) || (NULL == info))
+        return NULL;
+    
+    if ((root  = fsexam_tree_init ()) == NULL) {
+        return NULL;
+    }
+
+    for (; list; list = g_list_next (list)) {
+        const gchar *filename = list->data;
+        ++setting->passin_num;
+        fsexam_tree_insert_file_for_restore (root, 
+                filename, 
+                setting, 
+                NULL);
+    }
+
+    /* need separate traverse to mark symlink target */
+    if (!setting->pref->follow && !setting->pref->no_check_symlink_content) {
+        g_node_traverse (root,
+                        G_PRE_ORDER,
+                        G_TRAVERSE_ALL,
+                        -1,
+                        fsexam_tree_fill_target,
+                        (gpointer)root);
+    }
+
+    if (fsexam_debug () & FSEXAM_DBG_TREE) {
+        g_node_traverse (root, G_PRE_ORDER, 
+                         G_TRAVERSE_ALL, -1, 
+                         display_node, NULL);
+    }
+
+    return root;
+}
+
+
+/*
+ * construct tree from dryrun
+ */
+GNode *
+fsexam_tree_construct_from_dryrun (GSList *slist, FSEXAM_setting *setting)
+{
+    GNode *root = NULL;
+
+    if ((NULL == slist) || (NULL == setting))
+        return NULL;
+
+    if ((root = fsexam_tree_init()) == NULL)
+        return NULL;
+
+    setting->passin_num = g_slist_length (slist);
+
+    while (slist != NULL) {
+        Dryrun_item *item = slist->data;
+        short en_id = encoding2id (item->encoding);
+
+        if (en_id != -1)
+            fsexam_tree_insert_single_file_full (
+                                root, 
+                                item->path, 
+                                en_id,
+                                encoding2id ("UTF-8"), 
+                                setting);
+
+        slist = slist->next;
+    }
+ 
+    if (fsexam_debug () & FSEXAM_DBG_TREE) {
+        g_node_traverse (root, G_PRE_ORDER, 
+                         G_TRAVERSE_ALL, -1, 
+                         display_node, NULL);
+    }   
+
+    return root;
+}
+
+GNode *
+fsexam_tree_search_name (GNode *parent, const gchar *filename)
+{
+    GNode *current;
+
+    if ((parent == NULL) || (filename == NULL)) {
+        return NULL;
+    }
+
+    current = parent->children;
+    while (current) {
+        if (compare_filename (current, (gchar *)filename)){
+            return current;
+        }
+        
+        current = current->next;
+    }
+    
+    return NULL;
+}
+
+GNode *
+fsexam_tree_search_path (GNode *parent, const gchar *path)
+{
+    gchar *abs_path = NULL;
+    gchar *p_abs_path = NULL;
+    gchar *tmp = NULL;
+    GNode *result = NULL;
+    gchar subdir[PATH_MAX];
+
+    if ((NULL == parent) || (NULL == path))
+        return NULL;
+
+    p_abs_path = abs_path = get_abs_path (path);
+    
+    if (NULL == abs_path) 
+        return NULL;
+    
+    if (*(++abs_path) == '\0') {    /* skip the leading '/' */
+        goto free;
+    }
+
+    tmp = subdir;
+    while (TRUE) {
+        *tmp++ = *abs_path++; 
+        
+        if ((*abs_path == '\0') || (*abs_path == '/')) {
+            *tmp = '\0';            /* strlen(abs_path) < PATH_MAX */
+
+            parent = fsexam_tree_search_name (parent, subdir);
+
+            if (parent == NULL) {
+                result = NULL;
+                break;
+            }else{
+                result = parent;
+            }
+            
+            tmp = subdir;           /* prepare for next subdirectory */
+        
+            if (*abs_path == '/') {
+                abs_path++;
+            } else {                /* (*abs_path == '\0') */
+                break;
+            }
+        }
+    }
+
+free:
+    g_free (p_abs_path);
+
+    return result;
+}
+
+/* 
+ * Get the real path for one node and including this node
+ * return the new allocated memory which store the path Need free when no use 
+ */
+gchar *
+fsexam_tree_get_path (GNode *node, gboolean old_path)
+{
+    TreeNode    *tnode = NULL;
+    gchar       *result = NULL;
+    gchar       *subdir = NULL;
+    gchar       *tmp = NULL;
+
+    /* traverse from node to root */
+    while (node){
+        tnode = node->data;
+
+        if (!old_path && (TREENODE_IS_CONVERTED (tnode))){
+            subdir = TREENODE_GET_UTF8 (tnode);
+        }else{
+            subdir = TREENODE_GET_ORIG (tnode);
+        }
+
+        if (strcmp (subdir, "/") == 0) {        /* root node */
+            if (result == NULL){
+                result = g_strdup (subdir);
+            }else{
+                tmp = g_strdup_printf ("%s%s", subdir, result);
+                g_free (result);
+                result = tmp;
+                tmp = NULL;
+            }
+        } else {
+            if (result == NULL){
+                result = g_strdup (subdir);
+            } else {
+                tmp = g_strdup_printf ("%s/%s", subdir, result);
+                g_free (result);
+                result = tmp;
+                tmp = NULL;
+            }
+        }
+
+        node = node->parent;
+    }
+
+    return result;
+}
+
+void
+fsexam_tree_destroy (GNode *root)
+{
+    if (NULL == root) 
+        return;
+
+    g_node_traverse (root,
+                    G_IN_ORDER,
+                    G_TRAVERSE_ALL,
+                    -1,
+                    fsexam_tree_node_data_destroy,
+                    NULL);
+
+    g_node_destroy (root);
+
+    return;
+}
+
+
+/*
+ *   Test function
+ */
+gboolean
+display_node (GNode *node, gpointer data)
+{
+    g_return_val_if_fail (node != NULL, FALSE);
+
+    TreeNode *tnode = node->data;
+    //printf ("================== TreeNode ==============================\n");
+    printf ("  recu = %d, cvted = %d, needconv = %d, trav = %d, sym = %d,"
+            " special = %d, target = %p, utf8 = %s, name = %s \n", 
+            TREENODE_IS_RECURSIVE (tnode), 
+            TREENODE_IS_CONVERTED (tnode),
+            TREENODE_IS_NEED_CONVERT (tnode),
+            TREENODE_IS_TRAVERSED (tnode),
+            TREENODE_IS_SYMLINK (tnode),
+            TREENODE_IS_SPECIAL (tnode),
+            TREENODE_GET_TARGET (tnode) ? TREENODE_GET_TARGET (tnode) 
+                                        : (void *)0,
+            TREENODE_GET_UTF8 (tnode) ? TREENODE_GET_UTF8 (tnode) : "NULL",
+            fsexam_tree_get_path (node, TRUE));
+
+    return FALSE;
+}
+
+gboolean
+display_full_path (GNode *node, gpointer data)
+{
+    g_return_val_if_fail (node != NULL, FALSE);
+
+    gchar *path = fsexam_tree_get_path (node, FALSE);
+
+    printf ("\tfullpath = %s\n", path);
+
+    g_free (path);
+
+    return FALSE;
+}
+
+void
+print_tree (GNode *root)
+{
+    g_node_traverse (root, 
+                    G_PRE_ORDER, 
+                    G_TRAVERSE_ALL, 
+                    -1, 
+                    display_node, 
+                    NULL);
+
+    return;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-tree.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,170 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+/****************************************************************
+ *                                                                  *
+ *      Will check file use file validate module                    *
+ *      This module won't check whether file is ready               *
+ *                                                                  *
+ *****************************************************************/
+
+#ifndef _FSEXAM_TREE_H_
+#define _FSEXAM_TREE_H_
+
+typedef struct _TreeNode
+{
+    gchar *orig;                    //original name from disk
+    gchar *utf8;                    //utf8 name
+    GNode *target;                  //symlink target
+
+    short           id;             //encoding ID, -1 for illegal value
+    unsigned short  flags;          //error flags
+
+    unsigned short  need_convert    : 1; //need convert this node
+    unsigned short  reverse         : 1; //for restore, indicating direction
+    unsigned short  special         : 1; //Special node
+    unsigned short  recursive       : 1; //recursive node
+    unsigned short  symlink         : 1; //current node file is symlink
+    unsigned short  expand          : 1; //expanded or expanding node
+    unsigned short  traversed       : 1; //been traversed? for symlink
+    unsigned short  converted       : 1; //converted succ, write back to disk
+}TreeNode;
+
+#define TREEFLAG_TARGET_NOTEXIST        (1<<0)
+#define TREEFLAG_UTF8_ALREADY           (1<<1)
+#define TREEFLAG_REMOTE_FILE            (1<<2)
+#define TREEFLAG_HIDDEN_FILE            (1<<3)
+
+/* Getter */
+#define TREENODE_GET_ORIG(tnode)        ((tnode)->orig)
+#define TREENODE_GET_UTF8(tnode)        ((tnode)->utf8)
+#define TREENODE_GET_ID(tnode)          ((tnode)->id)
+#define TREENODE_GET_TARGET(tnode)      ((tnode)->target)
+#define TREENODE_IS_RECURSIVE(tnode)    ((tnode)->recursive == 1)
+#define TREENODE_IS_NEED_CONVERT(tnode) ((tnode)->need_convert == 1)
+#define TREENODE_IS_TRAVERSED(tnode)    ((tnode)->traversed == 1)
+#define TREENODE_IS_EXPAND(tnode)       ((tnode)->expand == 1)
+#define TREENODE_IS_CONVERTED(tnode)    ((tnode)->converted == 1)
+#define TREENODE_IS_REVERSE(tnode)      ((tnode)->reverse == 1)
+#define TREENODE_IS_SYMLINK(tnode)      ((tnode)->symlink == 1)
+#define TREENODE_IS_SPECIAL(tnode)      ((tnode)->special == 1)
+
+/* Setter */
+#define TREENODE_SET_ORIG(tnode, _orig)         ((tnode)->orig = (_orig))
+#define TREENODE_SET_UTF8(tnode, _utf8)         ((tnode)->utf8 = (_utf8))
+#define TREENODE_SET_ID(tnode, _id)             ((tnode)->id = (short)(_id))
+#define TREENODE_SET_TARGET(tnode, _target)     ((tnode)->target = (_target))
+#define TREENODE_SET_RECURSIVE(tnode, _recur)   ((tnode)->recursive = (_recur))
+#define TREENODE_SET_NEED_CONVERT(tnode, _need_convert) \
+                            ((tnode)->need_convert = (_need_convert))
+#define TREENODE_SET_TRAVERSED(tnode, _traversed)   \
+                            ((tnode)->traversed = (_traversed))
+#define TREENODE_SET_EXPAND(tnode, _expand)   \
+                            ((tnode)->expand = (_expand))
+#define TREENODE_SET_CONVERTED(tnode, _converted)   \
+                            ((tnode)->converted = (_converted))
+#define TREENODE_SET_REVERSE(tnode, _reverse)       \
+                            ((tnode)->reverse = (_reverse))
+#define TREENODE_SET_SYMLINK(tnode, _symlink)   ((tnode)->symlink = (_symlink))
+#define TREENODE_SET_SPECIAL(tnode, _special)   ((tnode)->special = (_special))
+
+/* Flags macro */
+#define TREENODE_SET_FLAGS(tnode, _flag)        ((tnode)->flags |= (_flag))
+#define TREENODE_HAS_FLAGS(tnode)               ((tnode)->flags != 0)
+#define TREENODE_FLAG_TARGET_NOTEXIST(tnode)    \
+                            ((tnode)->flags & TREEFLAG_TARGET_NOTEXIST)
+#define TREENODE_FLAG_UTF8_ALREADY(tnode)       \
+                            ((tnode)->flags & TREEFLAG_UTF8_ALREADY)
+#define TREENODE_FLAG_REMOTE_FILE(tnode)        \
+                            ((tnode)->flags & TREEFLAG_REMOTE_FILE)
+#define TREENODE_FLAG_HIDDEN_FILE(tnode)        \
+                            ((tnode)->flags & TREEFLAG_HIDDEN_FILE)
+
+/*==================================================================
+ *  Function Name:  fsexam_node_new
+ *
+ *  Parameters:
+ *      const gchar *filename: contain only basename, no subpath. 
+ *      gboolean: recursive:  recursive handle directory or not
+ *      goolean: need_convert: whether this node need convert or not
+ *
+ *  Desc:
+ *      Create one new TreeNode according to filename and flag.
+ *      This function won't check whether filename exist or not. caller do this.
+ *
+ *  Return value:
+ *      TreeNode pointer when succeed. Need call fsexam_node_destroy() to 
+ *      free mem.  Otherwise return NULL.
+ *
+ *  Author:     Yandong Yao 2006/08/24
+ =================================================================*/
+TreeNode *fsexam_node_new           (const gchar *filename, 
+                                     gboolean recursive, 
+                                     gboolean need_convert);
+void     fsexam_node_destroy (TreeNode *node);
+
+
+/*
+ * Init the whole tree with only one node for "/"
+ */
+GNode *fsexam_tree_init ();
+void fsexam_tree_destroy (GNode *root);
+
+GNode *fsexam_tree_construct_from_list (GList *list, FSEXAM_setting *setting);
+GNode *fsexam_tree_construct_from_single_file (const gchar *filename);
+GNode *fsexam_tree_construct_from_file (const gchar *filename, 
+                                        FSEXAM_setting *setting);
+GNode *fsexam_tree_construct_from_dryrun (GSList *slist, 
+                                        FSEXAM_setting *setting);
+GNode *fsexam_tree_construct_from_history (GList *list, 
+                                        Hist_info *info, 
+                                        FSEXAM_setting *setting);
+
+/* 
+ * Search whether parent has child with filename or not
+ */
+GNode *fsexam_tree_search_name (GNode *parent,  const gchar *filename);
+
+/*
+ * Search whether path has been added into tree
+ */
+GNode *fsexam_tree_search_path (GNode *root, const gchar *path);
+
+/*
+ * Get the full path of one node
+ */
+gchar *fsexam_tree_get_path (GNode *node, gboolean old_path);
+
+
+/*==================================================================
+ *      Function for test purpose
+ ==================================================================*/
+gboolean display_node (GNode *node, gpointer data);
+gboolean display_full_path (GNode *node, gpointer data);
+void     print_tree (GNode *root);
+
+#endif //_FSEXAM_TREE_H_
--- a/src/cmd/fsexam/src/fsexam-ui.c	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1079 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-#include <libgnome/libgnome.h>
-#include <libgnomeui/libgnomeui.h>
-#include <libgnome/gnome-i18n.h>
-#include <dirent.h>
-#include <sys/stat.h>
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include "encode.h"
-#include "fsexam-history.h"
-#include "fsexam-preference.h"
-#include "fsexam-conversion.h"
-#include "fsexam-content.h"
-#include "fsexam-accels.h"
-#include "fsexam-dnd.h"
-#include "fsexam.h"
-#include "fsexam-accels.h"
-
-#ifndef ICON_PATH
-# define ICON_PATH "/usr/share/pixmaps/fsexam-icon.png"
-#endif
-
-typedef struct _TreeItem TreeItem;
-struct _TreeItem
-{
-  GdkPixbuf *icon;  // file icon
-  gchar *label;     // filename
-  gboolean loaded;  // 0 if it is directory but those files under it hasn't been 
-                    //   loaded into treeview yet.
-  TreeItem *children;
-};
-
-GtkWidget *menu_action;
-
-static gint
-button_release_event (GtkWidget *widget,
-		      GdkEventButton *event)
-{
-  if (view->peekwin && event->button == 2)
-    {
-      GtkWidget *peekwin = view->peekwin;
-
-      view->peekwin = NULL;
-
-      gdk_window_set_cursor (view->mainwin->window, NULL);
-      gtk_object_destroy (GTK_OBJECT (peekwin));
-    }
-
-  return FALSE;
-}
-
-static gint
-key_press_event (GtkWidget *widget,
-		 GdkEventKey *event)
-{
-  switch (event->keyval)
-    {
-    case GDK_space:
-      fsexam_filename_convert ();
-      return TRUE;
-      break;
-    defaults:
-      break;
-    }
-
-  return FALSE;
-}
-
-static gint 
-tree_popup_handler(GtkWidget *widget, 
-		   GdkEventButton *event)
-{
-  g_return_val_if_fail (event != NULL, FALSE);
-
-  if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
-    {
-      fsexam_filename_convert ();
-
-      return TRUE;
-    }
-
-  if (event->button == 2)
-    {
-      fsexam_content_peek (event->x_root, event->y_root);
-
-      return TRUE;
-    }
-
-  if (event->button == 3)
-    {
-      gtk_menu_popup(menu_action, NULL, NULL, NULL, NULL, 
-		     event->button, event->time);
-
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
-// dummy TreeItem
-static TreeItem demo_toplevel[] =
-  {
-    { NULL, "", TRUE, NULL},
-    { NULL }
-  };
-
-// copy from gsearchtool to load the pixbuf
-
-#define ICON_THEME_EXECUTABLE_ICON "gnome-fs-executable"
-#define ICON_THEME_REGULAR_ICON    "gnome-fs-regular"
-#define ICON_THEME_CHAR_DEVICE     "gnome-fs-chardev"
-#define ICON_THEME_BLOCK_DEVICE    "gnome-fs-blockdev"
-#define ICON_THEME_SOCKET           "gnome-fs-socket"
-#define ICON_THEME_FIFO            "gnome-fs-fifo"
-#define ICON_SIZE                  24
-
-static GdkPixbuf *
-get_file_pixbuf (gchar *file)
-{
-  GdkPixbuf *pixbuf = NULL;
-  char *icon_name = NULL;
-  char *mime_type;
-
-  mime_type = gnome_vfs_get_file_mime_type (file, NULL, FALSE);
-
-  if (file == NULL || mime_type == NULL) 
-    {
-      icon_name = g_strdup (ICON_THEME_REGULAR_ICON);
-    } 
-  else if ((g_file_test (file, G_FILE_TEST_IS_EXECUTABLE)) &&
-	     !g_ascii_strcasecmp (mime_type, "application/x-executable-binary"))
-    {
-      icon_name = g_strdup (ICON_THEME_EXECUTABLE_ICON);
-    }
-  else if (!g_ascii_strcasecmp (mime_type, "x-special/device-char"))
-    {
-      icon_name = g_strdup (ICON_THEME_CHAR_DEVICE);
-    }
-  else if (!g_ascii_strcasecmp (mime_type, "x-special/device-block"))
-    {
-      icon_name = g_strdup (ICON_THEME_BLOCK_DEVICE);
-    }
-  else if (!g_ascii_strcasecmp (mime_type, "x-special/socket"))
-    {
-      icon_name = g_strdup (ICON_THEME_SOCKET);
-    }
-  else if (!g_ascii_strcasecmp (mime_type, "x-special/fifo"))
-    {
-      icon_name = g_strdup (ICON_THEME_FIFO);
-    }
-  else
-    icon_name = gnome_icon_lookup (gtk_icon_theme_get_default (), NULL, file,
-				   NULL, NULL, mime_type, 0, NULL);
-
-  pixbuf = (GdkPixbuf *)g_hash_table_lookup (view->pixbuf_hash, icon_name);
-
-  if (!pixbuf)
-    {
-      pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), 
-					 icon_name,
-					 ICON_SIZE, 0, NULL);
-      g_hash_table_insert (view->pixbuf_hash, g_strdup (icon_name), pixbuf);
-    }
-
-  g_free (icon_name);
-
-  return pixbuf;
-
-  return NULL;
-}
-
-static void
-fsexam_treeitem_free (TreeItem *item)
-{
-  TreeItem *item2 = item;
-
-  // As one place holder, demo_toplevel isn't dynamically
-  // generated, we can't free it
-  if (!item || item == demo_toplevel) return;
-
-  while (1)
-    {
-      if (!item->label) break;
-
-      g_free (item->label);
-
-      if (item->children)
-	fsexam_treeitem_free (item->children);
-
-      ++item;
-    }
-
-  g_free (item2);
-}
-
-static gint
-get_dir_elements (DIR *dirp)
-{
-  struct dirent *dp;
-  int num_elements = 0;
-
-  while (dirp)
-    {
-      if ((dp = readdir (dirp)) != NULL)
-	++num_elements;
-      else
-	break;
-    }
-
-  rewinddir (dirp);
-
-  return num_elements;
-}
-
-/*
- * Change the title of treeview to indicate the current root directory
- * that treeview is based on.
- */
-static void
-fsexam_treeview_set_title (char *title)
-{
-  GtkTreeViewColumn *column;
-  gchar *title2 = fsexam_validate_with_newline (title, FALSE);
-  gchar *location = g_strdup_printf ("%s - %s", _("Location:"), title2);
-
-  column = gtk_tree_view_get_column (GTK_TREE_VIEW (view->treeview), 0);
-  gtk_tree_view_column_set_title (column, location);
-
-  g_free (title2);
-  g_free (location);
-}
-
-static gint
-set_item_collation (gconstpointer a,
-		    gconstpointer b)
-{
-  TreeItem *item_a = (TreeItem *)a;
-  TreeItem *item_b = (TreeItem *)b;
-  gint retval;
-
-  if (!item_a->label || !item_b->label) return -1;
-
-  // put directory ahead
-  if (item_a->children && !item_b->children)
-    return -1;
-  if (!item_a->children && item_b->children)
-    return 1;
-
-  retval = g_strcasecmp (item_a->label, item_b->label);
-
-  return (retval == 0 ? (strcmp (item_a->label, item_b->label) > 0 ? -1 : 1) : retval);
-}
-
-// FIXME - ugly implementation, how to output error message?
-static TreeItem *
-fsexam_treeitem_create (char *dir)
-{
-  TreeItem *tree;
-  DIR *dirp;
-  struct stat stat_buf;
-  int count = 0;
-  char *msg = NULL;
-  int filenum = 0;
-
-  if (!dir || stat (dir, &stat_buf) == -1) goto _ERR;
-
-  if (!S_ISDIR (stat_buf.st_mode))
-    {
-      gchar *ptmp;
-
-      tree = g_new0 (TreeItem, 2);
-      tree->icon = get_file_pixbuf (dir);
-      tree->label = g_strdup (g_path_get_basename (dir));
-      tree->loaded = 1;
-
-      // treepath shouldn't contain file name.
-      // Actually 'dir' points to view->rootdir, we can't free view->rootdir
-      // before accessing 'dir'.
-      ptmp = g_strdup (g_path_get_dirname (dir));
-      g_free (view->rootdir);
-      view->rootdir = ptmp;
-
-      return tree;
-    }
-
-  dirp = opendir (dir);
-  if (!dirp) goto _ERR;
-
-  filenum = get_dir_elements (dirp);
-  tree = g_new0 (TreeItem, filenum);
-
-  while (dirp)
-    {
-      struct dirent *dp;
-      TreeItem *item;
-      
-      if ((dp = readdir (dirp)) != NULL)
-	{
-	  //char name[256];
-	  char *name;
-	  int name_len = 0;
-
-	  // don't display hidden files
-	  if (dp->d_name[0] == '.') continue;
-	  
-	  item = tree + count;
-	  item->label = g_new0 (gchar, strlen (dp->d_name) + 1);
-	  item->loaded = 1;
-	  strcpy (item->label, dp->d_name);
-	 
-	  name_len = strlen(dir) + strlen(dp->d_name) + 10;
-	  name = malloc(name_len);	
-	  //memset (name, 0, 256);
-	  memset(name, 0, name_len);
-
-	  sprintf (name, "%s/%s", dir, dp->d_name);
-
-	  item->icon = get_file_pixbuf (name);
-
-	  if (stat (name, &stat_buf) == 0 && S_ISDIR (stat_buf.st_mode))
-	    {
-	      // mark it is unloaded yet and put demo_toplevel as its children
-	      // to act as one placeholder
-	      item->loaded = 0;
-	      item->children = demo_toplevel;
-	    }
-	
-	  free(name);  
-	  ++count;
-	}
-      else
-	{
-	  closedir (dirp);
-	  break;
-	}
-    }
-
-  qsort (tree, count, sizeof (TreeItem), set_item_collation);
-
-  return tree;
-
- _ERR:
-     switch (errno)
-       {
-       case EACCES:
-	 msg = g_strdup_printf (_("No read permission"));
-	 break;
-       case ENOENT:
-	 msg = g_strdup_printf (_("Folder doesn't exist yet"));
-	 break;
-       }
-
-     if (!dir) msg = g_strdup_printf (_("No folder specified"));
-
-     if (msg)
-       {
-	 fsexam_statusbar_update (msg);
-
-	 g_free (msg);
-       }
-
-     if (view->rootdir)
-       {
-	 g_free (view->rootdir);
-	 view->rootdir = NULL;
-       }
-
-     return demo_toplevel;
-}
-
-static void
-treemodel_create_with_treeitem (GtkTreeStore *model,
-		       TreeItem *item,
-		       GtkTreeIter parent_iter,
-		       gboolean is_root)
-{
-  GtkTreeIter iter;
-
-  while (item->label)
-    {
-      TreeItem *subitem = item->children;
-
-      if (is_root)
-	gtk_tree_store_append(model, &iter, NULL);
-      else
-	gtk_tree_store_append(model, &iter, &parent_iter);
-
-      gtk_tree_store_set(model, &iter,
-			 ICON_COLUMN, item->icon,
-			 FILENAME_COLUMN, item->label,
-			 LOADED_COLUMN, item->loaded,
-			 -1);
-
-      if (subitem)
-	treemodel_create_with_treeitem(model, subitem, iter, 0);
-
-      item++;
-    }
-}
-
-/*
- * Check if it is one directory which hasn't been loaded yet,
- * if yes, load its files and add into model.
- * If permission issue exists, collapse the directory row and
- * write error message to statusbar. 
- */
-static gboolean
-fsexam_treeview_expand (GtkWidget *widget,
-			GtkTreeIter *iter,
-			GtkTreePath *path,
-			gpointer user_data)
-{
-  GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
-  gboolean loaded;
-  char *filename;
-
-  gtk_tree_model_get (model, iter,		      
-		      FILENAME_COLUMN, &filename,
-		      LOADED_COLUMN, &loaded,
-		      -1);
-
-  if (!loaded)
-    {
-      TreeItem *item;
-      GString *dir = fsexam_filename_get_path (model, *iter, view->rootdir);
-      //char name[256];
-      char *name;
-      int  name_len = 0;
-      GtkTreeIter dummy_iter;
-
-      name_len = strlen(dir->str) + strlen(filename) + 10;
-      name = malloc(name_len);
-      memset (name, 0, name_len);
-      g_sprintf (name, "%s/%s", dir->str, filename);
-
-      item = fsexam_treeitem_create (name);
-
-      if (item == demo_toplevel)
-	{
-	  // write the error message to statusbar
-	  fsexam_statusbar_update (_("No read permission"));
-	  // row expand disabled
-	  gtk_tree_view_collapse_row (GTK_TREE_VIEW (widget), path);
-	}
-      else if (!item->label)
-	{
-	  // the directory doesn't contain any files
-	  fsexam_statusbar_update (_("Null folder"));
-	  // row expand disabled
-	  gtk_tree_view_collapse_row (GTK_TREE_VIEW (widget), path);
-	}
-      else 
-	{
-	  // load the files under the directory and add into model
-	  treemodel_create_with_treeitem (GTK_TREE_STORE (model), 
-					  item,
-					  *iter, 
-					  FALSE);
-
-	  // change it's status
-	  gtk_tree_store_set (GTK_TREE_STORE (model), iter,
-			      LOADED_COLUMN, TRUE,
-			      -1);
-
-	  // the dummy iter is the first child of 'iter', delete it
-	  // from 'model' in order not to show it 
-	  gtk_tree_model_iter_children (model, &dummy_iter, iter);
-	  gtk_tree_store_remove (GTK_TREE_STORE (model), &dummy_iter);
-	}
-
-      g_string_free (dir, TRUE);
-      free(name);  
-      fsexam_treeitem_free (item);
-    }
-
-  g_free (filename);
-
-  return TRUE;
-}
-
-static GtkTreeModel *
-fsexam_treemodel_create_with_treeitem (TreeItem *root)
-{
-  GtkTreeStore *model;
-  GtkTreeIter iter;
-  
-  if (!root) return NULL;
- 
-  model = gtk_tree_store_new (NUM_COLUMNS,
-			      GDK_TYPE_PIXBUF,
-			      G_TYPE_STRING,
-			      G_TYPE_BOOLEAN);
-
-  treemodel_create_with_treeitem (model, root, iter, TRUE);
-
-  return GTK_TREE_MODEL (model);
-}
-
-void
-fsexam_treeview_construct (gchar *dir)
-{
-  TreeItem *toplevel;
-  GtkTreeModel *model;
-
-  view->rootdir = g_strdup (dir);
-
-  toplevel = fsexam_treeitem_create (dir);
-
-  model = fsexam_treemodel_create_with_treeitem (toplevel);
-
-  gtk_tree_view_set_model (GTK_TREE_VIEW (view->treeview), model);
-
-  fsexam_treeitem_free (toplevel);
-
-  if (view->rootdir) fsexam_treeview_set_title (view->rootdir);
-}
-
-void
-fsexam_statusbar_update (gchar *msg)
-{
-  gtk_statusbar_pop (GTK_STATUSBAR (view->statusbar), 0);
-  gtk_statusbar_push (GTK_STATUSBAR (view->statusbar), 0, msg);
-}
-
-/*
- * Clear statusbar
- */
-static gboolean 
-fsexam_statusbar_fresh ()
-{
-  fsexam_statusbar_update ("");
-
-  return TRUE;
-}
-
-//FIXME, it isn't able to select both folder and file in the dialog
-static void
-fsexam_chooser_dir ()
-{
-  GtkWidget *dialog;
-
-  dialog = gtk_file_chooser_dialog_new (_("Folder Selection"),
-					GTK_WINDOW (view->mainwin),
-					GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
-					GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-					GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
-					NULL);
-
-  if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
-    {
-      char *filename;
-
-      filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-      fsexam_treeview_construct (filename);
-      fsexam_undo_removeall ();
-    }
-
-  gtk_widget_destroy (dialog);
-}
-
-static void
-show_report_window ()
-{
-  static gboolean show_flag = FALSE;
-
-  if (show_flag)
-    {
-      gtk_widget_hide (view->reportwin);
-      show_flag = FALSE;
-    }
-  else
-    {
-      gtk_widget_show (view->reportwin);
-      show_flag = TRUE;
-    }
-}
-
-static void show_help()
-{
-  GError *err = NULL;
-
-  gnome_help_display ("fsexam.xml", "fsexam-intro", &err);
-
-  if (err)
-    {
-      GtkWidget *dialog;
-      dialog = gtk_message_dialog_new (GTK_WINDOW (view->mainwin),
-                                       GTK_DIALOG_DESTROY_WITH_PARENT,
-                                       GTK_MESSAGE_ERROR,
-                                       GTK_BUTTONS_CLOSE,
-                                       _("There was an error displaying help: %s"),
-                                       err->message);
-
-      g_signal_connect (G_OBJECT (dialog),
-                        "response",
-                        G_CALLBACK (gtk_widget_destroy),
-                        NULL);
-
-      gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
-      gtk_widget_show (dialog);
-      g_error_free (err);
-    }
-}
-
-static void
-fsexam_about ()
-{
-  static GtkWidget *about = NULL;
-
-  gchar *authors [] = {
-    "Federic Zhang <[email protected]>",
-    "Yong Sun <[email protected]>",
-    NULL
-  };
-
-  if (about != NULL)
-    {
-      gtk_window_present (GTK_WINDOW (about));
-      return;
-    }
-
-  about = gnome_about_new (_("fsexam"), VERSION,
-			   "Copyright 2003-2004",
-			   _("fsexam is to help migrate file name and file content from legacy encoding to UTF8"),
-			   (const char **)authors,
-			   NULL, NULL, view->icon);
-
-  gtk_window_set_destroy_with_parent (GTK_WINDOW (about), TRUE);
-
-  g_signal_connect (G_OBJECT (about), "destroy",
-		    G_CALLBACK (gtk_widget_destroyed), &about);
-
-  gtk_widget_show (about);
-}
-
-static GtkWidget *
-append_menuitem (GtkWidget *menu,
-		 const char *text,
-		 const char *accel_path,
-		 gpointer callback,
-		 gpointer data)
-{
-  GtkWidget *menu_item;
-
-  menu_item = gtk_menu_item_new_with_mnemonic (text);
-
-  if (accel_path)
-    gtk_menu_item_set_accel_path (GTK_MENU_ITEM (menu_item),
-				  accel_path);
-
-  gtk_widget_show (menu_item);
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu),
-			 menu_item);
-
-  if (callback)
-    g_signal_connect (G_OBJECT (menu_item),
-		      "activate",
-		      callback, data);
-
-  return menu_item;
-}
-
-static GtkWidget *
-append_stock_menuitem (GtkWidget *menu,
-		       const char *text,
-		       const char *accel_path,
-		       GtkAccelGroup *accel_group,
-		       gpointer callback,
-		       gpointer data)
-{
-  GtkWidget *menu_item;
-  
-  menu_item = gtk_image_menu_item_new_from_stock (text, accel_group);
-
-  if (accel_path)
-    gtk_menu_item_set_accel_path (GTK_MENU_ITEM (menu_item),
-				  accel_path);
-
-  gtk_widget_show (menu_item);
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu),
-			 menu_item);
-
-  if (callback)
-    g_signal_connect (G_OBJECT (menu_item),
-		      "activate",
-		      callback, data);
-
-  return menu_item;
-}
-
-static GtkWidget *
-append_check_menuitem (GtkWidget *menu,
-		       const char *text,
-		       const char *accel_path,
-		       gboolean active,
-		       gpointer callback,
-		       gpointer user_data)
-{
-  GtkWidget *menu_item;
-
-  menu_item = gtk_check_menu_item_new_with_mnemonic (text);
-
-  if (accel_path)
-    gtk_menu_item_set_accel_path (GTK_MENU_ITEM (menu_item),
-				  accel_path);
-
-  gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
-				  active);
-
-  gtk_widget_show (menu_item);
-  gtk_menu_shell_append (GTK_MENU_SHELL(menu), menu_item);
-
-  if (callback)
-    g_signal_connect (G_OBJECT (menu_item), "toggled", callback, user_data);
-
-  return menu_item;
-}
-
-static void
-set_menuitem_text (GtkWidget *menu_item,
-		   const char *text)
-{
-  GtkWidget *child;
-
-  child = gtk_bin_get_child (GTK_BIN (menu_item));
-
-  if (child && GTK_IS_LABEL (child))
-    gtk_label_set_text_with_mnemonic (GTK_LABEL (child), text);
-}
-
-static void
-set_menuitem_accel (GtkWidget *menu_item,
-		gchar *accel_path,
-		guint accel_key,
-		GdkModifierType accel_mods)
-{
-  gtk_accel_map_add_entry (accel_path, accel_key, accel_mods);
-  gtk_menu_item_set_accel_path (GTK_MENU_ITEM (menu_item), accel_path);
-}
-
-static GtkWidget *
-fsexam_construct_menu (GtkAccelGroup *accel_group)
-{
-  GtkWidget *menu;
-  GtkWidget *menu_item;
-  GtkWidget *menu_bar;
-
-  menu_bar = gtk_menu_bar_new();
-
-  menu_item = append_menuitem (menu_bar,
-			       _("_File"), NULL,
-			       NULL, NULL);
-  menu = gtk_menu_new ();
-  gtk_menu_set_accel_group (GTK_MENU (menu),
-			    accel_group);
-  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu);
-
-  menu_item = append_stock_menuitem (menu, 
-				     GTK_STOCK_OPEN, 
-				     ACCEL_PATH_OPEN,
-				     accel_group,
-				     G_CALLBACK (fsexam_chooser_dir),
-				     NULL);
-  set_menuitem_text (menu_item, _("_Open..."));
-
-  menu_item = gtk_separator_menu_item_new ();
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-
-  append_stock_menuitem (menu,
-			 GTK_STOCK_QUIT,
-			 ACCEL_PATH_EXIT,
-			 accel_group,
-			 G_CALLBACK (gtk_main_quit),
-			 NULL);
-
-  menu_item = append_menuitem (menu_bar,
-			       _("_Edit"), NULL,
-			       NULL, NULL);
-  menu_action = menu = gtk_menu_new ();
-  gtk_menu_set_accel_group (GTK_MENU (menu),
-			    accel_group);
-  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu);
-
-  view->undo_menuitem = menu_item = append_stock_menuitem (menu,
-				     GTK_STOCK_UNDO,
-				     ACCEL_PATH_UNDO,
-				     accel_group,
-				     G_CALLBACK (fsexam_undo),
-				     NULL);
-  set_menuitem_accel (menu_item, ACCEL_PATH_UNDO, GDK_Z, GDK_CONTROL_MASK);
-  gtk_widget_set_sensitive (menu_item, FALSE);
-
-  menu_item = gtk_separator_menu_item_new ();
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-
-  menu_item = append_stock_menuitem (menu,
-				     GNOME_STOCK_PIXMAP_REVERT,
-				     ACCEL_PATH_REVERT,
-				     accel_group,
-				     G_CALLBACK (fsexam_reverse),
-				     NULL);
-  set_menuitem_text (menu_item, _("_Restore Original File"));
-  set_menuitem_accel (menu_item, ACCEL_PATH_REVERT, GDK_R, GDK_CONTROL_MASK);
-
-  menu_item = gtk_separator_menu_item_new ();
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-
-  menu_item = append_stock_menuitem (menu,
-				     GTK_STOCK_APPLY,
-				     ACCEL_PATH_CONVERT_NAME,
-				     accel_group,
-				     G_CALLBACK (fsexam_filename_convert),
-				     NULL);
-  set_menuitem_text (menu_item, _("Convert _Filename"));
-  set_menuitem_accel (menu_item, ACCEL_PATH_CONVERT_NAME, GDK_F, GDK_CONTROL_MASK);
-
-  menu_item = append_stock_menuitem (menu,
-				     GTK_STOCK_CONVERT,
-				     ACCEL_PATH_CONVERT_CONTENT,
-				     accel_group,
-				     G_CALLBACK (fsexam_content_convert),
-				     NULL);
-  set_menuitem_text (menu_item, _("_Convert Content"));
-  set_menuitem_accel (menu_item, ACCEL_PATH_CONVERT_CONTENT, GDK_C, GDK_CONTROL_MASK);
-
-  menu_item = append_menuitem (menu,
-			       _("Pre_view Content"),
-			       ACCEL_PATH_PEEK_CONTENT,
-			       G_CALLBACK (fsexam_content_peek),
-			       NULL);
-  set_menuitem_accel (menu_item, ACCEL_PATH_PEEK_CONTENT, GDK_V, GDK_CONTROL_MASK);
-
-  menu_item = gtk_separator_menu_item_new ();
-  gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
-
-  menu_item = append_stock_menuitem (menu,
-				     GTK_STOCK_PREFERENCES,
-				     NULL,
-				     NULL,
-				     G_CALLBACK (create_pref_dialog),
-				     NULL);
-  set_menuitem_text (menu_item, _("_Preferences"));
-
-  menu_item = append_menuitem (menu_bar,
-			       _("_View"), NULL,
-			       NULL, NULL);
-
-  menu = gtk_menu_new ();
-  gtk_menu_set_accel_group (GTK_MENU (menu),
-			    accel_group);
-  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu);
-
-  append_check_menuitem (menu,
-			 _("_Report Pane"),
-			 ACCEL_PATH_REPORT_PANE,
-			 FALSE,
-			 G_CALLBACK (show_report_window),
-			 NULL);
-			 
-  menu_item = append_menuitem (menu_bar,
-			       _("_Help"), NULL,
-			       NULL, NULL);
-  menu = gtk_menu_new ();
-  gtk_menu_set_accel_group (GTK_MENU (menu),
-			    accel_group);
-  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_item), menu);
-
-  menu_item = append_stock_menuitem (menu,
-				     GTK_STOCK_HELP,
-				     ACCEL_PATH_HELP,
-				     NULL,
-				     G_CALLBACK (show_help),
-				     NULL);
-  set_menuitem_text (menu_item, _("_Contents"));
-  set_menuitem_accel (menu_item, ACCEL_PATH_HELP, GDK_F1, 0);
-  
-  menu_item = append_stock_menuitem (menu,
-				     GNOME_STOCK_ABOUT,
-				     NULL,
-				     NULL,
-				     G_CALLBACK (fsexam_about),
-				     NULL);
-  set_menuitem_text (menu_item, _("_About"));
-
-  return menu_bar;
-}
-
-static void
-load_icon ()
-{
-  GError *error = NULL;
-
-  view->icon = gdk_pixbuf_new_from_file (ICON_PATH, &error);
-
-  if (error)
-    {
-      g_assert (view->icon == NULL);
-      g_warning (_("Error loading icon %s\n"), error->message);
-      g_error_free (error);
-    }
-  else
-    gtk_window_set_icon (GTK_WINDOW (view->mainwin), view->icon);
-}
-
-GtkWidget *
-fsexam_construct_ui (char *dir)
-{
-  GtkWidget *table;
-  GtkAccelGroup *accel_group;
-  GtkWidget *sw;
-  GtkCellRenderer *renderer;
-  GtkTreeViewColumn *column;
-  GtkWidget *pane;
-  PangoFontDescription *fontdesc;
-  GtkWidget *mainwin, *treeview, *reportwin;
-  GtkWidget *menu_bar;
-  
-  view->mainwin = mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  fsexam_dnd_set (mainwin);
-
-  load_icon ();
-  gtk_window_set_title (GTK_WINDOW (mainwin), _("File System Examiner"));
-  g_signal_connect (mainwin, "destroy",
-		    G_CALLBACK (gtk_main_quit),
-		    &mainwin);
-
-  table = gtk_table_new (1, 3, FALSE);
-
-  gtk_container_add (GTK_CONTAINER (mainwin), table);
-
-  accel_group = gtk_accel_group_new ();
-  gtk_window_add_accel_group (GTK_WINDOW (mainwin), accel_group);
-  menu_bar = fsexam_construct_menu(accel_group);
-  gtk_table_attach(GTK_TABLE(table), menu_bar, 0, 1, 0, 1,  GTK_EXPAND | GTK_FILL, 0, 0, 0); 
-
-  pane = gtk_hpaned_new ();
-
-  gtk_table_attach (GTK_TABLE (table),
-		    pane,
-		    0, 1,                  1, 2,
-		    GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
-		    0,                     0);
-
-  view->statusbar = gtk_statusbar_new ();
-  gtk_statusbar_push (GTK_STATUSBAR (view->statusbar), 0, _("Welcome"));
-  gtk_table_attach (GTK_TABLE (table),
-		    view->statusbar,
-		    /* X direction */      /* Y direction */
-		    0, 1,                  2, 3,
-		    GTK_EXPAND | GTK_FILL, 0,
-		    0,                     0);
-
-  sw = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
-				       GTK_SHADOW_ETCHED_IN);
-
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
-				  GTK_POLICY_AUTOMATIC,
-				  GTK_POLICY_AUTOMATIC);
-
-  view->treeview = treeview = gtk_tree_view_new ();
-  g_signal_connect (GTK_TREE_VIEW (treeview),
-		    "cursor-changed",
-		    G_CALLBACK (fsexam_statusbar_fresh),
-		    NULL);
-  g_signal_connect (GTK_TREE_VIEW (treeview),
-		    "row-expanded",
-		    G_CALLBACK (fsexam_treeview_expand),
-		    NULL);
-
-  gtk_widget_add_events(treeview, GDK_BUTTON_PRESS_MASK);
-  g_signal_connect (GTK_TREE_VIEW (treeview), 
-		    "button_press_event", 
-		    G_CALLBACK (tree_popup_handler),
-		    NULL); 
-  g_signal_connect (GTK_TREE_VIEW (treeview),
-		    "button_release_event",
-		    G_CALLBACK (button_release_event),
-		    NULL);
-  g_signal_connect (GTK_TREE_VIEW (treeview),
-		    "key-press-event",
-		    G_CALLBACK (key_press_event),
-		    NULL);
-
-  gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
-  gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),
-			       GTK_SELECTION_MULTIPLE);
-
-  /* create the file column */
-  column = gtk_tree_view_column_new ();
-  gtk_tree_view_column_set_title (column, _("Location:"));
-
-  renderer = gtk_cell_renderer_pixbuf_new ();
-  gtk_tree_view_column_pack_start (column, renderer, FALSE);
-  gtk_tree_view_column_set_attributes (column, renderer,
-				       "pixbuf", ICON_COLUMN,
-				       NULL);
-
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_tree_view_column_pack_start (column, renderer, TRUE);
-  gtk_tree_view_column_set_attributes (column, renderer,
-				       "text", FILENAME_COLUMN,
-				       NULL);
-
-  gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
-  gtk_tree_view_column_set_resizable (column, TRUE);
-  gtk_tree_view_column_set_sort_column_id (column, FILENAME_COLUMN);
-  gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
-
-  fsexam_treeview_construct (dir);
-							    
-  gtk_container_add (GTK_CONTAINER (sw), treeview);
-
-  gtk_paned_pack1 (GTK_PANED (pane), sw, TRUE, FALSE);
-  gtk_widget_set_size_request (sw, 50, -1);
-
-  view->reportwin = reportwin = gtk_scrolled_window_new (NULL, NULL);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (reportwin),
-				  GTK_POLICY_AUTOMATIC,
-				  GTK_POLICY_AUTOMATIC);
-
-  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (reportwin),
-				       GTK_SHADOW_IN);
-
-  view->contents = gtk_text_view_new ();
-
-  gtk_text_view_set_editable (GTK_TEXT_VIEW (view->contents), FALSE);
-  gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->contents), FALSE);
-
-  // use small font to display text in text buffer
-  fontdesc = pango_font_description_from_string ("Serif 10");
-  gtk_widget_modify_font (view->contents, fontdesc);
-  pango_font_description_free (fontdesc);
-
-  gtk_container_add (GTK_CONTAINER (reportwin),
-		     view->contents);
-
-  gtk_paned_pack2 (GTK_PANED (pane), reportwin, TRUE, FALSE);
-  gtk_widget_set_size_request (reportwin, 50, -1);
-
-  gtk_window_set_default_size (GTK_WINDOW (mainwin), 450, 300);
-
-  gtk_widget_show_all (mainwin);
-  gtk_widget_hide (reportwin);
-
-  return mainwin;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam-ui.h	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,113 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+
+#ifndef _FSEXAM_UI_H_
+#define _FSEXAM_UI_H_
+
+#define FSEXAM_ROOT_DIR "/"
+
+enum
+{
+    ICON_COLUMN = 0,
+    DISPLAYNAME_COLUMN,
+    FILENAME_COLUMN,
+    LOADED_COLUMN,
+    NUM_COLUMNS
+};
+
+typedef struct _FSEXAM_view FSEXAM_view;
+struct _FSEXAM_view
+{
+    FSEXAM_setting  *setting;
+
+    GHashTable      *pixbuf_hash;
+    GHashTable      *treepath_hash;     /* update GUI after conversion */
+    GSList          *undo_list;
+
+    /* gui pointer */
+    GtkWidget       *mainwin;
+    GtkWidget       *peekwin;
+    GtkWidget       *focus_treeview;    /* The focused one of 2 file treeview */
+    GtkWidget       *popup_menu;
+
+    /* rootdir maybe "", "/tmp/..", "file:///tmp/..." */
+    gchar           *rootdir;           /* rootdir of file Treeview*/
+    gint            lineoffset;         /* for report pane */
+
+    gchar           *basedir;           /* basedir for searching */
+    GPid            pid;                /* for searching pid */
+};
+
+extern FSEXAM_view *view;
+
+FSEXAM_view *fsexam_view_new ();
+void        fsexam_view_destroy (FSEXAM_view *);
+
+void        fsexam_change_dir (const gchar *dir);
+gchar       *fsexam_file_chooser_get_name (const gchar *, 
+                        GtkFileChooserAction, 
+                        gboolean, 
+                        gboolean);
+
+void        fsexam_construct_ui (const gchar *);
+gboolean    fsexam_treeview_construct (const gchar *);
+void        fsexam_statusbar_update (gchar *);
+
+gchar       *fsexam_filename_get_fullname (GtkTreeModel *model, 
+                                           GtkTreeIter *iter);
+
+gboolean    fsexam_gui_show_yesno_dialog (GtkWindow *parent, 
+                                       const gchar *msg_format, ...);
+void        fsexam_gui_show_dialog (GtkWindow *, 
+                                GtkMessageType type, 
+                                const gchar *messages, ...);
+
+void        fsexam_gui_set_initial_state (void);
+void        fsexam_gui_display_msg (const gchar *filename, const gchar *msg);
+void        fsexam_gui_display_stats (FSEXAM_setting *setting);
+int         fsexam_gui_get_index (GList *encoding_list, gboolean forname);
+void        fsexam_gui_update (FSEXAM_setting *setting, 
+                               const gchar *path,
+                               const gchar *oldname, 
+                               const gchar *newname);
+
+GladeXML    *fsexam_gui_load_glade_file (const gchar *filename, 
+                                          const gchar *widget_root, 
+                                          GtkWindow *error_dialog_parent);
+
+GtkWidget   *fsexam_gui_get_focused_treeview ();
+void        fsexam_content_peek (gint x, gint y);
+
+
+/* --- search result pane --- */
+void        fsexam_search_treeview_append_file (const gchar *filename, 
+                                                gboolean first_file);
+void        fsexam_search_treeview_append_list (GList *list);
+void        fsexam_search_treeview_show (void);
+void        fsexam_search_treeview_hide (void);
+
+#endif  //_FSEXAM_UI_H_
--- a/src/cmd/fsexam/src/fsexam.c	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gconf/gconf-client.h>
-#include <gnome.h>
-#include <gtk/gtk.h>
-#include <libgnome/gnome-i18n.h>
-#include <stdlib.h>
-#include "encode.h"
-#include "fsexam-history.h"
-#include "fsexam-preference.h"
-#include "fsexam.h"
-
-FSEXAM_view *view;
-
-int
-main(int argc, char **argv)
-{
-  GnomeClient *client;
-  char *pwd, *home;
-  char history[100], document[256];
-
-  // GnomeProgram *program;
-  // CORBA_Object factory;
-
-
-  bindtextdomain (GETTEXT_PACKAGE, FSEXAM_LOCALEDIR);
-  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-  textdomain (GETTEXT_PACKAGE);
-
-  gnome_program_init ("fsexam", VERSION,
-				LIBGNOMEUI_MODULE, argc, argv,
-				GNOME_PARAM_HUMAN_READABLE_NAME,
-				_("File System Examiner"),
-				GNOME_PROGRAM_STANDARD_PROPERTIES,
-				GNOME_PARAM_APP_DATADIR, DATADIR,
-				NULL);
-
-  client = gnome_master_client();
-  g_signal_connect (G_OBJECT (client), "die",
-		    G_CALLBACK (exit),
-		    NULL);
-
-  view = g_new0 (FSEXAM_view, 1);
-  view->pixbuf_hash = g_hash_table_new (g_str_hash, g_str_equal);
-
-  pwd = getenv ("PWD");
-  home = getenv ("HOME");
-
-  memset (history, 0, 100);
-  g_sprintf (history, "%s/.fsexam-history", home);
-  view->histinfo = fsexam_history_open (history);
-
-  view->pref = create_fsexam_pref ();
-
-#if 0
-  factory = bonobo_activation_activate_from_id
-    ("OAFIID:GNOME_FSAXEM_Factory",
-
-     Bonobo_ACTIVATION_FLAG_EXISTING_ONLY,
-     NULL, NULL);
-
-  if (factory != NULL)
-    {
-      exit (0);
-    }
-#endif
-     
-  gtk_init(&argc, &argv);
-
-  memset (document, 0, 256);
-  if (argc > 1)
-    strcpy (document, argv[1]);
-  else
-    {
-      if (pwd && strcmp (pwd, home))
-	strcpy (document, pwd);
-      else
-	g_sprintf (document, "%s/Documents", home);
-    }
-  fsexam_construct_ui (document);
-
-  gtk_quit_add (0, fsexam_history_close, (gpointer)view->histinfo);
-  gtk_quit_add (0, fsexam_pref_free, (gpointer)view->pref);
-  // fsexam_history_update will be invoked at the interval of 
-  // one minute.
-  gtk_timeout_add (60000, fsexam_history_update, (gpointer)view->histinfo);
-
-  gtk_main();
-  return 0;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam.glade2	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,1907 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
+
+<!--
+CDDL HEADER START
+
+The contents of this file are subject to the terms of the
+Common Development and Distribution License (the "License").  
+You may not use this file except in compliance with the License.
+
+You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+or http://www.opensolaris.org/os/licensing.
+See the License for the specific language governing permissions
+and limitations under the License.
+
+When distributing Covered Code, include this CDDL HEADER in each
+file and include the License file at src/OPENSOLARIS.LICENSE.
+If applicable, add the following below this CDDL HEADER, with the
+fields enclosed by brackets "[]" replaced with your own identifying
+information: Portions Copyright [yyyy] [name of copyright owner]
+
+CDDL HEADER END
+
+
+Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+Use is subject to license terms. 
+
+-->
+
+<glade-interface>
+  <requires lib="bonobo"/>
+  <requires lib="gnome"/>
+  <widget class="GnomeApp" id="app_window">
+    <property name="width_request">800</property>
+    <property name="height_request">600</property>
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">File Encoding Examiner</property>
+    <property name="enable_layout_config">True</property>
+    <child internal-child="dock">
+      <widget class="BonoboDock" id="bonobodock1">
+        <property name="visible">True</property>
+        <child>
+          <widget class="BonoboDockItem" id="bonobodockitem4">
+            <property name="visible">True</property>
+            <child>
+              <widget class="GtkToolbar" id="toolbar_main">
+                <property name="visible">True</property>
+                <property name="border_width">4</property>
+                <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
+                <child>
+                  <widget class="GtkToolButton" id="toolbutton4">
+                    <property name="visible">True</property>
+                    <property name="tooltip" translatable="yes">Open file</property>
+                    <property name="is_important">True</property>
+                    <property name="stock_id">gtk-open</property>
+                    <signal name="clicked" handler="fsexam_choose_dir"/>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkSeparatorToolItem" id="separatortoolitem1">
+                    <property name="visible">True</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkToolButton" id="toolbutton_convert">
+                    <property name="visible">True</property>
+                    <property name="tooltip" translatable="yes">Convert selected files' name or content according to the current mode</property>
+                    <property name="is_important">True</property>
+                    <property name="label" translatable="yes">Convert</property>
+                    <property name="use_underline">True</property>
+                    <property name="stock_id">gtk-execute</property>
+                    <signal name="clicked" handler="cb_convert"/>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkToolButton" id="toolbutton_force">
+                    <property name="visible">True</property>
+                    <property name="tooltip" translatable="yes">Convert without detecting whether encoding is UTF-8 or not</property>
+                    <property name="is_important">True</property>
+                    <property name="label" translatable="yes">Forcibly Convert</property>
+                    <property name="use_underline">True</property>
+                    <property name="stock_id">gtk-jump-to</property>
+                    <signal name="clicked" handler="cb_force_convert"/>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkToolButton" id="toolbutton_dryrun">
+                    <property name="visible">True</property>
+                    <property name="tooltip" translatable="yes">Dryrun without changing any file name or content in the disk</property>
+                    <property name="is_important">True</property>
+                    <property name="label" translatable="yes">Dryrun</property>
+                    <property name="use_underline">True</property>
+                    <property name="stock_id">gtk-justify-fill</property>
+                    <signal name="clicked" handler="cb_dryrun"/>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkToolButton" id="toolbutton_scenario">
+                    <property name="visible">True</property>
+                    <property name="sensitive">False</property>
+                    <property name="tooltip" translatable="yes">Convert file name or content based on previous dryrun result</property>
+                    <property name="is_important">True</property>
+                    <property name="label" translatable="yes">Scenario</property>
+                    <property name="use_underline">True</property>
+                    <property name="stock_id">gtk-convert</property>
+                    <signal name="clicked" handler="cb_scenario"/>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkSeparatorToolItem" id="separatortoolitem2">
+                    <property name="visible">True</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkToolButton" id="toolbutton_undo">
+                    <property name="visible">True</property>
+                    <property name="sensitive">False</property>
+                    <property name="tooltip" translatable="yes">Undo the last action</property>
+                    <property name="is_important">True</property>
+                    <property name="stock_id">gtk-undo</property>
+                    <signal name="clicked" handler="cb_undo"/>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkToolButton" id="toolbutton_restore">
+                    <property name="visible">True</property>
+                    <property name="tooltip" translatable="yes">Restore selected files' name or content</property>
+                    <property name="is_important">True</property>
+                    <property name="label" translatable="yes">Restore</property>
+                    <property name="use_underline">True</property>
+                    <property name="stock_id">gtk-revert-to-saved</property>
+                    <signal name="clicked" handler="cb_restore"/>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="homogeneous">False</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="band">1</property>
+            <property name="behavior">BONOBO_DOCK_ITEM_BEH_EXCLUSIVE | BONOBO_DOCK_ITEM_BEH_NEVER_FLOATING | BONOBO_DOCK_ITEM_BEH_LOCKED</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="BonoboDockItem" id="bonobodockitem1">
+            <property name="visible">True</property>
+            <child>
+              <widget class="GtkMenuBar" id="menubar1">
+                <property name="visible">True</property>
+                <child>
+                  <widget class="GtkMenuItem" id="Folder">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_File</property>
+                    <property name="use_underline">True</property>
+                    <child>
+                      <widget class="GtkMenu" id="Folder_menu">
+                        <child>
+                          <widget class="GtkImageMenuItem" id="open1">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">gtk-open</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_stock">True</property>
+                            <signal name="activate" handler="fsexam_choose_dir"/>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="menu_search">
+                            <property name="visible">True</property>
+                            <property name="tooltip" translatable="yes">Search for files according to user given criteria</property>
+                            <property name="label" translatable="yes">Search for _Files...</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_filter"/>
+                            <accelerator key="F" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image843">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-find</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="menu_stop_search">
+                            <property name="tooltip" translatable="yes">Stop searching files</property>
+                            <property name="label" translatable="yes">Stop _Searching</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_stop_search"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image844">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-stop</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkSeparatorMenuItem" id="separator1">
+                            <property name="visible">True</property>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="menu_quit">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">gtk-quit</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_stock">True</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkMenuItem" id="edit_menu">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_Edit</property>
+                    <property name="use_underline">True</property>
+                    <child>
+                      <widget class="GtkMenu" id="edit_menu_menu">
+                        <child>
+                          <widget class="GtkImageMenuItem" id="convert_menu">
+                            <property name="visible">True</property>
+                            <property name="tooltip" translatable="yes">Convert selected files' name or content according to the current mode</property>
+                            <property name="label" translatable="yes">_Convert</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_convert"/>
+                            <accelerator key="N" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image845">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-execute</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="force_convert_menu">
+                            <property name="visible">True</property>
+                            <property name="tooltip" translatable="yes">Convert without detecting whether encoding is UTF-8 or not</property>
+                            <property name="label" translatable="yes">_Forcibly Convert</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_force_convert"/>
+                            <accelerator key="E" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image846">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-jump-to</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="dryrun_menu">
+                            <property name="visible">True</property>
+                            <property name="tooltip" translatable="yes">Dryrun without changing files on disk</property>
+                            <property name="label" translatable="yes">_Dryrun</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_dryrun"/>
+                            <accelerator key="D" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image847">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-justify-fill</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="menu_scenario">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="tooltip" translatable="yes">Convert file name or content based on previous dryrun result</property>
+                            <property name="label" translatable="yes">_Scenario</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_scenario"/>
+                            <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image848">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-convert</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkSeparatorMenuItem" id="separator12">
+                            <property name="visible">True</property>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="undo_menu">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="label" translatable="yes">gtk-undo</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_stock">True</property>
+                            <signal name="activate" handler="cb_undo"/>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="restore_menu">
+                            <property name="visible">True</property>
+                            <property name="tooltip" translatable="yes">Restore given files' name or content according to conversion mode</property>
+                            <property name="label" translatable="yes">_Restore</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_restore"/>
+                            <accelerator key="R" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image849">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-revert-to-saved</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkSeparatorMenuItem" id="separator11">
+                            <property name="visible">True</property>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="menu_clear_search">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                            <property name="tooltip" translatable="yes">Clear the search result</property>
+                            <property name="label" translatable="yes">Clear Searc_h Result</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_menu_clear_search"/>
+                            <accelerator key="H" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image850">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-clear</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkSeparatorMenuItem" id="separator8">
+                            <property name="visible">True</property>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioMenuItem" id="name_mode_menu">
+                            <property name="visible">True</property>
+                            <property name="tooltip" translatable="yes">File name conversion mode</property>
+                            <property name="label" translatable="yes">_Name Conversion Mode</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <signal name="toggled" handler="cb_mode"/>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioMenuItem" id="content_mode_menu">
+                            <property name="visible">True</property>
+                            <property name="tooltip" translatable="yes">File content conversion mode</property>
+                            <property name="label" translatable="yes">Content Conversion _Mode</property>
+                            <property name="use_underline">True</property>
+                            <property name="group">name_mode_menu</property>
+                            <signal name="toggled" handler="cb_mode"/>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkSeparatorMenuItem" id="separator19">
+                            <property name="visible">True</property>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="preferences1">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">gtk-preferences</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_stock">True</property>
+                            <signal name="activate" handler="cb_create_pref_dialog"/>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkMenuItem" id="view1">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_View</property>
+                    <property name="use_underline">True</property>
+                    <child>
+                      <widget class="GtkMenu" id="view1_menu">
+                        <child>
+                          <widget class="GtkRadioMenuItem" id="report_pane_menu">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Report Pane</property>
+                            <property name="use_underline">True</property>
+                            <property name="active">True</property>
+                            <signal name="toggled" handler="cb_show_report_pane"/>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkRadioMenuItem" id="dryrun_result_menu">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Dryrun Result Pane</property>
+                            <property name="use_underline">True</property>
+                            <property name="group">report_pane_menu</property>
+                            <signal name="toggled" handler="cb_show_dryrun_result"/>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkSeparatorMenuItem" id="separator13">
+                            <property name="visible">True</property>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckMenuItem" id="menu_search_result">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">Search Result</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_menu_search_result"/>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkSeparatorMenuItem" id="separator18">
+                            <property name="visible">True</property>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="preview_content3">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Preview Content</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="cb_preview_content"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image851">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-print-preview</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkMenuItem" id="help1">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">_Help</property>
+                    <property name="use_underline">True</property>
+                    <child>
+                      <widget class="GtkMenu" id="help1_menu">
+                        <child>
+                          <widget class="GtkImageMenuItem" id="content1">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">_Content</property>
+                            <property name="use_underline">True</property>
+                            <signal name="activate" handler="show_help"/>
+                            <child internal-child="image">
+                              <widget class="GtkImage" id="image852">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-dialog-question</property>
+                                <property name="icon_size">1</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkImageMenuItem" id="about1">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">gtk-about</property>
+                            <property name="use_underline">True</property>
+                            <property name="use_stock">True</property>
+                            <signal name="activate" handler="fsexam_about"/>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+          </widget>
+          <packing>
+            <property name="behavior">BONOBO_DOCK_ITEM_BEH_EXCLUSIVE | BONOBO_DOCK_ITEM_BEH_NEVER_FLOATING | BONOBO_DOCK_ITEM_BEH_NEVER_VERTICAL | BONOBO_DOCK_ITEM_BEH_LOCKED</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkVBox" id="vbox88">
+            <property name="visible">True</property>
+            <property name="border_width">2</property>
+            <property name="spacing">5</property>
+            <child>
+              <widget class="GtkHBox" id="hbox29">
+                <property name="visible">True</property>
+                <property name="spacing">3</property>
+                <child>
+                  <widget class="GtkLabel" id="label15">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">&lt;b&gt;_Location:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                    <property name="use_underline">True</property>
+                    <property name="mnemonic_widget">entry_folder</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="padding">5</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkEntry" id="entry_folder">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <signal name="activate" handler="cb_change_folder"/>
+                  </widget>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkVPaned" id="vpaned_main">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="position">350</property>
+                <child>
+                  <widget class="GtkHPaned" id="hpaned_main">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="position">200</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrollwin_files">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="shadow_type">GTK_SHADOW_IN</property>
+                        <child>
+                          <widget class="GtkTreeView" id="treeview_file">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK</property>
+                            <property name="border_width">5</property>
+                            <property name="headers_visible">False</property>
+                            <property name="rules_hint">True</property>
+                            <signal name="row_expanded" handler="fsexam_treeview_expand"/>
+                            <signal name="cursor_changed" handler="fsexam_statusbar_fresh"/>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="resize">True</property>
+                        <property name="shrink">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkNotebook" id="notebook_report">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="scrollable">True</property>
+                        <property name="enable_popup">True</property>
+                        <signal name="switch_page" handler="cb_change_current_page" after="yes"/>
+                        <child>
+                          <widget class="GtkScrolledWindow" id="scrollwin_report">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                            <property name="shadow_type">GTK_SHADOW_IN</property>
+                            <child>
+                              <widget class="GtkTextView" id="textview_report">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="editable">False</property>
+                              </widget>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="tab_expand">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label16">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;_Report Pane&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                            <property name="use_underline">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">tab</property>
+                            <property name="tab_expand">False</property>
+                            <property name="tab_fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkScrolledWindow" id="scrollwin_dryrun">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                            <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                            <property name="shadow_type">GTK_SHADOW_OUT</property>
+                            <child>
+                              <widget class="GtkTextView" id="textview_dryrun">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </widget>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                            <property name="tab_expand">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label17">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;_Dryrun Result&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                            <property name="use_underline">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">tab</property>
+                            <property name="position">1</property>
+                            <property name="tab_expand">False</property>
+                            <property name="tab_fill">False</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="resize">True</property>
+                        <property name="shrink">True</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="resize">True</property>
+                    <property name="shrink">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox_search_ui">
+                    <child>
+                      <widget class="GtkHBox" id="hbox_search_title">
+                        <property name="visible">True</property>
+                        <child>
+                          <widget class="GtkLabel" id="label24">
+                            <property name="visible">True</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Search Result&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label_result">
+                            <property name="visible">True</property>
+                            <property name="xalign">1</property>
+                            <property name="xpad">5</property>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button_close">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Hide search result</property>
+                            <property name="relief">GTK_RELIEF_NONE</property>
+                            <property name="response_id">0</property>
+                            <signal name="clicked" handler="cb_hide_search_result"/>
+                            <child>
+                              <widget class="GtkImage" id="image788">
+                                <property name="visible">True</property>
+                                <property name="stock">gtk-close</property>
+                                <property name="icon_size">2</property>
+                              </widget>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrollwin_search_result">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="shadow_type">GTK_SHADOW_IN</property>
+                        <child>
+                          <widget class="GtkTreeView" id="treeview_search">
+                            <property name="height_request">200</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="headers_visible">False</property>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="resize">True</property>
+                    <property name="shrink">True</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+        </child>
+      </widget>
+      <packing>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+      </packing>
+    </child>
+    <child internal-child="appbar">
+      <widget class="GnomeAppBar" id="appbar1">
+        <property name="visible">True</property>
+        <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+        <property name="spacing">4</property>
+        <property name="has_progress">True</property>
+        <property name="has_status">True</property>
+      </widget>
+      <packing>
+        <property name="position">1</property>
+        <property name="expand">True</property>
+        <property name="fill">True</property>
+      </packing>
+    </child>
+  </widget>
+  <widget class="GtkDialog" id="pref_dialog">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">File Encoding Examiner Preferences</property>
+    <property name="default_width">600</property>
+    <property name="default_height">400</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="vbox4">
+        <property name="visible">True</property>
+        <child>
+          <widget class="GtkTable" id="table4">
+            <property name="visible">True</property>
+            <property name="border_width">10</property>
+            <property name="n_rows">1</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">10</property>
+            <child>
+              <widget class="GtkFrame" id="frame2">
+                <property name="visible">True</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">GTK_SHADOW_NONE</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment8">
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="yalign">0</property>
+                    <property name="top_padding">6</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkVBox" id="vbox5">
+                        <property name="visible">True</property>
+                        <property name="spacing">2</property>
+                        <child>
+                          <widget class="GtkCheckButton" id="chkbtn_auto_detect">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Detect the encoding of file name or file content automatically</property>
+                            <property name="label" translatable="yes">_Auto Detection</property>
+                            <property name="use_underline">True</property>
+                            <property name="response_id">0</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="chkbtn_auto_convert">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Convert file using the first candidate automatically instead of interactive converting</property>
+                            <property name="label" translatable="yes">_Auto Conversion</property>
+                            <property name="use_underline">True</property>
+                            <property name="response_id">0</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="chkbtn_recursive">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Recursive handle files under folder</property>
+                            <property name="label" translatable="yes">_Recursive Mode</property>
+                            <property name="use_underline">True</property>
+                            <property name="response_id">0</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="chkbtn_hidden">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Processing hidden file</property>
+                            <property name="label" translatable="yes">Handle _Hidden Files</property>
+                            <property name="use_underline">True</property>
+                            <property name="response_id">0</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="chkbtn_remote">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Processing non-local files such as NFS file</property>
+                            <property name="label" translatable="yes">Handle _Remote Files</property>
+                            <property name="use_underline">True</property>
+                            <property name="response_id">0</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="chkbtn_follow">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Follow symbolic link</property>
+                            <property name="label" translatable="yes">Follow _Symbolic Link</property>
+                            <property name="use_underline">True</property>
+                            <property name="response_id">0</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="chkbtn_nocheck_symlink">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Don't try to keep the consistency between symbolic link file and its target file</property>
+                            <property name="label" translatable="yes">Don't Chec_k Symlink Content</property>
+                            <property name="use_underline">True</property>
+                            <property name="response_id">0</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">6</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkVBox" id="vbox8">
+                            <property name="visible">True</property>
+                            <child>
+                              <widget class="GtkCheckButton" id="chkbtn_special">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="tooltip" translatable="yes">Processing special type of file</property>
+                                <property name="label" translatable="yes">Special File Handling</property>
+                                <property name="use_underline">True</property>
+                                <property name="response_id">0</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkAlignment" id="alignment13">
+                                <property name="visible">True</property>
+                                <property name="left_padding">20</property>
+                                <child>
+                                  <widget class="GtkCheckButton" id="chkbtn_compress">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="tooltip" translatable="yes">Processing archive or compress file</property>
+                                    <property name="label" translatable="yes">Archive or Compress files</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="response_id">0</property>
+                                    <property name="draw_indicator">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">8</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="chkbtn_use_log">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="tooltip" translatable="yes">Use log file</property>
+                            <property name="label" translatable="yes">Use Log File</property>
+                            <property name="use_underline">True</property>
+                            <property name="response_id">0</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">9</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment9">
+                            <property name="visible">True</property>
+                            <property name="left_padding">22</property>
+                            <child>
+                              <widget class="GtkHBox" id="hbox6">
+                                <property name="visible">True</property>
+                                <property name="spacing">5</property>
+                                <child>
+                                  <widget class="GtkLabel" id="label_log_file">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes">Log File Name:</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkFileChooserButton" id="filebtn_log_file">
+                                    <property name="visible">True</property>
+                                    <property name="do_overwrite_confirmation">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">10</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkHBox" id="hbox9">
+                            <property name="visible">True</property>
+                            <property name="spacing">10</property>
+                            <child>
+                              <widget class="GtkLabel" id="label14">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">History Length:</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkSpinButton" id="spinbutton_hist_len">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="tooltip" translatable="yes">The number of conversion is stored. Converting multiple files at one time count as 1 time</property>
+                                <property name="adjustment">100 30 1000000 1 10 10</property>
+                                <property name="climb_rate">1</property>
+                                <property name="numeric">True</property>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="pack_type">GTK_PACK_END</property>
+                            <property name="position">7</property>
+                          </packing>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label11">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Conversion Setting:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkHBox" id="hbox7">
+                <property name="visible">True</property>
+                <property name="spacing">5</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox6">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkLabel" id="label12">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Encoding List:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                        <property name="shadow_type">GTK_SHADOW_IN</property>
+                        <child>
+                          <widget class="GtkTreeView" id="treeview_encoding_list">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="headers_visible">False</property>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="padding">5</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkAlignment" id="alignment12">
+                    <property name="visible">True</property>
+                    <property name="top_padding">15</property>
+                    <property name="bottom_padding">5</property>
+                    <property name="left_padding">2</property>
+                    <child>
+                      <widget class="GtkVBox" id="vbox7">
+                        <property name="visible">True</property>
+                        <property name="border_width">3</property>
+                        <property name="spacing">5</property>
+                        <child>
+                          <widget class="GtkButton" id="chkbtn_up">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="can_default">True</property>
+                            <property name="label">gtk-go-up</property>
+                            <property name="use_stock">True</property>
+                            <property name="response_id">0</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="chkbtn_down">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="can_default">True</property>
+                            <property name="label">gtk-go-down</property>
+                            <property name="use_stock">True</property>
+                            <property name="response_id">0</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="chkbtn_delete">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="can_default">True</property>
+                            <property name="label">gtk-delete</property>
+                            <property name="use_stock">True</property>
+                            <property name="response_id">0</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="chkbtn_add">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="can_default">True</property>
+                            <property name="label">gtk-add</property>
+                            <property name="use_stock">True</property>
+                            <property name="response_id">0</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="chkbtn_save">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="can_default">True</property>
+                            <property name="tooltip" translatable="yes">Save the encoding list permanently, otherwise used only for current session</property>
+                            <property name="label">gtk-save</property>
+                            <property name="use_stock">True</property>
+                            <property name="response_id">0</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">4</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="chkbtn_reset">
+                            <property name="sensitive">False</property>
+                            <property name="can_focus">True</property>
+                            <property name="label">gtk-revert-to-saved</property>
+                            <property name="use_stock">True</property>
+                            <property name="response_id">0</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="pack_type">GTK_PACK_END</property>
+                            <property name="position">5</property>
+                          </packing>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="hbuttonbox1">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="button_help">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-help</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-11</property>
+              </widget>
+              <packing>
+                <property name="secondary">True</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button8">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-6</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-ok</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-5</property>
+              </widget>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="GtkDialog" id="encodings-dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Add or Remove Encoding</property>
+    <property name="default_height">325</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox3">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <widget class="GtkTable" id="table33">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="n_rows">2</property>
+            <property name="n_columns">3</property>
+            <property name="column_spacing">12</property>
+            <property name="row_spacing">6</property>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="available-label">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">&lt;b&gt;Available encoding:&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">available-treeview</property>
+                <accessibility>
+                  <atkrelation target="available-treeview" type="label-for"/>
+                </accessibility>
+              </widget>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="shadow_type">GTK_SHADOW_IN</property>
+                <child>
+                  <widget class="GtkTreeView" id="available-treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <accessibility>
+                      <atkrelation target="available-label" type="labelled-by"/>
+                    </accessibility>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="displayed-label">
+                <property name="visible">True</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">&lt;b&gt;Encoding Selected:&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">displayed-treeview</property>
+              </widget>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkScrolledWindow" id="scrolledwindow3">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+                <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                <property name="shadow_type">GTK_SHADOW_IN</property>
+                <child>
+                  <widget class="GtkTreeView" id="displayed-treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="left_attach">2</property>
+                <property name="right_attach">3</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkHBox" id="hbox27">
+                <property name="visible">True</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox87">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkButton" id="add-button">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip" translatable="yes">Select encoding</property>
+                        <property name="response_id">0</property>
+                        <child>
+                          <widget class="GtkImage" id="image3">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-go-forward</property>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="remove-button">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip" translatable="yes">Remove encoding</property>
+                        <property name="response_id">0</property>
+                        <child>
+                          <widget class="GtkImage" id="image4">
+                            <property name="visible">True</property>
+                            <property name="stock">gtk-go-back</property>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area3">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="closebutton1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="has_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="label">gtk-cancel</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-6</property>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-ok</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-5</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="GtkWindow" id="peek_win">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">window1</property>
+    <property name="destroy_with_parent">True</property>
+    <child>
+      <placeholder/>
+    </child>
+  </widget>
+  <widget class="GtkMenu" id="menu_popup">
+    <child>
+      <widget class="GtkImageMenuItem" id="popup_convert">
+        <property name="visible">True</property>
+        <property name="tooltip" translatable="yes">Convert selected files' name or content according to the current mode</property>
+        <property name="label" translatable="yes">_Convert</property>
+        <property name="use_underline">True</property>
+        <signal name="activate" handler="cb_convert"/>
+        <child internal-child="image">
+          <widget class="GtkImage" id="image857">
+            <property name="visible">True</property>
+            <property name="stock">gtk-convert</property>
+            <property name="icon_size">1</property>
+          </widget>
+        </child>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkImageMenuItem" id="popup_forceful">
+        <property name="visible">True</property>
+        <property name="tooltip" translatable="yes">Convert without detecting whether encoding is UTF-8 or not</property>
+        <property name="label" translatable="yes">_Forcibly Convert</property>
+        <property name="use_underline">True</property>
+        <signal name="activate" handler="cb_force_convert"/>
+        <child internal-child="image">
+          <widget class="GtkImage" id="image858">
+            <property name="visible">True</property>
+            <property name="stock">gtk-jump-to</property>
+            <property name="icon_size">1</property>
+          </widget>
+        </child>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkImageMenuItem" id="popup_dryrun">
+        <property name="visible">True</property>
+        <property name="tooltip" translatable="yes">Dryrun without changing files on disk</property>
+        <property name="label" translatable="yes">_Dryrun</property>
+        <property name="use_underline">True</property>
+        <signal name="activate" handler="cb_dryrun"/>
+        <child internal-child="image">
+          <widget class="GtkImage" id="image859">
+            <property name="visible">True</property>
+            <property name="stock">gtk-missing-image</property>
+            <property name="icon_size">1</property>
+          </widget>
+        </child>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkImageMenuItem" id="popup_scenario">
+        <property name="visible">True</property>
+        <property name="sensitive">False</property>
+        <property name="tooltip" translatable="yes">Convert file name or content based on previous dryrun result</property>
+        <property name="label" translatable="yes">_Scenario</property>
+        <property name="use_underline">True</property>
+        <signal name="activate" handler="cb_scenario"/>
+        <child internal-child="image">
+          <widget class="GtkImage" id="image860">
+            <property name="visible">True</property>
+            <property name="stock">gtk-convert</property>
+            <property name="icon_size">1</property>
+          </widget>
+        </child>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkSeparatorMenuItem" id="separator14">
+        <property name="visible">True</property>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkImageMenuItem" id="popup_undo">
+        <property name="visible">True</property>
+        <property name="sensitive">False</property>
+        <property name="label" translatable="yes">gtk-undo</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">True</property>
+        <signal name="activate" handler="cb_undo"/>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkImageMenuItem" id="popup_restore">
+        <property name="visible">True</property>
+        <property name="tooltip" translatable="yes">Restore given files' name or content according to conversion mode</property>
+        <property name="label" translatable="yes">_Restore</property>
+        <property name="use_underline">True</property>
+        <signal name="activate" handler="cb_restore"/>
+        <child internal-child="image">
+          <widget class="GtkImage" id="image861">
+            <property name="visible">True</property>
+            <property name="stock">gtk-revert-to-saved</property>
+            <property name="icon_size">1</property>
+          </widget>
+        </child>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkSeparatorMenuItem" id="separator15">
+        <property name="visible">True</property>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkRadioMenuItem" id="popup_name_mode">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">File _Name Mode</property>
+        <property name="use_underline">True</property>
+        <property name="active">True</property>
+        <signal name="toggled" handler="cb_name_mode_popup"/>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkRadioMenuItem" id="popup_content_mode">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">File Content _Mode</property>
+        <property name="use_underline">True</property>
+        <property name="group">popup_name_mode</property>
+        <signal name="toggled" handler="cb_content_mode_popup"/>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkSeparatorMenuItem" id="separator17">
+        <property name="visible">True</property>
+      </widget>
+    </child>
+    <child>
+      <widget class="GtkImageMenuItem" id="preferences2">
+        <property name="visible">True</property>
+        <property name="label" translatable="yes">gtk-preferences</property>
+        <property name="use_underline">True</property>
+        <property name="use_stock">True</property>
+        <signal name="activate" handler="cb_create_pref_dialog"/>
+      </widget>
+    </child>
+  </widget>
+  <widget class="GtkDialog" id="dialog_search">
+    <property name="visible">True</property>
+    <property name="title" translatable="yes">Search for files</property>
+    <property name="modal">True</property>
+    <property name="default_width">500</property>
+    <property name="destroy_with_parent">True</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox4">
+        <property name="visible">True</property>
+        <child>
+          <widget class="GtkTable" id="table34">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <property name="n_rows">6</property>
+            <property name="n_columns">2</property>
+            <property name="column_spacing">10</property>
+            <property name="row_spacing">8</property>
+            <child>
+              <widget class="GtkLabel" id="label18">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Look in folder:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">filebtn_search_folder</property>
+              </widget>
+              <packing>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label19">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Name Contains:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">entry_name</property>
+              </widget>
+              <packing>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkFileChooserButton" id="filebtn_search_folder">
+                <property name="visible">True</property>
+                <property name="do_overwrite_confirmation">True</property>
+                <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
+                <property name="show_hidden">True</property>
+                <property name="title" translatable="yes">Select A Folder</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options">GTK_FILL</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkEntry" id="entry_name">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip" translatable="yes">Use shell glob pattern</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="bottom_attach">2</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkEntry" id="entry_group">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip" translatable="yes">Group name</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label23">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Owned by group:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">entry_group</property>
+              </widget>
+              <packing>
+                <property name="top_attach">3</property>
+                <property name="bottom_attach">4</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label22">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Owned by user:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">entry_user</property>
+              </widget>
+              <packing>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkEntry" id="entry_user">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip" translatable="yes">User name</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">2</property>
+                <property name="bottom_attach">3</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label20">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Data modified more than:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">spinbutton_data</property>
+              </widget>
+              <packing>
+                <property name="top_attach">4</property>
+                <property name="bottom_attach">5</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkSpinButton" id="spinbutton_data">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip" translatable="yes">Based on seconds</property>
+                <property name="adjustment">0 0 100 1 10 10</property>
+                <property name="climb_rate">1</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">4</property>
+                <property name="bottom_attach">5</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label21">
+                <property name="visible">True</property>
+                <property name="xalign">1</property>
+                <property name="label" translatable="yes">Status modified more than:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">spinbutton_status</property>
+              </widget>
+              <packing>
+                <property name="top_attach">5</property>
+                <property name="bottom_attach">6</property>
+                <property name="x_options">GTK_FILL</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkSpinButton" id="spinbutton_status">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip" translatable="yes">Based on seconds</property>
+                <property name="adjustment">0 0 100 1 10 10</property>
+                <property name="climb_rate">1</property>
+              </widget>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="right_attach">2</property>
+                <property name="top_attach">5</property>
+                <property name="bottom_attach">6</property>
+                <property name="y_options"></property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <widget class="GtkHButtonBox" id="dialog-action_area4">
+            <property name="visible">True</property>
+            <property name="layout_style">GTK_BUTTONBOX_END</property>
+            <child>
+              <widget class="GtkButton" id="helpbutton1">
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-help</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-11</property>
+                <signal name="clicked" handler="show_help"/>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="label">gtk-close</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-7</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button_find">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="label">gtk-find</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-5</property>
+              </widget>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button_stop">
+                <property name="can_focus">True</property>
+                <property name="can_default">True</property>
+                <property name="label">gtk-stop</property>
+                <property name="use_stock">True</property>
+                <property name="response_id">-6</property>
+              </widget>
+              <packing>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cmd/fsexam/src/fsexam.glade2p	Fri Apr 25 17:02:23 2008 +0800
@@ -0,0 +1,32 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
+<!--
+ CDDL HEADER START
+
+ The contents of this file are subject to the terms of the
+ Common Development and Distribution License (the "License").  
+ You may not use this file except in compliance with the License.
+
+ You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
+ or http://www.opensolaris.org/os/licensing.
+ See the License for the specific language governing permissions
+ and limitations under the License.
+
+ When distributing Covered Code, include this CDDL HEADER in each
+ file and include the License file at src/OPENSOLARIS.LICENSE.
+ If applicable, add the following below this CDDL HEADER, with the
+ fields enclosed by brackets "[]" replaced with your own identifying
+ information: Portions Copyright [yyyy] [name of copyright owner]
+
+ CDDL HEADER END
+
+
+ Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+ Use is subject to license terms. 
+
+-->
+
+<glade-project>
+  <name>Fsexam</name>
+  <program_name>fsexam</program_name>
+</glade-project>
--- a/src/cmd/fsexam/src/fsexam.h	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-/*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-
-#ifndef _FSEXAM_H_
-#define _FSEXAM_H_
-
-#define GETTEXT_PACKAGE "fsexam"
-#define FSEXAM_LOCALEDIR "/usr/share/locale/"
-#define VERSION "0.3"
-
-enum
-{
-  ICON_COLUMN = 0,
-  FILENAME_COLUMN,
-  LOADED_COLUMN,
-  NUM_COLUMNS
-};
-
-typedef struct _FSEXAM_view FSEXAM_view;
-struct _FSEXAM_view 
-{
-  GtkWidget *mainwin;
-  GtkWidget *treeview;
-  GtkWidget *contents;
-  GtkWidget *reportwin;
-  GtkWidget *statusbar;
-  GtkWidget *peekwin;
-  GtkWidget *undo_menuitem;
-  GdkPixbuf *icon;
-  GHashTable *pixbuf_hash;
-  
-  gint lineoffset; // for report pane
-
-  gchar *rootdir;
-
-  FSEXAM_pref *pref;
-  History_info *histinfo;
-
-  GSList *undo_list;
-};
-
-extern FSEXAM_view *view;
-
-GtkWidget *fsexam_construct_ui (char *);
-void fsexam_treeview_construct (char *);
-void fsexam_statusbar_update (char *);
-
-#endif
--- a/src/cmd/fsexam/todo	Fri Apr 25 16:18:27 2008 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License (the "License").  
- * You may not use this file except in compliance with the License.
- *
- * You can obtain a copy of the license at src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-
-  * enable accessibility
-
-Request from Eric
-    Need conversion in batch mode 
-    CLI mode converion (unlikely)
-    Nautilus integration support.
-
-
-More features:
-  * symbolic link support - it is hard to implement
-  * Windows carriage return and line return (0x0a0d --> 0x0a)
-    MS-Windows \r\n
-    Unix       \n
-    Macintosh or mail boday \r
-    Default conversion can be changed by the preference dialog
-
-  * Don't display hidden files - DONE
-  * Fix collation issue - DONE
-  * Add nautilus-similar toolbar
-
-  * Enable user to remove and add encoding from encoding list
-
-Two tasks recently:
- * write some testcase, do testing - DONE
- * write english help, currently there only has a outline  - DONE
-
-Several features in order of priority are still needed:
-
-  * file content conversion, check with 'file utility' whether the file is 
-    plain text file with help of suffix exclusion such as ".htm", ".html" etc,
-    display one popup window to show the first hundrads of multi-bytes
-    text by double-clicking on the file item and give user one option to
-    decide the encoding.  -DONE
-
-  * nautilus integration, with it user can left-click on the file icon
-    to lauch the application.
-
-  * activated by bonobo, in which way we can guarantee that only one window
-    exists on desktop.
-
-Of course, it would be better to fix several minor bugfix at first,
-
-  * GtkItemFactoryEntry is deprecated already and fsexam's menu should be i18ned
-    at first   - DONE
-
-  * use 256 as buffer size is stupid, it can't work if the length of directory 
-    name supress it. - DONE
-
-  * no help information. - DONE
-
-  * Add "File-->Save As..." to save the conversion result - DONE
-
-  * Add "Action-->Undo 2" to make undo on the item that is selected - OBSOLETED
-
-  * Add the typical golden star icon on the "Help-->About" item to keep consistency with
-    other GNOME applications - DONE
-
-  * Add "Help-->Content" menu item - DONE